forked from Ruderverein-Donau-Linz/rowt
		
	create notification if a new event with 'always_show' is updated
This commit is contained in:
		@@ -9,7 +9,11 @@ use serde::Serialize;
 | 
			
		||||
use sqlx::{FromRow, Row, SqlitePool};
 | 
			
		||||
 | 
			
		||||
use super::{
 | 
			
		||||
    notification::Notification, role::Role, tripdetails::TripDetails, triptype::TripType,
 | 
			
		||||
    notification::Notification,
 | 
			
		||||
    role::Role,
 | 
			
		||||
    trip,
 | 
			
		||||
    tripdetails::{self, TripDetails},
 | 
			
		||||
    triptype::TripType,
 | 
			
		||||
    user::User,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -216,6 +220,19 @@ WHERE trip_details.id=?
 | 
			
		||||
        .ok()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async fn advertise(db: &SqlitePool, day: &str, planned_starting_time: &str, name: &str) {
 | 
			
		||||
        let donau = Role::find_by_name(db, "Donau Linz").await.unwrap();
 | 
			
		||||
        Notification::create_for_role(
 | 
			
		||||
                db,
 | 
			
		||||
                &donau,
 | 
			
		||||
                &format!("Am {} um {} wurde ein neues Event angelegt: {} Wir freuen uns wenn du dabei mitmachst, die Anmeldung ist ab sofort offen :-)", day, planned_starting_time, name),
 | 
			
		||||
                "Neues Event",
 | 
			
		||||
                Some(&format!("/planned#{day}")),
 | 
			
		||||
                None,
 | 
			
		||||
            )
 | 
			
		||||
            .await;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub async fn create(
 | 
			
		||||
        db: &SqlitePool,
 | 
			
		||||
        name: &str,
 | 
			
		||||
@@ -223,14 +240,11 @@ WHERE trip_details.id=?
 | 
			
		||||
        trip_details: &TripDetails,
 | 
			
		||||
    ) {
 | 
			
		||||
        if trip_details.always_show {
 | 
			
		||||
            let donau = Role::find_by_name(db, "Donau Linz").await.unwrap();
 | 
			
		||||
            Notification::create_for_role(
 | 
			
		||||
            Self::advertise(
 | 
			
		||||
                db,
 | 
			
		||||
                &donau,
 | 
			
		||||
                &format!("Am {} um {} wurde ein neues Event angelegt: {} Wir freuen uns wenn du dabei mitmachst, die Anmeldung ist ab sofort offen :-)", trip_details.day, trip_details.planned_starting_time, name),
 | 
			
		||||
                "Neues Event",
 | 
			
		||||
                Some(&format!("/planned#{}", trip_details.day)),
 | 
			
		||||
                None,
 | 
			
		||||
                &trip_details.day,
 | 
			
		||||
                &trip_details.planned_starting_time,
 | 
			
		||||
                name,
 | 
			
		||||
            )
 | 
			
		||||
            .await;
 | 
			
		||||
        }
 | 
			
		||||
@@ -274,6 +288,16 @@ WHERE trip_details.id=?
 | 
			
		||||
        .await
 | 
			
		||||
        .unwrap(); //Okay, as planned_event can only be created with proper DB backing
 | 
			
		||||
 | 
			
		||||
        if !tripdetails.always_show && update.always_show {
 | 
			
		||||
            Self::advertise(
 | 
			
		||||
                db,
 | 
			
		||||
                &tripdetails.day,
 | 
			
		||||
                &tripdetails.planned_starting_time,
 | 
			
		||||
                update.name,
 | 
			
		||||
            )
 | 
			
		||||
            .await;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if update.max_people == 0 && !was_already_cancelled {
 | 
			
		||||
            let coxes = Registration::all_cox(db, self.id).await;
 | 
			
		||||
            for user in coxes {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user