listado.php 18.2 KB
<?php
  session_start();

  require './database.php';

  if (isset($_SESSION['user_id'])) {
    $records = $conn->prepare('SELECT id, email, password FROM users WHERE id = :id');
    $records->bindParam(':id', $_SESSION['user_id']);
    $records->execute();
    $results = $records->fetch(PDO::FETCH_ASSOC);

    $user = 'usuario';

    if (count($results) > 0) {
      $user = $results;
    }
  }
  $titulo = "LISTADO DE TURNOS - ".date('d/m/Y');
  $turnos = $conn->prepare("SELECT * FROM turnosv_turnos t, tipo_solicitantes s WHERE t.id_solicitante=s.id_solicitante AND fecha='".date('Y-m-d')."' ORDER BY hora ASC");
  $turnos->execute();
  $turnosconfirm = $conn->prepare("SELECT * FROM turnosv_turnos t, tipo_solicitantes s WHERE t.id_solicitante=s.id_solicitante AND verificado IS NOT NULL AND fecha='".date('Y-m-d')."' ORDER BY hora ASC");
  $turnosconfirm->execute();
  $turnosnoconfirm = $conn->prepare("SELECT * FROM turnosv_turnos t, tipo_solicitantes s WHERE t.id_solicitante=s.id_solicitante AND verificado IS NULL AND fecha='".date('Y-m-d')."' ORDER BY hora ASC");
  $turnosnoconfirm->execute();

  $configturnos = $conn->prepare("SELECT * FROM turnosv_configuraciones where id=1");
  $configturnos->execute();
  $configturnoresultado = $configturnos->fetch(PDO::FETCH_ASSOC);
?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title><?php echo $titulo;?></title>
    <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
     <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/jszip-2.5.0/dt-1.10.21/b-1.6.2/b-html5-1.6.2/b-print-1.6.2/datatables.min.css"/>
    <link rel="stylesheet" href="assets/css/style.css">
    <link rel="stylesheet" type="text/css" href="assets/css/bootstrap4-toggle.min.css">
  </head>
  <body>
    <?php if(!empty($user)): ?>
      <nav class="navbar navbar-light" style="background-image: url('img/fondoheader.png'); background-repeat: no-repeat; background-position: center; background-size: cover;">
        <div class="navbar-brand mx-auto" >
          <img src="img/logo.png" width="350px" height="75%">
        </div>  
      </nav>
      <br>
      <div class="container">
        <div class="row">
          <div class="col-lg-10 col-md-10 col-sm-12 col-xs-12">
            <h5><b><?php echo $titulo;?></b>  <h4>Turnos confirmados: <span class="badge badge-info"><?php echo $turnosconfirm->rowCount(); ?></span> Turnos no confirmados: <span class="badge badge-info"><?php echo $turnosnoconfirm->rowCount(); ?></span></h4></h5>
          </div>
          <div class="col-lg-2 col-md-2 col-sm-12 col-xs-12 text-right">
            <a href="logout.php" class="btn btn-sm btn-warning"><b>Cerrar Sesión</b></a>
          </div>
        </div>
        <div class="row">
        	<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 text-left">
        		<button type="button" class="btn btn-sm btn-info" data-toggle="modal" data-target="#exampleModal">Turnos fecha específica</button>
        	</div>
          <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 text-right">
            <a class="btn btn-sm btn-info" href="feriados.php">Feriados</a>
            <button type="button" class="btn btn-sm btn-info" data-toggle="modal" data-target="#modalconfiguraciones">Configuración</button>
          </div>
        </div>
        <hr style="border-style: solid; border-width: 1px;">
        <div class="row">
          <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
          	           <nav>
                            <div class="nav nav-tabs nav-fill" id="nav-tab" role="tablist">
                                <a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab" href="#nav-home" role="tab" aria-controls="nav-home" aria-selected="true">Todos los turnos</a>
                                <a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab" href="#nav-profile" role="tab" aria-controls="nav-profile" aria-selected="false">Turnos Confirmados</a>
                            </div>
                        </nav>
                        <!-- Todos los turnos -->
                        <div class="tab-content" id="nav-tabContent">
                            <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab">
                              <br>
                              <div class="table-responsive">
                                <table class="display tabladt" style="width:100%">
                                  <thead>
                                    <tr>
                                      <th>HORARIO</th>
                                      <th>DNI</th>
                                      <th>NOMBRE Y APELLIDO</th>
                                      <th>TIPO SOLICITANTE</th>
                                      <th>TELEFONO</th>
                                      <th>E-MAIL</th>
                                      <th>CONFIRMADO</th>
                                    </tr>
                                  </thead>
                                  <tbody>
                                    <?php
                                    while($row = $turnos->fetch(PDO::FETCH_ASSOC)) {
                                      if (!empty($row['verificado'])){
                                        $verificado = "SI";
                                      } else {
                                        $verificado = "NO";
                                      }
                                      echo "<tr><td>".substr($row['hora'],0,5)."</td><td>".$row["dni"]."</td><td>".$row["nombre_apellido"]."</td><td>".$row["descripcion"]."</td><td>".$row["telefono"]."</td><td>".$row["email"]."</td><td>".$verificado."</td></tr>";
                                    }
                                    ?>
                                  </tbody>
                                </table>
                              </div>
                            </div>
                            <!-- Fin todos los turnos -->
                            <!-- Solo turnos confirmados -->
                            <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab">
                              <br>
                              <div class="table-responsive">
                                <table class="display tabladt" style="width:100%">
                                  <thead>
                                    <tr>
                                      <th>HORARIO</th>
                                      <th>DNI</th>
                                      <th>NOMBRE Y APELLIDO</th>
                                      <th>TIPO SOLICITANTE</th>
                                      <th>TELEFONO</th>
                                      <th>E-MAIL</th>
                                      <th>CONFIRMADO</th>
                                    </tr>
                                  </thead>
                                  <tbody>
                                    <?php
                                    while($row = $turnosconfirm->fetch(PDO::FETCH_ASSOC)) {
                                      echo "<tr><td>".substr($row['hora'],0,5)."</td><td>".$row["dni"]."</td><td>".$row["nombre_apellido"]."</td><td>".$row["descripcion"]."</td><td>".$row["telefono"]."</td><td>".$row["email"]."</td><td>".$verificado."</td></tr>";
                                    }
                                    ?>
                                  </tbody>
                                </table>
                              </div>
                            </div>
                            <!-- FIN Solo turnos confirmados -->
                        </div>
                        <br>
          </div>
        </div>
      </div>
      
    <?php else:
      header('Location: login.php');  
    endif; ?>
 <!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Seleccione una fecha</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <form id="formulario" method="post" action="verturnos.php" target="_blank">
      <div class="modal-body">
        <p>Fecha: <input type="text" id="fecha" name="fecha" class="form-control form-control-sm" autocomplete="off"></p>
        <div id="divfecha"></div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
        <a class="btn btn-primary text-white" onclick="enviarForm();">Aceptar</a>
      </div>
  	  </form>
    </div>
  </div>
