@@ -88,19 +88,12 @@ public function getAll(?IUser $user = null) {
8888 */
8989 public function createOrUpdate (IUser $ user , int $ fileId , DateTime $ dueDate ): bool {
9090 $ now = new DateTime ('now ' , new DateTimeZone ('UTC ' ));
91- try {
92- $ reminder = $ this ->reminderMapper ->findDueForUser ($ user , $ fileId );
93- $ reminder ->setDueDate ($ dueDate );
94- $ reminder ->setUpdatedAt ($ now );
95- $ this ->reminderMapper ->update ($ reminder );
96- $ this ->cache ->set ("{$ user ->getUID ()}- $ fileId " , $ reminder );
97- return false ;
98- } catch (DoesNotExistException $ e ) {
91+ $ reminder = $ this ->getDueForUser ($ user , $ fileId );
92+ if ($ reminder === null ) {
9993 $ node = $ this ->root ->getUserFolder ($ user ->getUID ())->getFirstNodeById ($ fileId );
10094 if (!$ node ) {
10195 throw new NodeNotFoundException ();
10296 }
103- // Create new reminder if no reminder is found
10497 $ reminder = new Reminder ();
10598 $ reminder ->setUserId ($ user ->getUID ());
10699 $ reminder ->setFileId ($ fileId );
@@ -111,27 +104,32 @@ public function createOrUpdate(IUser $user, int $fileId, DateTime $dueDate): boo
111104 $ this ->cache ->set ("{$ user ->getUID ()}- $ fileId " , $ reminder );
112105 return true ;
113106 }
107+ $ reminder ->setDueDate ($ dueDate );
108+ $ reminder ->setUpdatedAt ($ now );
109+ $ this ->reminderMapper ->update ($ reminder );
110+ $ this ->cache ->set ("{$ user ->getUID ()}- $ fileId " , $ reminder );
111+ return false ;
114112 }
115113
116114 /**
117115 * @throws DoesNotExistException
118116 */
119117 public function remove (IUser $ user , int $ fileId ): void {
120- $ reminder = $ this ->reminderMapper -> findDueForUser ($ user , $ fileId );
121- $ this ->reminderMapper -> delete ($ reminder );
118+ $ reminder = $ this ->getDueForUser ($ user , $ fileId );
119+ $ this ->deleteReminder ($ reminder );
122120 }
123121
124122 public function removeAllForNode (Node $ node ): void {
125123 $ reminders = $ this ->reminderMapper ->findAllForNode ($ node );
126124 foreach ($ reminders as $ reminder ) {
127- $ this ->reminderMapper -> delete ($ reminder );
125+ $ this ->deleteReminder ($ reminder );
128126 }
129127 }
130128
131129 public function removeAllForUser (IUser $ user ): void {
132130 $ reminders = $ this ->reminderMapper ->findAllForUser ($ user );
133131 foreach ($ reminders as $ reminder ) {
134- $ this ->reminderMapper -> delete ($ reminder );
132+ $ this ->deleteReminder ($ reminder );
135133 }
136134 }
137135
@@ -163,6 +161,7 @@ public function send(Reminder $reminder): void {
163161 try {
164162 $ this ->notificationManager ->notify ($ notification );
165163 $ this ->reminderMapper ->markNotified ($ reminder );
164+ $ this ->cache ->set ("{$ user ->getUID ()}- {$ reminder ->getFileId ()}" , $ reminder );
166165 } catch (Throwable $ th ) {
167166 $ this ->logger ->error ($ th ->getMessage (), $ th ->getTrace ());
168167 }
@@ -174,7 +173,12 @@ public function cleanUp(?int $limit = null): void {
174173 ->modify ('-1 day ' );
175174 $ reminders = $ this ->reminderMapper ->findNotified ($ buffer , $ limit );
176175 foreach ($ reminders as $ reminder ) {
177- $ this ->reminderMapper -> delete ($ reminder );
176+ $ this ->deleteReminder ($ reminder );
178177 }
179178 }
179+
180+ private function deleteReminder (Reminder $ reminder ): void {
181+ $ this ->reminderMapper ->delete ($ reminder );
182+ $ this ->cache ->set ("{$ reminder ->getUserId ()}- {$ reminder ->getFileId ()}" , false );
183+ }
180184}
0 commit comments