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" |