</div>
<!-- Fin Modal -->
<!-- Inicio Modal Configuraciones -->
<!-- Modal -->
<div class="modal fade" id="modalconfiguraciones" tabindex="-1" role="dialog" aria-labelledby="modalConfiguracionesLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Configuraciones turnero</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body" id="modalbody">
        <div class="row">
          <div class="col-6">
            <label for="horainicio">Hora Inicio</label>
            <select class="form-control" name="horainicio" id="horainicio">
              <?php
              for ($i=0; $i <= 23; $i++) { 
                $selected = (intval($configturnoresultado['hora_inicio'])==$i) ? "selected" : "";
                echo "<option ".$selected." value='".$i."'>".$i."</option>";
              }
              ?>
            </select>
          </div>
          <div class="col-6">
            <label for="minutoinicio">Minuto Inicio</label>
            <select class="form-control" name="minutoinicio" id="minutoinicio">
              <?php
              for ($i=0; $i <= 59; $i++) { 
                $selected = (intval($configturnoresultado['minutos_inicio'])==$i) ? "selected" : "";
                echo "<option ".$selected." value='".$i."'>".$i."</option>";
              }
              ?>
            </select>
          </div>
        </div>
        <div class="row">
          <div class="col-6">
            <label for="horafin">Hora fin</label>
            <select class="form-control" name="horafin" id="horafin">
              <?php
              for ($i=0; $i <= 23; $i++) { 
                $selected = (intval($configturnoresultado['hora_fin'])==$i) ? "selected" : "";
                echo "<option ".$selected." value='".$i."'>".$i."</option>";
              }
              ?>
            </select>
          </div>
          <div class="col-6">
            <label for="minutofin">Minuto Fin</label>
            <select class="form-control" name="minutofin" id="minutofin">
              <?php
              for ($i=0; $i <= 59; $i++) { 
                $selected = (intval($configturnoresultado['minutos_fin'])==$i) ? "selected" : "";
                echo "<option ".$selected." value='".$i."'>".$i."</option>";
              }
              ?>
            </select>
          </div>
        </div>
        <hr>
        <div class="row">
          <div class="col-12 text-center">
            <label for="intervalo">Intervalo (Minutos)</label>
            <select name="intervalo" class="form-control" id="intervalo">
              <?php
              for ($i=5; $i <= 60; $i+=5) { 
                $selected = (intval($configturnoresultado['intervalo'])==$i) ? "selected" : "";
                echo "<option ".$selected." value='".$i."'>".$i."</option>";
              }
              ?>
            </select>
          </div>
        </div>
        <hr>
        <div class="row">
          <div class="col-12 text-left">
            <?php
            $checked = (intval($configturnoresultado['activo'])==1) ? "checked" : "";
            echo '
            <input type="checkbox" '.$checked.' id="estado" data-toggle="toggle" data-on="Activo" data-off="Inactivo" data-width="100" data-onstyle="success" data-offstyle="danger">';
            ?>
          </div>
        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
        <button type="button" class="btn btn-primary" onclick="configuracion()" id="btnguardar">Guardar cambios</button>
      </div>
    </div>
  </div>
