mirror of
https://github.com/dyrkin/luxmed-bot.git
synced 2026-01-05 12:25:30 +01:00
Refactored code
This commit is contained in:
@@ -194,29 +194,32 @@ class Book(val userId: UserId, bot: Bot, apiService: ApiService, dataService: Da
|
||||
apiService.deleteTemporaryReservation(userId.accountId, bookingData.temporaryReservationId.get)
|
||||
stay()
|
||||
case Msg(CallbackCommand(Tags.Book), bookingData: BookingData) =>
|
||||
val reservationRequestMaybe = for {
|
||||
tmpReservationId <- bookingData.temporaryReservationId
|
||||
valuations <- bookingData.valuations
|
||||
visitTermVariant <- valuations.visitTermVariants.headOption
|
||||
term <- bookingData.term
|
||||
} yield (tmpReservationId, visitTermVariant, term).mapTo[ReservationRequest]
|
||||
|
||||
reservationRequestMaybe match {
|
||||
case Some(reservationRequest) =>
|
||||
apiService.reservation(userId.accountId, reservationRequest) match {
|
||||
case Left(ex) =>
|
||||
error("Error during reservation", ex)
|
||||
bot.sendMessage(userId.source, ex.getMessage)
|
||||
end()
|
||||
case Right(success) =>
|
||||
debug(s"Successfully confirmed: $success")
|
||||
bot.sendMessage(userId.source, lang.appointmentIsConfirmed)
|
||||
end()
|
||||
}
|
||||
case _ => sys.error(s"Can not prepare reservation request using booking data $bookingData")
|
||||
}
|
||||
makeReservation(bookingData)
|
||||
end()
|
||||
}
|
||||
|
||||
private def makeReservation(bookingData: BookingData): Unit = {
|
||||
val reservationRequestMaybe = for {
|
||||
tmpReservationId <- bookingData.temporaryReservationId
|
||||
valuations <- bookingData.valuations
|
||||
visitTermVariant <- valuations.visitTermVariants.headOption
|
||||
term <- bookingData.term
|
||||
} yield (tmpReservationId, visitTermVariant, term).mapTo[ReservationRequest]
|
||||
|
||||
reservationRequestMaybe match {
|
||||
case Some(reservationRequest) =>
|
||||
apiService.reservation(userId.accountId, reservationRequest) match {
|
||||
case Left(ex) =>
|
||||
error("Error during reservation", ex)
|
||||
bot.sendMessage(userId.source, ex.getMessage)
|
||||
case Right(success) =>
|
||||
debug(s"Successfully confirmed: $success")
|
||||
bot.sendMessage(userId.source, lang.appointmentIsConfirmed)
|
||||
}
|
||||
case _ => sys.error(s"Can not prepare reservation request using booking data $bookingData")
|
||||
}
|
||||
}
|
||||
|
||||
private def askMonitoringOptions: Step =
|
||||
ask { _ =>
|
||||
bot.sendMessage(userId.source, lang.chooseTypeOfMonitoring,
|
||||
|
||||
@@ -64,20 +64,16 @@ class TimePicker(val userId: UserId, val bot: Bot, val localization: Localizatio
|
||||
}
|
||||
bot.sendMessage(userId.source, message, inlineKeyboard = timeButtons(initialDate))
|
||||
} onReply {
|
||||
case Msg(Command(_, msg, Some(Tags.Done)), finalTime) =>
|
||||
val (message, updateTime) = mode match {
|
||||
case Msg(Command(_, msg, Some(Tags.Done)), selectedTime) =>
|
||||
val message = mode match {
|
||||
case TimeFromMode =>
|
||||
val startOfTheWorkingDay = LocalTime.of(7, 0)
|
||||
val timeFrom = if (startOfTheWorkingDay.isBefore(LocalTime.now())) finalTime else startOfTheWorkingDay
|
||||
lang.timeFromIs(timeFrom) -> timeFrom
|
||||
lang.timeFromIs(selectedTime)
|
||||
case TimeToMode =>
|
||||
val timeTo = finalTime
|
||||
lang.timeToIs(timeTo) -> timeTo
|
||||
lang.timeToIs(selectedTime)
|
||||
}
|
||||
bot.sendEditMessage(userId.source, msg.messageId, message)
|
||||
originator ! updateTime
|
||||
goto(configure) using null
|
||||
|
||||
originator ! selectedTime
|
||||
end()
|
||||
case Msg(Command(_, msg, Some(tag)), time) =>
|
||||
val modifiedTime = modifyTime(time, tag)
|
||||
bot.sendEditMessage(userId.source, msg.messageId, inlineKeyboard = timeButtons(modifiedTime))
|
||||
|
||||
Reference in New Issue
Block a user