diff --git a/src/model/user.rs b/src/model/user.rs index a0f8da0..a018d3f 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -361,17 +361,38 @@ ASKÖ Ruderverein Donau Linz", self.name), ); } + let halfprice = if let Some(member_since_date) = &self.member_since_date { + if let Ok(member_since_date) = NaiveDate::parse_from_str(member_since_date, "%Y-%m-%d") + { + let halfprice_startdate = + NaiveDate::from_ymd_opt(Local::now().year(), 7, 1).unwrap(); + member_since_date >= halfprice_startdate + } else { + false + } + } else { + false + }; + if self.has_role(db, "Unterstützend").await { fee.add("Unterstützendes Mitglied".into(), UNTERSTUETZEND); } else if self.has_role(db, "Förderndes Mitglied").await { fee.add("Förderndes Mitglied".into(), FOERDERND); } else if Family::find_by_opt_id(db, self.family_id).await.is_none() { if self.has_role(db, "Student").await || self.has_role(db, "Schüler").await { - fee.add("Schüler/Student".into(), STUDENT_OR_PUPIL); + if halfprice { + fee.add("Schüler/Student (Halbpreis)".into(), STUDENT_OR_PUPIL / 2); + } else { + fee.add("Schüler/Student".into(), STUDENT_OR_PUPIL); + } } else if self.has_role(db, "Ehrenmitglied").await { fee.add("Ehrenmitglied".into(), 0); } else { - fee.add("Mitgliedsbeitrag".into(), REGULAR); + if halfprice { + fee.add("Mitgliedsbeitrag (Halbpreis)".into(), REGULAR / 2); + } else { + fee.add("Mitgliedsbeitrag".into(), REGULAR); + } } }