Merge pull request 'board members can delete trips, proper notification + succ message is created' (#1048) from board-can-delete-trips into main
Reviewed-on: #1048
This commit is contained in:
@@ -138,10 +138,7 @@ impl User {
|
||||
None => format!("{updated_by} hat eine Adresse für {self} hinzugefügt: {new_address}"),
|
||||
};
|
||||
|
||||
ActivityBuilder::new(&msg)
|
||||
.relevant_for_user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
ActivityBuilder::new(&msg).user(self).save(db).await;
|
||||
}
|
||||
|
||||
pub(crate) async fn update_nickname(
|
||||
@@ -174,10 +171,7 @@ impl User {
|
||||
"{updated_by} hat einen neuen Spitznamen für {self} hinzugefügt: {new_nickname}"
|
||||
),
|
||||
};
|
||||
ActivityBuilder::new(&msg)
|
||||
.relevant_for_user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
ActivityBuilder::new(&msg).user(self).save(db).await;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -206,10 +200,7 @@ impl User {
|
||||
),
|
||||
};
|
||||
|
||||
ActivityBuilder::new(&msg)
|
||||
.relevant_for_user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
ActivityBuilder::new(&msg).user(self).save(db).await;
|
||||
}
|
||||
|
||||
pub(crate) async fn update_birthdate(
|
||||
@@ -236,10 +227,7 @@ impl User {
|
||||
}
|
||||
};
|
||||
|
||||
ActivityBuilder::new(&msg)
|
||||
.relevant_for_user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
ActivityBuilder::new(&msg).user(self).save(db).await;
|
||||
}
|
||||
|
||||
pub(crate) async fn update_family(
|
||||
@@ -261,7 +249,7 @@ impl User {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{updated_by} hat {self} zu einer Familie hinzugefügt."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
} else {
|
||||
@@ -272,7 +260,7 @@ impl User {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{updated_by} hat die Familienzugehörigkeit von {self} gelöscht."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
};
|
||||
@@ -318,7 +306,7 @@ impl User {
|
||||
)
|
||||
.await;
|
||||
ActivityBuilder::new(&format!("{updated_by} hat {self} zur Steuerperson gemacht"))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -337,7 +325,7 @@ impl User {
|
||||
)
|
||||
.await;
|
||||
ActivityBuilder::new(&format!("{updated_by} hat {self} zum Bootsführer gemacht"))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -355,7 +343,7 @@ impl User {
|
||||
)
|
||||
.await;
|
||||
ActivityBuilder::new(&format!("{updated_by} hat {self} zum normalen Mitglied gemacht (keine Steuerperson/Schiffsführer mehr)"))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -392,7 +380,7 @@ impl User {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{updated_by} hat die Ermäßigung von {self} von {old} auf {new} geändert"
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -424,7 +412,7 @@ impl User {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{updated_by} hat die Rolle {role} von {self} entfernt."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -451,7 +439,7 @@ impl User {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{updated_by} hat den Bezahlstatus von {self} auf 'nicht bezahlt' gesetzt."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -474,7 +462,7 @@ impl User {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{updated_by} hat den Bezahlstatus von {self} auf 'bezahlt' gesetzt."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -511,7 +499,7 @@ impl User {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{updated_by} hat die Rolle '{role}' dem Benutzer {self} hinzugefügt."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -556,7 +544,7 @@ impl User {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{updated_by} hat die Mitgliedserklärung (PDF) für user {self} hinzugefügt."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
|
@@ -86,7 +86,7 @@ impl ClubMemberUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{modified_by} hat {self} zu einem regulären hochgestuft."
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -122,7 +122,7 @@ impl ClubMemberUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{modified_by} hat {self} zu einem unterstützenden Mitglied gemacht."
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -158,7 +158,7 @@ impl ClubMemberUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{modified_by} hat {self} zu ein förderndes Mitglied gemacht."
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
|
@@ -1,8 +1,7 @@
|
||||
use super::{ManageUserUser, User, regular::ClubMember};
|
||||
use super::{regular::ClubMember, ManageUserUser, User};
|
||||
use crate::{
|
||||
NonEmptyString,
|
||||
model::{activity::ActivityBuilder, mail::Mail, notification::Notification, role::Role},
|
||||
special_user,
|
||||
special_user, NonEmptyString,
|
||||
};
|
||||
use chrono::NaiveDate;
|
||||
use rocket::{async_trait, fs::TempFile};
|
||||
@@ -45,7 +44,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
ActivityBuilder::new(&format!(
|
||||
"User {self} hat die Info-Mail bzgl. neues förderndes Mitglied (Handbuch und WLAN Infos) an {mail} gesendet bekommen"
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
|
@@ -65,6 +65,21 @@ impl Display for User {
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) struct VecUser<'a>(pub &'a Vec<User>);
|
||||
impl Display for VecUser<'_> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(
|
||||
f,
|
||||
"{}",
|
||||
self.0
|
||||
.iter()
|
||||
.map(|user| user.name.as_str())
|
||||
.collect::<Vec<_>>()
|
||||
.join(", ")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct UserWithDetails {
|
||||
#[serde(flatten)]
|
||||
@@ -457,7 +472,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
smtp_pw,
|
||||
).await?;
|
||||
|
||||
ActivityBuilder::new(&format!("User {self} hat eine Mail bekommen, dass seine 5 Ausfahrten mit der heutigen Ausfahrt aufgebraucht sind, und dass der nächste Schritt eine Vereinsmitgliedschaft wäre (inkl. Links zu Beitrittserklärung + Info, dass sie an info@ geschickt werden soll.")).relevant_for_user(self).save_tx(db).await;
|
||||
ActivityBuilder::new(&format!("User {self} hat eine Mail bekommen, dass seine 5 Ausfahrten mit der heutigen Ausfahrt aufgebraucht sind, und dass der nächste Schritt eine Vereinsmitgliedschaft wäre (inkl. Links zu Beitrittserklärung + Info, dass sie an info@ geschickt werden soll.")).user(self).save_tx(db).await;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -515,7 +530,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
ActivityBuilder::new(&format!(
|
||||
"{changed_by} hat das Passwort von User {self} zurückgesetzt."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -527,7 +542,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
.await
|
||||
.unwrap(); //Okay, because we can only create a User of a valid id
|
||||
ActivityBuilder::new(&format!("{self} hat sein Passwort geändert."))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -557,7 +572,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
.await
|
||||
.unwrap(); //Okay, because we can only create a User of a valid id
|
||||
ActivityBuilder::new(&format!("User {self} wurde von {deleted_by} gelöscht."))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
}
|
||||
@@ -652,7 +667,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
)
|
||||
.await;
|
||||
ActivityBuilder::new(&format!("5 Scheckbuchausfahrten von {self} wurden mit der heutigen Ausfahrt aufgebraucht. Info-Mail wurde an {self} geschickt + alle Steuerberechtigten informiert, dass wir pot. ein neues Mitglied haben"))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save_tx(db)
|
||||
.await;
|
||||
}
|
||||
@@ -670,7 +685,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
)
|
||||
.await;
|
||||
ActivityBuilder::new(&format!("{self} hat nun bereits die {amount_trips}. seiner 5 Scheckbuchausfahrten absolviert. Vorstand wurde via Notification informiert."))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save_tx(db)
|
||||
.await;
|
||||
}
|
||||
@@ -695,7 +710,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
ActivityBuilder::new(&format!(
|
||||
"{self} hat das heurige Fahrtenabzeichen geschafft! Der Vorstand + {self} wurde via Notification informiert."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save_tx(db)
|
||||
.await;
|
||||
|
||||
@@ -717,7 +732,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
)
|
||||
.await;
|
||||
ActivityBuilder::new(&format!("{self} hat den Äquatorpreis in {level} geschafft! Der Vorstand + {self} wurde via Notification informiert."))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save_tx(db)
|
||||
.await;
|
||||
|
||||
|
@@ -1,8 +1,7 @@
|
||||
use super::{ManageUserUser, User};
|
||||
use crate::{
|
||||
NonEmptyString,
|
||||
model::{activity::ActivityBuilder, mail::Mail, notification::Notification, role::Role},
|
||||
special_user,
|
||||
special_user, NonEmptyString,
|
||||
};
|
||||
use chrono::NaiveDate;
|
||||
use rocket::{async_trait, fs::TempFile, tokio::io::AsyncReadExt};
|
||||
@@ -52,7 +51,7 @@ pub trait ClubMember {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{created_by} hat Mitglied {user} mit der Rolle {role} angelegt."
|
||||
))
|
||||
.relevant_for_user(&user)
|
||||
.user(&user)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -103,7 +102,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
).await?;
|
||||
|
||||
ActivityBuilder::new(&format!("Willkommensmail für {self} wurde an {mail} verschickt (Handbuch, Signal-Gruppe, App-Info, Fingerprint, WLAN)."))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
|
@@ -2,13 +2,12 @@ use super::foerdernd::FoerderndUser;
|
||||
use super::regular::RegularUser;
|
||||
use super::unterstuetzend::UnterstuetzendUser;
|
||||
use super::{ManageUserUser, User};
|
||||
use crate::NonEmptyString;
|
||||
use crate::model::activity::ActivityBuilder;
|
||||
use crate::model::role::Role;
|
||||
use crate::NonEmptyString;
|
||||
use crate::{
|
||||
SCHECKBUCH,
|
||||
model::{mail::Mail, notification::Notification},
|
||||
special_user,
|
||||
special_user, SCHECKBUCH,
|
||||
};
|
||||
use chrono::NaiveDate;
|
||||
use rocket::async_trait;
|
||||
@@ -88,7 +87,7 @@ impl ScheckbuchUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{changed_by} hat den Scheckbuch-User {self} auf ein reguläres Mitglied upgegraded! Die Steuerpersonen wurden via Notification informiert."
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -144,7 +143,7 @@ impl ScheckbuchUser {
|
||||
.await;
|
||||
}
|
||||
ActivityBuilder::new(&format!("{changed_by} hat den Scheckbuch-User {self} auf ein unterstützendes Mitglied upgegraded!"))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -200,7 +199,7 @@ impl ScheckbuchUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{changed_by} hat den Scheckbuch-User {self} auf ein förderndes Mitglied upgegraded!"
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -215,7 +214,7 @@ impl ScheckbuchUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{self} hat eine Info-Mail bekommen (Erklärung Scheckbuch, Ruderapp) und alle Steuerberechtigten wurden informiert."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -295,7 +294,7 @@ ASKÖ Ruderverein Donau Linz", self.name, SCHECKBUCH/100),
|
||||
user.notify(db, smtp_pw).await?;
|
||||
|
||||
ActivityBuilder::new(&format!("{created_by} hat Scheckbuch {user} angelegt."))
|
||||
.relevant_for_user(&user)
|
||||
.user(&user)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
|
@@ -4,9 +4,9 @@ use super::scheckbuch::ScheckbuchUser;
|
||||
use super::schnupperinterest::SchnupperInterestUser;
|
||||
use super::unterstuetzend::UnterstuetzendUser;
|
||||
use super::{ManageUserUser, User};
|
||||
use crate::NonEmptyString;
|
||||
use crate::model::activity::ActivityBuilder;
|
||||
use crate::model::role::Role;
|
||||
use crate::NonEmptyString;
|
||||
use crate::{
|
||||
model::{mail::Mail, notification::Notification},
|
||||
special_user,
|
||||
@@ -101,7 +101,7 @@ impl SchnupperantUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{changed_by} hat den Schnupperant {self} auf ein reguläres Mitglied upgegraded!"
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -142,7 +142,7 @@ impl SchnupperantUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{changed_by} hat dem ehemaligen Schnupperant {self} nun ein Scheckbuch gegeben"
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -184,7 +184,7 @@ impl SchnupperantUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{changed_by} hat dem eigentlichen Schnupperanten {self} wieder auf die 'Interessierten'-Liste zurückgegeben."
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -253,7 +253,7 @@ impl SchnupperantUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{changed_by} hat den Schnupperant {self} auf ein unterstützendes Mitglied upgegraded!"
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -320,7 +320,7 @@ impl SchnupperantUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{changed_by} hat den Schnupperant {self} auf ein förderndes Mitglied upgegraded!"
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -335,7 +335,7 @@ impl SchnupperantUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{self} hat eine Mail bekommen (Inhalt: wir freuen uns auf ihn + senden detailliertere Infos später zu) und die Schnupperbetreuer wurden via Notification informiert."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -423,7 +423,7 @@ ASKÖ Ruderverein Donau Linz",
|
||||
ActivityBuilder::new(&format!(
|
||||
"{created_by} hat {user} zur fixen Schnupperkurs-Anmeldung hinzugefügt."
|
||||
))
|
||||
.relevant_for_user(&user)
|
||||
.user(&user)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
|
@@ -1,9 +1,9 @@
|
||||
use super::scheckbuch::ScheckbuchUser;
|
||||
use super::schnupperant::SchnupperantUser;
|
||||
use super::{ManageUserUser, User};
|
||||
use crate::NonEmptyString;
|
||||
use crate::model::activity::ActivityBuilder;
|
||||
use crate::model::role::Role;
|
||||
use crate::NonEmptyString;
|
||||
use crate::{model::notification::Notification, special_user};
|
||||
use rocket::async_trait;
|
||||
use sqlx::SqlitePool;
|
||||
@@ -44,7 +44,7 @@ impl SchnupperInterestUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"Der Schnupperinteressierte {self} hat sich (ohne Schnupperkurs) doch gleich direkt für ein Scheckbuch entschieden. {changed_by} hat dieses eingerichtet."
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -86,7 +86,7 @@ impl SchnupperInterestUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"Der Schnupperinteressierte {self} hat sich zum Schnupperkurs angemeldet."
|
||||
))
|
||||
.relevant_for_user(&self)
|
||||
.user(&self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -99,7 +99,7 @@ impl SchnupperInterestUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"Der Schnupperbetreuer hat eine Info via Notification bekommen, dass {self} Interesse an einen Schnupperkurs hat."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
@@ -153,7 +153,7 @@ impl SchnupperInterestUser {
|
||||
ActivityBuilder::new(&format!(
|
||||
"{created_by} hat Schnupper-Interessierten {user} angelegt."
|
||||
))
|
||||
.relevant_for_user(&user)
|
||||
.user(&user)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
|
@@ -1,8 +1,7 @@
|
||||
use super::{ManageUserUser, User, regular::ClubMember};
|
||||
use super::{regular::ClubMember, ManageUserUser, User};
|
||||
use crate::{
|
||||
NonEmptyString,
|
||||
model::{activity::ActivityBuilder, mail::Mail, notification::Notification, role::Role},
|
||||
special_user,
|
||||
special_user, NonEmptyString,
|
||||
};
|
||||
use chrono::NaiveDate;
|
||||
use rocket::{async_trait, fs::TempFile};
|
||||
@@ -45,7 +44,7 @@ ASKÖ Ruderverein Donau Linz", self.name),
|
||||
ActivityBuilder::new(&format!(
|
||||
"{self} hat eine Mail an {mail} bekommen, mit Infos dass er/sie nun ein unterstützendes Mitglied ist (Handbuch, WLAN)."
|
||||
))
|
||||
.relevant_for_user(self)
|
||||
.user(self)
|
||||
.save(db)
|
||||
.await;
|
||||
|
||||
|
Reference in New Issue
Block a user