don't notify cancelled trips
This commit is contained in:
		| @@ -77,23 +77,30 @@ impl Trip { | ||||
|         .await; | ||||
|         if same_starting_datetime.len() > 1 { | ||||
|             for notify in same_starting_datetime { | ||||
|                 if notify.id != trip_details.id { | ||||
|                     // notify everyone except oneself | ||||
|                     if let Some(trip) = Trip::find_by_trip_details(db, notify.id).await { | ||||
|                         let user = User::find_by_id(db, trip.cox_id as i32).await.unwrap(); | ||||
|                         Notification::create( | ||||
|                             db, | ||||
|                             &user, | ||||
|                             &format!( | ||||
|                                 "{} hat eine Ausfahrt zur selben Zeit ({} um {}) wie du erstellt", | ||||
|                                 cox.user.name, trip.day, trip.planned_starting_time | ||||
|                             ), | ||||
|                             "Neue Ausfahrt zur selben Zeit", | ||||
|                             None, | ||||
|                             None, | ||||
|                         ) | ||||
|                         .await; | ||||
|                     } | ||||
|                 // don't notify oneself | ||||
|                 if notify.id == trip_details.id { | ||||
|                     continue; | ||||
|                 } | ||||
|  | ||||
|                 // don't notify people who have cancelled their trip | ||||
|                 if notify.cancelled(db) { | ||||
|                     continue; | ||||
|                 } | ||||
|  | ||||
|                 if let Some(trip) = Trip::find_by_trip_details(db, notify.id).await { | ||||
|                     let user = User::find_by_id(db, trip.cox_id as i32).await.unwrap(); | ||||
|                     Notification::create( | ||||
|                         db, | ||||
|                         &user, | ||||
|                         &format!( | ||||
|                             "{} hat eine Ausfahrt zur selben Zeit ({} um {}) wie du erstellt", | ||||
|                             cox.user.name, trip.day, trip.planned_starting_time | ||||
|                         ), | ||||
|                         "Neue Ausfahrt zur selben Zeit", | ||||
|                         None, | ||||
|                         None, | ||||
|                     ) | ||||
|                     .await; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -77,6 +77,10 @@ WHERE day = ? AND planned_starting_time = ? | ||||
|         .await.unwrap() | ||||
|     } | ||||
|  | ||||
|     pub fn cancelled(&self, db: &SqlitePool) -> bool { | ||||
|         self.max_people == 0 | ||||
|     } | ||||
|  | ||||
|     /// This function is called when a person registers to a trip or when the cox changes the | ||||
|     /// amount of free places. | ||||
|     pub async fn check_free_spaces(&self, db: &SqlitePool) { | ||||
| @@ -85,7 +89,7 @@ WHERE day = ? AND planned_starting_time = ? | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if self.max_people == 0 { | ||||
|         if self.cancelled(db) { | ||||
|             // Cox cancelled event, thus it's probably bad weather. Don't bother with sending | ||||
|             // notifications | ||||
|             return; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user