<!-- Creado: Félix Ricardo Oliva Alonso, 10/08/2017. Se crea la vista para generar los reportes de ocupación del hospital -->
<?php
  use App\Libraries\ejLib;
  $var = ejLib::getInstance();
  $soapclient = $var->getWs();
  $wsClave = $var->get_wsClave();
  $usuario = $_SESSION['operador'];
  $Centro_Sal  = $var->desencriptar_AES($usuario['centro_sal'], $usuario['x']);
  $Centro_Sal  = trim($Centro_Sal);
  $nom_Centro_Sal  = $var->desencriptar_AES($usuario['nom_centrosal'], $usuario['x']);
  $nom_Centro_Sal = trim(ucwords(strtolower($nom_Centro_Sal)));
  $IDDOC  = $var->desencriptar_AES($usuario['id_doc'], $usuario['x']);

if($Centro_Sal == "" || $Centro_Sal == "0" || $Centro_Sal < 0)
  die("Ha accedido a un formulario sin los debidos privilegios de acceso");

?>

@extends('layouts.app')
@section('title', 'Reportes de Ocupación del '.$nom_Centro_Sal)
@section('styles')
  <style media="screen">
    #contenedor_tabla,#output{border:0px; overflow:auto;}
    #mensajePDF{min-height:20px; text-align:center; animation-name:mensajePDF; animation-duration:1s; animation-iteration-count:infinite;}
    th{background:rgba(249, 249, 249, 1);}
    @keyframes mensajePDF {
        0%,100%    {opacity: 0.6;   transform: scale(1);}
        50%        {opacity: 1.0;   transform: scale(1.025);}
    }
  </style>
@endsection
@section('content')

    <div class="box box-primary">
      <div class="box-body">
        <h4 class="box-title">Criterios de Búsqueda</h4>
        
        <div class="row">

          <div class="col-sm-2">
            <div class="input-group input-group-sm">
              <span class="input-group-addon" id="sizing-addon3">Fecha</span>
              <input type="text" name="fecha_consulta" id="fecha_consulta" class="form-control"title="La captura de la fecha debe ser en formato -dd/mm/aaaa-" placeholder="dd/mm/aaaa"/>
            </div>
          </div>

          <div class="col-sm-4">
            <div class="input-group input-group-sm">
              <span class="input-group-addon" id="sizing-addon3">Especialidad</span>
              <?php echo  $var->getView('Catalogos\VistasController@vCat_Especialidad','nomObj= vcat_especialidad_clv&Centro_Sal='.$Centro_Sal); ?>
            </div>
          </div>         

          <div class="col-sm-4">
            <div class="input-group input-group-sm">
              <span class="input-group-addon" id="sizing-addon2">Consultorio</span>
              <div id="proc_reload_vcat_consultorio_clv" name="proc_reload_vcat_consultorio_clv">
                <select  id="vcat_consultorio_clv" name="vcat_consultorio_clv" class="form-control"><option value="">N/E</option></select>
              </div>

              <span class="input-group-addon" id="sizing-addon2">Agenda</span>
              <div id="proc_reload_vcat_agenda_clv" name="proc_reload_vcat_agenda_clv">
                <select  id="vcat_agenda_clv" name="vcat_agenda_clv" class="form-control"><option value="">N/E</option></select>
              </div>
            </div>
          </div>

          <div class="col-sm-1">
            <div class="input-group input-group-sm">
              <p class="text-center"><button id="btn_getLstPacientes_enAgendaMedica" name="btn_getLstPacientes_enAgendaMedica" class="btn btn-primary" onclick="validarConsulta();" disabled>Consultar</button></p>
            </div>
          </div>



          
        </div>
     
      
      <div id="mensajePDF" style="display:none">Generando Reporte</div>
      <iframe  width="100%" height="1400px" id="output" ></iframe>
      <div id="contenedor_tabla" name="contenedor_tabla"></div>

  </div>
@endsection


