staging #172

Merged
philipp merged 5 commits from staging into main 2024-01-19 11:58:06 +01:00
Showing only changes of commit 99e3aa22a2 - Show all commits

View File

@ -66,91 +66,87 @@ impl Mail {
pub async fn fees(db: &SqlitePool, smtp_pw: String) { pub async fn fees(db: &SqlitePool, smtp_pw: String) {
let users = User::all_payer_groups(db).await; let users = User::all_payer_groups(db).await;
for user in users { for user in users {
if user.has_role(db, "paid").await { if !user.has_role(db, "paid").await {
if user.name == "Philipp Hofer" { let mut is_family = false;
let mut is_family = false; let mut send_to = String::new();
let mut send_to = String::new(); match Family::find_by_opt_id(db, user.family_id).await {
match Family::find_by_opt_id(db, user.family_id).await { Some(family) => {
Some(family) => { is_family = true;
is_family = true; for member in family.members(db).await {
for member in family.members(db).await { if let Some(mail) = member.mail {
if let Some(mail) = member.mail { send_to.push_str(&format!("{mail},"))
send_to.push_str(&format!("{mail},"))
}
}
}
None => {
if let Some(mail) = &user.mail {
send_to.push_str(&mail)
} }
} }
} }
None => {
if let Some(mail) = &user.mail {
send_to.push_str(&mail)
}
}
}
let fees = user.fee(db).await; let fees = user.fee(db).await;
if let Some(fees) = fees { if let Some(fees) = fees {
let mut content = format!( let mut content = format!(
"Liebes Vereinsmitglied, \n\ "Liebes Vereinsmitglied, \n\
\n
dein Vereinsbeitrag für das aktuelle Jahr beträgt {}", dein Vereinsbeitrag für das aktuelle Jahr beträgt {}",
fees.sum_in_cents / 100, fees.sum_in_cents / 100,
); );
if fees.parts.len() == 1 { if fees.parts.len() == 1 {
content.push_str(&format!(" ({}).\n", fees.parts[0].0)) content.push_str(&format!(" ({}).\n", fees.parts[0].0))
} else { } else {
content content.push_str(". Dieser setzt sich aus folgenden Teilen zusammen: \n");
.push_str(". Dieser setzt sich aus folgenden Teilen zusammen: \n"); for (desc, fee_in_cents) in fees.parts {
for (desc, fee_in_cents) in fees.parts { content.push_str(&format!("- {}: {}\n", desc, fee_in_cents / 100))
content.push_str(&format!("- {}: {}\n", desc, fee_in_cents / 100))
}
} }
if is_family { }
content.push_str(&format!( if is_family {
"Dieser gilt für die gesamte Familie ({}).\n", content.push_str(&format!(
fees.name "Dieser gilt für die gesamte Familie ({}).\n",
)) fees.name
} ))
content.push_str("\n Bitte überweise diesen auf folgendes Konto: IBAN: AT13 1200 0804 1300 1200. Auf https://app.rudernlinz.at/planned findest du einen QR Code, den du mit deiner Bankapp scannen kannst um alle Eingaben bereits ausgefüllt zu haben.\n\n\ }
Falls die Berechnung nicht stimmt (korrekte Preise findest du unter https://rudernlinz.at/unser-verein/gebuhren/) melde dich bitte an it@rudernlinz.at. @Studenten: Bitte Bestätigung an it@rudernlinz.at schicken.\n\n\ content.push_str("\nBitte überweise diesen auf folgendes Konto: IBAN: AT13 1200 0804 1300 1200. Auf https://app.rudernlinz.at/planned findest du einen QR Code, den du mit deiner Bankapp scannen kannst um alle Eingaben bereits ausgefüllt zu haben.\n\n\
Falls die Berechnung nicht stimmt (korrekte Preise findest du unter https://rudernlinz.at/unser-verein/gebuhren/) melde dich bitte bei it@rudernlinz.at. @Studenten: Bitte die aktuelle Studienbestätigung an it@rudernlinz.at schicken.\n\n\
Beste Grüße\n\ Beste Grüße\n\
Der Vorstand Der Vorstand
"); ");
let mut email = Message::builder() let mut email = Message::builder()
.from( .from(
"ASKÖ Ruderverein Donau Linz <no-reply@rudernlinz.at>" "ASKÖ Ruderverein Donau Linz <no-reply@rudernlinz.at>"
.parse()
.unwrap(),
)
.reply_to(
"ASKÖ Ruderverein Donau Linz <it@rudernlinz.at>"
.parse()
.unwrap(),
)
.to("ASKÖ Ruderverein Donau Linz <no-reply@rudernlinz.at>"
.parse() .parse()
.unwrap()); .unwrap(),
let splitted = send_to.split(','); )
for single_rec in splitted { .reply_to(
email = email.bcc(single_rec.parse().unwrap()); "ASKÖ Ruderverein Donau Linz <it@rudernlinz.at>"
} .parse()
.unwrap(),
let email = email )
.subject("ASKÖ Ruderverein Donau Linz | Vereinsgebühren") .to("ASKÖ Ruderverein Donau Linz <no-reply@rudernlinz.at>"
.header(ContentType::TEXT_PLAIN) .parse()
.body(content) .unwrap());
.unwrap(); let splitted = send_to.split(',');
for single_rec in splitted {
let creds = email = email.bcc(single_rec.parse().unwrap());
Credentials::new("no-reply@rudernlinz.at".to_owned(), smtp_pw.clone());
let mailer = SmtpTransport::relay("mail.your-server.de")
.unwrap()
.credentials(creds)
.build();
// Send the email
mailer.send(&email).unwrap();
} }
let email = email
.subject("ASKÖ Ruderverein Donau Linz | Vereinsgebühren")
.header(ContentType::TEXT_PLAIN)
.body(content)
.unwrap();
let creds =
Credentials::new("no-reply@rudernlinz.at".to_owned(), smtp_pw.clone());
let mailer = SmtpTransport::relay("mail.your-server.de")
.unwrap()
.credentials(creds)
.build();
// Send the email
mailer.send(&email).unwrap();
} }
} }
} }