diff --git a/src/model/event.rs b/src/model/event.rs index 5a640d4..381f3d8 100644 --- a/src/model/event.rs +++ b/src/model/event.rs @@ -191,7 +191,8 @@ INNER JOIN trip_details ON planned_event.trip_details_id = trip_details.id", let mut ret = Vec::new(); let events = Self::all(db).await; for event in events { - if event.is_rower_registered(db, user).await { + if event.is_rower_registered(db, user).await || event.is_cox_registered(db, user).await + { ret.push(event); } } @@ -215,6 +216,21 @@ INNER JOIN trip_details ON planned_event.trip_details_id = trip_details.id", is_rower.amount > 0 } + pub async fn is_cox_registered(&self, db: &SqlitePool, user: &User) -> bool { + let is_rower = sqlx::query!( + "SELECT count(*) as amount + FROM trip + WHERE planned_event_id = ? + AND cox_id = ?", + self.id, + user.id + ) + .fetch_one(db) + .await + .unwrap(); //Okay, bc planned_event can only be created with proper DB backing + is_rower.amount > 0 + } + pub async fn find_by_trip_details(db: &SqlitePool, tripdetails_id: i64) -> Option { sqlx::query_as!( Self, @@ -427,7 +443,10 @@ WHERE trip_details.id=? } pub(crate) async fn get_vevent(self, db: &SqlitePool) -> ics::Event { - let mut vevent = ics::Event::new(format!("{}@rudernlinz.at", self.id), "19900101T180000"); + let mut vevent = ics::Event::new( + format!("event-{}@rudernlinz.at", self.id), + "19900101T180000", + ); vevent.push(DtStart::new(format!( "{}T{}00", self.day.replace('-', ""), diff --git a/src/model/trip.rs b/src/model/trip.rs index dd817a4..c7043c8 100644 --- a/src/model/trip.rs +++ b/src/model/trip.rs @@ -138,7 +138,8 @@ WHERE trip_details.id=? } pub(crate) async fn get_vevent(self, user: &User) -> ics::Event { - let mut vevent = ics::Event::new(format!("{}@rudernlinz.at", self.id), "19900101T180000"); + let mut vevent = + ics::Event::new(format!("trip-{}@rudernlinz.at", self.id), "19900101T180000"); vevent.push(DtStart::new(format!( "{}T{}00", self.day.replace('-', ""),