From 49b2305cdb1282931e7eaf9ea02f1e8413c64572 Mon Sep 17 00:00:00 2001 From: philipp Date: Mon, 2 Sep 2024 12:32:26 +0300 Subject: [PATCH] allow 'always_show' when creating events --- src/model/event.rs | 5 +++++ src/model/tripdetails.rs | 11 +++++++++++ src/tera/admin/event.rs | 10 +++++++++- templates/forms/event.html.tera | 2 +- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/model/event.rs b/src/model/event.rs index 3a34ad4..49736cb 100644 --- a/src/model/event.rs +++ b/src/model/event.rs @@ -233,6 +233,7 @@ WHERE trip_details.id=? db: &SqlitePool, name: &str, planned_amount_cox: i32, + always_show: bool, trip_details: &TripDetails, ) { if trip_details.always_show { @@ -245,6 +246,10 @@ WHERE trip_details.id=? .await; } + if always_show && !trip_details.always_show { + trip_details.set_always_show(db, true).await; + } + sqlx::query!( "INSERT INTO planned_event(name, planned_amount_cox, trip_details_id) VALUES(?, ?, ?)", name, diff --git a/src/model/tripdetails.rs b/src/model/tripdetails.rs index dee3b31..b22cd88 100644 --- a/src/model/tripdetails.rs +++ b/src/model/tripdetails.rs @@ -173,6 +173,17 @@ WHERE day = ? AND planned_starting_time = ? query.last_insert_rowid() } + pub async fn set_always_show(&self, db: &SqlitePool, value: bool) { + sqlx::query!( + "UPDATE trip_details SET always_show = ? WHERE id = ?", + value, + self.id + ) + .execute(db) + .await + .unwrap(); //Okay, as planned_event can only be created with proper DB backing + } + pub async fn is_full(&self, db: &SqlitePool) -> bool { let amount_currently_registered = sqlx::query!( "SELECT COUNT(*) as count FROM user_trip WHERE trip_details_id = ?", diff --git a/src/tera/admin/event.rs b/src/tera/admin/event.rs index 4644956..ef97fc6 100644 --- a/src/tera/admin/event.rs +++ b/src/tera/admin/event.rs @@ -18,6 +18,7 @@ use crate::model::{ struct AddEventForm<'r> { name: &'r str, planned_amount_cox: i32, + always_show: bool, tripdetails: TripDetailsToAdd<'r>, } @@ -34,7 +35,14 @@ async fn create( //just created //the object - Event::create(db, data.name, data.planned_amount_cox, &trip_details).await; + Event::create( + db, + data.name, + data.planned_amount_cox, + data.always_show, + &trip_details, + ) + .await; Flash::success(Redirect::to("/planned"), "Event hinzugefügt") } diff --git a/templates/forms/event.html.tera b/templates/forms/event.html.tera index 5803c7a..38a9fc8 100644 --- a/templates/forms/event.html.tera +++ b/templates/forms/event.html.tera @@ -10,7 +10,7 @@ {{ macros::input(label='Anzahl Steuerleute', name='planned_amount_cox', type='number', required=true, min='0') }} {{ macros::input(label='Anzahl Ruderer (ohne Steuerperson)', name='tripdetails.max_people', type='number', required=true, min='0') }} {{ macros::checkbox(label='Scheckbuch-Anmeldungen erlauben', name='tripdetails.allow_guests') }} - {{ macros::checkbox(label='Immer anzeigen', name='tripdetails.always_show') }} + {{ macros::checkbox(label='Immer anzeigen', name='always_show') }} {{ macros::input(label='Anmerkungen', name='tripdetails.notes', type='input') }} {{ macros::select(label='Typ', data=trip_types, name='tripdetails.trip_type', default='Reguläre Ausfahrt') }}