Commit 0f38e630aa386b70a2425014fc7e8bcf48a1d8ad
1 parent
7d394baa
Added informalDate-functionality. Added basic DeleteReminder-functionality
Showing
6 changed files
with
157 additions
and
70 deletions
services/Common/src/main/java/de/bht/beuthbot/model/Intent.java
| @@ -7,7 +7,7 @@ public enum Intent { | @@ -7,7 +7,7 @@ public enum Intent { | ||
| 7 | 7 | ||
| 8 | SHOW_FOOD("showFood"), HELLO("Hello"), GREET("greet"), BYE("Bye"), | 8 | SHOW_FOOD("showFood"), HELLO("Hello"), GREET("greet"), BYE("Bye"), |
| 9 | GOODBYE("goodbye"), RESTAURANT_SEARCH("restaurant_search"), START("Start"), | 9 | GOODBYE("goodbye"), RESTAURANT_SEARCH("restaurant_search"), START("Start"), |
| 10 | - SHOW_PRICE("showPrice"), REMIND("remind"), CREATE_REMINDER("createReminder"), FALLBACK("Fallback"); | 10 | + SHOW_PRICE("showPrice"), REMIND("remind"), CREATE_REMINDER("createReminder"), DELETE_REMINDER("deleteReminder"), FALLBACK("Fallback"); |
| 11 | 11 | ||
| 12 | private String text; | 12 | private String text; |
| 13 | 13 |
services/Common/src/main/java/de/bht/beuthbot/utils/DateStringExtractor.java
| @@ -3,6 +3,7 @@ package de.bht.beuthbot.utils; | @@ -3,6 +3,7 @@ package de.bht.beuthbot.utils; | ||
| 3 | import javax.ejb.Local; | 3 | import javax.ejb.Local; |
| 4 | import java.time.DayOfWeek; | 4 | import java.time.DayOfWeek; |
| 5 | import java.time.LocalDate; | 5 | import java.time.LocalDate; |
| 6 | +import java.time.LocalDateTime; | ||
| 6 | import java.time.format.TextStyle; | 7 | import java.time.format.TextStyle; |
| 7 | import java.util.Locale; | 8 | import java.util.Locale; |
| 8 | 9 |
services/MainBot/src/main/java/de/bht/beuthbot/canteen/model/CanteenData.java
| @@ -5,6 +5,7 @@ import org.slf4j.Logger; | @@ -5,6 +5,7 @@ import org.slf4j.Logger; | ||
| 5 | import org.slf4j.LoggerFactory; | 5 | import org.slf4j.LoggerFactory; |
| 6 | 6 | ||
| 7 | import java.time.LocalDate; | 7 | import java.time.LocalDate; |
| 8 | +import java.time.LocalDateTime; | ||
| 8 | import java.util.List; | 9 | import java.util.List; |
| 9 | import java.util.stream.Collectors; | 10 | import java.util.stream.Collectors; |
| 10 | 11 |
services/MainBot/src/main/java/de/bht/beuthbot/scheduler/SchedulerBean.java
| 1 | package de.bht.beuthbot.scheduler; | 1 | package de.bht.beuthbot.scheduler; |
| 2 | 2 | ||
| 3 | import de.bht.beuthbot.attachments.AttachmentStore; | 3 | import de.bht.beuthbot.attachments.AttachmentStore; |
| 4 | +import de.bht.beuthbot.daos.AppUserDAO; | ||
| 4 | import de.bht.beuthbot.jms.Target; | 5 | import de.bht.beuthbot.jms.Target; |
| 5 | import de.bht.beuthbot.model.Attachment; | 6 | import de.bht.beuthbot.model.Attachment; |
| 6 | import de.bht.beuthbot.model.EntityName; | 7 | import de.bht.beuthbot.model.EntityName; |
| @@ -21,6 +22,10 @@ import de.bht.beuthbot.jms.TaskMessage; | @@ -21,6 +22,10 @@ import de.bht.beuthbot.jms.TaskMessage; | ||
| 21 | import java.text.ParseException; | 22 | import java.text.ParseException; |
| 22 | import java.text.SimpleDateFormat; | 23 | import java.text.SimpleDateFormat; |
| 23 | import java.time.LocalDate; | 24 | import java.time.LocalDate; |
| 25 | +import java.time.LocalDateTime; | ||
| 26 | +import java.time.LocalTime; | ||
| 27 | +import java.time.format.DateTimeFormatter; | ||
| 28 | +import java.time.temporal.TemporalAccessor; | ||
| 24 | import java.util.*; | 29 | import java.util.*; |
| 25 | import javax.annotation.PostConstruct; | 30 | import javax.annotation.PostConstruct; |
| 26 | import javax.annotation.Resource; | 31 | import javax.annotation.Resource; |
| @@ -51,8 +56,14 @@ public class SchedulerBean { | @@ -51,8 +56,14 @@ public class SchedulerBean { | ||
| 51 | @Resource(lookup = "java:global/global/ApplicationBean") | 56 | @Resource(lookup = "java:global/global/ApplicationBean") |
| 52 | private Application application; | 57 | private Application application; |
| 53 | 58 | ||
| 54 | - //list of reminders to be populated with data from the DB | ||
| 55 | - private static ArrayList<Reminder> _reminders = new ArrayList<>(); | 59 | + /** Injected AppUserDAO */ |
| 60 | + @Resource(lookup = "java:global/global/AppUserDAOImpl") | ||
| 61 | + private AppUserDAO userDAO; | ||
| 62 | + | ||
| 63 | + /** Injected ReminderDAO */ | ||
| 64 | + @Resource(lookup = "java:global/global/ReminderDAOImpl") | ||
| 65 | + private ReminderDAO reminderDAO; | ||
| 66 | + | ||
| 56 | 67 | ||
| 57 | boolean isActive = true; | 68 | boolean isActive = true; |
| 58 | 69 | ||
| @@ -73,16 +84,19 @@ public class SchedulerBean { | @@ -73,16 +84,19 @@ public class SchedulerBean { | ||
| 73 | 84 | ||
| 74 | if (!isActive) return; | 85 | if (!isActive) return; |
| 75 | 86 | ||
| 76 | - SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy KK:mm"); | ||
| 77 | - String dateNow = formatter.format(new Date()); | 87 | + List<Reminder> reminders = reminderDAO.findAll(); |
| 78 | 88 | ||
| 79 | - for (Reminder reminder : _reminders) { | 89 | + LocalDateTime dateNow = LocalDateTime.now(); |
| 90 | + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd HH:mm"); | ||
| 91 | + for (Reminder reminder : reminders) { | ||
| 92 | + LocalDateTime reminderDate = reminder.getCycleDate(); | ||
| 93 | + logger.debug("Date now: " + dateNow.format(formatter) + " reminder date: " + reminder.getCycleDate().format(formatter)); | ||
| 80 | //Check if date time now equals reminder date time | 94 | //Check if date time now equals reminder date time |
| 81 | - if(dateNow.equals(formatter.format(reminder.getCycleTime()))) { | 95 | + if(dateNow.format(formatter).equals(reminderDate.format(formatter))) { |
| 82 | Long messageID = 1L; | 96 | Long messageID = 1L; |
| 83 | - AppUser user = reminder.getUser(); //TODO: Fill with correct value from DB | 97 | + AppUser user = userDAO.findById(reminder.getUserId()); |
| 84 | Long messengerId = Long.valueOf(user.getFacebookUserId() == null ? user.getTelegramUserId() : user.getFacebookUserId()); | 98 | Long messengerId = Long.valueOf(user.getFacebookUserId() == null ? user.getTelegramUserId() : user.getFacebookUserId()); |
| 85 | - Messenger messenger = reminder.getMessenger(); //TODO: Fill with correct value from DB | 99 | + Messenger messenger = reminder.getMessenger(); |
| 86 | String text = ""; | 100 | String text = ""; |
| 87 | String intent = reminder.getIntent(); | 101 | String intent = reminder.getIntent(); |
| 88 | Map entities = reminder.getEntities(); | 102 | Map entities = reminder.getEntities(); |
| @@ -96,6 +110,14 @@ public class SchedulerBean { | @@ -96,6 +110,14 @@ public class SchedulerBean { | ||
| 96 | } | 110 | } |
| 97 | } | 111 | } |
| 98 | 112 | ||
| 113 | + //--------------------- | ||
| 114 | + //CreateReminder function | ||
| 115 | + //The way this function works is by extracting the date and time from the entities of a TaskMessage. | ||
| 116 | + //First a LocalDate variable is instantiated, storing the desired reminder date. | ||
| 117 | + //If the message contains a cycle entity, the cycle is set accordingly, otherwise it defaults to ONCE. | ||
| 118 | + //Then a LocalTime variable is created in order to extract the time at which the user desires to be reminded. | ||
| 119 | + //Should there be no time-entity present, a sensible value is chosen instead. | ||
| 120 | + //--------------------- | ||
| 99 | public Reminder createReminder(TaskMessage message, AppUser user) { | 121 | public Reminder createReminder(TaskMessage message, AppUser user) { |
| 100 | logger.debug("Creating reminder"); | 122 | logger.debug("Creating reminder"); |
| 101 | 123 | ||
| @@ -121,53 +143,77 @@ public class SchedulerBean { | @@ -121,53 +143,77 @@ public class SchedulerBean { | ||
| 121 | break; | 143 | break; |
| 122 | } | 144 | } |
| 123 | 145 | ||
| 124 | - LocalDate cycleDate = DateStringExtractor.getLocalDateFromString(messageDay); | ||
| 125 | - | ||
| 126 | - Date cycleTime; | ||
| 127 | - try { | ||
| 128 | - //Read out time for Reminder | ||
| 129 | - | ||
| 130 | - String messageTime = message.getEntities().getOrDefault("time",""); | ||
| 131 | - //time should not be empty | ||
| 132 | - if(!messageTime.equals("")) { | ||
| 133 | - //get Date new for day, month, year | ||
| 134 | - String dateNow = new SimpleDateFormat("dd.MM.yyyy").format(new Date()); | ||
| 135 | - //remove all chars from time String (e.g. "10 Uhr") | ||
| 136 | - String reminderTime = messageTime.replaceAll("[^0-9:]", ""); | ||
| 137 | - //trim spaces | ||
| 138 | - reminderTime = reminderTime.trim(); | ||
| 139 | - //check if given time is e.g. "11:15" | ||
| 140 | - if(reminderTime.contains(":")) { | ||
| 141 | - //split for hours and minutes | ||
| 142 | - String[] splittedTime = reminderTime.split(":"); | ||
| 143 | - //add hours and minutes to date | ||
| 144 | - if(splittedTime.length > 1) | ||
| 145 | - dateNow = dateNow + " " + splittedTime[0] + ":" + splittedTime[1]; | ||
| 146 | - } else { | ||
| 147 | - //add hours from time and set to "00" | ||
| 148 | - dateNow = dateNow + " " + reminderTime + ":" + "00"; | ||
| 149 | - } | 146 | + LocalDate cycleDay = DateStringExtractor.getLocalDateFromString(messageDay); |
| 147 | + | ||
| 148 | + LocalTime cycleTime = LocalTime.now(); | ||
| 150 | 149 | ||
| 151 | - SimpleDateFormat f = new SimpleDateFormat("dd.MM.yyyy hh:mm"); | ||
| 152 | - Date d = f.parse(dateNow); | ||
| 153 | - long milliseconds = d.getTime(); | ||
| 154 | - cycleTime = new Date(milliseconds); | 150 | + String messageTime = message.getEntities().getOrDefault("time",""); |
| 155 | 151 | ||
| 156 | - } else | ||
| 157 | - cycleTime = new Date(); | 152 | + if(!messageTime.equals("")) { |
| 153 | + String dateNow = new SimpleDateFormat("dd.MM.yyyy").format(new Date()); | ||
| 154 | + logger.debug("Date now: " + dateNow); | ||
| 155 | + | ||
| 156 | + String reminderTime = messageTime.replaceAll("[^0-9:]", ""); | ||
| 157 | + //trim spaces | ||
| 158 | + reminderTime = reminderTime.trim(); | ||
| 159 | + //check if given time is e.g. "11:15" | ||
| 160 | + if (reminderTime.contains(":")) { | ||
| 161 | + //split for hours and minutes | ||
| 162 | + String[] splittedTime = reminderTime.split(":"); | ||
| 163 | + //add hours and minutes to date | ||
| 164 | + if (splittedTime.length > 1) | ||
| 165 | + dateNow = splittedTime[0] + ":" + splittedTime[1]; | ||
| 166 | + } else { | ||
| 167 | + //add hours from time and set to "00" | ||
| 168 | + dateNow = reminderTime + ":" + "00"; | ||
| 169 | + } | ||
| 170 | + logger.debug("DateNow:" + dateNow); | ||
| 171 | + cycleTime = LocalTime.parse(dateNow); | ||
| 172 | + } else if((messageTime = message.getEntities().getOrDefault("informalTime", "")) != "") { | ||
| 173 | + //the user might have given an informal time, such as "morning" or "evening" | ||
| 174 | + switch(messageTime) { | ||
| 175 | + case "MORNING": | ||
| 176 | + cycleTime = LocalTime.of(9,0); | ||
| 177 | + break; | ||
| 178 | + case "NOON": | ||
| 179 | + cycleTime = LocalTime.of(12,0); | ||
| 180 | + break; | ||
| 181 | + case "EVENING": | ||
| 182 | + cycleTime = LocalTime.of(20,0); | ||
| 183 | + break; | ||
| 184 | + default: | ||
| 185 | + cycleTime = LocalTime.of(9,0); | ||
| 186 | + break; | ||
| 187 | + } | ||
| 188 | + } else { | ||
| 189 | + //if no time entity is given, we will decide ourselves when it makes sense | ||
| 190 | + if(cycleDay.isEqual(LocalDate.now())) { | ||
| 191 | + //if the desired day is today, we'll remind the user in a few hours | ||
| 192 | + //...unless that would make it tomorrow | ||
| 193 | + if(cycleTime.plusHours(4).getHour() < cycleTime.getHour()) { | ||
| 194 | + cycleTime = LocalTime.of(23,59); | ||
| 195 | + } else { | ||
| 196 | + cycleTime = LocalTime.of(cycleTime.plusHours(4).getHour(),0); | ||
| 197 | + } | ||
| 158 | 198 | ||
| 159 | - } catch (Exception e) { | ||
| 160 | - return null; | 199 | + } else { |
| 200 | + //if the desired day is sometime in the future, remind the user at 9 in the morning | ||
| 201 | + cycleTime = LocalTime.of(9,0); | ||
| 202 | + } | ||
| 161 | } | 203 | } |
| 204 | + logger.debug("Resulting cycleTime: " + cycleTime.toString()); | ||
| 205 | + LocalDateTime cycleDate = LocalDateTime.of(cycleDay, cycleTime); | ||
| 206 | + | ||
| 162 | //Figure out what we're reminding the user of | 207 | //Figure out what we're reminding the user of |
| 163 | String intent = message.getEntities().getOrDefault("event","FALLBACK"); | 208 | String intent = message.getEntities().getOrDefault("event","FALLBACK"); |
| 164 | 209 | ||
| 210 | + | ||
| 165 | Map<String, String> entities = new HashMap<>(); | 211 | Map<String, String> entities = new HashMap<>(); |
| 166 | switch(intent) { | 212 | switch(intent) { |
| 167 | case "showFood": | 213 | case "showFood": |
| 168 | intent = Intent.SHOW_FOOD.getText(); | 214 | intent = Intent.SHOW_FOOD.getText(); |
| 169 | logger.debug("Intent is show food"); | 215 | logger.debug("Intent is show food"); |
| 170 | - entities.put(EntityName.DATE.getText(), cycleDate.toString()); | 216 | + entities.put(EntityName.DATE.getText(), cycleDate.toLocalDate().toString()); |
| 171 | entities.put(EntityName.TIME.getText(), cycleTime.toString()); | 217 | entities.put(EntityName.TIME.getText(), cycleTime.toString()); |
| 172 | logger.debug("Entities added: " + entities); | 218 | logger.debug("Entities added: " + entities); |
| 173 | break; | 219 | break; |
| @@ -179,13 +225,39 @@ public class SchedulerBean { | @@ -179,13 +225,39 @@ public class SchedulerBean { | ||
| 179 | break; | 225 | break; |
| 180 | } | 226 | } |
| 181 | 227 | ||
| 182 | - logger.debug("Creating reminder with date " + cycleDate.toString() + " and time " + cycleTime.toString()); | ||
| 183 | - Reminder reminder = new Reminder(user, cycle, cycleDate, cycleTime, messenger, intent, entities); | ||
| 184 | - _reminders.add(reminder); | 228 | + 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 |
| 185 | 229 | ||
| 186 | - return reminder; | 230 | + Reminder reminder = reminderDAO.createReminder(); |
| 231 | + reminder.setUserId(user.getId()); | ||
| 232 | + reminder.setReminderCycle(cycle); | ||
| 233 | + reminder.setCycleTime(cycleDate); | ||
| 234 | + reminder.setMessenger(messenger); | ||
| 235 | + reminder.setIntent(intent); | ||
| 236 | + reminder.setEntities(entities); | ||
| 237 | + | ||
| 238 | + return reminderDAO.saveOrUpdate(reminder); | ||
| 187 | 239 | ||
| 188 | //TODO: Insert the new Reminder into Database | 240 | //TODO: Insert the new Reminder into Database |
| 189 | } | 241 | } |
| 190 | 242 | ||
| 243 | + public boolean deleteReminder(TaskMessage message, AppUser user) { | ||
| 244 | + int deletedReminders = 0; | ||
| 245 | + logger.debug("Delete reminders for user:" + user.getTelegramUserId()); | ||
| 246 | + List<Reminder> reminders = reminderDAO.findAll(); | ||
| 247 | + logger.debug("Number of reminders: " + reminders.size()); | ||
| 248 | + for(Reminder reminder : reminders) { | ||
| 249 | + logger.debug("Found reminder for this user:" + reminder.getUser().getTelegramUserId()); | ||
| 250 | + if(reminder.getUser().getTelegramUserId().equals(user.getTelegramUserId()) || reminder.getUser().getFacebookUserId().equals(user.getFacebookUserId())) { | ||
| 251 | + logger.debug("Found reminder of this user"); | ||
| 252 | + reminders.remove(reminder); | ||
| 253 | + deletedReminders++; | ||
| 254 | + } | ||
| 255 | + } | ||
| 256 | + if(deletedReminders > 0) { | ||
| 257 | + return true; | ||
| 258 | + } else { | ||
| 259 | + return false; | ||
| 260 | + } | ||
| 261 | + } | ||
| 262 | + | ||
| 191 | } | 263 | } |
services/MainBot/src/main/java/de/bht/beuthbot/scheduler/model/Reminder.java
| @@ -5,6 +5,7 @@ import de.bht.beuthbot.model.Messenger; | @@ -5,6 +5,7 @@ import de.bht.beuthbot.model.Messenger; | ||
| 5 | import de.bht.beuthbot.model.entities.AppUser; | 5 | import de.bht.beuthbot.model.entities.AppUser; |
| 6 | 6 | ||
| 7 | import java.time.LocalDate; | 7 | import java.time.LocalDate; |
| 8 | +import java.time.LocalDateTime; | ||
| 8 | import java.util.Date; | 9 | import java.util.Date; |
| 9 | import java.util.HashMap; | 10 | import java.util.HashMap; |
| 10 | import java.util.Map; | 11 | import java.util.Map; |
| @@ -15,9 +16,7 @@ public class Reminder { | @@ -15,9 +16,7 @@ public class Reminder { | ||
| 15 | //Reminder cycle | 16 | //Reminder cycle |
| 16 | private ReminderCycle _reminderCycle; | 17 | private ReminderCycle _reminderCycle; |
| 17 | //Date of Cycle | 18 | //Date of Cycle |
| 18 | - private LocalDate _cycleDate; | ||
| 19 | - //Time of cycle | ||
| 20 | - private Date _cycleTime; | 19 | + private LocalDateTime _cycleDate; |
| 21 | //private | 20 | //private |
| 22 | //Used Messenger | 21 | //Used Messenger |
| 23 | private Messenger _messenger; | 22 | private Messenger _messenger; |
| @@ -26,11 +25,10 @@ public class Reminder { | @@ -26,11 +25,10 @@ public class Reminder { | ||
| 26 | //Entities | 25 | //Entities |
| 27 | private final Map<String, String> _entities; | 26 | private final Map<String, String> _entities; |
| 28 | 27 | ||
| 29 | - public Reminder(AppUser user, ReminderCycle reminderCycle, LocalDate cycleDate, Date cycleTime, Messenger messenger, String intent, Map<String, String> entities) { | 28 | + public Reminder(AppUser user, ReminderCycle reminderCycle, LocalDateTime cycleDate, Messenger messenger, String intent, Map<String, String> entities) { |
| 30 | _user = user; | 29 | _user = user; |
| 31 | _reminderCycle = reminderCycle; | 30 | _reminderCycle = reminderCycle; |
| 32 | _cycleDate = cycleDate; | 31 | _cycleDate = cycleDate; |
| 33 | - _cycleTime = cycleTime; | ||
| 34 | _messenger = messenger; | 32 | _messenger = messenger; |
| 35 | _intent = intent; | 33 | _intent = intent; |
| 36 | _entities = entities; | 34 | _entities = entities; |
| @@ -68,17 +66,13 @@ public class Reminder { | @@ -68,17 +66,13 @@ public class Reminder { | ||
| 68 | _reminderCycle = reminderCycle; | 66 | _reminderCycle = reminderCycle; |
| 69 | } | 67 | } |
| 70 | 68 | ||
| 71 | - public LocalDate getCycleDate() { | 69 | + public LocalDateTime getCycleDate() { |
| 72 | return _cycleDate; | 70 | return _cycleDate; |
| 73 | } | 71 | } |
| 74 | 72 | ||
| 75 | - public void setCycleDate(LocalDate cycleDate) { | 73 | + public void setCycleDate(LocalDateTime cycleDate) { |
| 76 | _cycleDate = cycleDate; | 74 | _cycleDate = cycleDate; |
| 77 | } | 75 | } |
| 78 | 76 | ||
| 79 | - public Date getCycleTime() { return _cycleTime; } | ||
| 80 | - | ||
| 81 | - public void setCycleTime(Date cycleTime) { _cycleTime = cycleTime; } | ||
| 82 | - | ||
| 83 | public Map<String, String> getEntities() { return _entities; } | 77 | public Map<String, String> getEntities() { return _entities; } |
| 84 | } | 78 | } |
services/MainBot/src/main/resources/de/bht/beuthbot/drools/Canteen.drl
| @@ -16,32 +16,33 @@ | @@ -16,32 +16,33 @@ | ||
| 16 | 16 | ||
| 17 | package de.bht.beuthbot.drools | 17 | package de.bht.beuthbot.drools |
| 18 | 18 | ||
| 19 | -import java.util.List | 19 | +import java.util.List; |
| 20 | import java.util.ArrayList; | 20 | import java.util.ArrayList; |
| 21 | import java.util.Arrays; | 21 | import java.util.Arrays; |
| 22 | import java.util.HashMap; | 22 | import java.util.HashMap; |
| 23 | 23 | ||
| 24 | import java.time.LocalDate; | 24 | import java.time.LocalDate; |
| 25 | 25 | ||
| 26 | -import de.bht.beuthbot.canteen.model.Dish | 26 | +import de.bht.beuthbot.canteen.model.Dish; |
| 27 | import de.bht.beuthbot.canteen.model.DishType; | 27 | import de.bht.beuthbot.canteen.model.DishType; |
| 28 | import de.bht.beuthbot.canteen.model.CanteenData; | 28 | import de.bht.beuthbot.canteen.model.CanteenData; |
| 29 | import de.bht.beuthbot.model.Intent; | 29 | import de.bht.beuthbot.model.Intent; |
| 30 | import de.bht.beuthbot.model.EntityName; | 30 | import de.bht.beuthbot.model.EntityName; |
| 31 | import de.bht.beuthbot.drools.model.DroolsMessage; | 31 | import de.bht.beuthbot.drools.model.DroolsMessage; |
| 32 | 32 | ||
| 33 | -import de.bht.beuthbot.scheduler.SchedulerBean | ||
| 34 | -import de.bht.beuthbot.jms.TaskMessage | ||
| 35 | -import de.bht.beuthbot.scheduler.model.ReminderCycle | ||
| 36 | -import java.util.Date | ||
| 37 | -import java.text.SimpleDateFormat | ||
| 38 | -import java.text.ParseException | ||
| 39 | -import de.bht.beuthbot.model.Messenger | 33 | +import de.bht.beuthbot.scheduler.SchedulerBean; |
| 34 | +import de.bht.beuthbot.jms.TaskMessage; | ||
| 35 | +import de.bht.beuthbot.scheduler.model.ReminderCycle; | ||
| 36 | +import java.util.Date; | ||
| 37 | +import java.text.SimpleDateFormat; | ||
| 38 | +import java.text.ParseException; | ||
| 39 | +import de.bht.beuthbot.model.Messenger; | ||
| 40 | import de.bht.beuthbot.scheduler.model.Reminder; | 40 | import de.bht.beuthbot.scheduler.model.Reminder; |
| 41 | 41 | ||
| 42 | import java.time.DayOfWeek; | 42 | import java.time.DayOfWeek; |
| 43 | -import java.time.LocalDate | 43 | +import java.time.LocalDate; |
| 44 | import de.bht.beuthbot.utils.DateStringExtractor; | 44 | import de.bht.beuthbot.utils.DateStringExtractor; |
| 45 | +import java.time.format.DateTimeFormatter; | ||
| 45 | 46 | ||
| 46 | global de.bht.beuthbot.canteen.model.CanteenData canteenData; | 47 | global de.bht.beuthbot.canteen.model.CanteenData canteenData; |
| 47 | global de.bht.beuthbot.model.entities.AppUser user; | 48 | global de.bht.beuthbot.model.entities.AppUser user; |
| @@ -139,7 +140,7 @@ rule "Create reminder" | @@ -139,7 +140,7 @@ rule "Create reminder" | ||
| 139 | Reminder reminder = s.createReminder(message, user); | 140 | Reminder reminder = s.createReminder(message, user); |
| 140 | String messageText = ""; | 141 | String messageText = ""; |
| 141 | if(reminder.getIntent() == Intent.SHOW_FOOD.getText()) { | 142 | if(reminder.getIntent() == Intent.SHOW_FOOD.getText()) { |
| 142 | - messageText = "Ich werde dir " + DateStringExtractor.getGermanWeekDayFromLocalDate(reminder.getCycleDate(), true) + " um " + new SimpleDateFormat("KK:mm").format(reminder.getCycleTime()) + " Uhr den Mensaplan mitteilen!"; | 143 | + messageText = "Ich werde dir " + DateStringExtractor.getGermanWeekDayFromLocalDate(reminder.getCycleDate().toLocalDate(), true) + " um " + reminder.getCycleDate().toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm")) + " Uhr den Mensaplan mitteilen!"; |
| 143 | } else { | 144 | } else { |
| 144 | messageText = "Es war mir leider nicht möglich eine Erinnerung für dich anzulegen. Versuche es bitte noch einmal."; | 145 | messageText = "Es war mir leider nicht möglich eine Erinnerung für dich anzulegen. Versuche es bitte noch einmal."; |
| 145 | } //TODO: Add other intents | 146 | } //TODO: Add other intents |
| @@ -147,6 +148,24 @@ rule "Create reminder" | @@ -147,6 +148,24 @@ rule "Create reminder" | ||
| 147 | 148 | ||
| 148 | end | 149 | end |
| 149 | 150 | ||
| 151 | +rule "Delete reminder" | ||
| 152 | + dialect "java" | ||
| 153 | + when | ||
| 154 | + m : DroolsMessage(getIntent().equals(Intent.DELETE_REMINDER.getText())) | ||
| 155 | + then | ||
| 156 | + SchedulerBean s = new SchedulerBean(); | ||
| 157 | + TaskMessage message = new TaskMessage(m); | ||
| 158 | + boolean didDelete = s.deleteReminder(message, user); | ||
| 159 | + String messageText = ""; | ||
| 160 | + if(didDelete) { | ||
| 161 | + messageText = "Ich werde dir von nun an keine Erinnerungen mehr schicken!"; | ||
| 162 | + } else { | ||
| 163 | + messageText = "Ich tu doch gar nichts!"; | ||
| 164 | + } | ||
| 165 | + m.setText(messageText); | ||
| 166 | + | ||
| 167 | +end | ||
| 168 | + | ||
| 150 | 169 | ||
| 151 | // --------------------------- Fallback ------------------------- | 170 | // --------------------------- Fallback ------------------------- |
| 152 | rule "Fallback" | 171 | rule "Fallback" |