102 lines
3.2 KiB
Rust
102 lines
3.2 KiB
Rust
use super::{ManageUserUser, User, regular::ClubMember};
|
|
use crate::{
|
|
NonEmptyString,
|
|
model::{activity::ActivityBuilder, mail::Mail, notification::Notification, role::Role},
|
|
special_user,
|
|
};
|
|
use chrono::NaiveDate;
|
|
use rocket::{async_trait, fs::TempFile};
|
|
use sqlx::SqlitePool;
|
|
|
|
special_user!(UnterstuetzendUser, +"Unterstützend");
|
|
|
|
impl ClubMember for UnterstuetzendUser {}
|
|
|
|
impl UnterstuetzendUser {
|
|
pub(crate) async fn send_welcome_mail_to_user(
|
|
&self,
|
|
db: &SqlitePool,
|
|
smtp_pw: &str,
|
|
) -> Result<(), String> {
|
|
let Some(mail) = &self.mail else {
|
|
return Err(format!(
|
|
"Couldn't send welcome mail, as the user {self} has no mail..."
|
|
));
|
|
};
|
|
|
|
Mail::send_single(
|
|
db,
|
|
mail,
|
|
"Willkommen im ASKÖ Ruderverein Donau Linz!",
|
|
format!(
|
|
"Hallo {0},
|
|
|
|
herzlich willkommen im ASKÖ Ruderverein Donau Linz! Wir freuen uns sehr, dich als neues Mitglied in unserem Verein begrüßen zu dürfen.
|
|
|
|
Um dir den Einstieg zu erleichtern, findest du in unserem Handbuch alle wichtigen Informationen über unseren Verein: https://rudernlinz.at/book. Bei weiteren Fragen stehen dir die Adressen info@rudernlinz.at (für allgemeine Fragen) und it@rudernlinz.at (bei technischen Fragen) jederzeit zur Verfügung.
|
|
|
|
Damit du dich noch mehr verbunden fühlst (:-)), haben wir im Bootshaus ein WLAN für Vereinsmitglieder 'ASKÖ Ruderverein Donau Linz' eingerichtet. Das Passwort dafür lautet 'donau1921' (ohne Anführungszeichen). Bitte gib das Passwort an keine vereinsfremden Personen weiter.
|
|
|
|
Riemen- & Dollenbruch
|
|
ASKÖ Ruderverein Donau Linz", self.name),
|
|
smtp_pw,
|
|
).await?;
|
|
|
|
ActivityBuilder::new(&format!(
|
|
"{self} hat eine Mail an {mail} bekommen, mit Infos dass er/sie nun ein unterstützendes Mitglied ist (Handbuch, WLAN)."
|
|
))
|
|
.user(self)
|
|
.save(db)
|
|
.await;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
pub(crate) async fn create(
|
|
db: &SqlitePool,
|
|
created_by: &ManageUserUser,
|
|
smtp_pw: &str,
|
|
name: NonEmptyString,
|
|
mail: &str,
|
|
financial: Option<Role>,
|
|
birthdate: &NaiveDate,
|
|
member_since: &NaiveDate,
|
|
phone: NonEmptyString,
|
|
address: NonEmptyString,
|
|
membership_pdf: &TempFile<'_>,
|
|
) -> Result<(), String> {
|
|
let role = Role::find_by_name(db, "Unterstützend").await.unwrap();
|
|
let user = Self::create_member(
|
|
db,
|
|
created_by,
|
|
&role,
|
|
name,
|
|
mail,
|
|
financial,
|
|
birthdate,
|
|
member_since,
|
|
phone,
|
|
address,
|
|
membership_pdf,
|
|
)
|
|
.await?;
|
|
|
|
let user = Self::new(db, &user).await.unwrap();
|
|
user.send_welcome_mail_to_user(db, smtp_pw).await?;
|
|
|
|
if let Some(vorstand) = Role::find_by_name(db, "Vorstand").await {
|
|
Notification::create_for_role(
|
|
db,
|
|
&vorstand,
|
|
&format!("Lieber Vorstand, es gibt ein neues unterstützendes Mitglied: {user}"),
|
|
"Neues unterstützendes Vereinsmitglied",
|
|
None,
|
|
None,
|
|
)
|
|
.await;
|
|
}
|
|
|
|
Ok(())
|
|
}
|
|
}
|