templates/app/clients/form.html.twig line 1

Open in your IDE?
  1. {% extends "app/base.html.twig" %}
  2. {% block title %}{{ parent() }} - Clients{% endblock %}
  3. {% block body %}
  4. <div class="content flex-row-fluid me-5">
  5. <div class="row gy-0 gx-10">
  6. <div class="col-12">
  7. <div class="card border-0 mb-8">
  8. <div class="card-body py-4">
  9. <ol class="breadcrumb text-muted fs-6 fw-semibold">
  10. <li class="breadcrumb-item"><a href="{{ path('manager_homepage') }}" class=""><i class="fa fa-home text-primary"></i></a></li>
  11. <li class="breadcrumb-item"><a href="{{ path('manager_clients') }}?particulier=1" class="">Clients particuliers</a></li>
  12. <li class="breadcrumb-item text-muted">{{ title }}</li>
  13. </ol>
  14. </div>
  15. </div>
  16. <div class="d-flex justify-content-between align-items-start flex-row gap-10">
  17. <div class="card card-flush w-100">
  18. <div class="card-header pt-7">
  19. <div class="card-title">
  20. <span class="svg-icon svg-icon-1 me-2">
  21. <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
  22. <path d="M20 14H18V10H20C20.6 10 21 10.4 21 11V13C21 13.6 20.6 14 20 14ZM21 19V17C21 16.4 20.6 16 20 16H18V20H20C20.6 20 21 19.6 21 19ZM21 7V5C21 4.4 20.6 4 20 4H18V8H20C20.6 8 21 7.6 21 7Z" fill="black" />
  23. <path opacity="0.3" d="M17 22H3C2.4 22 2 21.6 2 21V3C2 2.4 2.4 2 3 2H17C17.6 2 18 2.4 18 3V21C18 21.6 17.6 22 17 22ZM10 7C8.9 7 8 7.9 8 9C8 10.1 8.9 11 10 11C11.1 11 12 10.1 12 9C12 7.9 11.1 7 10 7ZM13.3 16C14 16 14.5 15.3 14.3 14.7C13.7 13.2 12 12 10.1 12C8.10001 12 6.49999 13.1 5.89999 14.7C5.59999 15.3 6.19999 16 7.39999 16H13.3Z" fill="black" />
  24. </svg>
  25. </span>
  26. <h2>{{ title }}</h2>
  27. </div>
  28. </div>
  29. <div class="card-body pt-5">
  30. {{ form_start(form, {"attr": {"class": "form"}}) }}
  31. <div class="row row-cols-1 row-cols-sm-2 rol-cols-md-1 row-cols-lg-2">
  32. <div class="col">
  33. <div class="fv-row mb-7">
  34. {{ form_label(form.firstName, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  35. {{ form_widget(form.firstName, {"attr": {"class": "form-control"}}) }}
  36. <div class="alert-danger">{{ form_errors(form.firstName) | striptags }}</div>
  37. </div>
  38. </div>
  39. <div class="col">
  40. <div class="fv-row mb-7">
  41. {{ form_label(form.lastName, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  42. {{ form_widget(form.lastName, {"attr": {"class": "form-control"}}) }}
  43. <div class="alert-danger">{{ form_errors(form.lastName) | striptags }}</div>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="row row-cols-1 row-cols-sm-2 rol-cols-md-1 row-cols-lg-2">
  48. <div class="col">
  49. <div class="fv-row mb-7">
  50. {{ form_label(form.phone, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  51. {{ form_widget(form.phone, {"attr": {"class": "form-control"}}) }}
  52. <div class="alert-danger">{{ form_errors(form.phone) | striptags }}</div>
  53. </div>
  54. </div>
  55. <div class="col">
  56. <div class="fv-row mb-7">
  57. {{ form_label(form.email, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  58. {{ form_widget(form.email, {"attr": {"class": "form-control"}}) }}
  59. <div class="alert-danger">{{ form_errors(form.email) | striptags }}</div>
  60. </div>
  61. </div>
  62. </div>
  63. <div class="row row-cols-1 row-cols-sm-2 rol-cols-md-1 row-cols-lg-2">
  64. <div class="col">
  65. <div class="fv-row mb-7">
  66. {{ form_label(form.address, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  67. {{ form_widget(form.address, {"attr": {"class": "form-control"}}) }}
  68. <div class="alert-danger">{{ form_errors(form.address) | striptags }}</div>
  69. </div>
  70. </div>
  71. <div class="col">
  72. <div class="fv-row mb-7">
  73. {{ form_label(form.address2, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  74. {{ form_widget(form.address2, {"attr": {"class": "form-control"}}) }}
  75. <div class="alert-danger">{{ form_errors(form.address2) | striptags }}</div>
  76. </div>
  77. </div>
  78. </div>
  79. <div class="row row-cols-1 row-cols-sm-2 rol-cols-md-1 row-cols-lg-2">
  80. <div class="col">
  81. <div class="fv-row mb-7">
  82. {{ form_label(form.zipCode, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  83. {{ form_widget(form.zipCode, {"attr": {"class": "form-control"}}) }}
  84. <div class="alert-danger">{{ form_errors(form.zipCode) | striptags }}</div>
  85. </div>
  86. </div>
  87. <div class="col">
  88. <div class="fv-row mb-7">
  89. {{ form_label(form.city, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  90. {{ form_widget(form.city, {"attr": {"class": "form-control"}}) }}
  91. <div class="alert-danger">{{ form_errors(form.city) | striptags }}</div>
  92. </div>
  93. </div>
  94. </div>
  95. <div class="row row-cols-1 row-cols-sm-2 rol-cols-md-1 row-cols-lg-2">
  96. <div class="col">
  97. <div class="fv-row mb-7">
  98. {{ form_label(form.owner, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  99. {{ form_widget(form.owner, {"attr": {"class": "form-select"}}) }}
  100. <div class="alert-danger">{{ form_errors(form.owner) | striptags }}</div>
  101. </div>
  102. </div>
  103. </div>
  104. <div class="row row-cols-1 row-cols-sm-2 rol-cols-md-1 row-cols-lg-2">
  105. <div class="col">
  106. <div class="fv-row mb-7">
  107. {{ form_label(form.dateOfBirth, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  108. {{ form_widget(form.dateOfBirth, {"attr": {"class": "form-control"}}) }}
  109. <div class="alert-danger">{{ form_errors(form.dateOfBirth) | striptags }}</div>
  110. </div>
  111. </div>
  112. </div>
  113. <div class="separator my-6"></div>
  114. <div class="row row-cols-1 row-cols-sm-2 rol-cols-md-1 row-cols-lg-2 mt-5">
  115. <div class="col">
  116. <div class="form-check form-check-custom form-check-solid mb-7">
  117. {{ form_widget(form.photovoltaique, {"attr": {"class": "form-check-input"}}) }}
  118. {{ form_label(form.photovoltaique, null, {"label_attr": {"class": "form-check-label"}}) }}
  119. <div class="alert-danger">{{ form_errors(form.photovoltaique) | striptags }}</div>
  120. </div>
  121. </div>
  122. <div class="col">
  123. <div class="form-check form-check-custom form-check-solid mb-7">
  124. {{ form_widget(form.thermostat, {"attr": {"class": "form-check-input"}}) }}
  125. {{ form_label(form.thermostat, null, {"label_attr": {"class": "form-check-label"}}) }}
  126. <div class="alert-danger">{{ form_errors(form.thermostat) | striptags }}</div>
  127. </div>
  128. </div>
  129. </div>
  130. <div class="separator mb-6"></div>
  131. <div class="fv-row mb-7">
  132. {{ form_label(form.stepInProcess, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  133. {{ form_widget(form.stepInProcess, {"attr": {"class": "form-select"}}) }}
  134. <div class="alert-danger">{{ form_errors(form.stepInProcess) | striptags }}</div>
  135. </div>
  136. <div class="fv-row mb-7">
  137. {{ form_label(form.comment, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  138. {{ form_widget(form.comment, {"attr": {"class": "form-control"}}) }}
  139. <div class="alert-danger">{{ form_errors(form.comment) | striptags }}</div>
  140. </div>
  141. {% if app.user.manager.admin and form.manager is defined %}
  142. <div class="separator mb-6"></div>
  143. <div class="fv-row mb-7">
  144. {{ form_label(form.manager, null, {"label_attr": {"class": "fs-6 fw-bold form-label mt-3"}}) }}
  145. {{ form_widget(form.manager, {"attr": {"class": "form-control"}}) }}
  146. <div class="alert-danger">{{ form_errors(form.manager) | striptags }}</div>
  147. </div>
  148. {% endif %}
  149. <div class="separator mb-6"></div>
  150. <div class="d-flex justify-content-end">
  151. <button type="submit" class="btn btn-primary">
  152. <span class="indicator-label">Enregistrer</span>
  153. </button>
  154. </div>
  155. {{ form_row(form._token) }}
  156. {{ form_end(form, {'render_rest': false}) }}
  157. </div>
  158. </div>
  159. {% if user is defined and (is_granted('ROLE_ADMIN') or is_granted('ROLE_COTATIONS') or is_granted('ROLE_OFFRES_SUR_GRILLES') or is_granted('ROLE_PARTICULIERS')) %}
  160. <div class="col-md-5 col-xs-12">
  161. <div class="content flex-row-fluid">
  162. <div class="row gy-0 gx-10">
  163. <div class="col-12 mb-5">
  164. <div class="card card-flush h-lg-100">
  165. <div class="card-header pt-7">
  166. <div class="card-title">
  167. <i class="fa fa-file-contract me-1 fs-2"></i> &nbsp;
  168. <h2>Contrats</h2>
  169. </div>
  170. <div>
  171. <a href="{{ path('manager_clients_contracts_add', {user: user.id}) }}" class="btn btn-primary"><span class="svg-icon svg-icon-1 mx-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
  172. <path opacity="0.3" d="M21 13H3C2.4 13 2 12.6 2 12C2 11.4 2.4 11 3 11H21C21.6 11 22 11.4 22 12C22 12.6 21.6 13 21 13Z" fill="black"/>
  173. <path d="M12 22C11.4 22 11 21.6 11 21V3C11 2.4 11.4 2 12 2C12.6 2 13 2.4 13 3V21C13 21.6 12.6 22 12 22Z" fill="black"/>
  174. </svg></span>
  175. </a>
  176. </div>
  177. </div>
  178. <div class="card-body pt-5">
  179. <div class="table-responsive">
  180. <table class="table table-striped gy-7 gs-7">
  181. <thead>
  182. <tr class="fw-bold fs-6 text-gray-800 border-bottom-2 border-gray-200">
  183. <th>Début</th>
  184. <th>Echéance</th>
  185. <th>Type</th>
  186. <th>Statut</th>
  187. <th></th>
  188. </tr>
  189. </thead>
  190. <tbody>
  191. {% for contract in user.contracts %}
  192. <tr>
  193. <td>{{ contract.effectiveDate|date("d/m/Y") }}</td>
  194. <td>{{ contract.expiryDate|date("d/m/Y") }}</td>
  195. <td>{{ contract.gas ? 'Gaz' : '' }} {{ contract.electricity ? 'Elec' : '' }} {{ contract.engiePro ? 'Offres sur Grilles' : '' }} {{ contract.telecom ? 'Telecom' : '' }} {{ contract.photovoltaique ? 'Photovoltaique' : '' }}</td>
  196. <td>
  197. {{ contract.state ? contract.state.libelle }}
  198. </td>
  199. <td>
  200. <a href="{{ path('manager_clients_contracts_edit', {user: user.id, contract: contract.id}) }}" class="btn btn-icon btn-light btn-sm border-0">
  201. <i class="fa fa-pen me-1 text-primary fs-5"></i>
  202. </a>
  203. </td>
  204. </tr>
  205. {% endfor %}
  206. </tbody>
  207. </table>
  208. </div>
  209. </div>
  210. </div>
  211. </div>
  212. {% if app.user.manager.admin and user.manager %}
  213. <div class="col-12">
  214. <div class="card card-flush h-lg-100">
  215. <div class="card-header pt-7">
  216. <div class="card-title">
  217. <i class="fa fa-user-tie me-1 fs-2"></i> &nbsp;
  218. <h2>Commercial</h2>
  219. </div>
  220. </div>
  221. <div class="card-body pt-5">
  222. Ce client est géré par <b>{{ user.manager.firstName }} {{ user.manager.lastName }}</b>
  223. </div>
  224. </div>
  225. </div>
  226. {% endif %}
  227. </div>
  228. </div>
  229. </div>
  230. {% endif %}
  231. </div>
  232. </div>
  233. </div>
  234. </div>
  235. {% endblock %}