templates/inscription/inscription-centre.html.twig line 1

Open in your IDE?
  1. {% extends "layout.html.twig" %}
  2. {% block content %}
  3. <!-- Modal test SANG -->
  4. <div id="apk-modal-test-plasma" uk-modal>
  5.     <div class="uk-modal-dialog uk-modal-body">
  6.         <button class="uk-modal-close-default" type="button" uk-close></button>
  7.         {{ pimcore_inc("/" ~ app.request.locale ~ "/Snippets/form-eligibilite-inscription", {'id' : centre.site.id}) }}
  8.     </div>
  9. </div>
  10. <!-- Modal si jamais donné SANG et/ou PLASMA -->
  11. <div id="apk-modal-never-give" class="uk-modal-container" uk-modal>
  12.     <div class="uk-modal-dialog uk-modal-body">
  13.         <button class="uk-modal-close-outside" type="button" uk-close></button>
  14.         <div class="uk-modal-body">
  15.             <div class="uk-flex uk-flex-middle">
  16.                 <div class="uk-width-1-1">
  17.                     <h3>{{"Attention !"|trans}}</h3>
  18.                     <p>
  19.                         {{"En tant que nouveau donneur, une procédure de première inscription vous sera demandée lors de votre premier rendez-vous."|trans}}<br>
  20.                         {{"Nous vous demandons de vous présenter 15 min à l'avance."|trans}}<br>
  21.                         {{"Merci."|trans}}
  22.                     </p>
  23.                 </div>
  24.             </div>
  25.         </div>
  26.         <div class="uk-modal-footer uk-text-right">
  27.             <button class="uk-button uk-modal-close" type="button">{{"Fermer"|trans}}</button>
  28.         </div>
  29.     </div>
  30. </div>
  31. <!-- Modal si >= 66 ans et à déjà donné du plasma -->
  32. <div id="apk-modal-66-already-give" class="uk-modal-container" uk-modal>
  33.     <div class="uk-modal-dialog uk-modal-body">
  34.         <button class="uk-modal-close-outside" type="button" uk-close></button>
  35.         <div class="uk-modal-body">
  36.             <div class="uk-flex uk-flex-middle">
  37.                 <div class="uk-width-1-1">
  38.                     <h3>{{"Attention !"|trans}}</h3>
  39.                     <p>
  40.                         {{"Attention !!! A partir du 66ème anniversaire, le don est autorisé uniquement si le don de plasma ou plaquette précédent remonte à moins de 3 ans."|trans}}<br>
  41.                     </p>
  42.                 </div>
  43.             </div>
  44.         </div>
  45.         <div class="uk-modal-footer uk-text-right">
  46.             <button class="uk-button uk-modal-close" type="button">{{"Fermer"|trans}}</button>
  47.             <button class="uk-button uk-modal-close" type="button">{{"Continuer"|trans}}</button>
  48.         </div>
  49.     </div>
  50. </div>
  51.     <div class="page-collect-centre-inscription-form apk-page-inscription">
  52.     <div class="uk-container apk-container-1400 uk-margin-large-top">
  53.         <div class="section-sites-prelevement-item">
  54.             <h2 class="h-big-lowcase-grey">{{ "Prendre un rendez-vous dans un centre de prélèvement"|trans }}</h2>
  55.             <div class="uk-grid" uk-grid>
  56.                 <div class="uk-width-2-3@s">
  57.                     <div class="uk-text-uppercase uk-width-1-1 uk-margin-bottom" style="border-bottom: 1px solid grey;">{{ 'Votre Centre'|trans }}</div>
  58.                     <div class="uk-grid uk-grid-small uk-child-width-1-2@s" uk-grid>
  59.                         <div>
  60.                             <div class="adresse">
  61.                                 <ul class="fa-ul">
  62.                                     <li>
  63.                                         <img uk-svg width="14" height="14" src="/static/img/pictos/position.svg" />
  64.                                         <strong>{{ centre.site.name }}</strong><br>
  65.                                         {{ centre.site.address }}<br>
  66.                                         {{ centre.site.zip }} {{ centre.site.city }}
  67.                                     </li>
  68.                                 </ul>
  69.                             </div>
  70.                             <div>
  71.                                 <ul class="fa-ul telephone">
  72.                                     <li>
  73.                                         <img uk-svg width="14" height="14" src="/static/img/pictos/phone.svg" />
  74.                                         <a href="tel:{{ centre.site.phone}}"
  75.                                         target="_blank">{{ centre.site.phone}}</a>
  76.                                     </li>
  77.                                 </ul>
  78.                             </div>
  79.                             <div class="horaires">
  80.                                 <ul class="fa-ul">
  81.                                     <li>
  82.                                         <img uk-svg width="14" height="14" src="/static/img/pictos/horaires.svg" />
  83.                                         {# <strong>{{ 'Horaires'|trans }} {{ 'du'|trans }} {{ date['weekStartDate'] }} {{'au'|trans}} {{ date['weekEndDate'] }}</strong><br/> #}
  84.                                         {% for jour,horaire in centre.days %}
  85.                                             {% if horaire %}
  86.                                                 {{ jour|trans }} : {{ horaire }}
  87.                                                 <br/>
  88.                                             {% else %}
  89.                                                 {{ jour|trans }} : {{ "Fermé"|trans }}
  90.                                                 <br/>
  91.                                             {% endif %}
  92.                                         {% endfor %}
  93.                                     </li>
  94.                                 </ul>
  95.                             </div>
  96.                         </div>
  97.                         <!-- <div>
  98.                             {% if not centre.site.info is empty %}
  99.                                 <div>
  100.                                     <ul class="fa-ul">
  101.                                         <li>
  102.                                             <i class="fa-li fa"><svg width="17" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M255.989 0C114.623 0 0 114.623 0 255.989 0 397.355 114.623 512 255.989 512 397.355 512 512 397.355 512 255.989 512 114.623 397.355 0 255.989 0Zm53.292 396.749c-13.177 5.201-23.666 9.145-31.533 11.876a83.188 83.188 0 0 1-27.35 4.096c-15.951 0-28.369-3.901-37.211-11.681-8.842-7.781-13.242-17.641-13.242-29.626 0-4.659.326-9.427.976-14.282a178.126 178.126 0 0 1 3.185-16.449l16.493-58.254c1.452-5.591 2.709-10.901 3.706-15.842.997-4.985 1.473-9.558 1.473-13.719 0-7.411-1.538-12.613-4.594-15.538-3.099-2.926-8.929-4.356-17.619-4.356-4.248 0-8.626.628-13.112 1.95-4.443 1.365-8.3 2.601-11.464 3.814l4.356-17.944c10.792-4.4 21.13-8.17 30.991-11.291a91.567 91.567 0 0 1 27.956-4.725c15.843 0 28.066 3.858 36.669 11.486 8.561 7.651 12.874 17.598 12.874 29.821 0 2.536-.304 7-.889 13.372a89.462 89.462 0 0 1-3.294 17.576l-16.406 58.08a164.502 164.502 0 0 0-3.619 15.951 84.402 84.402 0 0 0-1.582 13.567c0 7.715 1.712 12.981 5.18 15.777 3.424 2.796 9.427 4.204 17.922 4.204 4.01 0 8.496-.715 13.567-2.102 5.028-1.387 8.669-2.622 10.966-3.684l-4.399 17.923Zm-2.905-235.748a39.172 39.172 0 0 1-27.631 10.663c-10.75 0-20.025-3.555-27.74-10.663a34.044 34.044 0 0 1-11.552-25.855c0-10.077 3.901-18.746 11.552-25.919a39.28 39.28 0 0 1 27.74-10.771c10.771 0 20.003 3.576 27.631 10.771 7.651 7.173 11.487 15.842 11.487 25.919 0 10.121-3.836 18.747-11.487 25.855Z" style="fill:#F9B123;fill-rule:nonzero" transform="scale(.03125)"/></svg></i>
  103.                                             {{ centre.site.info|raw }}
  104.                                         </li>
  105.                                     </ul>
  106.                                 </div>
  107.                             {% endif %}
  108.                             {% if not centre.site.parking is empty %}
  109.                                 <div>
  110.                                     <ul class="fa-ul">
  111.                                         <li>
  112.                                             <i class="fa-li fa"><svg width="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M287 167h-62v60h62c16.538 0 30-13.462 30-30s-13.462-30-30-30Z" style="fill:#F9B123;fill-rule:nonzero" transform="scale(.03125)"/><path d="M437 0H75C33.647 0 0 33.647 0 75v362c0 41.353 33.647 75 75 75h362c41.353 0 75-33.647 75-75V75c0-41.353-33.647-75-75-75ZM287 287h-62v105c0 8.284-6.716 15-15 15h-30c-8.284 0-15-6.716-15-15V122c0-8.284 6.716-15 15-15h107c49.629 0 90 40.371 90 90s-40.371 90-90 90Z" style="fill:#F9B123;fill-rule:nonzero" transform="scale(.03125)"/></svg></i>
  113.                                             {{"Parking"|trans}}
  114.                                             <br>
  115.                                             {{ centre.site.parking|raw }}
  116.                                         </li>
  117.                                     </ul>
  118.                                 </div>
  119.                             {% endif %}
  120.                             {% if not centre.site.transports_commun is empty %}
  121.                                 <div>
  122.                                     <ul class="fa-ul">
  123.                                         <li>
  124.                                             <i class="fa-li fa"><svg width="16" height="16" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M4.266 0c-1.455 0-3.2.793-3.2 2.93v9.87s0 1.067 1.067 1.067v1.066S2.133 16 3.2 16c1.066 0 1.066-1.067 1.066-1.067v-1.066h7.467v1.066S11.733 16 12.8 16c1.066 0 1.066-1.067 1.066-1.067v-1.066s1.067 0 1.067-1.067V2.93C14.933.747 13.615 0 12.16 0H4.266Zm.267 1.6h6.933a.267.267 0 0 1 0 .533H4.533a.267.267 0 1 1 0-.533ZM3.2 3.2h9.6c1.066 0 1.066 1.031 1.066 1.031v3.236s0 1.066-1.066 1.066H3.2c-1.067 0-1.067-1.066-1.067-1.066v-3.2S2.133 3.2 3.2 3.2Zm0 7.467a1.066 1.066 0 1 1 0 2.132 1.066 1.066 0 0 1 0-2.132Zm9.6 0a1.067 1.067 0 1 1 0 2.133 1.067 1.067 0 0 1 0-2.133Z" fill="#F9B123"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg></i>
  125.                                             {{"Transports en commun"|trans}}
  126.                                             <br>
  127.                                             {{ centre.site.transports_commun|raw }}
  128.                                         </li>
  129.                                     </ul>
  130.                                 </div>
  131.                             {% endif %}
  132.                             {% if not centre.site.accessibilite_pmr is empty %}
  133.                                 <div>
  134.                                     <ul class="fa-ul">
  135.                                         <li>
  136.                                             <i class="fa-li fa"><svg width="17" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M234.486 100.91c27.837 0 50.452-22.59 50.452-50.455C284.938 22.582 262.323 0 234.486 0c-27.869 0-50.466 22.582-50.466 50.455 0 27.865 22.597 50.455 50.466 50.455Zm77.967 285.907c-13.407 46.553-56.323 80.741-107.136 80.741-61.532 0-111.573-50.042-111.573-111.556 0-45.535 27.471-84.727 66.674-102.045v-47.294C96.217 226 49.309 285.597 49.309 356.002 49.309 442.015 119.293 512 205.316 512c62.69 0 116.724-37.258 141.5-90.717l-17.614-34.609c-4.945.041-10.673.093-16.749.143Z" style="fill:#F9B123;fill-rule:nonzero" transform="scale(.03125)"/><path d="M459.45 446.708 391.867 313.84a29.625 29.625 0 0 0-26.395-16.2h-86.558v-19.738h74.495c7.439 0 13.692-3.888 17.731-9.489 2.624-3.649 4.491-7.888 4.491-12.734 0-12.269-9.937-22.22-22.222-22.22h-74.495v-66.946c0-18.413-13.652-44.443-44.427-44.443-24.544 0-44.441 19.901-44.441 44.443v145.044c0 25.038 20.297 45.335 45.335 45.335h111.927l59.345 116.68c5.215 10.277 15.622 16.207 26.422 16.207a29.362 29.362 0 0 0 13.408-3.23c14.605-7.408 20.406-25.256 12.967-39.841Z" style="fill:#F9B123;fill-rule:nonzero" transform="scale(.03125)"/></svg></i>
  137.                                             {{"Accessibilité aux PMR"|trans}}
  138.                                             <br>
  139.                                             {{ centre.site.accessibilite_pmr|raw }}
  140.                                         </li>
  141.                                     </ul>
  142.                                 </div>
  143.                             {% endif %}
  144.                         </div> -->
  145.                     </div>
  146.                     <div class="uk-margin-top uk-text-center apk-container-cta-modal">
  147.                         <img src="/static/img/icons/questionnaire-plasma.png" style="width:80px" alt="">
  148.                         <p>
  149.                             {{"Prenez 2 minutes pour vérifier que vous êtes bien dans les conditions pour donner votre sang"|trans}}
  150.                         </p>
  151.                         <button class="uk-button" uk-toggle="target: #apk-modal-test-plasma">{{"Faire le test"|trans}}</button>
  152.                     </div>
  153.                 </div>
  154.                 <div class="uk-width-1-3@s">
  155.                     {% if centre.site.picture %}
  156.                         {% if not centre.site.maps_url is empty %} <a href="{{ centre.site.maps_url }}" target="_blank"> {% endif %}
  157.                         <figure class="uk-margin-top">
  158.                             <img src="{{ centre.site.picture }}" alt="{{ centre.site.name }}" />
  159.                             {% if centre.site.copyright %}
  160.                                 <figcaption>{{ centre.site.copyright }}</figcaption>
  161.                             {% endif %}
  162.                         </figure>
  163.                         {% if not centre.site.maps_url is empty %} </a> {% endif %}
  164.                     {% else %}
  165.                         <img src="/static/img/logos/logo-crb.svg" alt="Croix-Rouge de Belgique"/>
  166.                     {% endif %}
  167.                 </div>
  168.                 <div class="uk-width-1-1 uk-margin-small-bottom">
  169.                     {% if centre.site.informations %}
  170.                         <div class="note">
  171.                             <ul class="fa-ul">
  172.                                 <li><img uk-svg width="14" height="14" src="/static/img/pictos/info-circle.svg" />
  173.                                     {{ centre.site.informations|raw }}
  174.                                 </li>
  175.                             </ul>
  176.                         </div>
  177.                     {% endif %}
  178.                 </div>
  179.             </div>
  180.             <div class="uk-margin-medium-top">
  181.                 <form class="uk-form" role="form" name="form-validation" id="form-validation" method="POST">
  182.                     <div class="uk-text-uppercase uk-width-1-1" style="border-bottom: 1px solid grey;">{{ "A quelle date souhaitez-vous vous inscrire ?"|trans }}</div>
  183.                     <div class="warning-message uk-margin-top">{{"ATTENTION : le délai minimum entre 2 dons est de 15 jours. Si vous venez de donner, assurez-vous que le délai est bien respecté lors de votre prise de rendez-vous."|trans}}</div>
  184.                     <div uk-slider>
  185.                         <div class="uk-position-relative">
  186.                             <div class="uk-slider-container uk-padding">
  187.                                 <ul class="uk-slider-items uk-grid-small" uk-grid>
  188.                                     {% for i in 0..5 %}
  189.                                         <li class=" uk-width-1-4@m">
  190.                                             <div class="apk-calendar">
  191.                                                 {{ calendriers[i]|raw }}
  192.                                             </div>
  193.                                         </li>
  194.                                     {% endfor %}
  195.                                 </ul>
  196.                             </div>
  197.                             <div class="uk-visible@s">
  198.                                 <a class="uk-position-center-left-out uk-position-small" href="#" uk-slidenav-previous uk-slider-item="previous"></a>
  199.                                 <a class="uk-position-center-right-out uk-position-small" href="#" uk-slidenav-next uk-slider-item="next"></a>
  200.                             </div>
  201.                         </div>
  202.                         <ul class="uk-slider-nav uk-dotnav uk-margin-bottom uk-margin-left"></ul>
  203.                     </div>
  204.                     <div class="uk-grid-small" uk-grid>
  205.                         <div class="uk-width-1-1">
  206.                             <div class="uk-text-uppercase" style="border-bottom: 1px solid grey;">
  207.                                 <label class="control-label">
  208.                                     {{ "A quelle heure souhaitez-vous prendre rendez-vous le"|trans }} <span id="dateSelect" name="dateSelect" class="date-selected">...</span> ?
  209.                                 </label>
  210.                             </div>
  211.                             <div class="uk-width-1-1@m" id="resultats">
  212.                                 <div class="resultats-placeholder">
  213.                                     <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" data-svg="info"><path fill="currentColor" d="M12.13,11.59 C11.97,12.84 10.35,14.12 9.1,14.16 C6.17,14.2 9.89,9.46 8.74,8.37 C9.3,8.16 10.62,7.83 10.62,8.81 C10.62,9.63 10.12,10.55 9.88,11.32 C8.66,15.16 12.13,11.15 12.14,11.18 C12.16,11.21 12.16,11.35 12.13,11.59 C12.08,11.95 12.16,11.35 12.13,11.59 L12.13,11.59 Z M11.56,5.67 C11.56,6.67 9.36,7.15 9.36,6.03 C9.36,5 11.56,4.54 11.56,5.67 L11.56,5.67 Z"></path><circle fill="none" stroke="currentColor" stroke-width="1.1" cx="10" cy="10" r="9"></circle></svg>
  214.                                     {{ "Veuillez sélectionner d'abord une date dans le calendrier au-dessus"|trans }}
  215.                                 </div>
  216.                             </div>
  217.                         </div>
  218.                     </div>
  219.                     <div class="uk-grid">
  220.                         <div class="uk-width-1-1">
  221.                             <div class="uk-text-uppercase" style="border-bottom: 1px solid grey;">
  222.                                 {{ "Avant de terminer votre inscription,"|trans }}<br/>
  223.                                 {{ "Nous avons besoin de ces quelques informations"|trans }}
  224.                             </div>
  225.                         </div>
  226.                     </div>
  227.                     <div class="uk-grid">
  228.                         {% if errorMessage or errorMessage != "" %}
  229.                             <div class="uk-width-1-1">
  230.                                 <div class="uk-margin-bottom uk-alert uk-alert-warning" id="error-msg" uk-alert>{% if errorMessage %}{{ errorMessage|trans }}{% endif %}</div>
  231.                             </div>
  232.                         {% endif %}
  233.                         <input type="hidden" name="akimedia-centre" value="{{ centre.site.id }}">
  234.                         <div class="uk-grid-medium" uk-grid>
  235.                             <div class="uk-width-1-2@s ">
  236.                                 <label class="control-label required" for="collecte_centre_form_lastname">{{ 'Nom'|trans }}</label><br/>
  237.                                 <input type="text" id="collecte_centre_form_lastname" name="lastname" required="required" class="uk-input">
  238.                             </div>
  239.                             <div class="uk-width-1-2@s">
  240.                                 <label class="control-label required" for="collecte_centre_form_firstname">{{ 'Prénom'|trans }}</label><br/>
  241.                                 <input type="text" id="collecte_centre_form_firstname" name="firstname" required="required" class="uk-input">
  242.                             </div>
  243.                             <div class="uk-width-1-2@s">
  244.                                 <label class="control-label required" for="collecte_centre_form_email">{{ 'Adresse mail'|trans }}</label><br/>
  245.                                 <input type="email" id="collecte_centre_form_email" name="email" required="required" class="uk-input">
  246.                             </div>
  247.                             <div class="uk-width-1-2@s">
  248.                                 <label class="control-label required" for="collecte_centre_form_email2">{{ 'Confirmez votre adresse mail'|trans }}</label><br/>
  249.                                 <input type="email" id="collecte_centre_form_email2" name="email2" required="required" class="uk-input">
  250.                             </div>
  251.                             <div class="uk-width-1-2@s">
  252.                                 <label class="control-label required" for="collecte_centre_form_phone">{{ 'Téléphone'|trans }}</label>
  253.                                 <input type="text" id="collecte_centre_form_phone" name="phone" required="required" class="uk-input">
  254.                             </div>
  255.                             <div class="uk-width-1-2@s">
  256.                                 <label class="control-label required" for="dtenaissance">{{ 'Date de naissance jj/mm/aaaa'|trans }}</label>
  257.                                 <input class="uk-input" type="date" name="dtenaissance"  id ="dtenaissance"
  258.                                     data-min="{{yearAllowed.min|date('Y-m-d')}}" data-max="{{yearAllowed.max|date('Y-m-d')}}"
  259.                                     value="" autocomplete="false" maxlength="10" required>
  260.                             </div>
  261.                             <div class="uk-width-1-1 apk-choix uk-margin-top uk-grid-margin uk-first-column">
  262.                                 <div class="uk-grid uk-grid-small uk-child-width-1-2@s" uk-grid>
  263.                                     <div>
  264.                                         <div class="apk-sang">
  265.                                             <div class="uk-margin-top uk-position-relative">
  266.                                                 <div>
  267.                                                     <label class="required">{{ 'Déjà donné du sang'|trans }}</label>
  268.                                                     <div id="inscription_form_plasma">
  269.                                                         <input type="radio" id="collecte_centre_form_alreadyBlood_0" name="alreadyBlood" required="required" value="OUI">
  270.                                                         <label for="collecte_centre_form_alreadyBlood_0" class="required apk-label-is-linked-to-field">{{ "Oui"|trans }}</label>
  271.                                                         <input type="radio" id="collecte_centre_form_alreadyBlood_1" name="alreadyBlood" required="required" value="NON">
  272.                                                         <label for="collecte_centre_form_alreadyBlood_1" class="required apk-label-is-linked-to-field">{{ "Non"|trans }}</label>
  273.                                                     </div>
  274.                                                 </div>
  275.                                             </div>
  276.                                         </div>
  277.                                     </div>
  278.                                     <div>
  279.                                         <div class="apk-plasma">
  280.                                             <div class="uk-margin-top uk-position-relative">
  281.                                                 <div>
  282.                                                     <label class="required">{{ 'Déjà donné du plasma'|trans }}</label>
  283.                                                     <div id="inscription_form_plasma">
  284.                                                         <input type="radio" id="collecte_centre_form_alreadyPlasma_0" name="alreadyPlasma" required="required" value="OUI">
  285.                                                         <label for="collecte_centre_form_alreadyPlasma_0" class="required apk-label-is-linked-to-field">{{ "Oui"|trans }}</label>
  286.                                                         <input type="radio" id="collecte_centre_form_alreadyPlasma_1" name="alreadyPlasma" required="required" value="NON">
  287.                                                         <label for="collecte_centre_form_alreadyPlasma_1" class="required apk-label-is-linked-to-field">{{ "Non"|trans }}</label>
  288.                                                     </div>
  289.                                                 </div>
  290.                                             </div>
  291.                                         </div>
  292.                                     </div>
  293.                                 </div>
  294.                             </div>
  295.                             <div class="uk-width-1-1">
  296.                                 <label class="gdpr-label">
  297.                                     <input type="checkbox" id="collecte_centre_form_gdpr" name="gdpr" required="required" class="uk-checkbox uk-margin-small-right" value="1">{{ 'En cochant cette case, vous acceptez la manière dont vos données sont traitées.'|trans }} *</label>
  298.                             </div>
  299.                             <div class="uk-width-1-1">
  300.                                 <div class="uk-display-inline-block">
  301.                                     <button type="submit" id="collecte_centre_form_submit" class="uk-button">{{"Envoyer"|trans}}</button>
  302.                                 </div>
  303.                             </div>
  304.                         </div>
  305.                     </div>
  306.                     <input id="collecte_centre_form_centre" name="centre" type="hidden" value="{{ centre.site.id }}">
  307.                     <input id="collecte_centre_form_date" name="date" type="hidden" value="">
  308.                     <input id="collecte_centre_form_horaire" name="horaire" type="hidden" value="">
  309.                     <input id="collecte_centre_form_heure" name="heure" type="hidden" value="">
  310.                 </form>
  311.             </div>
  312.         </div>
  313.     </div>
  314. </div>
  315.     <div id="date-naissance-modal" class="uk-modal-container" uk-modal>
  316.         <div class="uk-modal-dialog uk-modal-body">
  317.             <div class="uk-modal-body">
  318.                 <div class="uk-flex uk-flex-middle">
  319.                     <div id="date-naissance-error" class="uk-width-1-1">
  320.                     </div>
  321.                 </div>
  322.             </div>
  323.             <div class="uk-modal-footer">
  324.                 <div class="uk-grid uk-grid-medium">
  325.                     <div class="uk-width-expand"></div>
  326.                     <div class="uk-width-auto"><button class="uk-button uk-modal-close" type="button">{{ "Fermer"|trans }}</button></div>
  327.                     <div class="uk-width-auto"><button class="uk-button apk-submit-form-after-alert" type="button" style="display: none;">{{ "Continuer"|trans }}</button></div>
  328.                 </div>
  329.             </div>
  330.         </div>
  331.     </div>
  332.     
  333. {% endblock %}
  334. {% block inlinescripts %}
  335. <link href="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css" rel="stylesheet">
  336. <script src="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js"></script>
  337. <script src="https://npmcdn.com/flatpickr@4.6.13/dist/l10n/{{app.request.locale}}.js"></script>
  338.     {% if not editmode %}
  339. <script>
  340.     var borne = [];
  341.     {% set now = "now"|date("Y-m-d") %}
  342.     {% for date in dates %}
  343.         {% set d = date|date("Y-m-d") %}
  344.         {% if d >= now %}
  345.             borne.push('{{ d }}');
  346.         {% endif %}
  347.     {% endfor %}
  348.     
  349.     $( document ).ready(function() {
  350.         //gestion de la birthDate
  351.         newMaxDate = false;
  352.         const BirthMaxOri = new Date($('#dtenaissance').attr('data-max'));
  353.         const BirthMinOri = new Date($('#dtenaissance').attr('data-min'));
  354.         let continueToSubmit = false;
  355.         let inputBirthDate = $("#dtenaissance").flatpickr({
  356.             locale : "{{app.request.locale}}",
  357.             dateFormat : "d/m/Y",
  358.             minDate : BirthMinOri,
  359.             maxDate : BirthMaxOri,
  360.             allowInput: true,
  361.         });
  362.         function setDateMax () {
  363.             let BirthMax = BirthMaxOri;
  364.             let BirthMin = BirthMinOri;
  365.             let newMaxDate = null;
  366.             let radioSelected = null;
  367.             let found = false;
  368.             $('.schedule-item').each(function(el){
  369.                 if($(this).is('.is-selected')) {
  370.                     found = true;
  371.                     radioSelected = $(this).find('input:checked');
  372.                 }
  373.             });
  374.             if(found) {
  375.                 newMaxDate = radioSelected.attr('data-id');
  376.                 BirthMax18 = new Date(newMaxDate);
  377.                 newBirthMax = new Date(BirthMax18.setFullYear(BirthMax18.getFullYear() - parseFloat({{yearAllowed.year}})));
  378.                 inputBirthDate.set('maxDate', newBirthMax);
  379.             } else {
  380.                 inputBirthDate.set('maxDate', BirthMaxOri);
  381.             }
  382.             inputBirthDate.clear();
  383.         }
  384.         setDateMax();
  385.         
  386.         $("form").on("submit", function(e) {
  387.             if($("#collecte_centre_form_email").val() != $("#collecte_centre_form_email2").val()){
  388.                 $("#error-msg").text("{{ 'Les adresses e-mails sont différentes, veuillez corriger'|trans }}");
  389.                 $("#error-msg").addClass("uk-padding-small uk-margin-bottom");
  390.                 console.log('in');
  391.                 return false;
  392.             }
  393.             
  394.             if($("#collecte_centre_form_horaire").val() == 'zzzzz'){
  395.                 $("#error-msg").text("{{ 'Veuillez choisir une date et une heure.'|trans }}");
  396.                 return false;
  397.             }
  398.             // Ajout du test de validiter de l'horaire pour eviter les doublon
  399.             var horaire = $("#collecte_centre_form_horaire").val()+'|'+$("#collecte_centre_form_heure").val();
  400.             var codeCentre = $("#collecte_centre_form_centre").val();
  401.             $("#date-naissance-error").text("");
  402.             let age = getAge($(this).find('[name="dtenaissance"]').val(), $('#dateSelect').text());
  403.             console.log('age ' + age);
  404.             if (isNaN(age) || age < 0) {
  405.                 e.preventDefault();
  406.                 // Veuillez entrer une date valide.
  407.                 $("#date-naissance-error").text("{{ "inscription.error.no-birthdate"|trans }}");
  408.                 UIkit.modal("#date-naissance-modal").show();
  409.             } else {
  410.                 if(continueToSubmit==false) {
  411.                     var $plasmaAlreadyGive = $('#collecte_centre_form_alreadyPlasma_0'); // Déjà donné du plasma
  412.                     var $plasmaNotAlreadyGive = $('#collecte_centre_form_alreadyPlasma_1'); // Pas déjà donné du Plasma
  413.                     if (age < 18) {
  414.                         e.preventDefault();
  415.                         $("#date-naissance-error").text("{{ "inscription.error.too_young"|trans }}");
  416.                         // Vous êtes actuellement trop jeune pour donner votre sang. Mais nous vous remercions pour votre intérêt. Revenez nous voir dès que vous aurez 18 ans !
  417.                         UIkit.modal("#date-naissance-modal").show();
  418.                     } else if(age >= 66 && age < 76 && $plasmaAlreadyGive.length && $plasmaAlreadyGive.hasClass('apk-field-is-checked')) {
  419.                         // Si le donneur dont l’âge est ≥ 66 ans qui coche « oui » à la question « Déjà donné du plasma ? »
  420.                         e.preventDefault();
  421.                         //$("#date-naissance-error").text("{{ "inscription.error.too_old"|trans }}");
  422.                         $("#date-naissance-error").text("{{ "inscription.error.66.alreadygive"|trans }}");
  423.                         // Attention !!! A partir du 66ème anniversaire, le don est autorisé uniquement si le don de plasma ou plaquette précédent remonte à moins de 3 ans.
  424.                         $("#date-naissance-modal .apk-submit-form-after-alert").css("display", "block");
  425.                         UIkit.modal("#date-naissance-modal").show();
  426.                     } else if(age >= 66 && age < 76 && $plasmaNotAlreadyGive.length && $plasmaNotAlreadyGive.hasClass('apk-field-is-checked')) {
  427.                         // Si le donneur dont l’âge est ≥ 66 ans qui coche « Non » à la question « Déjà donné du plasma ? »
  428.                         e.preventDefault();
  429.                         //$("#date-naissance-error").text("{{ "inscription.error.too_old"|trans }}");
  430.                         $("#date-naissance-error").text("{{ "inscription.error.66.notalreadygive"|trans }}");
  431.                         // Malheureusement. Le premier don de plasma est autorisé de 18 à 65 ans.
  432.                         $("#date-naissance-modal .apk-submit-form-after-alert").css("display", "none");
  433.                         UIkit.modal("#date-naissance-modal").show();
  434.                     } else if(age >= 76) {
  435.                         // Si donneur dont l’âge est ≥ 76 ans qui coche « Oui » ou « Non » à la question « Déjà donné du plasma ? »
  436.                         // Note dev: Ici on ne check pas si la case est cochée ou non, car dès qu'on dépasse l'âge on ne pas plus donner.
  437.                         e.preventDefault();
  438.                         //$("#date-naissance-error").text("{{ "inscription.error.too_old"|trans }}");
  439.                         $("#date-naissance-error").text("{{ "inscription.error.76"|trans }}");
  440.                         // Malheureusement. Le premier don de plasma est autorisé de 18 à 65 ans.
  441.                         $("#date-naissance-modal .apk-submit-form-after-alert").css("display", "none");
  442.                         UIkit.modal("#date-naissance-modal").show();
  443.                     }
  444.                 }
  445.             }
  446.         });
  447.         // On force le submit du form si l'utilisateur clique sur le bouton "Continuer" sur la modal qui l'avertit les conditions selon son âge
  448.         $('.apk-submit-form-after-alert').on('click', function(e) {
  449.             continueToSubmit = true;
  450.             $('form#form-validation').submit();
  451.         });
  452.         $('.day').each(function () {
  453.             console.log ($(this).attr('data-date'));
  454.             if(borne.includes($(this).attr('data-date'))){
  455.                 $(this).addClass('date_actif');
  456.             }
  457.             else {
  458.                 $(this).addClass('not-active');
  459.             }
  460.         });
  461.         $('.day.date_actif').on("click", function () {
  462.             $('.day.is-selected').removeClass('is-selected');
  463.             $(this).addClass('is-selected');
  464.             var date = $(this).attr('data-date');
  465.             var centreid = $(this).attr('data-centre-id');
  466.             $("#dateSelect").html($(this).attr('data-date-format'));
  467.             $("#collecte_centre_form_date").val(date);
  468.             var lang = '{{ app.request.locale }}';
  469.             
  470.             $.ajax({
  471.                 dataType: "json",
  472.                 type: "GET",
  473.                 url: "{{ path('getHoraireCentreAkimedia') }}",
  474.                 data: {'date': date ,'centreid':centreid, 'lang':lang},
  475.                 success: function (data) {
  476.                     
  477.                     $('#resultats').html(data["msg"]);
  478.                     $("input[name='inscription']").on("click", function(){ 
  479.                         $("#collecte_centre_form_heure").val($(this).val());
  480.                         $("#collecte_centre_form_horaire").val($(this).attr("data-id"));
  481.                     });                    
  482.                     console.log(data);
  483.                     inputBirthDate.clear();
  484.                     
  485.                     $('.schedule-item').on("click", function () {
  486.                         var $radioSelected = $(this).find('.uk-radio');
  487.                         if($radioSelected.attr("data-id")){
  488.                                 
  489.                         $('.schedule-item').removeClass('is-selected');
  490.                         $(this).addClass('is-selected');
  491.                         $radioSelected.prop('checked', true);
  492.                         setDateMax();
  493.                         $("#collecte_centre_form_heure").val($radioSelected.val());
  494.                         $("#collecte_centre_form_horaire").val($radioSelected.attr("data-id"));
  495.                         }
  496.                         else{
  497.                                 $('.schedule-item').removeClass('is-selected');
  498.                         }
  499.                     });
  500.                 },
  501.                 error: function (xhr, textStatus, errorThrown) {
  502.                     UIkit.notification('{{ "Oops! Une erreur s'est produite. Veuillez réessayer."|trans }}', {status: 'danger'});
  503.                     console.log(xhr, textStatus, errorThrown);
  504.                 }
  505.             });
  506.         })
  507.     });
  508.     function getAge(dateString, selectedDate = null) {
  509.         //selectedDate = "13-11-2025";
  510.         if(selectedDate == null) {
  511.             //let today = new Date();
  512.             selectedDate = new Date();
  513.         }
  514.         // Conversion de la date de naissance (dd/mm/yyyy)
  515.         let dmy = dateString.split("/");
  516.         let birthDate = new Date(dmy[2], dmy[1] - 1, dmy[0]);
  517.         // Conversion de la date de référence (dd-mm-yyyy)
  518.         let sdm = selectedDate.split("-");
  519.         let refDate = new Date(sdm[2], sdm[1] - 1, sdm[0]);
  520.         // Calcul de l'âge
  521.             // Ancienne méthode basée sur la date du jour
  522.             // ------------------------------------------
  523.             /*
  524.             let age = today.getFullYear() - birthDate.getFullYear();
  525.             let m = today.getMonth() - birthDate.getMonth();
  526.             if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
  527.                age--;
  528.             }
  529.             */
  530.         let age = refDate.getFullYear() - birthDate.getFullYear();
  531.         let m = refDate.getMonth() - birthDate.getMonth();
  532.         if (m < 0 || (m === 0 && refDate.getDate() < birthDate.getDate())) {
  533.             age--;
  534.         }
  535.         // Return
  536.         return age;
  537.     }
  538. </script>
  539.     {% endif %}
  540. {% endblock inlinescripts %}