start with aequatorpreis
This commit is contained in:
parent
1ce3ef9082
commit
b6d58077f6
@ -24,6 +24,71 @@ use crate::{
|
|||||||
SCHECKBUCH, STUDENT_OR_PUPIL, UNTERSTUETZEND,
|
SCHECKBUCH, STUDENT_OR_PUPIL, UNTERSTUETZEND,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mod aequatorpreis {
|
||||||
|
use chrono::{Datelike, Local, NaiveDate};
|
||||||
|
|
||||||
|
use super::User;
|
||||||
|
|
||||||
|
enum AgeBracket {
|
||||||
|
Till14,
|
||||||
|
From14Till18,
|
||||||
|
From19Till30,
|
||||||
|
From31Till60,
|
||||||
|
From61Till75,
|
||||||
|
From76,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<&User> for AgeBracket {
|
||||||
|
type Error = String;
|
||||||
|
|
||||||
|
fn try_from(value: &User) -> Result<Self, Self::Error> {
|
||||||
|
if let Some(birthdate) = value.birthdate.clone() {
|
||||||
|
let today = Local::now().date_naive();
|
||||||
|
let birthdate = NaiveDate::parse_from_str(&birthdate, "%Y-%m-%d").unwrap();
|
||||||
|
|
||||||
|
let age = today.year() - birthdate.year();
|
||||||
|
if age <= 14 {
|
||||||
|
Ok(AgeBracket::Till14)
|
||||||
|
} else if age <= 18 {
|
||||||
|
Ok(AgeBracket::From14Till18)
|
||||||
|
} else if age <= 30 {
|
||||||
|
Ok(AgeBracket::From19Till30)
|
||||||
|
} else if age <= 60 {
|
||||||
|
Ok(AgeBracket::From31Till60)
|
||||||
|
} else if age <= 75 {
|
||||||
|
Ok(AgeBracket::From61Till75)
|
||||||
|
} else {
|
||||||
|
Ok(AgeBracket::From76)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Err("User has no birthdate".to_string())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn cat(value: &AgeBracket) -> &str {
|
||||||
|
match value {
|
||||||
|
AgeBracket::Till14 => "Schülerinnen und Schüler bis 14 Jahre",
|
||||||
|
AgeBracket::From14Till18 => "Juniorinnen und Junioren, Para-Ruderer bis 18 Jahre",
|
||||||
|
AgeBracket::From19Till30 => "Frauen und Männer, Para-Ruderer bis 30 Jahre",
|
||||||
|
AgeBracket::From31Till60 => "Frauen und Männer, Para-Ruderer von 31 bis 60 Jahre",
|
||||||
|
AgeBracket::From61Till75 => "Frauen und Männer, Para-Ruderer von 61 bis 75 Jahre",
|
||||||
|
AgeBracket::From76 => "Frauen und Männer, Para-Ruderer ab 76 Jahre",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn dist_in_km(value: &AgeBracket) -> u32 {
|
||||||
|
match value {
|
||||||
|
AgeBracket::Till14 => 500,
|
||||||
|
AgeBracket::From14Till18 => 1000,
|
||||||
|
AgeBracket::From19Till30 => 1200,
|
||||||
|
AgeBracket::From31Till60 => 1000,
|
||||||
|
AgeBracket::From61Till75 => 800,
|
||||||
|
AgeBracket::From76 => 600,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(FromRow, Serialize, Deserialize, Clone, Debug, Eq, Hash, PartialEq)]
|
#[derive(FromRow, Serialize, Deserialize, Clone, Debug, Eq, Hash, PartialEq)]
|
||||||
pub struct User {
|
pub struct User {
|
||||||
pub id: i64,
|
pub id: i64,
|
||||||
|
Loading…
Reference in New Issue
Block a user