Refactored code

This commit is contained in:
Eugene Zadyra
2018-07-23 15:48:41 +02:00
parent 1c6341e2dd
commit fbc26e4c7c
2 changed files with 30 additions and 31 deletions

View File

@@ -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,

View File

@@ -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))