templates/mantenimiento/pedido_reparacion/index.html.twig line 1

Open in your IDE?
  1. {% extends 'navbar.html.twig' %}
  2. {% block title %}Pedidos Reparacion{% endblock %}
  3. {% block content_user %}
  4.     <h5>Pedidos Reparacion</h5>
  5.     <hr>
  6.             {{ form_start(form, { 'attr' : { 'novalidate' : 'novalidate'  }}) }}
  7.                         <div class="form-row pt-2">
  8.                             <div class="col col-lg-3">
  9.                                 {{ form_label(form.sector) }}
  10.                                 {{ form_widget(form.sector, { 'attr' : { 'class' : 'form-control form-control inherit form-select'} }) }}
  11.                                 {{ form_errors(form.sector) }}
  12.                             </div>
  13.                             <div class="col col-lg-3">
  14.                                 {{ form_label(form.departamento) }}
  15.                                 {{ form_widget(form.departamento, { 'attr' : { 'class' : 'form-control form-control inherit form-select'} }) }}
  16.                                 {{ form_errors(form.departamento) }}
  17.                             </div>
  18.                             <div class="col col-lg-3">
  19.                                 {{ form_label(form.equipo) }}
  20.                                 {{ form_widget(form.equipo, { 'attr' : { 'class' : 'form-control form-control inherit form-select'} }) }}
  21.                                 {{ form_errors(form.equipo) }}
  22.                             </div>
  23.                             <div class="col col-lg-3">
  24.                                 {{ form_label(form.solicitante) }}
  25.                                 {{ form_widget(form.solicitante, { 'attr' : { 'class' : 'form-control form-control inherit form-select'} }) }}
  26.                                 {{ form_errors(form.solicitante) }}
  27.                                 </div>
  28.                         </div>
  29.                         <div class="form-row pt-2">
  30.                             <div class="col col-lg-3">
  31.                                 {{ form_label(form.desde) }}
  32.                                 {{ form_widget(form.desde, { 'attr' : { 'class' : 'form-control form-control inherit'} }) }}
  33.                                 {{ form_errors(form.desde) }}
  34.                             </div>
  35.                             <div class="col col-lg-3">
  36.                                 {{ form_label(form.hasta) }}
  37.                                 {{ form_widget(form.hasta, { 'attr' : { 'class' : 'form-control form-control inherit'} }) }}
  38.                                 {{ form_errors(form.hasta) }}
  39.                             </div>
  40.                             <div class="col col-lg-2">
  41.                                 {{ form_label(form.diagramado) }}
  42.                                 {{ form_widget(form.diagramado, { 'attr' : { 'class' : 'form-control form-control inherit form-select'} }) }}
  43.                                 {{ form_errors(form.diagramado) }}
  44.                             </div>
  45.                             <div class="col col-lg-2">
  46.                                 {{ form_label(form.realizado) }}
  47.                                 {{ form_widget(form.realizado, { 'attr' : { 'class' : 'form-control form-control inherit form-select'} }) }}
  48.                                 {{ form_errors(form.realizado) }}
  49.                             </div>
  50.                             <div class="col col-lg-2 pt-4 mt-4">
  51.                                 <input type="submit" class="btn  btn-info btn-block" value="Aplicar Filtro" />
  52.                             </div>
  53.                         </div>
  54.             {{ form_end(form) }}
  55.     <hr>
  56.     <br>
  57.     <br>
  58.     <table id="example" class="table table-striped table-bordered table-hover">
  59.         <thead>
  60.             <tr>
  61.         
  62.                 <th>Fecha</th>
  63.                 <th>Solicitante</th>
  64.                 <th>Sector</th>
  65.                 <th>Detalle</th>
  66.                 <th>Departamento</th> 
  67.                 <th>Equipo</th>
  68.                 <th>Diagramada</th>
  69.                 <th>Realizada</th>
  70.                 <th></th>
  71.             </tr>
  72.         </thead>
  73.         <tbody>
  74.         {% for pedido_reparacion in pedido_reparacions %}
  75.             <tr>
  76.                 <td>{{ pedido_reparacion.fecha ? pedido_reparacion.fecha|date('d/m/Y') : '' }}</td>
  77.                 <td>{{ pedido_reparacion.solicitante }}</td>
  78.                 <td>{{ pedido_reparacion.sector}}</td>
  79.                 <td>{{ pedido_reparacion.detalle }}</td>
  80.                 <td>{{ pedido_reparacion.departamento }}</td> 
  81.                 <td>{{ pedido_reparacion.equipo }}</td>
  82.                 <td>{{ pedido_reparacion.diagramada ? 'Si' : 'No' }}</td>
  83.                 <td>{{ pedido_reparacion.realizada ? 'Si' : 'No' }}</td>
  84.                 <td>
  85.                     <a href="{{ path('app_mantenimiento_pedido_reparacion_edit', {'id': pedido_reparacion.id}) }}" class="btn btn-sm btn-warning">Modificar</a>
  86.                     {% if app.user.id == 1 or app.user.id == 11 %}
  87.                         <a href="#" data-url="{{ path('app_mantenimiento_pedido_reparacion_delete', {'id': pedido_reparacion.id}) }}" class="btn btn-sm btn-danger btn-delete">Eliminar</a>
  88.                     {% endif %}
  89.                     {% if pedido_reparacion.nombreArchivoImagen %}
  90.                             <button type="button" 
  91.                                     class="btn btn-sm btn-info btn-ver-imagen"
  92.                                     data-bs-toggle="modal" 
  93.                                     data-bs-target="#imageModal" 
  94.                                     data-imagen-url="{{ asset('/uploads/images/pedidos/' ~ pedido_reparacion.nombreArchivoImagen) }}"
  95.                                     data-pedido-id="{{ pedido_reparacion.id }}"
  96.                             >
  97.                                 Ver Imagen
  98.                             </button>
  99.                         {% endif %}
  100.                 </td>
  101.             </tr>
  102.         {% endfor %}
  103.         </tbody>
  104.     </table>
  105.     <a href="{{ path('app_mantenimiento_pedido_reparacion_new') }}" class="btn btn-success">Nuevo Pedido</a>
  106. {# Modal de Bootstrap para mostrar la imagen #}
  107. <div class="modal fade" id="imageModal" tabindex="-1" aria-labelledby="imageModalLabel" aria-hidden="true">
  108.   <div class="modal-dialog modal-lg">
  109.     <div class="modal-content">
  110.       <div class="modal-header">
  111.         <h5 class="modal-title" id="imageModalLabel">Imagen del Pedido de Reparación #<span id="pedido-id-display"></span></h5>
  112.         <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
  113.           <span aria-hidden="true">&times;</span>
  114.         </button>
  115.       </div>
  116.       <div class="modal-body text-center">
  117.         {# Aquí es donde jQuery inyectará la imagen #}
  118.         <img id="modal-image-display" src="" class="img-fluid" alt="Imagen adjunta al pedido">
  119.       </div>
  120.       <div class="modal-footer">
  121.         <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
  122.       </div>
  123.     </div>
  124.   </div>
  125. </div>
  126. {% endblock %}
  127. {% block javascripts_footer %}
  128.     
  129.     {{ parent() }}
  130.     <script type="text/javascript">
  131. $(document).ready(function() {
  132.     $('.btn-delete').on('click', function(e) {
  133.         e.preventDefault();
  134.             e.stopPropagation();
  135.         const url = $(this).data('url');
  136.         
  137.         if (confirm('¿Estás seguro de que deseas eliminar este pedido de reparación?')) {
  138.             $.ajax({
  139.                 url: url,
  140.                 type: 'DELETE',
  141.                 success: function(response) {
  142.                     if (response.ok) {
  143.                         alert('Pedido eliminado exitosamente.');
  144.                         location.reload(); // Recargar la página para reflejar los cambios
  145.                     } else {
  146.                         alert('Error al eliminar el pedido: ' + response.message);
  147.                     }
  148.                 },
  149.                 error: function() {
  150.                     alert('Ocurrió un error al intentar eliminar el pedido.');
  151.                 }
  152.             });
  153.         }
  154.     });
  155.     // 1. Escuchamos el evento click en cualquier botón con la clase .btn-ver-imagen
  156.     $('.btn-ver-imagen').on('click', function(e) {
  157.         e.preventDefault();
  158.         // 2. Leemos la URL de la imagen y el ID del pedido del atributo data-
  159.         const imageUrl = $(this).data('imagen-url');
  160.         const pedidoId = $(this).data('pedido-id');
  161.         
  162.         // 3. Establecemos la URL de la imagen y el ID en el modal
  163.         $('#modal-image-display').attr('src', imageUrl);
  164.         $('#pedido-id-display').text(pedidoId);
  165.         
  166.         // 4. (Opcional) Abrimos el modal si no se abre automáticamente con los atributos data-bs-toggle
  167.         // $('#imageModal').modal('show'); 
  168.     });
  169.     
  170.     // Opcional: Limpiar el modal cuando se cierra para evitar que la imagen se quede cargada
  171.     $('#imageModal').on('hidden.bs.modal', function () {
  172.         $('#modal-image-display').attr('src', '');
  173.     });
  174.         $('#example').DataTable({
  175.                                     fixedHeader: true,
  176.                                     paging: true,
  177.                                     responsive: true,
  178.                                     searching: false,
  179.                                     order: [[ 0, 'desc' ]],
  180.                                     language: {
  181.                                         url: "{{ asset('i18n/spanish.json') }}"
  182.                                     }
  183.                                 });
  184. });
  185. </script>
  186. {% endblock %}