extract common functionality to functoin

This commit is contained in:
2023-07-27 15:24:29 +02:00
parent 0c906f2bda
commit b5fd4018ff
4 changed files with 58 additions and 64 deletions

View File

@ -63,6 +63,7 @@ pub enum LogbookCreateError {
BoatNotFound,
TooManyRowers(usize, usize),
ShipmasterAlreadyOnWater,
RowerAlreadyOnWater(User),
}
impl Logbook {
@ -146,10 +147,9 @@ impl Logbook {
return Err(LogbookCreateError::BoatAlreadyOnWater);
}
if (User::find_by_id(db, log.shipmaster as i32).await.unwrap()).on_water(db).await {
return Err(LogbookCreateError::BoatAlreadyOnWater);
return Err(LogbookCreateError::ShipmasterAlreadyOnWater);
}
if log.rower.len() > boat.amount_seats as usize - 1 {
return Err(LogbookCreateError::TooManyRowers(
boat.amount_seats as usize,
@ -157,6 +157,13 @@ impl Logbook {
));
}
for rower in &log.rower {
let user = User::find_by_id(db, *rower as i32).await.unwrap();
if user.on_water(db).await {
return Err(LogbookCreateError::RowerAlreadyOnWater(user));
}
}
let mut tx = db.begin().await.unwrap();
let departure = NaiveDateTime::parse_from_str(&log.departure, "%Y-%m-%dT%H:%M").unwrap();