ext person can also be shipmaster (and not cox) #656
@ -127,7 +127,7 @@ pub enum LogbookUpdateError {
|
|||||||
OnlyAllowedToEndTripsEndingToday,
|
OnlyAllowedToEndTripsEndingToday,
|
||||||
TooFast(i64, i64),
|
TooFast(i64, i64),
|
||||||
AlreadyFinalized,
|
AlreadyFinalized,
|
||||||
ExternalSteeringPersonMustSteer,
|
ExternalSteeringPersonMustSteerOrShipmaster,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
@ -153,7 +153,7 @@ pub enum LogbookCreateError {
|
|||||||
CantChangeHandoperatableStatusForThisBoat,
|
CantChangeHandoperatableStatusForThisBoat,
|
||||||
TooFast(i64, i64),
|
TooFast(i64, i64),
|
||||||
AlreadyFinalized,
|
AlreadyFinalized,
|
||||||
ExternalSteeringPersonMustSteer,
|
ExternalSteeringPersonMustSteerOrShipmaster,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<LogbookUpdateError> for LogbookCreateError {
|
impl From<LogbookUpdateError> for LogbookCreateError {
|
||||||
@ -421,9 +421,13 @@ ORDER BY departure DESC
|
|||||||
}
|
}
|
||||||
|
|
||||||
if user.name == "Externe Steuerperson" {
|
if user.name == "Externe Steuerperson" {
|
||||||
if let Some(steering_id) = log.steering_person {
|
if let (Some(steering_id), Some(shipmaster_id)) =
|
||||||
if steering_id != user.id {
|
(log.steering_person, log.shipmaster)
|
||||||
return Err(LogbookCreateError::ExternalSteeringPersonMustSteer);
|
{
|
||||||
|
if steering_id != user.id && shipmaster_id != user.id {
|
||||||
|
return Err(
|
||||||
|
LogbookCreateError::ExternalSteeringPersonMustSteerOrShipmaster,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -623,12 +627,17 @@ ORDER BY departure DESC
|
|||||||
self.remove_rowers(db).await;
|
self.remove_rowers(db).await;
|
||||||
for rower in &log.rowers {
|
for rower in &log.rowers {
|
||||||
if user.name == "Externe Steuerperson" {
|
if user.name == "Externe Steuerperson" {
|
||||||
if let Some(steering_id) = log.steering_person {
|
if let (Some(steering_id), Some(shipmaster_id)) =
|
||||||
if steering_id != user.id {
|
(log.steering_person, log.shipmaster)
|
||||||
return Err(LogbookUpdateError::ExternalSteeringPersonMustSteer);
|
{
|
||||||
|
if steering_id != user.id && shipmaster_id != user.id {
|
||||||
|
return Err(
|
||||||
|
LogbookUpdateError::ExternalSteeringPersonMustSteerOrShipmaster,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Rower::create(db, self.id, *rower)
|
Rower::create(db, self.id, *rower)
|
||||||
.await
|
.await
|
||||||
.map_err(|e| LogbookUpdateError::RowerCreateError(*rower, e.to_string()))?;
|
.map_err(|e| LogbookUpdateError::RowerCreateError(*rower, e.to_string()))?;
|
||||||
|
@ -231,7 +231,7 @@ async fn create_logbook(
|
|||||||
Err(LogbookCreateError::CantChangeHandoperatableStatusForThisBoat) => Flash::error(Redirect::to("/log"), "Handsteuer-Status dieses Boots kann nicht verändert werden."),
|
Err(LogbookCreateError::CantChangeHandoperatableStatusForThisBoat) => Flash::error(Redirect::to("/log"), "Handsteuer-Status dieses Boots kann nicht verändert werden."),
|
||||||
Err(LogbookCreateError::TooFast(km, min)) => Flash::error(Redirect::to("/log"), format!("KM zu groß für die eingegebene Dauer ({km} km in {min} Minuten). Bitte überprüfe deine Start- und Endzeit und versuche es erneut.")),
|
Err(LogbookCreateError::TooFast(km, min)) => Flash::error(Redirect::to("/log"), format!("KM zu groß für die eingegebene Dauer ({km} km in {min} Minuten). Bitte überprüfe deine Start- und Endzeit und versuche es erneut.")),
|
||||||
Err(LogbookCreateError::AlreadyFinalized) => Flash::error(Redirect::to("/log"), "Logbucheintrag wurde bereits abgeschlossen."),
|
Err(LogbookCreateError::AlreadyFinalized) => Flash::error(Redirect::to("/log"), "Logbucheintrag wurde bereits abgeschlossen."),
|
||||||
Err(LogbookCreateError::ExternalSteeringPersonMustSteer) => Flash::error(Redirect::to("/log"), "Wenn du eine 'Externe Steuerperson' hinzufügst, muss diese steuern!"),
|
Err(LogbookCreateError::ExternalSteeringPersonMustSteerOrShipmaster) => Flash::error(Redirect::to("/log"), "Wenn du eine 'Externe Steuerperson' hinzufügst, muss diese steuern oder Schiffsführer sein!"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,7 +341,7 @@ async fn home_logbook(
|
|||||||
Err(LogbookUpdateError::OnlyAllowedToEndTripsEndingToday) => Flash::error(Redirect::to("/log"), "Nur Ausfahrten, die heute enden dürfen eingetragen werden. Für einen Nachtrag schreibe alle Daten Philipp (Tel. nr. siehe Signal oder it@rudernlinz.at)."),
|
Err(LogbookUpdateError::OnlyAllowedToEndTripsEndingToday) => Flash::error(Redirect::to("/log"), "Nur Ausfahrten, die heute enden dürfen eingetragen werden. Für einen Nachtrag schreibe alle Daten Philipp (Tel. nr. siehe Signal oder it@rudernlinz.at)."),
|
||||||
Err(LogbookUpdateError::TooFast(km, min)) => Flash::error(Redirect::to("/log"), format!("KM zu groß für die eingegebene Dauer ({km} km in {min} Minuten). Bitte überprüfe deine Start- und Endzeit und versuche es erneut.")),
|
Err(LogbookUpdateError::TooFast(km, min)) => Flash::error(Redirect::to("/log"), format!("KM zu groß für die eingegebene Dauer ({km} km in {min} Minuten). Bitte überprüfe deine Start- und Endzeit und versuche es erneut.")),
|
||||||
Err(LogbookUpdateError::AlreadyFinalized) => Flash::error(Redirect::to("/log"), "Logbucheintrag wurde bereits abgeschlossen."),
|
Err(LogbookUpdateError::AlreadyFinalized) => Flash::error(Redirect::to("/log"), "Logbucheintrag wurde bereits abgeschlossen."),
|
||||||
Err(LogbookUpdateError::ExternalSteeringPersonMustSteer) => Flash::error(Redirect::to("/log"), "Wenn du eine 'Externe Steuerperson' hinzufügst, muss diese steuern!"),
|
Err(LogbookUpdateError::ExternalSteeringPersonMustSteerOrShipmaster) => Flash::error(Redirect::to("/log"), "Wenn du eine 'Externe Steuerperson' hinzufügst, muss diese steuern oder Schiffsführer sein!"),
|
||||||
Err(e) => Flash::error(
|
Err(e) => Flash::error(
|
||||||
Redirect::to("/log"),
|
Redirect::to("/log"),
|
||||||
format!("Eintrag {logbook_id} konnte nicht abgesendet werden (Fehler: {e:?})!"),
|
format!("Eintrag {logbook_id} konnte nicht abgesendet werden (Fehler: {e:?})!"),
|
||||||
|
Loading…
Reference in New Issue
Block a user