Merge pull request 'don't allow to delete an event if someone is registered' (#514) from deletion-event-only-ok-noone-registered into main
Reviewed-on: #514
This commit is contained in:
commit
830aa58e7b
@ -240,11 +240,29 @@ INNER JOIN trip_details ON planned_event.trip_details_id = trip_details.id",
|
|||||||
.unwrap(); //Okay, as planned_event can only be created with proper DB backing
|
.unwrap(); //Okay, as planned_event can only be created with proper DB backing
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn delete(&self, db: &SqlitePool) {
|
pub async fn delete(&self, db: &SqlitePool) -> Result<(), String> {
|
||||||
|
if Registration::all_rower(db, self.trip_details_id)
|
||||||
|
.await
|
||||||
|
.len()
|
||||||
|
> 0
|
||||||
|
{
|
||||||
|
return Err(
|
||||||
|
"Event kann nicht gelöscht werden, weil mind. 1 Ruderer angemeldet ist.".into(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if Registration::all_cox(db, self.trip_details_id).await.len() > 0 {
|
||||||
|
return Err(
|
||||||
|
"Event kann nicht gelöscht werden, weil mind. 1 Steuerperson angemeldet ist."
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
sqlx::query!("DELETE FROM planned_event WHERE id = ?", self.id)
|
sqlx::query!("DELETE FROM planned_event WHERE id = ?", self.id)
|
||||||
.execute(db)
|
.execute(db)
|
||||||
.await
|
.await
|
||||||
.unwrap(); //Okay, as PlannedEvent can only be created with proper DB backing
|
.unwrap(); //Okay, as PlannedEvent can only be created with proper DB backing
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_ics_feed(db: &SqlitePool) -> String {
|
pub async fn get_ics_feed(db: &SqlitePool) -> String {
|
||||||
|
@ -78,12 +78,13 @@ async fn update(
|
|||||||
|
|
||||||
#[get("/planned-event/<id>/delete")]
|
#[get("/planned-event/<id>/delete")]
|
||||||
async fn delete(db: &State<SqlitePool>, id: i64, _admin: PlannedEventUser) -> Flash<Redirect> {
|
async fn delete(db: &State<SqlitePool>, id: i64, _admin: PlannedEventUser) -> Flash<Redirect> {
|
||||||
match PlannedEvent::find_by_id(db, id).await {
|
let Some(event) = PlannedEvent::find_by_id(db, id).await else {
|
||||||
Some(planned_event) => {
|
return Flash::error(Redirect::to("/planned"), "PlannedEvent does not exist");
|
||||||
planned_event.delete(db).await;
|
};
|
||||||
Flash::success(Redirect::to("/planned"), "Event gelöscht")
|
|
||||||
}
|
match event.delete(db).await {
|
||||||
None => Flash::error(Redirect::to("/planned"), "PlannedEvent does not exist"),
|
Ok(()) => Flash::success(Redirect::to("/planned"), "Event gelöscht"),
|
||||||
|
Err(e) => Flash::error(Redirect::to("/planned"), e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user