Commit 351334d6fc24f7ab93c19c4cdafa0f60c6768188

Authored by mfcb
1 parent e991e3f9

Added cycle sensitive reply (e.g. "ich werde dich täglich informieren")

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 &quot;Create reminder&quot;
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
... ...