diff --git a/src/model/boathouse.rs b/src/model/boathouse.rs index a3ae022..0e96caf 100644 --- a/src/model/boathouse.rs +++ b/src/model/boathouse.rs @@ -17,22 +17,52 @@ pub struct Boathouse { } impl Boathouse { - pub async fn get(db: &SqlitePool) -> HashMap<&str, HashMap<&str, [Option<(i64, Boat)>; 4]>> { - let mut ret: HashMap<&str, HashMap<&str, [Option<(i64, Boat)>; 4]>> = HashMap::new(); + pub async fn get(db: &SqlitePool) -> HashMap<&str, HashMap<&str, [Option<(i64, Boat)>; 12]>> { + let mut ret: HashMap<&str, HashMap<&str, [Option<(i64, Boat)>; 12]>> = HashMap::new(); let mut mountain = HashMap::new(); - mountain.insert("mountain", [None, None, None, None]); - mountain.insert("water", [None, None, None, None]); + mountain.insert( + "mountain", + [ + None, None, None, None, None, None, None, None, None, None, None, None, + ], + ); + mountain.insert( + "water", + [ + None, None, None, None, None, None, None, None, None, None, None, None, + ], + ); ret.insert("mountain-aisle", mountain); let mut middle = HashMap::new(); - middle.insert("mountain", [None, None, None, None]); - middle.insert("water", [None, None, None, None]); + middle.insert( + "mountain", + [ + None, None, None, None, None, None, None, None, None, None, None, None, + ], + ); + middle.insert( + "water", + [ + None, None, None, None, None, None, None, None, None, None, None, None, + ], + ); ret.insert("middle-aisle", middle); let mut water = HashMap::new(); - water.insert("mountain", [None, None, None, None]); - water.insert("water", [None, None, None, None]); + water.insert( + "mountain", + [ + None, None, None, None, None, None, None, None, None, None, None, None, + ], + ); + water.insert( + "water", + [ + None, None, None, None, None, None, None, None, None, None, None, None, + ], + ); ret.insert("water-aisle", water); let boathouses = sqlx::query_as!( diff --git a/src/model/user.rs b/src/model/user.rs index 9890b69..11f4af4 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -212,6 +212,8 @@ impl User { } else if Family::find_by_opt_id(db, self.family_id).await.is_none() { if self.has_role(db, "Student").await || self.has_role(db, "Schüler").await { fee.add("Schüler/Student".into(), STUDENT_OR_PUPIL); + } else if self.has_role(db, "Ehrenmitglied").await { + fee.add("Ehrenmitglied".into(), 0); } else { fee.add("Mitgliedsbeitrag".into(), REGULAR); } diff --git a/staging-diff.sql b/staging-diff.sql index fe85d50..e69de29 100644 --- a/staging-diff.sql +++ b/staging-diff.sql @@ -1,9 +0,0 @@ -CREATE TABLE IF NOT EXISTS "boathouse" ( - "id" INTEGER PRIMARY KEY AUTOINCREMENT, - "boat_id" INTEGER NOT NULL REFERENCES boat(id), - "aisle" TEXT NOT NULL CHECK (aisle in ('water', 'middle', 'mountain')), - "side" TEXT NOT NULL CHECK(side IN ('mountain', 'water')), - "level" INTEGER NOT NULL CHECK(level BETWEEN 0 AND 3), - CONSTRAINT unq UNIQUE (aisle, side, level) -- only 1 boat allowed to rest at each space -); - diff --git a/templates/board/boathouse.html.tera b/templates/board/boathouse.html.tera index c8e60b0..4edc2b6 100644 --- a/templates/board/boathouse.html.tera +++ b/templates/board/boathouse.html.tera @@ -7,7 +7,8 @@ {% set aisle = aisle_name ~ "-aisle" %} {% set place = boathouse[aisle][side_name] %} {% if place[level] %} - {{ place[level].1.name }} X + {{ place[level].1.name }} X {% elif boats | length > 0 %} Kein Boot @@ -33,11 +34,29 @@ {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 1) }} {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 2) }} {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 3) }} + {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 4) }} + {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 5) }} + {% set show_additional = false %} + {% if aisle_name == "mountain" %} + {% set show_additional = true %} + {% elif aisle_name == "middle" and side_name == "mountain" %} + {% set show_additional = true %} + {% endif %} + {% if show_additional %} + + {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 6) }} + {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 7) }} + {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 8) }} + {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 9) }} + {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 10) }} + {{ self::show_place(aisle_name = aisle_name, side_name = side_name, level = 11) }} + {% endif %} {% endmacro show_side %} {% macro show_aisle(name, last=false) %} - + {{ self::show_side(aisle_name = name, side_name = "mountain") }} {{ self::show_side(aisle_name = name, side_name = "water") }}