Commit 351334d6fc24f7ab93c19c4cdafa0f60c6768188
1 parent
e991e3f9
Added cycle sensitive reply (e.g. "ich werde dich täglich informieren")
Showing
2 changed files
with
24 additions
and
17 deletions
services/MainBot/src/main/java/de/bht/beuthbot/scheduler/SchedulerBean.java
... | ... | @@ -132,7 +132,7 @@ public class SchedulerBean { |
132 | 132 | //Extract the Date from the message |
133 | 133 | String messageDay = message.getEntities().getOrDefault("date", "TODAY"); |
134 | 134 | //If the date retrieved from the message contains a cycling parameter (e.g. "daily"), set the reminderCycle |
135 | - switch(messageDay) { | |
135 | + switch(message.getEntities().getOrDefault("cycle", "ONCE")) { | |
136 | 136 | case "DAILY": |
137 | 137 | cycle = ReminderCycle.DAILY; |
138 | 138 | break; |
... | ... | @@ -142,6 +142,9 @@ public class SchedulerBean { |
142 | 142 | case "MONTHLY": |
143 | 143 | cycle = ReminderCycle.MONTHLY; |
144 | 144 | break; |
145 | + default: | |
146 | + cycle = ReminderCycle.ONCE; | |
147 | + break; | |
145 | 148 | } |
146 | 149 | |
147 | 150 | LocalDate cycleDay = DateStringExtractor.getLocalDateFromString(messageDay); |
... | ... | @@ -210,21 +213,9 @@ public class SchedulerBean { |
210 | 213 | |
211 | 214 | |
212 | 215 | Map<String, String> entities = new HashMap<>(); |
213 | - switch(intent) { | |
214 | - case "showFood": | |
215 | - intent = Intent.SHOW_FOOD.getText(); | |
216 | - logger.debug("Intent is show food"); | |
217 | - entities.put(EntityName.DATE.getText(), cycleDate.toLocalDate().toString()); | |
218 | - entities.put(EntityName.TIME.getText(), cycleTime.toString()); | |
219 | - logger.debug("Entities added: " + entities); | |
220 | - break; | |
221 | - case "showCourses": | |
222 | - //TODO: add Courses functionality | |
223 | - break; | |
224 | - default: | |
225 | - intent = "FALLBACK"; | |
226 | - break; | |
227 | - } | |
216 | + entities.put(EntityName.DATE.getText(), cycleDate.toLocalDate().toString()); | |
217 | + entities.put(EntityName.TIME.getText(), cycleTime.toString()); | |
218 | + entities.put(EntityName.REMINDER_CYCLE.getText(), cycle.toString()); | |
228 | 219 | |
229 | 220 | logger.debug("Creating reminder with date " + cycleDate.toString() + " and time " + cycleTime.minusHours(1).toString()); //For some reason the server time is off by an hour, so we need to subtract it from the cycleTime |
230 | 221 | ... | ... |
services/MainBot/src/main/resources/de/bht/beuthbot/drools/Canteen.drl
... | ... | @@ -42,6 +42,7 @@ import java.time.LocalDate; |
42 | 42 | import de.bht.beuthbot.utils.DateStringExtractor; |
43 | 43 | import java.time.format.DateTimeFormatter |
44 | 44 | import de.bht.beuthbot.model.entities.Reminder; |
45 | +import de.bht.beuthbot.model.enumeration.ReminderCycle; | |
45 | 46 | |
46 | 47 | global de.bht.beuthbot.canteen.model.CanteenData canteenData; |
47 | 48 | global de.bht.beuthbot.model.entities.AppUser user; |
... | ... | @@ -138,8 +139,23 @@ rule "Create reminder" |
138 | 139 | TaskMessage message = new TaskMessage(m); |
139 | 140 | Reminder reminder = schedulerBean.createReminder(message, user); |
140 | 141 | String messageText = ""; |
142 | + String outputDate = DateStringExtractor.getGermanWeekDayFromLocalDate(reminder.getCycleDate().toLocalDate(), false); | |
143 | + switch(reminder.getReminderCycle().toString()) { | |
144 | + case "DAILY": | |
145 | + outputDate = "täglich"; | |
146 | + break; | |
147 | + case "WEEKLY": | |
148 | + outputDate += "s"; //if its weekly, just take the weekday and add an "s" | |
149 | + break; | |
150 | + case "MONTHLY": | |
151 | + outputDate = "ein mal im Monat"; | |
152 | + break; | |
153 | + case "ONCE": | |
154 | + outputDate = DateStringExtractor.getGermanWeekDayFromLocalDate(reminder.getCycleDate().toLocalDate(), true); | |
155 | + break; | |
156 | + } | |
141 | 157 | if(reminder.getIntent().equals(Intent.SHOW_FOOD.getText())) { |
142 | - messageText = "Ich werde dir " + DateStringExtractor.getGermanWeekDayFromLocalDate(reminder.getCycleDate().toLocalDate(), true) + " um " + reminder.getCycleDate().toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm")) + " Uhr den Mensaplan mitteilen!"; | |
158 | + messageText = "Ich werde dir " + outputDate + " um " + reminder.getCycleDate().toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm")) + " Uhr den Mensaplan mitteilen!"; | |
143 | 159 | } else { |
144 | 160 | messageText = "Es war mir leider nicht möglich eine Erinnerung für dich anzulegen. Versuche es bitte noch einmal."; |
145 | 161 | } //TODO: Add other intents | ... | ... |