Skip to content

Commit

Permalink
Merge pull request #35 from GeotrekCE/feat/public_not_bookable
Browse files Browse the repository at this point in the history
Bloquer reservation public si non réservable
  • Loading branch information
amandine-sahl committed Jul 3, 2023
2 parents c448e4b + 81caae9 commit 23b9055
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 20 deletions.
17 changes: 9 additions & 8 deletions front-vite/src/declaration.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ export interface ResaBilan {

annulation?: boolean
raison_annulation?: string

commentaire: string
nb_adultes: number
nb_moins_6_ans: number
Expand All @@ -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.
Expand All @@ -35,6 +35,7 @@ export interface ResaEvent {
end_date: string
published: boolean
cancelled: boolean
bookable: boolean

sum_participants: number
sum_participants_liste_attente: number
Expand Down Expand Up @@ -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.
*/
Expand Down Expand Up @@ -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[]
Expand Down
25 changes: 15 additions & 10 deletions front-vite/src/utils/isReservationOpened.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand All @@ -38,21 +38,26 @@ 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é
if (CONFIGURATION.DAY_BEFORE_RESA !== null) {
// 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);
Expand All @@ -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é
Expand All @@ -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
Expand Down
5 changes: 4 additions & 1 deletion front-vite/src/views/ReservationFormView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
Mais ce n'est pas fini !
</h2>
<p>
Vous devez <strong>confirmer</strong> cette demande
Vous devez <strong>confirmer</strong> cette demande
en cliquant sur le lien présent dans l'email.
</p>
</template>
Expand Down Expand Up @@ -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.`
}
Expand Down
5 changes: 4 additions & 1 deletion install/scriptsFooter.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,10 @@
});

const today = new Date();
if (today >= endDate) {
if (eventData.bookable == false) {
// Evenement sans réservation
return
} else if (today >= endDate) {
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
const closedMessage = Object.assign(document.createElement('p'), {
innerText: `Les inscriptions pour cet événement sont terminées.`,
Expand Down

0 comments on commit 23b9055

Please sign in to comment.