src/UI/WebBundle/Resources/views/Whater/public_distribution_network_show.html.twig line 1

Open in your IDE?
  1. {% extends 'Common/base.html.twig' %}
  2. {% import 'Common/parts/functions.html.twig' as function %}
  3. {% block title %}{{ 'admin.distr_network.show.title'|trans }} - {{ distributionNetwork.name | title }} | {{ parent() }}{% endblock %}
  4. {% block classBody %}distr-network {{ parent() }}{% endblock %}
  5. {% block ogTitle %}{{ 'admin.distr_network.show.title'|trans }} - {{ distributionNetwork.name | title }} | {{ parent() }}{% endblock ogTitle %}
  6. {% block javascripts %}
  7. {{ parent() }}
  8. {{ encore_entry_script_tags('leaflet_js') }}
  9. {{ encore_entry_script_tags('wt_distr_network_show') }}
  10. {% endblock javascripts %}
  11. {% block stylesheets %}
  12. {{ parent() }}
  13. {{ encore_entry_link_tags('leaflet_styles') }}
  14. <link rel="stylesheet" href="{{ asset('assets/lib/slick-carousel/slick/slick.css') }}" type="text/css" media="all" />
  15. <link rel="stylesheet" href="{{ asset('assets/lib/slick-carousel/slick/slick-theme.css') }}" type="text/css" media="all" />
  16. {% endblock stylesheets %}
  17. {% block contents %}
  18. <div class="container-small" ng-controller="showDistrNetworkCtrl">
  19. <nav class="mb-2" aria-label="breadcrumb">
  20. <ol class="breadcrumb mb-0">
  21. <li class="breadcrumb-item"><a href="{{path('web_init')}}">Inicio</a></li>
  22. <li class="breadcrumb-item">{{ distributionNetwork.country.name | title }}</li>
  23. <li class="breadcrumb-item active" aria-current="page">
  24. {{ distributionNetwork.name | title }}
  25. {% if is_granted('IS_AUTHENTICATED_REMEMBERED') and app.user.user.hasRole('ROLE_ADMIN') %}
  26. (<a href="{{path('web_admin_distribution_network_edit', {'distributionNetworkId': distributionNetwork.id})}}">Editar</a>)
  27. {% endif %}
  28. </li>
  29. </ol>
  30. </nav>
  31. <div class="pb-9">
  32. <h2 class="mb-4">
  33. {{ distributionNetwork.name | title }}
  34. {% if distributionNetwork.responsableOrganizationOperator is none %}
  35. <span class="fas fa-star-half-alt text-warning fs-1" title="Sin reclamar"></span>
  36. <span class="fas fa-star-half-alt text-warning fs-1" title="Sin verificar"></span>
  37. {% elseif distributionNetwork.responsableOrganizationOperator.checkPermission('PERMISSION_EDIT_DISTRIBUTION_NETWORK', distributionNetwork) %}
  38. <span class="fas fa-star text-success fs-1" title="Registrado"></span>
  39. <span class="fas fa-star text-success fs-1" title="Verificado"></span>
  40. {% else %}
  41. <span class="fas fa-star text-success fs-1" title="Registrado"></span>
  42. <span class="fas fa-star-half-alt text-warning fs-1" title="Sin verificar"></span>
  43. {% endif %}
  44. </h2>
  45. <div class="row g-5 mb-5">
  46. <div class="col-12 col-lg-8" ng-init="initDistributionNetworkMap({{distributionNetwork.centerLatitude}},{{distributionNetwork.centerLongitude}}, '{{geometryPolygonArray}}')">
  47. <div id="distribution_network_map" style="height:400px;width:100%"></div>
  48. </div>
  49. <div class="col-12 col-lg-4">
  50. <h3 class="mb-3" >Red de Distribución</h3>
  51. <div class="mb-2">
  52. <h6 class="mb-0">Red de Distribución</h6>
  53. <div class="">{{ distributionNetwork.name | title }}</div>
  54. </div>
  55. <div class="mb-2">
  56. <h6 class="mb-0">Tipo</h6>
  57. <div class="">{{ ('distributionNetwork.type.' ~ distributionNetwork.type) | trans }}</div>
  58. </div>
  59. {% if distributionNetwork.type == 'DN_TYPE_INTERMEDIATE' or distributionNetwork.type == 'DN_TYPE_INTERNAL' %}
  60. <div class="mb-2">
  61. <h6 class="mb-0">Perteneciente a</h6>
  62. <a href="{{ path('web_public_distribution_network_show_by_id', {'distributionNetworkId': distributionNetwork.parent.id }) }}"
  63. class="">{{ distributionNetwork.parent.name | title }}</a>
  64. </div>
  65. {% endif %}
  66. <div class="mb-2">
  67. <h6 class="mb-0">País</h6>
  68. <div class="">{{ distributionNetwork.country.name | title }}</div>
  69. </div>
  70. {#
  71. <div class="mb-2">
  72. <h6 class="mb-0">Whaterpoints</h6>
  73. <div class="">
  74. {{ distributionNetwork.whaterPoints | length}}
  75. {% if (distributionNetwork.whaterPoints | length)> 0 %}
  76. <a href="#" class="fs--1" ng-click="showWhaterPointsInMap()">(Ver en el mapa)</a>
  77. <div class="alert alert-soft-success px-1 py-1 ng-hide" role="alert" ng-show="showWhaterPoints" >Estas viendo los Whaterpoints de la red</div>
  78. {% endif %}
  79. </div>
  80. </div>
  81. #}
  82. {{ function.showFlashes() }}
  83. {% if is_granted('IS_AUTHENTICATED_FULLY') and distributionNetwork.responsableOrganizationOperator is none %}
  84. <div class="card">
  85. <div class="card-body">
  86. {% form_theme form 'Form/bootstrap_5_layout.html.twig' %}
  87. {{ form_start(form , {'action': path('web_public_distribution_network_show_by_slug', { 'distributionNetworkSlug': distributionNetwork.slug }),
  88. 'method': 'POST',
  89. 'attr': { 'id': form.vars.name }}) }}
  90. <div class="col-auto mb-1">
  91. {{ form_label(form.message) }}
  92. {{ form_widget(form.message, {'attr': {'placeholder': ('admin.ownership_request.form.fields.text_placeholder_distribution_network'|trans({'%distribution_network_name%':distributionNetwork.name })) }}) }}
  93. {{ form_errors(form.message) }}
  94. </div>
  95. <div class="col-auto mb-1">
  96. {{ form_widget(form.check, {'attr': {'class': 'form-check-input' }}) }}
  97. <label class="form-label fs--1 text-none" for="app_register_distribution_network_ownership_request_check">{{'admin.ownership_request.form.fields.check'|trans({'%distribution_network_name%':distributionNetwork.name })}}</label>
  98. </div>
  99. <button class="btn btn-phoenix-secondary me-2 mb-2 mb-sm-0 mt-2"
  100. id='register_ownership_request'
  101. ng-init="registerOwnershipRequest()"
  102. data-user-id="{{app.user.user.id}}"
  103. data-distr-network-id="{{distributionNetwork.id}}"
  104. {% if not enableRequestOwnership %} disabled="disabled" {% endif %}
  105. type="submit">Solicitar
  106. </button>
  107. {{ form_errors(form) }}
  108. {{ form_rest(form) }}
  109. {{ form_end(form) }}
  110. </div>
  111. </div>
  112. {% elseif distributionNetwork.responsableOrganizationOperator is none %}
  113. <p class="fs--2">Para solicitar la propiedad de esta red de distribución y manejar su informacion, debes estar registrado en whater.app y pasar por un proceso de validación. Hazlo <a href="{{path('web_signup')}}">aquí</a>.</p>
  114. {% endif %}
  115. </div>
  116. </div>
  117. <div class="row g-5 mb-5">
  118. <div class="col-xl-6">
  119. <h3 class="mb-3" >Calidad del agua oficial</h3>
  120. <ul class="list-group">
  121. {% if distributionNetwork.responsableOrganizationGovernment is not none %}
  122. <li class="list-group-item">
  123. <h4 class="mb-3">Responsable</h4>
  124. <div class="row ms-2">
  125. <div class="col-12 col-lg-4 mb-2">
  126. <h6 class="mb-0">Nombre</h6>
  127. <div class="">{{ distributionNetwork.responsableOrganizationGovernment.name | title }}</div>
  128. </div>
  129. <div class="col-12 col-lg-4 mb-2">
  130. <h6 class="mb-0">Ultima información</h6>
  131. <div class="">
  132. {% if analytics['organ_government'] is not none %}
  133. {{ analytics['organ_government'].analyzedAt | date('d-m-Y') }}
  134. {% else %}
  135. -
  136. {% endif %}
  137. </div>
  138. </div>
  139. <div class="col-12 col-lg-4 mb-2">
  140. <h6 class="mb-0">Estado</h6>
  141. <div class="">
  142. {% if analytics['organ_government'] is not none %}
  143. {% if analytics['organ_government'].result == 'SUITABLE' %}
  144. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_government'].id }) }}"
  145. class="fw-bold">
  146. <img style="height:30px;" class="ms-2"
  147. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-circle-green.svg')) }}" />
  148. Apta
  149. </a>
  150. {% elseif analytics['organ_government'].result == 'NOT_SUITABLE' %}
  151. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_government'].id }) }}"
  152. class="fw-bold">
  153. <img style="height:30px;" class="ms-2"
  154. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-circle-red.svg')) }}" />
  155. No apta
  156. </a>
  157. {% else %}
  158. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_government'].id }) }}"
  159. class="fw-bold">
  160. <img style="height:30px;" class="ms-2"
  161. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-document-error.svg')) }}" />
  162. Sin Información
  163. </a>
  164. {% endif %}
  165. {% else %}
  166. <div class="fw-bold">
  167. <img style="height:30px;" class="ms-2"
  168. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-document-error.svg')) }}" />
  169. Sin Información
  170. </div>
  171. {% endif %}
  172. </div>
  173. </div>
  174. </div>
  175. </li>
  176. {% endif %}
  177. {% if distributionNetwork.responsableOrganizationOperator is not none %}
  178. <li class="list-group-item">
  179. <h4 class="mb-3">Operador responsable</h4>
  180. <div class="row ms-2">
  181. <div class="col-12 col-lg-4 mb-2">
  182. <h6 class="mb-0">Nombre</h6>
  183. <div class="">{{ distributionNetwork.responsableOrganizationOperator.name | title }}</div>
  184. </div>
  185. <div class="col-12 col-lg-4 mb-2">
  186. <h6 class="mb-0">Ultima información</h6>
  187. <div class="">
  188. {% if analytics['organ_operator'] is not none %}
  189. {{ analytics['organ_operator'].analyzedAt | date('d-m-Y') }}
  190. {% else %}
  191. -
  192. {% endif %}
  193. </div>
  194. </div>
  195. <div class="col-12 col-lg-4 mb-2">
  196. <h6 class="mb-0">Estado</h6>
  197. <div class="">
  198. {% if analytics['organ_operator'] is not none %}
  199. {% if analytics['organ_operator'].result == 'SUITABLE' %}
  200. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_operator'].id }) }}"
  201. class="fw-bold">
  202. <img style="height:30px;" class="ms-2"
  203. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-circle-green.svg')) }}" />
  204. Apta
  205. </a>
  206. {% elseif analytics['organ_operator'].result == 'NOT_SUITABLE' %}
  207. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_operator'].id }) }}"
  208. class="fw-bold">
  209. <img style="height:30px;" class="ms-2"
  210. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-circle-red.svg')) }}" />
  211. No apta
  212. </a>
  213. {% else %}
  214. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_operator'].id }) }}"
  215. class="fw-bold">
  216. <img style="height:30px;" class="ms-2"
  217. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-document-error.svg')) }}" />
  218. Sin Información
  219. </a>
  220. {% endif %}
  221. {% else %}
  222. <div class="fw-bold">
  223. <img style="height:30px;" class="ms-2"
  224. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-document-error.svg')) }}" />
  225. Sin Información
  226. </div>
  227. {% endif %}
  228. </div>
  229. </div>
  230. </div>
  231. </li>
  232. {% endif %}
  233. {% if distributionNetwork.responsableOrganizationCorporative is not none %}
  234. <li class="list-group-item">
  235. <h4 class="mb-3">Responsable corporativo</h4>
  236. <div class="row ms-2">
  237. <div class="col-12 col-lg-4 mb-2">
  238. <h6 class="mb-0">Nombre</h6>
  239. <div class="">{{ distributionNetwork.responsableOrganizationCorporative.name | title }}</div>
  240. </div>
  241. <div class="col-12 col-lg-4 mb-2">
  242. <h6 class="mb-0">Ultima información</h6>
  243. <div class="">
  244. {% if analytics['organ_corporative'] is not none %}
  245. {{ analytics['organ_corporative'].analyzedAt | date('d-m-Y') }}
  246. {% else %}
  247. -
  248. {% endif %}
  249. </div>
  250. </div>
  251. <div class="col-12 col-lg-4 mb-2">
  252. <h6 class="mb-0">Estado</h6>
  253. <div class="">
  254. {% if analytics['organ_corporative'] is not none %}
  255. {% if analytics['organ_corporative'].result == 'SUITABLE' %}
  256. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_corporative'].id }) }}"
  257. class="fw-bold">
  258. <img style="height:30px;" class="ms-2"
  259. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-circle-green.svg')) }}" />
  260. Apta
  261. </a>
  262. {% elseif analytics['organ_corporative'].result == 'NOT_SUITABLE' %}
  263. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_corporative'].id }) }}"
  264. class="fw-bold">
  265. <img style="height:30px;" class="ms-2"
  266. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-circle-red.svg')) }}" />
  267. No apta
  268. </a>
  269. {% else %}
  270. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_corporative'].id }) }}"
  271. class="fw-bold">
  272. <img style="height:30px;" class="ms-2"
  273. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-document-error.svg')) }}" />
  274. Sin Información
  275. </a>
  276. {% endif %}
  277. {% else %}
  278. <div class="fw-bold">
  279. <img style="height:30px;" class="ms-2"
  280. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-document-error.svg')) }}" />
  281. Sin Información
  282. </div>
  283. {% endif %}
  284. </div>
  285. </div>
  286. </div>
  287. </li>
  288. {% endif %}
  289. {% if distributionNetwork.responsableOrganizationUbication is not none %}
  290. <li class="list-group-item">
  291. <h4 class="mb-3">Responsable de ubicación</h4>
  292. <div class="row ms-2">
  293. <div class="col-12 col-lg-4 mb-2">
  294. <h6 class="mb-0">Nombre</h6>
  295. <div class="">{{ distributionNetwork.responsableOrganizationUbication.name | title }}</div>
  296. </div>
  297. <div class="col-12 col-lg-4 mb-2">
  298. <h6 class="mb-0">Ultima información</h6>
  299. <div class="">
  300. {% if analytics['organ_ubication'] is not none %}
  301. {{ analytics['organ_ubication'].analyzedAt | date('d-m-Y') }}
  302. {% else %}
  303. -
  304. {% endif %}
  305. </div>
  306. </div>
  307. <div class="col-12 col-lg-4 mb-2">
  308. <h6 class="mb-0">Estado</h6>
  309. <div class="">
  310. {% if analytics['organ_ubication'] is not none %}
  311. {% if analytics['organ_ubication'].result == 'SUITABLE' %}
  312. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_ubication'].id }) }}"
  313. class="fw-bold">
  314. <img style="height:30px;" class="ms-2"
  315. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-circle-green.svg')) }}" />
  316. Apta
  317. </a>
  318. {% elseif analytics['organ_ubication'].result == 'NOT_SUITABLE' %}
  319. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_ubication'].id }) }}"
  320. class="fw-bold">
  321. <img style="height:30px;" class="ms-2"
  322. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-circle-red.svg')) }}" />
  323. No apta
  324. </a>
  325. {% else %}
  326. <a href="{{ url('web_public_analytical_show', {'analyticalId': analytics['organ_ubication'].id }) }}"
  327. class="fw-bold">
  328. <img style="height:30px;" class="ms-2"
  329. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-document-error.svg')) }}" />
  330. Sin Información
  331. </a>
  332. {% endif %}
  333. {% else %}
  334. <div class="fw-bold">
  335. <img style="height:30px;" class="ms-2"
  336. src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-document-error.svg')) }}" />
  337. Sin Información
  338. </div>
  339. {% endif %}
  340. </div>
  341. </div>
  342. </div>
  343. </li>
  344. {% endif %}
  345. {% if distributionNetwork.type == 'DN_TYPE_EXTERNAL' %}
  346. <div class="row my-4">
  347. <div class="col-12" >
  348. <h3 class="mb-3" >Municipios</h3>
  349. <ul class="list-group">
  350. {% for town in distributionNetwork.towns %}
  351. <li class="list-group-item">
  352. <a href="{{ path('web_public_town_show_by_slug',{'townSlug':town.slug})}}"
  353. class="fs-0 fw-bold">{{ town.name | title }}</a>
  354. {% if town.countryArea is not none %}
  355. ({{town.countryArea.name}}, {{ town.country.name }})
  356. {% else %}
  357. ({{ town.country.name }})
  358. {% endif %}
  359. </li>
  360. {% endfor %}
  361. </ul>
  362. </div>
  363. </div>
  364. {% elseif distributionNetwork.type == 'DN_TYPE_INTERMEDIATE' %}
  365. <div class="row g-5 mb-5">
  366. <div class="col-12" >
  367. <h3 class="mb-3" >Ubicaciones</h3>
  368. <ul class="list-group">
  369. {% for ubication in distributionNetwork.ubications %}
  370. <li class="list-group-item">
  371. <a href="{{ path('web_public_ubication_show',{'ubicationId':ubication.id})}}"
  372. class="fs-0 fw-bold">{{ ubication.name | title }}</a>
  373. {% if ubication.town.countryArea is not none %}
  374. ({{ubication.town.name | title}}, {{ubication.town.countryArea.name | title }}, {{ ubication.town.country.name | title}})
  375. {% else %}
  376. ({{ubication.town.name | title}}, {{ubication.town.country.name | title }})
  377. {% endif %}
  378. </li>
  379. {% endfor %}
  380. </ul>
  381. </div>
  382. </div>
  383. {% elseif distributionNetwork.type == 'DN_TYPE_INTERNAL' %}
  384. <div class="row g-5 mb-5">
  385. <div class="col-12" >
  386. <h3 class="mb-3" >Establecimientos</h3>
  387. <ul class="list-group">
  388. {% for establishment in distributionNetwork.establishments %}
  389. <li class="list-group-item">
  390. <a href="{{ path('web_public_establishment_show',{'establishmentId':establishment.id})}}"
  391. class="fs-0 fw-bold">{{ establishment.name | title }}</a>
  392. {% if establishment.town.countryArea is not none %}
  393. ({{establishment.town.name | title}}, {{establishment.town.countryArea.name | title }}, {{ establishment.town.country.name | title}})
  394. {% else %}
  395. ({{establishment.town.name | title}}, {{establishment.town.country.name | title }})
  396. {% endif %}
  397. </li>
  398. {% endfor %}
  399. </ul>
  400. </div>
  401. </div>
  402. {% endif %}
  403. <div class="row g-5 mb-5">
  404. <div class="col-12" >
  405. {% set distributionSubNetworks = [] %}
  406. {% if distributionNetwork.type == 'DN_TYPE_EXTERNAL' %}
  407. <h3 class="mb-3" >Subredes intermedias ({{ distributionNetwork.children | length }})</h3>
  408. {% set distributionSubNetworks = distributionNetwork.children %}
  409. {% elseif distributionNetwork.type == 'DN_TYPE_INTERMEDIATE' %}
  410. <h3 class="mb-3" >Subredes internas ({{ distributionNetwork.children | length }})</h3>
  411. {% set distributionSubNetworks = distributionNetwork.children %}
  412. {% elseif distributionNetwork.type == 'DN_TYPE_INTERNAL' %}
  413. {% set distributionSubNetworks = [] %}
  414. {% endif %}
  415. <ul class="list-group">
  416. {% for distributionSubNetwork in distributionSubNetworks %}
  417. <li class="list-group-item">
  418. <a href="{{ path('web_public_distribution_network_show_by_id',{'distributionNetworkId':distributionSubNetwork.id})}}"
  419. class="fs-0 fw-bold">{{ distributionSubNetwork.name | title }}</a>
  420. <div class="ms-2 me-auto">
  421. Tipo:
  422. <span class="fw-bold">{{ ('distributionNetwork.type.' ~ distributionSubNetwork.type) | trans }}</span>
  423. </div>
  424. <div class="ms-2 me-auto">
  425. Estado:
  426. {% if distributionSubNetwork.whaterStatus == 'DN_STATUS_SUITABLE' %}
  427. <span class="fw-bold text-success ">Apta</span>
  428. {% elseif distributionSubNetwork.whaterStatus == 'DN_STATUS_NOT_SUITABLE' %}
  429. <span class="fw-bold text-danger ">No apta</span>
  430. {% else %}
  431. <span class="fw-bold">Sin Información</span>
  432. {% endif %}
  433. </div>
  434. <div class="ms-2 me-auto">
  435. Fecha última actualización:
  436. <span class="fw-bold">{{distributionSubNetwork.lastAnalitycsUpdateAt | date('d-m-Y') }}</span>
  437. </div>
  438. </li>
  439. {% endfor %}
  440. </ul>
  441. </div>
  442. </div>
  443. </div>
  444. <div class="col-xl-6">
  445. {% if is_granted('IS_AUTHENTICATED_FULLY') and app.user %}
  446. <h3 class="mb-2">¡Danos tu opinión!</h3>
  447. {% set myvaloration = app.user.user.valorationForDistributionNetwork(distributionNetwork.id) %}
  448. <div class="row align-items-center pb-3" ng-init="initValorations('{{distributionNetwork.id}}')" >
  449. <div class="col-2">General:</div>
  450. <div class="col-10">
  451. <div class="radio-container d-flex" id="select-general-quality" {% if myvaloration is not none %}data-valoration="{{myvaloration.generalValoration}}"{% endif %}>
  452. <div class="mx-3">
  453. <input type="radio" id="radio-val1" name="general" value="DN_QUALITY_ACCEPTABLE_VALORATION">
  454. <label for="radio-val1"><img style="height:40px;" src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-face-smile.svg')) }}" data-bs-toggle="tooltip" data-bs-placement="top" title="Aceptable" /></label>
  455. </div>
  456. <div class="mx-3">
  457. <input type="radio" id="radio-val2" name="general" value="DN_QUALITY_NEEDS_IMPROVEMENT_VALORATION">
  458. <label for="radio-val2"><img style="height:40px;" src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-face-normal.svg')) }}" data-bs-toggle="tooltip" data-bs-placement="top" title="Mejorable"/></label>
  459. </div>
  460. <div class="mx-3">
  461. <input type="radio" id="radio-val3" name="general" value="DN_QUALITY_NOT_ACCEPTABLE_VALORATION">
  462. <label for="radio-val3"><img style="height:40px;" src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-face-sad.svg')) }}" data-bs-toggle="tooltip" data-bs-placement="top" title="No aceptable"/></label>
  463. </div>
  464. </div>
  465. </div>
  466. </div>
  467. <h6 class="mt-2 mb-2">Danos una valoración más específica evaluando los siguientes parámetros </h6>
  468. <div class="row pb-3">
  469. <div class="row align-items-center" >
  470. <div class="col-2 text-end">Sabor:</div>
  471. <div class="col-10">
  472. <div class="radio-container d-flex" id="select-taste-quality" {% if myvaloration is not none %}data-valoration="{{myvaloration.tasteValoration}}"{% endif %}>
  473. <label class="me-3"><input type="radio" name="taste" value="DN_QUALITY_ACCEPTABLE_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_ACCEPTABLE_VALORATION') | trans}}</label>
  474. <label class="me-3"><input type="radio" name="taste" value="DN_QUALITY_NEEDS_IMPROVEMENT_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_NEEDS_IMPROVEMENT_VALORATION') | trans}}</label>
  475. <label><input type="radio" name="taste" value="DN_QUALITY_NOT_ACCEPTABLE_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_NOT_ACCEPTABLE_VALORATION') | trans}}</label>
  476. </div>
  477. </div>
  478. </div>
  479. <div class="row align-items-center">
  480. <div class="col-2 text-end">Olor:</div>
  481. <div class="col-10">
  482. <div class="radio-container d-flex" id="select-smell-quality" {% if myvaloration is not none %}data-valoration="{{myvaloration.smellValoration}}"{% endif %}>
  483. <label class="me-3"><input type="radio" name="smell" value="DN_QUALITY_ACCEPTABLE_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_ACCEPTABLE_VALORATION') | trans}}</label>
  484. <label class="me-3"><input type="radio" name="smell" value="DN_QUALITY_NEEDS_IMPROVEMENT_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_NEEDS_IMPROVEMENT_VALORATION') | trans}}</label>
  485. <label><input type="radio" name="smell" value="DN_QUALITY_NOT_ACCEPTABLE_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_NOT_ACCEPTABLE_VALORATION') | trans}}</label>
  486. </div>
  487. </div>
  488. </div>
  489. <div class="row align-items-center">
  490. <div class="col-2 text-end">Color:</div>
  491. <div class="col-10">
  492. <div class="radio-container d-flex" id="select-color-quality" {% if myvaloration is not none %}data-valoration="{{myvaloration.colorValoration}}"{% endif %}>
  493. <label class="me-3"><input type="radio" name="color" value="DN_QUALITY_ACCEPTABLE_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_ACCEPTABLE_VALORATION') | trans}}</label>
  494. <label class="me-3"><input type="radio" name="color" value="DN_QUALITY_NEEDS_IMPROVEMENT_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_NEEDS_IMPROVEMENT_VALORATION') | trans}}</label>
  495. <label><input type="radio" name="color" value="DN_QUALITY_NOT_ACCEPTABLE_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_NOT_ACCEPTABLE_VALORATION') | trans}}</label>
  496. </div>
  497. </div>
  498. </div>
  499. <div class="row align-items-center">
  500. <div class="col-2 text-end">Turbidez:</div>
  501. <div class="col">
  502. <div class="radio-container d-flex" id="select-turbidity-quality" {% if myvaloration is not none %}data-valoration="{{myvaloration.turbidityValoration}}"{% endif %}>
  503. <label class="me-3"><input type="radio" name="turbidity" value="DN_QUALITY_ACCEPTABLE_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_ACCEPTABLE_VALORATION') | trans}}</label>
  504. <label class="me-3"><input type="radio" name="turbidity" value="DN_QUALITY_NEEDS_IMPROVEMENT_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_NEEDS_IMPROVEMENT_VALORATION') | trans}}</label>
  505. <label><input type="radio" name="turbidity" value="DN_QUALITY_NOT_ACCEPTABLE_VALORATION"> {{ ('distribution_network_valoration.quality.DN_QUALITY_NOT_ACCEPTABLE_VALORATION') | trans}}</label>
  506. </div>
  507. </div>
  508. </div>
  509. </div>
  510. {% endif %}
  511. {% if is_granted('IS_AUTHENTICATED_FULLY') and app.user and app.user.user.whaterOrganization and distributionNetwork.responsableOrganizationUbication and app.user.user.whaterOrganization == distributionNetwork.responsableOrganizationUbication %}
  512. <h5 class="mt-3 mb-2"
  513. ng-init="initRating('{{distributionNetwork.id}}','{{distributionNetwork.totalColor | json_encode }}','{{distributionNetwork.totalSmell | json_encode}}','{{distributionNetwork.totalTaste | json_encode}}','{{distributionNetwork.totalTurbidity | json_encode}}','{{distributionNetwork.totalGeneral | json_encode}}')">
  514. Resultado de valoraciones de usuarios
  515. </h5>
  516. <div class="row">
  517. <div class="col-md-2 text-center mb-2" >
  518. <div class="fs-0"></div>
  519. </div>
  520. <div class="col-md-3 text-center mb-2" >
  521. <div>Aceptable: </div>
  522. </div>
  523. <div class="col-md-4 text-center mb-2" >
  524. <div>Mejorable: </div>
  525. </div>
  526. <div class="col-md-3 text-center mb-2" >
  527. <div>No aceptable: </div>
  528. </div>
  529. </div>
  530. <div class="row">
  531. <div class="col-md-2 text-end mb-2" >
  532. <div class="fs-0">General:</div>
  533. </div>
  534. <div class="col-md-3 text-center mb-2" >
  535. <div id="totalAcceptableGeneral" ></div>
  536. </div>
  537. <div class="col-md-4 text-center mb-2" >
  538. <div id="totalNeedsImprovementGeneral" ></div>
  539. </div>
  540. <div class="col-md-3 text-center mb-2" >
  541. <div id="totalNotAcceptableGeneral" ></div>
  542. </div>
  543. </div>
  544. <div class="row">
  545. <div class="col-md-2 text-end mb-2" >
  546. <div class="fs-0">Sabor:</div>
  547. </div>
  548. <div class="col-md-3 text-center mb-2" >
  549. <div id="totalAcceptableTaste" ></div>
  550. </div>
  551. <div class="col-md-4 text-center mb-2" >
  552. <div id="totalNeedsImprovementTaste" ></div>
  553. </div>
  554. <div class="col-md-3 text-center mb-2" >
  555. <div id="totalNotAcceptableTaste" ></div>
  556. </div>
  557. </div>
  558. <div class="row">
  559. <div class="col-md-2 text-end mb-2" >
  560. <div class="fs-0">Olor:</div>
  561. </div>
  562. <div class="col-md-3 text-center mb-2" >
  563. <div id="totalAcceptableSmell" ></div>
  564. </div>
  565. <div class="col-md-4 text-center mb-2" >
  566. <div id="totalNeedsImprovementSmell" ></div>
  567. </div>
  568. <div class="col-md-3 text-center mb-2" >
  569. <div id="totalNotAcceptableSmell" ></div>
  570. </div>
  571. </div>
  572. <div class="row">
  573. <div class="col-md-2 text-end mb-2" >
  574. <div class="fs-0">Color:</div>
  575. </div>
  576. <div class="col-md-3 text-center mb-2" >
  577. <div id="totalAcceptableColor" ></div>
  578. </div>
  579. <div class="col-md-4 text-center mb-2" >
  580. <div id="totalNeedsImprovementColor" ></div>
  581. </div>
  582. <div class="col-md-3 text-center mb-2" >
  583. <div id="totalNotAcceptableColor" ></div>
  584. </div>
  585. </div>
  586. <div class="row">
  587. <div class="col-md-2 text-end mb-2" >
  588. <div class="fs-0">Turbidez: </div>
  589. </div>
  590. <div class="col-md-3 text-center mb-2" >
  591. <div id="totalAcceptableTurbidity" ></div>
  592. </div>
  593. <div class="col-md-4 text-center mb-2" >
  594. <div id="totalNeedsImprovementTurbidity" ></div>
  595. </div>
  596. <div class="col-md-3 text-center mb-2" >
  597. <div id="totalNotAcceptableTurbidity" ></div>
  598. </div>
  599. </div>
  600. {% endif %}
  601. <div class="d-flex align-items-center">
  602. <div class="">
  603. {% if distributionNetwork.averageUserGeneral is not none %}
  604. {% if distributionNetwork.averageUserGeneral <= 3 %}
  605. <img style="height:40px;" src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-face-sad.svg')) }}" data-bs-toggle="tooltip" data-bs-placement="top" title="No aceptable"/>
  606. {% elseif distributionNetwork.averageUserGeneral > 3 and distributionNetwork.averageUserGeneral < 8 %}
  607. <img style="height:40px;" src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-face-normal.svg')) }}" data-bs-toggle="tooltip" data-bs-placement="top" title="Mejorable"/>
  608. {% elseif distributionNetwork.averageUserGeneral >= 8 %}
  609. <img style="height:40px;" src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-face-smile.svg')) }}" data-bs-toggle="tooltip" data-bs-placement="top" title="Aceptable"/>
  610. {% endif %}
  611. {% elseif distributionNetwork.averageProfessionalGeneral is not none %}
  612. {% if distributionNetwork.averageProfessionalGeneral <= 3 %}
  613. <img style="height:40px;" src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-face-sad.svg')) }}" data-bs-toggle="tooltip" data-bs-placement="top" title="No aceptable"/>
  614. {% elseif distributionNetwork.averageUserGeneral > 3 and distributionNetwork.averageProfessionalGeneral < 8 %}
  615. <img style="height:40px;" src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-face-normal.svg')) }}" data-bs-toggle="tooltip" data-bs-placement="top" title="Mejorable"/>
  616. {% elseif distributionNetwork.averageProfessionalGeneral >= 8 %}
  617. <img style="height:40px;" src="{{ absolute_url(asset('/assets/images/widget_icons/whater-widget-face-smile.svg')) }}" data-bs-toggle="tooltip" data-bs-placement="top" title="Aceptable"/>
  618. {% endif %}
  619. {% endif %}
  620. </div>
  621. <div class="d-flex align-items-center">
  622. {% if distributionNetwork.averageUserGeneral is none and distributionNetwork.averageProfessionalGeneral is none %}
  623. <div class="ms-3 text-1000">
  624. <div class="text-muted">Este whaterpoint aún no ha recibido valoraciones.</div>
  625. </div>
  626. {% else %}
  627. <div class="ms-3 text-1000">
  628. {% if distributionNetwork.averageUserGeneral is not none %}
  629. <div>La valoracion media de usuarios es de <span class="fw-bold">{{distributionNetwork.averageUserGeneral | number_format(2, ',', '.') }}</span> sobre 10</div>
  630. {% endif %}
  631. {% if distributionNetwork.averageProfessionalGeneral is not none %}
  632. <div>La valoracion media de profesionales es de <span class="fw-bold">{{distributionNetwork.averageProfessionalGeneral | number_format(2, ',', '.')}}</span> sobre 10</div>
  633. {% endif %}
  634. </div>
  635. {% endif %}
  636. </div>
  637. </div>
  638. <h3 class="mt-5 mb-2" >
  639. Comentarios de los usuarios
  640. </h3>
  641. {% set allow_comment_button = true %}
  642. {% if is_granted('IS_AUTHENTICATED_FULLY') %}
  643. {% for valoration in distributionNetwork.valorations %}
  644. {% if valoration.createdBy.equals(app.user.user) and valoration.userCommentText is not none %}
  645. {% set allow_comment_button = false %}
  646. {% endif %}
  647. {% endfor %}
  648. <div class="d-flex flex-row-reverse mb-2">
  649. <button class="btn btn-secondary btn-sm" type="button"
  650. {% if allow_comment_button %}
  651. ng-click="createCommentModal()"
  652. {% else %}
  653. disabled="disabled"
  654. {% endif %}
  655. >Añadir comentario</button>
  656. </div>
  657. {% endif %}
  658. <div class="row pb-3">
  659. <div class="col-12 col-xl-auto flex-1">
  660. {% set num_comments = 0 %}
  661. {% for valoration in distributionNetwork.valorations %}
  662. {% if valoration.hideUserComment == false and valoration.userCommentText is not none %}
  663. {% set num_comments = num_comments + 1 %}
  664. <div class="border-2 border-dashed mb-3 pt-2 border-top">
  665. <div class="d-flex">
  666. <div class="fs--1 text-600">
  667. <span class="fa-solid fa-clock me-2"></span>
  668. <span class="fw-semi-bold me-1">{{ valoration.createdAt | date('d-m-Y H:i') }}</span>
  669. </div>
  670. <p class="fs--1 mb-0 text-600">
  671. por
  672. <span class=" fw-semi-bold">{{ valoration.createdBy.fullName }}</span>
  673. </p>
  674. </div>
  675. <p class="mt-2 ms-3 text-1000">{{valoration.userCommentText | nl2br }}</p>
  676. {% if valoration.commentImage is not none %}
  677. <div class="w-100 w-md-50 ms-md-3">
  678. <a href="{{ vich_uploader_asset(valoration.commentImage, 'fileDistributionNetworkValorationImage') }}" data-gallery="gallery-posts-0">
  679. <img class="rounded h-100 w-100" src="{{ vich_uploader_asset(valoration.commentImage, 'fileDistributionNetworkValorationImage') | imagine_filter('distribution_network_valoration_image_thumb_300_200') }}" alt="..." />
  680. </a>
  681. </div>
  682. {% endif %}
  683. {% set allow_delete = false %}
  684. {% set allow_reply = false %}
  685. {% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
  686. {% if app.user.user.checkPermission('PERMISSION_EDIT_DISTRIBUTION_NETWORK',distributionNetwork) %}
  687. {% set allow_delete = true %}
  688. {% set allow_reply = true %}
  689. {% endif %}
  690. {% if app.user.user.hasRole('ROLE_ADMIN') %}
  691. {% set allow_delete = true %}
  692. {% endif %}
  693. {% endif %}
  694. <div class="mt-2 ms-md-3">
  695. {% if allow_delete %}
  696. <button class="btn btn-link p-0 text-900 fw-bolder mb-2" type="button" ng-click="deleteCommentModal('{{valoration.id}}')" data-valoration-id="{{valoration.id}}">
  697. <span class="fa-solid fa-trash-alt fs--2 me-1 text-danger"></span>
  698. <span class="fw-bold fs--2 text-danger">Eliminar mensaje</span>
  699. </button>
  700. {% endif %}
  701. {% if allow_reply %}
  702. <button class="btn btn-link p-0 text-900 fw-bolder mb-2" type="button" ng-click="replyCommentModal('{{valoration.id}}')" data-valoration-id="{{valoration.id}}">
  703. <span class="fa-solid fa-reply fs--2 me-1">
  704. </span>
  705. <span class="fw-bold fs--2">
  706. {% if valoration.responseCommentText is none%}
  707. Responder mensaje
  708. {% else %}
  709. Editar respuesta
  710. {% endif %}
  711. </span>
  712. </button>
  713. {% endif %}
  714. </div>
  715. {% if valoration.responseCommentText %}
  716. <div class="d-flex ms-md-3">
  717. <div class="fs--1 text-600">
  718. <span class="fa-solid fa-clock me-2"></span>
  719. <span class="fw-semi-bold me-1">{{ valoration.responseCommentAt | date('d-m-Y H:i') }}</span>
  720. </div>
  721. <p class="fs--1 mb-0 text-600">
  722. por
  723. {% if distributionNetwork.responsableOrganizationUbication is not none %}
  724. <span class=" fw-semi-bold">{{distributionNetwork.responsableOrganizationUbication.name}}</span>
  725. {% else %}
  726. <span class=" fw-semi-bold">whater.app</span>
  727. {% endif %}
  728. </p>
  729. </div>
  730. <p class="mt-2 ms-3 text-1000">{{valoration.responseCommentText | nl2br }}</p>
  731. {% endif %}
  732. </div>
  733. {% endif %}
  734. {% endfor %}
  735. {% if num_comments == 0 %}
  736. <p class="mt-2 ms-3 text-1000">
  737. <span class="text-muted">Este whaterpoint aún no ha recibido comentarios.</span>
  738. </p>
  739. {% endif %}
  740. {% if not is_granted('IS_AUTHENTICATED_FULLY') %}
  741. <a href="{{path('web_login', {'_target_path': path('web_public_distribution_network_show_by_id',{'distributionNetworkId': distributionNetwork.id})})}}">Entra y comenta!</a>
  742. {%endif %}
  743. </div>
  744. </div>
  745. </div>
  746. </div>
  747. {% if (recommendedProducts | length ) > 0 %}
  748. <div class="row g-5 mb-5">
  749. <div class="col-12">
  750. <h3 class="mb-3">Productos recomendados</h3>
  751. <div class="row">
  752. {% for product in recommendedProducts %}
  753. <div class="col-6 col-lg-2 col-md-3">
  754. <div class="product-card h-100">
  755. <div class="d-flex flex-column justify-content-between h-100">
  756. <div class="">
  757. <a class="border border-1 rounded-3 position-relative mb-2"
  758. {% if single_page is defined and single_page == true %}
  759. target="_blank"
  760. {% endif %}
  761. href="{{ path('web_public_show_product', {'productSlug':product.productSlug})}}" >
  762. <img class="img-fluid product-image"
  763. {% if (product.images| length) > 0 %}
  764. src="{{ vich_uploader_asset( product.images.0, 'fileProductImage') | imagine_filter('product_list_image') }}"
  765. {% else %}
  766. src="{{asset('/assets/images/gota-foto-3@2x.png')}}"
  767. {% endif %}
  768. />
  769. </a>
  770. <a class="text-decoration-none"
  771. {% if single_page is defined and single_page == true %}
  772. target="_blank"
  773. {% endif %}
  774. href="{{ path('web_public_show_product', {'productSlug':product.productSlug})}}" >
  775. <span class="product-name fw-bold text-dark">{{product.productLabel}}</span>
  776. </a>
  777. </div>
  778. <div class="d-flex align-items-center justify-content-end mb-1">
  779. <p class="mb-0 text-700 product-price-label">Desde {{product.productPrice}}€</p>
  780. </div>
  781. </div>
  782. </div>
  783. </div>
  784. {% endfor %}
  785. </div>
  786. </div>
  787. </div>
  788. {% endif %}
  789. {% if (distributionNetworkArticles | length ) > 0 %}
  790. <div class="row g-5 mb-5">
  791. <div class="col-12">
  792. <div class="row g-0 py-3 align-items-end justify-content-between">
  793. <h3 class="flex-1 mb-0 text-nowrap me-3">Artículos recomendados</h3>
  794. </div>
  795. </div>
  796. {% for article in distributionNetworkArticles %}
  797. <div class="col-4 my-2 py-1">
  798. <div class="card" >
  799. {% if article.headerImageUrl %}
  800. <a href="{{ url('web_blog_show_article', { 'articleSlug' : article.slug('es'), '_locale': 'es' })}}">
  801. <img class="card-img-top" src="{{ article.headerImageUrl | imagine_filter('whater_blog_header_list_image_1200_200') }}" title="{{ article.title('es') }}">
  802. </a>
  803. {% endif %}
  804. <div class="card-body">
  805. <a class="text-dark" href="{{ url('web_blog_show_article', { 'articleSlug' : article.slug('es'), '_locale': 'es' })}}">
  806. <h3 class="card-title">{{ article.title('es') }}</h3>
  807. </a>
  808. <p class="card-text">{{ article.content('es') | striptags | u.truncate(350) |raw }}...</p>
  809. <div class="fs--1 text-muted">{{ article.publishAt | date('d-m-Y') }} - {{ article.publishAt | ago }}</div>
  810. <div class="my-1">
  811. {% for metaKeyword in article.metaKeywords('es') %}
  812. <a class="text-muted fs--1">#{{ metaKeyword | replace({' ': '-'})}}</a>
  813. {% endfor %}
  814. </div>
  815. </div>
  816. </div>
  817. </div>
  818. {% endfor %}
  819. </div>
  820. {% endif %}
  821. </div>
  822. <div class="modal fade" id="createCommentModal" tabindex="-1" aria-hidden="true">
  823. <div class="modal-dialog">
  824. <div class="modal-content">
  825. <div class="modal-header">
  826. <h5 class="modal-title" id="createCommentModalLabel">Añadir comentario</h5>
  827. <button class="btn p-1" type="button" data-bs-dismiss="modal" aria-label="Close">
  828. <span class="fas fa-times fs--1"></span>
  829. </button>
  830. </div>
  831. <div class="modal-body">
  832. <textarea class="form-control mb-3" ng-model="valorationCommentText" rows="4"></textarea>
  833. <div class="mt-2">¿Quieres subir una foto? (min 300x300)</div>
  834. <input id="fileImageInput" type="file" ng-model="valorationCommentImage" accept="image/*" class="form-control">
  835. </div>
  836. <div class="modal-footer">
  837. <button class="btn btn-primary" type="button" ng-click="acceptCommentModalButton()">Aceptar</button>
  838. <button class="btn btn-outline-primary" type="button" data-bs-dismiss="modal">Cancelar</button>
  839. </div>
  840. </div>
  841. </div>
  842. </div>
  843. <div class="modal fade" id="deleteCommentModal" tabindex="-1" aria-hidden="true">
  844. <div class="modal-dialog">
  845. <div class="modal-content">
  846. <div class="modal-header">
  847. <h5 class="modal-title" id="deleteCommentModalLabel">Eliminar comentario</h5>
  848. <button class="btn p-1" type="button" data-bs-dismiss="modal" aria-label="Close">
  849. <span class="fas fa-times fs--1"></span>
  850. </button>
  851. </div>
  852. <div class="modal-body">
  853. <p>Estás a punto de eliminar este comentario. ¿Deseas continuar?</p>
  854. <p>El usuario no podrá volver a realizar un comentario sobre esta red de distribution.</p>
  855. </div>
  856. <div class="modal-footer">
  857. <button class="btn btn-danger" type="button" ng-click="acceptDeleteCommentModalButton()">Aceptar</button>
  858. <button class="btn btn-secondary" type="button" data-bs-dismiss="modal">Cancelar</button>
  859. </div>
  860. </div>
  861. </div>
  862. </div>
  863. <div class="modal fade" id="replyCommentModal" tabindex="-1" aria-hidden="true">
  864. <div class="modal-dialog">
  865. <div class="modal-content">
  866. <div class="modal-header">
  867. <h5 class="modal-title" id="replyCommentModalLabel">Añadir comentario</h5>
  868. <button class="btn p-1" type="button" data-bs-dismiss="modal" aria-label="Close">
  869. <span class="fas fa-times fs--1"></span>
  870. </button>
  871. </div>
  872. <div class="modal-body">
  873. <textarea class="form-control mb-3" ng-model="valorationReplyCommentText" rows="4"></textarea>
  874. </div>
  875. <div class="modal-footer">
  876. <button class="btn btn-primary" type="button" ng-click="acceptReplyCommentModalButton()">Aceptar</button>
  877. <button class="btn btn-outline-primary" type="button" data-bs-dismiss="modal">Cancelar</button>
  878. </div>
  879. </div>
  880. </div>
  881. </div>
  882. </div>
  883. {% endblock contents %}