From b429998775b676d8caf91d05b22c4644c94ef5c0 Mon Sep 17 00:00:00 2001 From: philipp Date: Thu, 12 Sep 2024 08:35:10 +0200 Subject: [PATCH] inform board if more trips than allowed --- src/model/user.rs | 55 +++++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/src/model/user.rs b/src/model/user.rs index 6e77085..c2bc150 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -257,8 +257,6 @@ ASKÖ Ruderverein Donau Linz", self.name, SCHECKBUCH/100), mail: &str, smtp_pw: &str, ) -> Result<(), String> { - // 2 things to do: - // 1. Send mail to user Mail::send_single_tx( db, mail, @@ -279,20 +277,6 @@ ASKÖ Ruderverein Donau Linz", self.name), smtp_pw, ).await?; - // 2. Notify all coxes - let coxes = Role::find_by_name_tx(db, "cox").await.unwrap(); - Notification::create_for_role_tx( - db, - &coxes, - &format!( - "Liebe Steuerberechtigte, {} hat alle Ausfahrten des Scheckbuchs absolviert. Hoffentlich können wir uns bald über ein neues Mitglied freuen :-)", - self.name - ), - "Scheckbuch fertig", - None,None - ) - .await; - Ok(()) } @@ -971,13 +955,42 @@ ORDER BY last_access DESC db: &mut Transaction<'_, Sqlite>, smtp_pw: &str, ) { - if self.has_role_tx(db, "scheckbuch").await - && Logbook::completed_with_user_tx(db, &self).await.len() == 5 - { - if let Some(mail) = &self.mail { - let _ = self.send_end_mail_scheckbuch(db, mail, smtp_pw).await; + if self.has_role_tx(db, "scheckbuch").await { + let amount_trips = Logbook::completed_with_user_tx(db, &self).await.len(); + if amount_trips == 5 { + if let Some(mail) = &self.mail { + let _ = self.send_end_mail_scheckbuch(db, mail, smtp_pw).await; + } + let coxes = Role::find_by_name_tx(db, "cox").await.unwrap(); + Notification::create_for_role_tx( + db, + &coxes, + &format!( + "Liebe Steuerberechtigte, {} hat alle Ausfahrten des Scheckbuchs absolviert. Hoffentlich können wir uns bald über ein neues Mitglied freuen :-)", + self.name + ), + "Scheckbuch fertig", + None,None + ) + .await; + } else if amount_trips > 5 { + let board = Role::find_by_name_tx(db, "Vorstand").await.unwrap(); + Notification::create_for_role_tx( + db, + &board, + &format!( + "Lieber Vorstand, {} hat nun bereits die {}. seiner 5 Scheckbuchausfahrten absolviert.", + self.name, amount_trips + ), + "Scheckbuch überfertig", + None,None + ) + .await; } } + + // TODO: check fahrtenabzeichen fertig? + // TODO: check äquatorpreis geschafft? } }