start with aequatorpreis
This commit is contained in:
		| @@ -24,6 +24,71 @@ use crate::{ | ||||
|     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)] | ||||
| pub struct User { | ||||
|     pub id: i64, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user