diff --git a/src/model/logbook.rs b/src/model/logbook.rs index e8c911d..a9a70ce 100644 --- a/src/model/logbook.rs +++ b/src/model/logbook.rs @@ -260,6 +260,10 @@ ORDER BY departure DESC pub async fn completed(db: &SqlitePool) -> Vec { let year = chrono::Local::now().year(); + Self::completed_in_year(db, year).await + } + + pub async fn completed_in_year(db: &SqlitePool, year: i32) -> Vec { let logs = sqlx::query_as( &format!(" SELECT id, boat_id, shipmaster, steering_person, shipmaster_only_steering, departure, arrival, destination, distance_in_km, comments, logtype diff --git a/src/tera/log.rs b/src/tera/log.rs index 2c47e71..e2dca51 100644 --- a/src/tera/log.rs +++ b/src/tera/log.rs @@ -23,7 +23,7 @@ use crate::model::{ LogbookUpdateError, }, logtype::LogType, - user::{DonauLinzUser, User, UserWithRoles, UserWithWaterStatus}, + user::{AdminUser, DonauLinzUser, User, UserWithRoles, UserWithWaterStatus}, }; pub struct KioskCookie(String); @@ -96,6 +96,16 @@ async fn show(db: &State, user: DonauLinzUser) -> Template { ) } +#[get("/show?")] +async fn show_for_year(db: &State, user: AdminUser, year: i32) -> Template { + let logs = Logbook::completed_in_year(db, year).await; + + Template::render( + "log.completed", + context!(logs, loggedin_user: &UserWithRoles::from_user(user.user, db).await), + ) +} + #[get("/show")] async fn show_kiosk(db: &State, _kiosk: KioskCookie) -> Template { let logs = Logbook::completed(db).await; @@ -378,6 +388,7 @@ pub fn routes() -> Vec { new_kiosk, show, show_kiosk, + show_for_year, delete, delete_kiosk ]