github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/frontend/bv/src/pages/espace_perso/components/general/messages/CPlaceLiberee.vue (about) 1 <template> 2 <div v-if="camp"> 3 {{ salutations }}, <br /> 4 5 <div v-if="attente" class="my-1"> 6 <div> 7 Une place du séjour <b>{{ camp.label }}</b> s'est libérée. 8 {{ personne.nom_prenom }} peut donc maintenant y participer. <br /> 9 Pourriez-vous nous <b>confirmer</b> que vous êtes encore intéressé{{ 10 responsableSexeE 11 }} 12 par cette place ? 13 </div> 14 <div class="mt-2 text-center"> 15 <btn variant="accent" @click="confirme"> 16 Confirmer la venue de {{ personne.prenom }} 17 </btn> 18 </div> 19 </div> 20 <div v-else class="my-1"> 21 Une place du séjour <b>{{ camp.label }}</b> s'est libérée. 22 <div v-if="hasAnswered"> 23 Suite à votre retour, nous nous réjouissons d'y accueillir 24 {{ personne.prenom }} ! 25 </div> 26 <div v-else> 27 Nous nous réjouissons d'y accueillir 28 {{ personne.prenom }} ! 29 </div> 30 </div> 31 32 <div class="mt-2"> 33 Pour le centre d'inscriptions, <br /> 34 Marie-Pierre BUFFET 35 </div> 36 </div> 37 </template> 38 39 <script lang="ts"> 40 import Vue from "vue"; 41 import Component from "vue-class-component"; 42 import { 43 PseudoMessage, 44 MessageKind, 45 ContenuPlaceLiberee, 46 Sexe, 47 StatutAttente 48 } from "@/shared/logic/types"; 49 import { C } from "../../../logic/controller"; 50 import Btn from "@/shared/Btn.vue"; 51 import { ValidEvent } from "@/shared/utils"; 52 import { isNullDateString } from "../../../../../shared/logic/utils"; 53 54 const CPlaceLibereeProps = Vue.extend({ 55 props: { 56 contenu: Object as () => ContenuPlaceLiberee, 57 message: Object as () => PseudoMessage 58 } 59 }); 60 61 @Component({ 62 components: { Btn } 63 }) 64 export default class CPlaceLiberee extends CPlaceLibereeProps { 65 get attente() { 66 return this.participant.liste_attente.statut != StatutAttente.Inscrit; 67 } 68 69 /** vérifie la date de modification */ 70 get hasAnswered() { 71 return !isNullDateString(this.message.modified); 72 } 73 get salutations() { 74 return C.salutations; 75 } 76 77 get responsableSexeE() { 78 if (C.data.responsable && C.data.responsable.sexe == Sexe.SFemme) { 79 return "e"; 80 } 81 return ""; 82 } 83 84 get personne() { 85 return C.getPersonne(this.participant); 86 } 87 88 get participant() { 89 return C.data.participants.filter( 90 p => p.id == this.contenu.id_participant 91 )[0]; 92 } 93 94 get camp() { 95 return C.getCamp(this.participant); 96 } 97 98 async confirme(event: ValidEvent) { 99 event.spinning = true; 100 await C.data.confirmePlaceliberee(this.message.id); 101 event.spinning = false; 102 } 103 } 104 </script> 105 106 <style scoped></style>