extract common functionality to functoin
This commit is contained in:
@ -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();
|
||||
|
Reference in New Issue
Block a user