create board view
All checks were successful
CI/CD Pipeline / test (push) Successful in 11m11s
CI/CD Pipeline / deploy-staging (push) Has been skipped
CI/CD Pipeline / deploy-main (push) Has been skipped

This commit is contained in:
2024-09-04 15:10:58 +03:00
parent f41b5e9fef
commit 6df24f0f22
10 changed files with 457 additions and 37 deletions

View File

@ -1,3 +1,5 @@
use chrono::{Datelike, Local};
use equatorprice::Level;
use serde::Serialize;
use sqlx::SqlitePool;
@ -8,14 +10,46 @@ pub(crate) mod rowingbadge;
#[derive(Serialize)]
pub(crate) struct Achievements {
equatorprice: equatorprice::Next,
pub(crate) equatorprice: equatorprice::Next,
pub(crate) curr_equatorprice_name: String,
pub(crate) new_equatorprice_this_season: bool,
pub(crate) rowingbadge: Option<rowingbadge::Status>,
}
impl Achievements {
pub(crate) async fn for_user(db: &SqlitePool, user: &User) -> Self {
let rowed_km = Stat::person(db, None, user).await.rowed_km;
let rowed_km = Stat::total_km(db, user).await.rowed_km;
let rowed_km_this_season = if Local::now().month() == 1 {
Stat::person(db, Some(Local::now().year() - 1), user)
.await
.rowed_km
+ Stat::person(db, Some(Local::now().year()), user)
.await
.rowed_km
} else {
Stat::person(db, Some(Local::now().year()), user)
.await
.rowed_km
};
println!(
"old: {}; new: {}",
rowed_km,
rowed_km - rowed_km_this_season
);
println!(
"old: {:?}; new: {:?}",
Level::curr_level(rowed_km),
Level::curr_level(rowed_km - rowed_km_this_season)
);
let new_equatorprice_this_season =
Level::curr_level(rowed_km) != Level::curr_level(rowed_km - rowed_km_this_season);
println!("{new_equatorprice_this_season:?}");
Self {
equatorprice: equatorprice::Next::rowed_km(rowed_km),
equatorprice: equatorprice::Next::new(rowed_km),
curr_equatorprice_name: equatorprice::Level::curr_level(rowed_km).desc().to_string(),
new_equatorprice_this_season,
rowingbadge: rowingbadge::Status::for_user(db, user).await,
}
}
}