calc general boat cat (#436)
All checks were successful
CI/CD Pipeline / test (push) Successful in 8m1s
CI/CD Pipeline / deploy-staging (push) Has been skipped
CI/CD Pipeline / deploy-main (push) Successful in 5m19s

Reviewed-on: #436
This commit is contained in:
2024-04-24 15:39:13 +02:00
parent aac7444896
commit 43e073c54e
5 changed files with 29 additions and 15 deletions

View File

@ -21,9 +21,9 @@ pub struct Boat {
pub boatbuilder: Option<String>,
pub default_destination: Option<String>,
#[serde(default = "bool::default")]
convert_handoperated_possible: bool,
pub convert_handoperated_possible: bool,
#[serde(default = "bool::default")]
default_shipmaster_only_steering: bool,
pub default_shipmaster_only_steering: bool,
#[serde(default = "bool::default")]
skull: bool,
#[serde(default = "bool::default")]
@ -46,6 +46,7 @@ pub struct BoatWithDetails {
damage: BoatDamage,
on_water: bool,
reserved_today: bool,
cat: String,
}
#[derive(FromForm)]
@ -179,11 +180,18 @@ AND date('now') BETWEEN start_date AND end_date;",
if boat.is_locked(db).await {
damage = BoatDamage::Locked;
}
let cat = if boat.default_shipmaster_only_steering {
format!("{}+", boat.amount_seats - 1)
} else {
format!("{}x", boat.amount_seats)
};
res.push(BoatWithDetails {
damage,
on_water: boat.on_water(db).await,
reserved_today: boat.reserved_today(db).await,
boat,
cat,
});
}
res

View File

@ -126,6 +126,7 @@ pub enum LogbookCreateError {
NotYourEntry,
ArrivalSetButNotRemainingTwo,
OnlyAllowedToEndTripsEndingToday,
CantChangeHandoperatableStatusForThisBoat,
}
impl From<LogbookUpdateError> for LogbookCreateError {
@ -302,6 +303,12 @@ ORDER BY departure DESC
return Err(LogbookCreateError::BoatNotFound);
};
if log.shipmaster_only_steering != boat.default_shipmaster_only_steering {
if !boat.convert_handoperated_possible {
return Err(LogbookCreateError::CantChangeHandoperatableStatusForThisBoat);
}
}
if boat.amount_seats == 1 && log.rowers.is_empty() {
log.rowers = vec![created_by_user.id];
}