staging #374
@ -34,6 +34,20 @@ pub struct TripWithUserAndType {
|
|||||||
trip_type: Option<TripType>,
|
trip_type: Option<TripType>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TripWithUserAndType {
|
||||||
|
async fn from(db: &SqlitePool, trip: Trip) -> Self {
|
||||||
|
let mut trip_type = None;
|
||||||
|
if let Some(trip_type_id) = trip.trip_type_id {
|
||||||
|
trip_type = TripType::find_by_id(db, trip_type_id).await;
|
||||||
|
}
|
||||||
|
Self {
|
||||||
|
rower: Registration::all_rower(db, trip.trip_details_id.unwrap()).await,
|
||||||
|
trip,
|
||||||
|
trip_type,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Trip {
|
impl Trip {
|
||||||
/// Cox decides to create own trip.
|
/// Cox decides to create own trip.
|
||||||
pub async fn new_own(db: &SqlitePool, cox: &CoxUser, trip_details: TripDetails) {
|
pub async fn new_own(db: &SqlitePool, cox: &CoxUser, trip_details: TripDetails) {
|
||||||
@ -154,15 +168,7 @@ WHERE day=?
|
|||||||
|
|
||||||
let mut ret = Vec::new();
|
let mut ret = Vec::new();
|
||||||
for trip in trips {
|
for trip in trips {
|
||||||
let mut trip_type = None;
|
ret.push(TripWithUserAndType::from(db, trip).await);
|
||||||
if let Some(trip_type_id) = trip.trip_type_id {
|
|
||||||
trip_type = TripType::find_by_id(db, trip_type_id).await;
|
|
||||||
}
|
|
||||||
ret.push(TripWithUserAndType {
|
|
||||||
rower: Registration::all_rower(db, trip.trip_details_id.unwrap()).await,
|
|
||||||
trip,
|
|
||||||
trip_type,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
@ -199,6 +205,31 @@ WHERE day=?
|
|||||||
.await
|
.await
|
||||||
.unwrap(); //Okay, as trip_details can only be created with proper DB backing
|
.unwrap(); //Okay, as trip_details can only be created with proper DB backing
|
||||||
|
|
||||||
|
if max_people == 0 {
|
||||||
|
let rowers = TripWithUserAndType::from(db, trip.clone()).await.rower;
|
||||||
|
for user in rowers {
|
||||||
|
if let Some(user) = User::find_by_name(db, &user.name).await {
|
||||||
|
let notes = if let Some(notes) = notes {
|
||||||
|
format!(": {notes}")
|
||||||
|
} else {
|
||||||
|
String::from(".")
|
||||||
|
};
|
||||||
|
|
||||||
|
Notification::create(
|
||||||
|
db,
|
||||||
|
&user,
|
||||||
|
&format!(
|
||||||
|
"Die Ausfahrt von {} am {} um {} wurde abgesagt{}",
|
||||||
|
cox.user.name, trip.day, trip.planned_starting_time, notes
|
||||||
|
),
|
||||||
|
"Absage Ausfahrt",
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@
|
|||||||
<div class="bg-gray-100 dark:bg-primary-900 p-3 mt-4 rounded-md">
|
<div class="bg-gray-100 dark:bg-primary-900 p-3 mt-4 rounded-md">
|
||||||
<h3 class="text-primary-950 dark:text-white font-bold uppercase tracking-wide mb-2">Ausfahrt bearbeiten</h3>
|
<h3 class="text-primary-950 dark:text-white font-bold uppercase tracking-wide mb-2">Ausfahrt bearbeiten</h3>
|
||||||
<form action="/cox/trip/{{ trip.id }}" method="post" class="grid gap-3">
|
<form action="/cox/trip/{{ trip.id }}" method="post" class="grid gap-3">
|
||||||
{{ macros::input(label='Anzahl Ruderer', name='max_people', type='number', required=true, value=trip.max_people, min='0') }}
|
{{ macros::input(label='Anzahl Ruderer', name='max_people', type='number', required=true, value=trip.max_people, min=trip.rower | length) }}
|
||||||
{{ macros::input(label='Anmerkungen', name='notes', type='input', value=trip.notes) }}
|
{{ macros::input(label='Anmerkungen', name='notes', type='input', value=trip.notes) }}
|
||||||
{{ macros::checkbox(label='Immer anzeigen', name='always_show', id=trip.id,checked=trip.always_show) }}
|
{{ macros::checkbox(label='Immer anzeigen', name='always_show', id=trip.id,checked=trip.always_show) }}
|
||||||
{{ macros::checkbox(label='Gesperrt', name='is_locked', id=trip.id,checked=trip.is_locked) }}
|
{{ macros::checkbox(label='Gesperrt', name='is_locked', id=trip.id,checked=trip.is_locked) }}
|
||||||
@ -326,6 +326,22 @@
|
|||||||
Termin löschen
|
Termin löschen
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{% if trip.max_people == 0 %}
|
||||||
|
Wenn du deine Absage absagen (:^)) willst, einfach entsprechende Anzahl an Ruderer oben eintragen.
|
||||||
|
{% else %}
|
||||||
|
<div class="bg-gray-100 dark:bg-primary-900 p-3 mt-4 rounded-md">
|
||||||
|
<h3 class="text-primary-950 dark:text-white font-bold uppercase tracking-wide mb-2">Ausfahrt absagen</h3>
|
||||||
|
<form action="/cox/trip/{{ trip.id }}" method="post" class="grid">
|
||||||
|
{{ macros::input(label='', name='max_people', type='hidden', value=0) }}
|
||||||
|
{{ macros::input(label='', name='notes', type='hidden', value=trip.notes) }}
|
||||||
|
{{ macros::input(label='', name='always_show', type='hidden', value=trip.always_show) }}
|
||||||
|
{{ macros::input(label='', name='is_locked', type='hidden', value=trip.is_locked) }}
|
||||||
|
{{ macros::input(label='', name='trip_type', type='hidden', value=trip.trip_type_id) }}
|
||||||
|
<input value="Ausfahrt absagen" class="btn btn-alert" type="submit" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{# --- END Edit Form --- #}
|
{# --- END Edit Form --- #}
|
||||||
|
Loading…
Reference in New Issue
Block a user