forked from Ruderverein-Donau-Linz/rowt
		
	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: Ruderverein-Donau-Linz/rowt#514
This commit is contained in:
		@@ -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
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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)
 | 
			
		||||
            .execute(db)
 | 
			
		||||
            .await
 | 
			
		||||
            .unwrap(); //Okay, as PlannedEvent can only be created with proper DB backing
 | 
			
		||||
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub async fn get_ics_feed(db: &SqlitePool) -> String {
 | 
			
		||||
 
 | 
			
		||||
@@ -78,12 +78,13 @@ async fn update(
 | 
			
		||||
 | 
			
		||||
#[get("/planned-event/<id>/delete")]
 | 
			
		||||
async fn delete(db: &State<SqlitePool>, id: i64, _admin: PlannedEventUser) -> Flash<Redirect> {
 | 
			
		||||
    match PlannedEvent::find_by_id(db, id).await {
 | 
			
		||||
        Some(planned_event) => {
 | 
			
		||||
            planned_event.delete(db).await;
 | 
			
		||||
            Flash::success(Redirect::to("/planned"), "Event gelöscht")
 | 
			
		||||
        }
 | 
			
		||||
        None => Flash::error(Redirect::to("/planned"), "PlannedEvent does not exist"),
 | 
			
		||||
    let Some(event) = PlannedEvent::find_by_id(db, id).await else {
 | 
			
		||||
        return Flash::error(Redirect::to("/planned"), "PlannedEvent does not exist");
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    match event.delete(db).await {
 | 
			
		||||
        Ok(()) => Flash::success(Redirect::to("/planned"), "Event gelöscht"),
 | 
			
		||||
        Err(e) => Flash::error(Redirect::to("/planned"), e),
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user