templates/checkout/step1.html.twig line 1

Open in your IDE?
  1. {% extends "base.html.twig" %}
  2. {% block title %}{{ parent() }} Prendre un rendez-vous{% endblock %}
  3. {% block styles %}
  4. {{ parent() }}
  5. <link rel="canonical" href="{{ path('default_checkout_identification') }}" />
  6. <script src="{{ asset('assets/js/vendors/plugins/jquery-3.6.3.min.js') }}"></script>
  7. {% endblock %}
  8. {% block body %}
  9. <section>
  10. <div class="container py-0 py-sm-10 text-center">
  11. <img src="{{ asset('assets/media/logo_couleur_horizontal.png') }}" alt="logo" width="250" class="mobile-display-none" />
  12. <div class="stepper mt-10 mobile-display-none">
  13. <div class="stepper_item active">
  14. <svg xmlns="http://www.w3.org/2000/svg" width="45" height="45" viewBox="0 0 48 48">
  15. <g id="Groupe_400" data-name="Groupe 400" transform="translate(-499.809 -295.809)">
  16. <circle id="Ellipse_22" data-name="Ellipse 22" cx="24" cy="24" r="24" transform="translate(499.809 295.809)" fill="#c1c1c1"/>
  17. <circle id="Ellipse_23" data-name="Ellipse 23" cx="13" cy="13" r="13" transform="translate(510.809 306.809)" fill="#fff"/>
  18. <path id="Icon_material-account-circle" data-name="Icon material-account-circle" d="M17.616,3A14.616,14.616,0,1,0,32.231,17.616,14.621,14.621,0,0,0,17.616,3Zm0,4.385a4.385,4.385,0,1,1-4.385,4.385A4.379,4.379,0,0,1,17.616,7.385Zm0,20.754a10.524,10.524,0,0,1-8.769-4.706c.044-2.908,5.846-4.5,8.769-4.5s8.725,1.593,8.769,4.5a10.524,10.524,0,0,1-8.769,4.706Z" transform="translate(506.193 302.194)" fill="#c1c1c1"/>
  19. </g>
  20. </svg>
  21. <div class="stepper_item_text">Identification</div>
  22. </div>
  23. <div class="stepper_separator"></div>
  24. <div class="stepper_item">
  25. <svg xmlns="http://www.w3.org/2000/svg" width="45" height="45" viewBox="0 0 48 48">
  26. <g id="Groupe_399" data-name="Groupe 399" transform="translate(-111.044 -345.044)">
  27. <circle id="Ellipse_22" data-name="Ellipse 22" cx="24" cy="24" r="24" transform="translate(111.044 345.044)" fill="#c1c1c1"/>
  28. <path id="Icon_ionic-md-calendar" data-name="Icon ionic-md-calendar" d="M19.3,14.626H14.626V19.3H19.3ZM17.742,4.5V6.058H9.953V4.5H7.616V6.058H6.447A1.953,1.953,0,0,0,4.5,8.005V21.247a1.953,1.953,0,0,0,1.947,1.947h14.8a1.953,1.953,0,0,0,1.947-1.947V8.005a1.953,1.953,0,0,0-1.947-1.947H20.078V4.5Zm3.505,16.747H6.447V10.926h14.8Z" transform="translate(120.769 355.625)" fill="#fff"/>
  29. </g>
  30. </svg>
  31. <div class="stepper_item_text">Choix du RDV</div>
  32. </div>
  33. <div class="stepper_separator"></div>
  34. <div class="stepper_item">
  35. <svg xmlns="http://www.w3.org/2000/svg" width="45" height="45" viewBox="0 0 48 48">
  36. <g id="Groupe_412" data-name="Groupe 412" transform="translate(-773.323 -220.323)">
  37. <circle id="Ellipse_22" data-name="Ellipse 22" cx="24" cy="24" r="24" transform="translate(773.323 220.323)" fill="#c1c1c1"/>
  38. <path id="Icon_awesome-euro-sign" data-name="Icon awesome-euro-sign" d="M14.361,19.9a.554.554,0,0,0-.667-.433,9.711,9.711,0,0,1-2.1.25,5.95,5.95,0,0,1-5.614-3.95h5.255a.555.555,0,0,0,.541-.433l.295-1.311a.555.555,0,0,0-.541-.676h-6.2a9.978,9.978,0,0,1,.006-1.953h6.776a.555.555,0,0,0,.542-.436l.3-1.375a.555.555,0,0,0-.542-.673H6.017a5.805,5.805,0,0,1,5.436-3.468,9.053,9.053,0,0,1,1.75.192.555.555,0,0,0,.647-.4L14.4,3.18a.554.554,0,0,0-.431-.689,13.461,13.461,0,0,0-2.435-.241A9.878,9.878,0,0,0,2.083,8.906H.555A.555.555,0,0,0,0,9.46v1.375a.555.555,0,0,0,.555.555h1a13.721,13.721,0,0,0-.008,1.953H.555A.555.555,0,0,0,0,13.9v1.311a.555.555,0,0,0,.555.555H1.947a9.682,9.682,0,0,0,9.592,7.194,11.529,11.529,0,0,0,2.824-.36.555.555,0,0,0,.406-.645Z" transform="translate(788.065 231.719)" fill="#fff"/>
  39. </g>
  40. </svg>
  41. <div class="stepper_item_text">Empreinte bancaire</div>
  42. </div>
  43. <div class="stepper_separator"></div>
  44. <div class="stepper_item">
  45. <svg xmlns="http://www.w3.org/2000/svg" width="45" height="45" viewBox="0 0 48 48">
  46. <g id="Groupe_401" data-name="Groupe 401" transform="translate(-655.972 -314.972)">
  47. <circle id="Ellipse_22" data-name="Ellipse 22" cx="24" cy="24" r="24" transform="translate(655.972 314.972)" fill="#c1c1c1"/>
  48. <g id="Icon_feather-check-circle" data-name="Icon feather-check-circle" transform="translate(669.85 328.85)">
  49. <path id="Tracé_226" data-name="Tracé 226" d="M23.243,12.187v.931a10.122,10.122,0,1,1-6-9.251" transform="translate(-3 -2.991)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
  50. <path id="Tracé_227" data-name="Tracé 227" d="M26.658,6,16.536,16.132,13.5,13.1" transform="translate(-6.415 -3.969)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
  51. </g>
  52. </g>
  53. </svg>
  54. <div class="stepper_item_text">Récapitulatif</div>
  55. </div>
  56. </div>
  57. </div>
  58. </section>
  59. <section>
  60. <div class="container py-10 d-flex align-items-start justify-content-between gap-0 gap-sm-10 mobile-flex-column">
  61. <div class="flex-grow-1 mobile-w-100">
  62. <div class="border-primary p-7 border-radius10 mb-10">
  63. {% if partner and partner.ispractitioner %}
  64. <a href="{{ path('default_praticien_fiche', {'slug': partner.slug}) }}">
  65. <div class="d-flex gap-4 text-primary">
  66. <div>
  67. <svg xmlns="http://www.w3.org/2000/svg" width="18.315" height="18.73" viewBox="0 0 18.315 18.73">
  68. <g id="Icon_feather-arrow-left" data-name="Icon feather-arrow-left" transform="translate(0.5 0.707)">
  69. <path id="Tracé_32" data-name="Tracé 32" d="M24.815,18H7.5" transform="translate(-7.5 -9.342)" fill="none" stroke="#186d7c" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
  70. <path id="Tracé_33" data-name="Tracé 33" d="M16.158,24.815,7.5,16.158,16.158,7.5" transform="translate(-7.5 -7.5)" fill="none" stroke="#186d7c" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
  71. </g>
  72. </svg>
  73. </div>
  74. <div>Retour à la fiche du praticien</div>
  75. </div>
  76. </a>
  77. {% endif %}
  78. {% if criticalError %}
  79. <div class="w-100 text-center mb-5" style="color: red;">{{ criticalError }}</div>
  80. {% else %}
  81. {% if app.user %}
  82. <form method="post">
  83. <div class="my-10 text-center">
  84. {% if app.user.user %}
  85. <div class="fw-bold fs-6">Vous prenez rendez-vous pour...</div>
  86. <div class="fs-7">(Gérez vos différents profils dans les paramètres de votre compte)</div>
  87. <div style="max-width: 500px; margin: auto;" class="mt-7">
  88. <div class="form-check form-check-custom form-check-solid">
  89. <input class="form-check-input" type="radio" value="" id="profile_self" name="profile" checked/>
  90. <label class="form-check-label" for="profile_self">
  91. <b>{{ app.user.partner ? app.user.partner.firstName : app.user.user.firstName }} {{ app.user.partner ? app.user.partner.lastName : app.user.user.lastName }}</b> (vous-même)
  92. </label>
  93. </div>
  94. {% for profile in app.user.user.customerProfile %}
  95. <div class="form-check form-check-custom form-check-solid mt-3">
  96. <input class="form-check-input" type="radio" value="{{ profile.id }}" id="profile_{{ profile.id }}" name="profile"/>
  97. <label class="form-check-label" for="profile_{{ profile.id }}">
  98. <b>{{ profile.firstName }} {{ profile.lastName }}</b> ({{ profile.familyRelationship }})
  99. </label>
  100. </div>
  101. {% endfor %}
  102. </div>
  103. {% if coaching %}
  104. <input type="hidden" name="lat" id="input-lat" value="{% if lat is defined and lat %}{{ lat}}{% endif %}" />
  105. <input type="hidden" name="lon" id="input-lon" value="{% if lon is defined and lon %}{{ lon}}{% endif %}" />
  106. {% endif %}
  107. {% else %}
  108. <div class="fw-bold fs-6">Vous être connecté à un compte praticien ou coach</div>
  109. <div class="fs-7">Veuillez utiliser un compte utilisateur pour la prise de rendez-vous.</div>
  110. {% endif %}
  111. </div>
  112. {% if app.user.user %}
  113. <div class="my-10 text-center">
  114. <button type="submit">Suivant</button>
  115. </div>
  116. {% endif %}
  117. </form>
  118. {% else %}
  119. <div class="my-10" style="max-width: 700px; margin: auto;">
  120. {% include("utils/register-login-form.html.twig") with {"formRegister": formRegister, "formLogin": formLogin } %}
  121. </div>
  122. {% endif %}
  123. {% endif %}
  124. </div>
  125. </div>
  126. <div style="flex: 0 0 30%; border-radius: 10px; top: 25px;" class="bg-primary p-7 text-white mobile-w-100">
  127. {% if partner %}
  128. <div class="d-flex align-items-center gap-5">
  129. <div class="avatar"><img src="{{ partner.avatar ? documents_avatar_directory~partner.avatar : asset('assets/media/avatars/blank.png') }}" /></div>
  130. <div>
  131. <div class="fw-bold">{{ partner.lastName }}, {{ partner.firstName }}</div>
  132. <div>{{ partner.specialitiesString }}</div>
  133. </div>
  134. </div>
  135. {% if partner.address %}
  136. <div class="mt-5">
  137. {% if partner.addressName %}{{ partner.addressName }}<br/>{% endif %}
  138. {{ partner.address }}<br/>
  139. {% if partner.address2 %}{{ partner.address2 }}<br/>{% endif %}
  140. {{ partner.zipCode }} {{ partner.city }}
  141. </div>
  142. {% endif %}
  143. {% if partner.secondaryLocations and partner.secondaryLocations|length > 0 %}
  144. {% for secondaryLocation in partner.secondaryLocations %}
  145. {% if secondaryLocation.active %}
  146. <div class="mt-5">
  147. {% if secondaryLocation.name != secondaryLocation.address %}{{ secondaryLocation.name }}<br/>{% endif %}
  148. {{ secondaryLocation.address }}<br/>
  149. {% if secondaryLocation.address2 %}{{ secondaryLocation.address2 }}<br/>{% endif %}
  150. {{ secondaryLocation.zipCode }} {{ secondaryLocation.city }}
  151. </div>
  152. {% endif %}
  153. {% endfor %}
  154. {% endif %}
  155. {% endif %}
  156. {% if coaching %}
  157. <div>
  158. Réserver un coaching
  159. </div>
  160. {% endif %}
  161. {% if slot %}
  162. <div class="mt-5">
  163. {{ slot.startDate|format_datetime(locale='fr',pattern="EEEE dd MMMM YYYY à HH:mm") }}
  164. </div>
  165. {% endif %}
  166. </div>
  167. </div>
  168. </section>
  169. {% endblock %}
  170. {% block javascripts %}
  171. {{ parent() }}
  172. {% if coaching %}
  173. <script>
  174. (function() {
  175. function startLoc() {
  176. if (navigator.geolocation) {
  177. navigator.geolocation.getCurrentPosition(function (position) {
  178. document.getElementById('input-lat').value = position.coords.latitude;
  179. document.getElementById('input-lon').value = position.coords.longitude;
  180. });
  181. }
  182. }
  183. startLoc();
  184. })();
  185. </script>
  186. {% endif %}
  187. {% endblock %}