</div>
<!-- Fin Modal configuraciones -->
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
    <script type="text/javascript" src="js/bootstrap4-toggle.min.js"></script>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js"></script>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js"></script>
  <script type="text/javascript" src="https://cdn.datatables.net/v/dt/jszip-2.5.0/dt-1.10.21/b-1.6.2/b-html5-1.6.2/b-print-1.6.2/datatables.min.js"></script>
  <script>
  $(function(){
    $("#fecha").datepicker();
  });
  function enviarForm(){
  	if ($("#fecha").val()!=0) {
  		$("#divfecha").empty();
  		$("#formulario").submit();
  		$('#exampleModal').modal('hide');
  	} else {
  		$("#divfecha").empty();
  		$("#divfecha").append("<small class='text-danger'>Debe seleccionar una fecha</small>");
  	}
  }
   function configuracion(){
      var horainicio = $("#horainicio").val();
      var minutoinicio = $("#minutoinicio").val();
      var horafin = $("#horafin").val();
      var minutofin = $("#minutofin").val();
      var intervalo = $("#intervalo").val();
      if ($("#estado").is(':checked')){
        var estado = 1;
      } else {
        var estado = 0;
      }
      $.ajax({
           type: 'POST',  // Envío con método POST
           url: './scripts/configuraciones.php',  // Fichero destino (el PHP que trata los datos)
           data: { horainicio: horainicio, minutoinicio: minutoinicio, horafin: horafin, minutofin: minutofin, intervalo: intervalo, estado: estado } // Datos que se envían
            }).done(function( msg ) {  // Función que se ejecuta si todo ha ido bien
                $("#modalbody").empty(); 
                if (parseInt(msg)==1){
                  $("#modalbody").append('<div class="row"><div class="col-12 text-center text-success">Las configuraciones fueron cambiadas.</div></div>');
                } else {
                  $("#modalbody").append('<div class="row"><div class="col-12 text-center text-warning">Las configuraciones no se han podido cambiar.</div></div>');
                }
                $("#btnguardar").hide();
            }).fail(function (jqXHR, textStatus, errorThrown){ // Función que se ejecuta si algo ha ido mal
           // Mostramos en consola el mensaje con el error que se ha producido
              alert(textStatus); 
        });
  }
  </script>
  <script type="text/javascript">
    $(document).ready(function() {
      $('.tabladt').DataTable( {
      	columnDefs: [ { orderable: false, targets: [0,1,2,3,4,5] }],
      	language: {
      		"sProcessing":     "Procesando...",
      		"sLengthMenu":     "Mostrar _MENU_ registros",
      		"sZeroRecords":    "No se encontraron resultados",
      		"sEmptyTable":     "Ningún dato disponible en esta tabla",
      		"sInfo":           "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
      		"sInfoEmpty":      "Mostrando registros del 0 al 0 de un total de 0 registros",
      		"sInfoFiltered":   "(filtrado de un total de _MAX_ registros)",
      		"sInfoPostFix":    "",
      		"sSearch":         "Buscar:",
      		"sUrl":            "",
      		"sInfoThousands":  ",",
      		"sLoadingRecords": "Cargando...",
      		"oPaginate": {
      			"sFirst":    "Primero",
      			"sLast":     "Último",
      			"sNext":     "Siguiente",
      			"sPrevious": "Anterior"
      		},
      		"oAria": {
      			"sSortAscending":  ": Activar para ordenar la columna de manera ascendente",
      			"sSortDescending": ": Activar para ordenar la columna de manera descendente"
      		},
      		"buttons": {
      			"copy": "Copiar",
      			"colvis": "Visibilidad",
      			"print": "Imprimir"
      		}
      	},
        dom: 'Bfrtip',
        buttons: [
          'excelHtml5',
        	{ 
        		extend: 'print',
        		customize: function(win)
            {
 
                var last = null;
                var current = null;
                var bod = [];
 
                var css = '@page { size: landscape; }',
                    head = win.document.head || win.document.getElementsByTagName('head')[0],
                    style = win.document.createElement('style');
 
                style.type = 'text/css';
                style.media = 'print';
 
                if (style.styleSheet)
                {
                  style.styleSheet.cssText = css;
                }
                else
                {
                  style.appendChild(win.document.createTextNode(css));
                }
 
                head.appendChild(style);
            },

        		messageTop: 'Turnos confirmados: <?php echo $turnosconfirm->rowCount(); ?> - Turnos no confirmados: <?php echo $turnosnoconfirm->rowCount(); ?>'
        	}
        // 'excelHtml5',
        // 'pdfHtml5',
        // 'print'
        ]
      } );
    } );
  </script>
  </body>
</html>