From 30d8040bed987c9647662c8dc905353a88930c3b Mon Sep 17 00:00:00 2001 From: Eugene Zadyra Date: Mon, 13 Aug 2018 12:33:59 +0200 Subject: [PATCH] Added possibility ta create more than one monitoring for the same service --- .../src/main/scala/com/lbs/server/conversation/Book.scala | 2 +- server/src/main/scala/com/lbs/server/lang/En.scala | 6 +++--- server/src/main/scala/com/lbs/server/lang/Lang.scala | 2 +- server/src/main/scala/com/lbs/server/lang/Ua.scala | 6 +++--- .../scala/com/lbs/server/repository/DataRepository.scala | 6 ++++-- .../src/main/scala/com/lbs/server/service/DataService.scala | 4 ++-- .../scala/com/lbs/server/service/MonitoringService.scala | 4 ++-- 7 files changed, 16 insertions(+), 14 deletions(-) diff --git a/server/src/main/scala/com/lbs/server/conversation/Book.scala b/server/src/main/scala/com/lbs/server/conversation/Book.scala index 57765f8..7046019 100644 --- a/server/src/main/scala/com/lbs/server/conversation/Book.scala +++ b/server/src/main/scala/com/lbs/server/conversation/Book.scala @@ -239,7 +239,7 @@ class Book(val userId: UserId, bot: Bot, apiService: ApiService, dataService: Da } catch { case ex: Exception => error("Unable to create monitoring", ex) - bot.sendMessage(userId.source, lang.unableToCreateMonitoring) + bot.sendMessage(userId.source, lang.unableToCreateMonitoring(ex.getMessage)) } end() } diff --git a/server/src/main/scala/com/lbs/server/lang/En.scala b/server/src/main/scala/com/lbs/server/lang/En.scala index e053fdf..31aa864 100644 --- a/server/src/main/scala/com/lbs/server/lang/En.scala +++ b/server/src/main/scala/com/lbs/server/lang/En.scala @@ -109,7 +109,7 @@ object En extends Lang { override def monitoringHasBeenCreated: String = "👍 Monitoring has been created! List of active /monitorings" - override def unableToCreateMonitoring: String = s"👎 Unable to create monitoring. Please create a /bug" + override def unableToCreateMonitoring(reason: String): String = s"👎 Unable to create monitoring. Reason: $reason." override def chooseTypeOfMonitoring: String = " Please choose type of monitoring you want" @@ -303,9 +303,9 @@ object En extends Lang { |${capitalizeFirstLetter(clinic)}: ${term.clinic.name} |${capitalizeFirstLetter(city)}: ${monitoring.cityName}""".stripMargin - override def maximumMonitoringsLimitExceeded: String = "Maximum monitorings per user is 5" + override def maximumMonitoringsLimitExceeded: String = "Maximum monitorings per user is 10" - override def monitoringOfTheSameTypeExists: String = "You already have active monitoring for the same service /monitorings" + override def monitoringOfTheSameTypeExists: String = "You already have active monitoring for the same service and doctor /monitorings" override def termIsOutdated: String = s"""❗️ Looks like the term is already booked by someone else diff --git a/server/src/main/scala/com/lbs/server/lang/Lang.scala b/server/src/main/scala/com/lbs/server/lang/Lang.scala index f8e02b1..c3c49a0 100644 --- a/server/src/main/scala/com/lbs/server/lang/Lang.scala +++ b/server/src/main/scala/com/lbs/server/lang/Lang.scala @@ -99,7 +99,7 @@ trait Lang { def monitoringHasBeenCreated: String - def unableToCreateMonitoring: String + def unableToCreateMonitoring(reason: String): String def chooseTypeOfMonitoring: String diff --git a/server/src/main/scala/com/lbs/server/lang/Ua.scala b/server/src/main/scala/com/lbs/server/lang/Ua.scala index 61c07ed..23fe9f2 100644 --- a/server/src/main/scala/com/lbs/server/lang/Ua.scala +++ b/server/src/main/scala/com/lbs/server/lang/Ua.scala @@ -109,7 +109,7 @@ object Ua extends Lang { override def monitoringHasBeenCreated: String = "👍 Моніторинг був створений! Список активних /monitorings" - override def unableToCreateMonitoring: String = s"👎 Не вдається створити моніторинг. Будь ласка, створіть /bug" + override def unableToCreateMonitoring(reason: String): String = s"👎 Не вдається створити моніторинг. Причина: $reason." override def chooseTypeOfMonitoring: String = " Будь ласка, виберіть тип моніторингу" @@ -302,9 +302,9 @@ object Ua extends Lang { |${capitalizeFirstLetter(clinic)}: ${term.clinic.name} |${capitalizeFirstLetter(city)}: ${monitoring.cityName}""".stripMargin - override def maximumMonitoringsLimitExceeded: String = "Максимальна кількість моніторінгів 5" + override def maximumMonitoringsLimitExceeded: String = "Максимальна кількість моніторінгів 10" - override def monitoringOfTheSameTypeExists: String = "У вас вже є активний моніторинг на таку ж саму послугу /monitorings" + override def monitoringOfTheSameTypeExists: String = "У вас вже є активний моніторинг на таку ж саму послугу i лiкаря /monitorings" override def termIsOutdated: String = s"""❗️ Схоже, що термін вже не є доступним diff --git a/server/src/main/scala/com/lbs/server/repository/DataRepository.scala b/server/src/main/scala/com/lbs/server/repository/DataRepository.scala index 96f4671..a4d56c6 100644 --- a/server/src/main/scala/com/lbs/server/repository/DataRepository.scala +++ b/server/src/main/scala/com/lbs/server/repository/DataRepository.scala @@ -123,15 +123,17 @@ class DataRepository(@Autowired em: EntityManager) { .getResultList.asScala } - def findActiveMonitoring(accountId: Long, cityId: Long, serviceId: Long): Option[Monitoring] = { + def findActiveMonitoring(accountId: Long, cityId: Long, serviceId: Long, doctorId: Long): Option[Monitoring] = { em.createQuery( """select monitoring from Monitoring monitoring where monitoring.active = true | and monitoring.accountId = :accountId | and monitoring.cityId = :cityId - | and monitoring.serviceId = :serviceId""".stripMargin, classOf[Monitoring]) + | and monitoring.serviceId = :serviceId + | and monitoring.doctorId = :doctorId""".stripMargin, classOf[Monitoring]) .setParameter("accountId", accountId) .setParameter("cityId", cityId) .setParameter("serviceId", serviceId) + .setParameter("doctorId", doctorId) .getResultList.asScala.headOption } diff --git a/server/src/main/scala/com/lbs/server/service/DataService.scala b/server/src/main/scala/com/lbs/server/service/DataService.scala index 07af256..6becf68 100644 --- a/server/src/main/scala/com/lbs/server/service/DataService.scala +++ b/server/src/main/scala/com/lbs/server/service/DataService.scala @@ -87,8 +87,8 @@ class DataService { dataRepository.getActiveMonitorings(accountId) } - def findActiveMonitoring(accountId: Long, cityId: Long, serviceId: Long): Option[Monitoring] = { - dataRepository.findActiveMonitoring(accountId, cityId, serviceId) + def findActiveMonitoring(accountId: Long, cityId: Long, serviceId: Long, doctorId: Long): Option[Monitoring] = { + dataRepository.findActiveMonitoring(accountId, cityId, serviceId, doctorId) } def getActiveMonitoringsSince(since: ZonedDateTime): Seq[Monitoring] = { diff --git a/server/src/main/scala/com/lbs/server/service/MonitoringService.scala b/server/src/main/scala/com/lbs/server/service/MonitoringService.scala index 78b2b29..3831f5d 100644 --- a/server/src/main/scala/com/lbs/server/service/MonitoringService.scala +++ b/server/src/main/scala/com/lbs/server/service/MonitoringService.scala @@ -204,8 +204,8 @@ class MonitoringService extends Logger { def createMonitoring(monitoring: Monitoring): Monitoring = { val userMonitoringsCount = dataService.getActiveMonitoringsCount(monitoring.accountId) - require(userMonitoringsCount + 1 <= 5, lang(monitoring.userId).maximumMonitoringsLimitExceeded) - val activeMonitoring = dataService.findActiveMonitoring(monitoring.accountId, monitoring.cityId, monitoring.serviceId) + require(userMonitoringsCount + 1 <= 10, lang(monitoring.userId).maximumMonitoringsLimitExceeded) + val activeMonitoring = dataService.findActiveMonitoring(monitoring.accountId, monitoring.cityId, monitoring.serviceId, monitoring.doctorId) require(activeMonitoring.isEmpty, lang(monitoring.userId).monitoringOfTheSameTypeExists) dataService.saveMonitoring(monitoring) }