@section('scripts')
  <script src="js/jspdf.debug.js"></script>

  <script type="text/javascript">
    var fecha        = new Date();
    var MEDICO       = "";
    var ESPECIALIDAD = "";

    $(document).ready(function() {
        $('#fecha_consulta').datepick({
          dateFormat: 'dd/mm/yyyy', 
          onSelect: function() {
            $(this).change(); // Redirigir al evento onChange
          }
        });

        $('#output').hide();
        $('.piso').hide();
    });


    $(document).on('change', '#vcat_especialidad_clv', function () {      
      reload_cat_consultorio();
    });

    $(document).on('change', '#fecha_consulta', function () {      
      reload_cat_consultorio();        
    });

    function reload_cat_consultorio(){
      var id_especialidad  = document.getElementById("vcat_especialidad_clv").value;
      var fecha_consulta   = document.getElementById("fecha_consulta").value;
      
      $("#proc_reload_vcat_agenda_clv").html(`<select  id="vcat_agenda_clv" name="vcat_agenda_clv" class="form-control"><option value="">N/E</option></select>`);

      document.getElementById("btn_getLstPacientes_enAgendaMedica").disabled = true;
      MEDICO       = "";
      ESPECIALIDAD = "";

      if(id_especialidad != "" && fecha_consulta != ""){        
        var parametros = {
          "Centro_Sal": <?=$Centro_Sal ?>, "nomObj": "vcat_consultorio_clv", "Fecha": fecha_consulta, "Especialidad": id_especialidad};
        jqGetAjaxShort("vCat_Consultorios_xDiaxEspecialidad_sic","proc_reload_vcat_consultorio_clv", parametros);     
      }
    }

    $(document).on('change', '#vcat_consultorio_clv', function () {      
      reload_cat_agenda();          
    });

    function reload_cat_agenda(){
      var id_consultorio   = document.getElementById("vcat_consultorio_clv").value;
      var fecha_consulta   = document.getElementById("fecha_consulta").value;

      if(id_consultorio != "" && fecha_consulta != ""){
        var parametros = {
          "id_consultorio": id_consultorio, "nomObj": "vcat_agenda_clv", "Fecha": fecha_consulta};
        jqGetAjaxShort("vCat_Consultorios_getLstMedicos","proc_reload_vcat_agenda_clv", parametros);     
      }
    }

    $(document).on('change', '#vcat_agenda_clv', function () {      
      if(this.value != ""){
        document.getElementById("btn_getLstPacientes_enAgendaMedica").disabled = false;

        MEDICO       = $( "#vcat_agenda_clv option:selected" ).text();
        ESPECIALIDAD = $( "#vcat_especialidad_clv option:selected" ).text();
      }
    });

    function validarConsulta(){
        document.getElementById("btn_getLstPacientes_enAgendaMedica").disabled = true;        
        var fecha_consulta = document.getElementById("fecha_consulta").value;
        var id_med_con     = $("#vcat_agenda_clv").val();

        $('#output').hide();
        

        $.post({
        url:  'AdministrarConsultorios/getLstPacientes_enAgendaMedica',
        type: "POST",
        data: {
          id_med_con            : id_med_con,
          fecha_consulta        : fecha_consulta          
       },

        success:  function (data){
          //crearReporte(data);
          document.getElementById("btn_getLstPacientes_enAgendaMedica").disabled = false;        

          $('#mensajePDF').hide();

          var xmlDoc = $.parseJSON(data);

          if(xmlDoc.respuesta){
            getPDF(xmlDoc.respuesta);
          }else{
            $.notify("No hay pacientes agendados en la fecha proporcionada...", "info");
          }

        },

        error : function(xhr, status)
        {$('#mensajePDF').html("No se pudo generar el reporte");},

      });

    
    }

    function encode_utf8(s) { return unescape(encodeURIComponent(s)); } 
    function decode_utf8(s) { return decodeURIComponent(escape(s));   }

    function padS(pad, str, padLeft) {
      if (typeof str === 'undefined') 
        return pad;
      if (padLeft) {
        return (pad + str).slice(-pad.length);
      } else {
        return (str + pad).substring(0, pad.length);
      }
    }

    function getPDF(respuesta){

        var fecha_consulta   = document.getElementById("fecha_consulta").value;
        var id_med_con   = $("#vcat_agenda_clv").val();
        
        var pdf = new jsPDF('portrait', 'pt', 'letter');
        var date = new Date();
        var d  = date.getDate();
        var day = (d < 10) ? '0' + d : d;
        var m = date.getMonth() + 1;
        var month = (m < 10) ? '0' + m : m;
        var year = date.getFullYear();

        var h = date.getHours();
        var hour = (h < 10) ? '0' + h : h;
        var mn = date.getMinutes();
        var minutes = (mn < 10) ? '0' + mn : mn;


        pdf.setFont("helvetica");
        
        

        pdf.setFontSize(10);            pdf.text(215, 25, 'SECREATARÍA DE SALUD');
        pdf.setFontSize(12);            pdf.text(165, 40, '<?php echo strtoupper($nom_Centro_Sal) ?>');
        pdf.setFontSize(13);            pdf.text(135, 55, 'REPORTE DE PACIENTES CON TELÉFONOS');

        pdf.setFontSize(8);             pdf.text(325, 75, 'FECHA: ' + fecha_consulta);
                                        pdf.text(20, 75, 'Fecha de elaboración: '+day+'/'+month+'/'+year+' '+hour+':'+minutes+' hrs');
                                        pdf.text(20, 90, 'NOMBRE DEL MÉDICO: ' + MEDICO);
                                        pdf.text(325, 90, 'ESPECIALIDAD: ' + ESPECIALIDAD);
                                        

        pdf.setLineWidth(1.2);
        pdf.line(20,  95, 575,  95);
        pdf.line(20, 125, 575, 125);

        pdf.setFontSize(8);             pdf.text(345, 106, 'TELÉFONOS ');
                                        pdf.text(460, 106, 'TELÉFONOS EMERGENCIA');


        pdf.setLineWidth(0.5);
        pdf.line(310,  110, 575,  110);
                                        pdf.text(317, 120, 'Particular ');
                                        pdf.text(380, 120, 'Celular ');
                                        
                                        pdf.text(460, 120, 'Particular ');
                                        pdf.text(520, 120, 'Celular ');

                                        pdf.text(23 , 114, 'HORA ');
                                        pdf.text(55 , 114, 'NOMBRE DE PACIENTE ');
                                        pdf.text(230, 114, 'NO. EXPEDIENTE ');        

        

        var imgData =
        'data:image/png;base64,[encoded data, 5352 characters]'

        pdf.addImage(imgData, 'PNG', 15, 15, 100, 40);
        
		

        var hoja_actual = 1;
        var hoja_total = Math.trunc( ((respuesta.length-48)/52)+0.9999 );


        if(respuesta.length<=48){


          $.each(respuesta, function( index, item ) {            
            pdf.setFontSize(6);          
            pdf.cell(20, 125+(index * 13), 30, 13, `${item.hora}`);
            pdf.cell(50, 125+(index * 13), 170, 13, `${ decode_utf8( (item.paterno_f.length ? item.paterno_f : ' ') ) + ' '+ decode_utf8((item.materno_f.length ? item.materno_f : ' ')) + ' ' + decode_utf8((item.nombre_f.length ? item.nombre_f : ' ')) }`);

            pdf.cell(220, 125+(index * 13), 90, 13, `${(item.numero_expe.length ? item.numero_expe : ' ')}`);

            pdf.cell(310, 125+(index * 13), 65, 13, `${(item.telefono_f.length ? item.telefono_f : ' ')}`);
            pdf.cell(375, 125+(index * 13), 65, 13, `${(item.telefono2_f.length ? item.telefono2_f : ' ')}`);

            pdf.cell(440, 125+(index * 13), 70, 13, `${(item.telefono_emerg_f.length ? item.telefono_emerg_f : ' ')}`);
            pdf.cell(510, 125+(index * 13), 65, 13, `${(item.telefono2_emerg_f.length ? item.telefono2_emerg_f : ' ')}`);
          });
          

          pdf.setLineWidth(2);
          pdf.line(20,  750, 575,  750);

          pdf.setFontSize(6);             
          pdf.text(20, 760, 'Fecha de elaboración: '+day+'/'+month+'/'+year+' '+hour+':'+minutes+' hrs');
          pdf.text(525, 760, padS('                ', `HOJA ${hoja_actual} DE 1`,true));
          pdf.text(20, 770, 'ARCHIVO');

        
        }else{
      
          var i  = 0;
          var j  = 0;
          var c  = 0;

          for (i = 0; i < hoja_total; i++) {
            var limite = (i == 0 ? 48 : 54);
            var yIni = (i == 0 ? 125 : 36);
            hoja_actual = i+1;

            if(i>0)pdf.addPage();
            
            for(j=0; j<limite ; j++ ){
              var item = respuesta[c];

              pdf.setFontSize(6);          
              pdf.cell(20, yIni+(j * 13), 30, 13, `${item.hora}`);
              pdf.cell(50, yIni+(j * 13), 170, 13, `${ decode_utf8( (item.paterno_f.length ? item.paterno_f : ' ') ) + ' '+ decode_utf8((item.materno_f.length ? item.materno_f : ' ')) + ' ' + decode_utf8((item.nombre_f.length ? item.nombre_f : ' ')) }`);

              pdf.cell(220, yIni+(j * 13), 90, 13, `${(item.numero_expe.length ? item.numero_expe : ' ')}`);

              pdf.cell(310, yIni+(j * 13), 65, 13, `${(item.telefono_f.length ? item.telefono_f : ' ')}`);
              pdf.cell(375, yIni+(j * 13), 65, 13, `${(item.telefono2_f.length ? item.telefono2_f : ' ')}`);

              pdf.cell(440, yIni+(j * 13), 70, 13, `${(item.telefono_emerg_f.length ? item.telefono_emerg_f : ' ')}`);
              pdf.cell(510, yIni+(j * 13), 65, 13, `${(item.telefono2_emerg_f.length ? item.telefono2_emerg_f : ' ')}`);

              ++c;
            }

            pdf.setLineWidth(2);
            pdf.line(20,  750, 575,  750);

            pdf.setFontSize(6);             
            pdf.text(20, 760, 'Fecha de elaboración: '+day+'/'+month+'/'+year+' '+hour+':'+minutes+' hrs');
            pdf.text(525, 760, padS('                ', `HOJA ${hoja_actual} DE ${hoja_total}`,true));
            pdf.text(20, 770, 'ARCHIVO'); 
                          
          }



          
        }

        
        var iframe = pdf.output('bloburi');
        $('#output').attr('src', iframe+'#zoom=120&view=Fit');
        $('#output').show();
        $('html, body').animate(  { 
          scrollTop: $("#output").offset().top 
        }, 800);
        
    }









    $(document).on('change', '#estado', function () {
        if (  ($('#estado').val() == '2') || $('#estado').val() == '0' )
        {$('.piso').show();}
        else
        {$('.piso').hide();}

    });

    function validar(){
      var nombre = document.getElementById("nombre").value;
      var apellido_p = document.getElementById("apellido_p").value;
      var apellido_m = document.getElementById("apellido_m").value;
      var con = 0;
      if (nombre.length > 0)
      { con++;
        if (apellido_p.length>0 || apellido_m.length>0)
        {  con++;  }
      }

      else if (apellido_p.length>0 || apellido_m.length>0)
      { con++;
        if (nombre.length > 0)
        {  con++;  }
      }

      if (con == 0 || con == 2)
      {generarReporte();}
      else
      {$.notify("Indispensable capturar el nombre y uno de los apellidos", "error");}
    }

    function generarReporte(){
      $('#mensajePDF').html("Generando reporte");
      $('#mensajePDF').show();
      $('#output').hide();
      // jqSetMensaje('mensajePDF', 'Generando PDF ...', 'mensajePDF');
      var fecha_ingreso   = document.getElementById("fecha_ingreso").value;
      var fecha_ingreso_f = document.getElementById("fecha_ingreso_f").value;
      var fecha_egreso    = document.getElementById("fecha_egreso").value;
      var fecha_egreso_f  = document.getElementById("fecha_egreso_f").value;
      var nombre          = document.getElementById("nombre").value;
      var especialidad    = document.getElementById("vCat_Especialidad").value;
      var paterno         = document.getElementById("apellido_p").value;
      var reingreso       = document.getElementById("reingreso").checked;
      var materno         = document.getElementById("apellido_m").value;
      var estado          = document.getElementById("estado").value;

      if  (reingreso==true)  { reingreso = 1; }
      else                   { reingreso = null; }

      $.post({
        url:  'ajax-generar-reporte',
        type: "POST",
        data: {
          centro_sal            : '{!! $Centro_Sal !!}'              ,
          fecha_ingreso         : fecha_ingreso                      ,
          fecha_ingreso_f       : fecha_ingreso_f                    ,
          fecha_egreso          : fecha_egreso                       ,
          fecha_egreso_f        : fecha_egreso_f                     ,
          nombre                : nombre                             ,
          especialidad          : especialidad                       ,
          paterno               : paterno                            ,
          reingreso             : reingreso                          ,
          materno               : materno                            ,
          estado                : estado
       },

        success:  function (data)
        {crearReporte(data);$('#mensajePDF').hide();},

        error : function(xhr, status)
        {$('#mensajePDF').html("No se pudo generar el reporte");},

      });
    }

    function crearReporte(data){
        var tabla = '<table style="cursor: pointer;" id="mitabla">';
            tabla += '<tr>';
            tabla += '<th>Servicio</th>'+
                     '<th>Cama</th>'+
                     '<th>Nombre</th>'+
                     '<th>Fecha Ingreso</th>'+
                     '<th>Hora Ingreso</th>'+
                     '<th>Fecha Egreso</th>'+
                     '<th>Hora Egreso</th>';
            tabla += '</tr>';
            tr = '';

        xmlDoc = $.parseXML(data),
        $xml = $( xmlDoc );
        var con = 1;
        $($xml).find("respuesta").each(function() {

            var numero_expe = ($(this).find("respuesta>numero_expe").text());
            var nombre = ($(this).find("respuesta>nombre").text());
            var fechaing = ($(this).find("respuesta>fechaing").text());
            var horaing = ($(this).find("respuesta>horaing").text());
            var fechaegre = ($(this).find("respuesta>fechaegre").text());
            var horaegre = ($(this).find("respuesta>horaegre").text());
            var nocama = ($(this).find("respuesta>descripcion_cama").text());
            var nomcorto = ($(this).find("respuesta>nomcorto").text());
            var idespecialidad = ($(this).find("respuesta>idespecialidad").text());

            tr += '<tr>';
            tr += '<td >'+nomcorto+'</td>'+
                  '<td>'+nocama+'</td>'+
                  '<td>'+nombre+'</td>'+
                  '<td>'+fechaing+'</td>'+
                  '<td>'+horaing+'</td>'+
                  '<td>'+fechaegre+'</td>'+
                  '<td>'+horaegre+'</td>';

            tr += '</tr>';
            con++;
        });
        //console.log($xml.find('respuesta').length);
        if (  ($xml.find('respuesta').length) == '' || ($xml.find('respuesta').length) == null ) {
          $.notify("Esta búsqueda no ha arrojado ningún resultado", "info");
        }
        else {
          tabla += tr;
          tabla += '</table>';
          $('#contenedor_tabla').html( tabla );
          pdf(con);
          $('#contenedor_tabla').hide();
          $('#mitabla').remove();
        }
      }

    function pdf(con) {

        var pdf = new jsPDF('portrait', 'pt', 'a4');

        var date = new Date();
        var d  = date.getDate();
        var day = (d < 10) ? '0' + d : d;
        var m = date.getMonth() + 1;
        var month = (m < 10) ? '0' + m : m;
        var year = date.getFullYear();

        var h = date.getHours();
        var hour = (h < 10) ? '0' + h : h;
        var mn = date.getMinutes();
        var minutes = (mn < 10) ? '0' + mn : mn;
        //Parámetros
        var estado = $( '#estado option:selected' ).text();
        var especialidad = $( '#vCat_Especialidad option:selected' ).text();
        var fi_ini = $('#fecha_ingreso').val();
        var fi_fin = $('#fecha_ingreso_f').val();
        var fe_ini = $('#fecha_egreso').val();
        var fe_fin = $('#fecha_egreso_f').val();
        var reingreso = document.getElementById("reingreso").checked ? 'Sí' : 'No';
        var nombre = document.getElementById("nombre").value !== '' ? 'Sí' : 'No';

        pdf.setFont("helvetica");
        pdf.setLineWidth(1);
        pdf.line(20, 145, 575, 145);

        pdf.setFontSize(14);            pdf.text(135, 40, 'SERVICIOS DE SALUD DEL ESTADO DE COLIMA');
        pdf.setFontSize(9);             pdf.text(20, 80, '<?php echo $nom_Centro_Sal ?>');
                                        pdf.text(502.5, 80, 'Listado de Camas');
        pdf.setFontSize(7.5);           pdf.text(20, 90, 'Fecha de elaboración: '+day+'/'+month+'/'+year+' '+hour+':'+minutes+' hrs');
                                        pdf.text(502.5, 90, 'Pacientes: '+(con-1));

        pdf.text(250, 110, 'CRITERIOS DE BÚSQUEDA');
        pdf.text(20, 120, 'Estado: '+estado);
        pdf.text(20, 130, 'Especialidad: '+especialidad);
        pdf.text(20, 140, 'Reingreso: '+reingreso);

        if (fi_ini == '' && fi_fin == '') { pdf.text(445, 120, 'Ingresó: Del --/--/---- al --/--/----'); }
        else if (fi_ini == '')            { pdf.text(445, 120, 'Ingresó: Del --/--/---- al '+fi_fin);    }
        else if (fi_fin == '')            { pdf.text(445, 120, 'Ingresó: Del '+fi_ini+' al --/--/----'); }
        else                              { pdf.text(445, 120, 'Ingresó: Del '+fi_ini+' al '+fi_fin);    }

        if (fe_ini == '' && fe_fin == '') { pdf.text(445, 130, 'Egresó: Del --/--/---- al --/--/----'); }
        else if (fe_ini == '')            { pdf.text(445, 130, 'Egresó: Del --/--/---- al '+fe_fin);    }
        else if (fe_fin == '')            { pdf.text(445, 130, 'Egresó: Del '+fe_ini+' al --/--/----'); }
        else                              { pdf.text(445, 130, 'Egresó: Del '+fe_ini+' al '+fe_fin);    }

        pdf.text(445, 140, 'Búsqueda por nombre: '+nombre);

        pdf.cellInitialize();
        pdf.setFontSize(8);//Font Size de la Tabla

        var imgData =
        'data:image/jpeg;base64,[encoded data, 10012 characters]'

        pdf.addImage(imgData, 'JPEG', 27, 27, 90, 27);
        var op = 1;
        var total = Math.trunc((con-48)/53);

        $.each( $('#contenedor_tabla tr') , function (i, row){
           $.each( $(row).find("td, th"), function(j, cell){

                pdf.setDrawColor(74,74,74);     // Color borde tabla.
                pdf.setLineWidth(0.25);         // Grosor borde tabla

                var txt = $(cell).text().trim().split(" ").join(" ");
                var width = (j==0) ? 70  :
                            (j==1) ? 30  :
                            (j==2) ? 215 : 60;
                var height = (i==0) ? 15 : 15;  // Altura para la celda
                if (txt.length==0) {txt=" -- : -- : --"}
                //var splitTitle = pdf.splitTextToSize(txt, 50);
                pdf.cell(20, 156, width, height, txt, i );
           });

          op = op + 1;
          var num = ((op-48)/53);

          pdf.setFillColor(255,255,255);
          pdf.rect(535,820, 60, 10, 'F');

          if (op < 47)                         {  pdf.text(540,828, 'Pág 1/1');}
          else if (op >= 47 && (num % 1 == 0)) {  pdf.text(535,828, 'Pág '+(num+1)+'/'+(total+2));}
          else if (op >= 47 && (num % 1 != 0)) {  pdf.text(535,828, 'Pág '+(Math.trunc(num)+2)+'/'+(total+2) );}
        });

        var iframe = pdf.output('bloburi');
        $('#output').attr('src', iframe+'#zoom=120&view=Fit');
        $('#output').show();
        $('html, body').animate(  { scrollTop: $("#output").offset().top }, 800);

        }
  </script>
@endsection
