From 32cebaa6883003302795c5053213f6ebe9b6760c Mon Sep 17 00:00:00 2001 From: amandine-sahl Date: Mon, 3 Jul 2023 16:10:24 +0200 Subject: [PATCH] =?UTF-8?q?Bloquer=20reservation=20public=20si=20non=20r?= =?UTF-8?q?=C3=A9servable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-vite/src/declaration.d.ts | 17 ++++++------- front-vite/src/utils/isReservationOpened.ts | 25 ++++++++++++-------- front-vite/src/views/ReservationFormView.vue | 5 +++- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/front-vite/src/declaration.d.ts b/front-vite/src/declaration.d.ts index cf3bcf6b..4641975b 100644 --- a/front-vite/src/declaration.d.ts +++ b/front-vite/src/declaration.d.ts @@ -3,7 +3,7 @@ export interface ResaBilan { annulation?: boolean raison_annulation?: string - + commentaire: string nb_adultes: number nb_moins_6_ans: number @@ -17,7 +17,7 @@ export interface ResaBilan { /** * Réservation d'un événement - * + * * Correspond au retoure de l'API, * peut disposer d'un bilan avec quelques sous propriété * ainsi qu'un type d'événement. @@ -35,6 +35,7 @@ export interface ResaEvent { end_date: string published: boolean cancelled: boolean + bookable: boolean sum_participants: number sum_participants_liste_attente: number @@ -66,15 +67,15 @@ export interface ResaEventInfo { */ export interface Statistics { nb_animations?: number - nb_annulation?: number + nb_annulation?: number taux_remplissage?: number taux_remplissage_passe?: number } /** * Réservation définie dans le backend Flask - * - * La notion de numérisateur tend à disparaître, + * + * La notion de numérisateur tend à disparaître, * le parc de la Guadeloupe n'en ayant pas besoin * vu que les participants pourront s'inscrire directement. */ @@ -102,9 +103,9 @@ export interface Resa { } export interface ResaEventFilters { - begin_date: string - end_date: string - search_name?: string + begin_date: string + end_date: string + search_name?: string cancelled?: boolean published?: boolean type_id: string[] diff --git a/front-vite/src/utils/isReservationOpened.ts b/front-vite/src/utils/isReservationOpened.ts index 6da89273..8dc7b383 100644 --- a/front-vite/src/utils/isReservationOpened.ts +++ b/front-vite/src/utils/isReservationOpened.ts @@ -17,13 +17,13 @@ interface ReservationOpened { /** * Est ce que la réservation est ouverte * pour l'événement courant ? - * + * * Si événement / animation annulée => non - * + * * Si événement / animation passée => non - * + * * Si période de réservation trop courte => non - * + * * Cela dépend s'il est passé => non * et s'il on est dans une période correcte * @@ -38,13 +38,18 @@ export function isReservationOpened(event: ResaEvent): ReservationOpened { value: false, text: 'L\'animation a été annulée.' } + // Si l'événement n'est pas réservable + if (!event.bookable) return { + value: false, + text: 'L\'animation n\'est pas ouverte à la réservation.' + } // Si l'événement est dans le passé if (new Date().setHours(0, 0, 0, 0) > new Date(event.begin_date).setHours(0, 0, 0, 0)) { return { value: false, text: 'L\'animation s\'est déjà déroulée.' - } + } } // Si DAY_BEFORE_RESA est renseigné @@ -52,7 +57,7 @@ export function isReservationOpened(event: ResaEvent): ReservationOpened { // S'il est à -1 => c'est ouvert if (CONFIGURATION.DAY_BEFORE_RESA === -1) return { value: true - } + } // Si la date du jour est avant la période de réservation => pas possible const resaBeginDate = new Date(event.begin_date); @@ -61,7 +66,7 @@ export function isReservationOpened(event: ResaEvent): ReservationOpened { return { text: 'L\'animation ne peut pas encore être réservée. (à partir du ' + formatDateTime(resaBeginDate) + ')', value: false - } + } } // Si RESA_BEGINNING_DATE est renseigné @@ -72,19 +77,19 @@ export function isReservationOpened(event: ResaEvent): ReservationOpened { return { text: 'L\'animation ne peut pas encore être réservée. (à partir du ' + formatDateTime(CONFIGURATION.RESA_BEGINNING_DATE) + ')', value: false - } + } } } // Dans tous les autres cas, c'est possible return { value: true - } + } } /** * Est ce que les résas sont "globalement" ouvertes ? - * + * * Deux cas sont possbiles : * * CONFIGURATION.DAY_BEFORE_RESA est = à -1 * * la date CONFIGURATION.RESA_BEGINNING_DATE est dépassée diff --git a/front-vite/src/views/ReservationFormView.vue b/front-vite/src/views/ReservationFormView.vue index 54130d83..7908838d 100644 --- a/front-vite/src/views/ReservationFormView.vue +++ b/front-vite/src/views/ReservationFormView.vue @@ -116,7 +116,7 @@ Mais ce n'est pas fini !

- Vous devez confirmer cette demande + Vous devez confirmer cette demande en cliquant sur le lien présent dans l'email.

@@ -165,6 +165,9 @@ onBeforeMount(async () => { loadingEvent.value = true try { event.value = await getEvent(geotrekId) + if (!event.value.bookable) { + eventError.value = `L'animation n° ${geotrekId} (${event.value.name}) n'est pas ouverte à la réservation.` + } if (event.value.cancelled) { eventError.value = `L'animation n° ${geotrekId} (${event.value.name}) a été annulée. Il est impossible d'effectuer une réservation.` }