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>