<?php 
defined('BASEPATH') OR exit('No direct script access allowed');
class CertificadoExtintoresCtrl extends MY_Controller {
function __construct() {
  
  header('Access-Control-Allow-Origin: *');
  header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Control-Request-Method");
  header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
  header("Allow: GET, POST, OPTIONS, PUT, DELETE");
  header('content-type: application/json; charset=utf-8');
  $method = $_SERVER['REQUEST_METHOD'];
  if($method == "OPTIONS") {
      die();
  }
parent::__construct(); 
// add library of Pdf 
$this->load->library('Pdf');
}


public function _remap($met,$parametros = array()){

  $method = $_SERVER['REQUEST_METHOD'];
  if($met ==="Alarma"){
  
    $this->Alarma();
   }

 if($met ==="index"){

  switch ($method)  
  { case 'PUT':
     // $this->Edit(); 
    break;
    case 'POST': 
      //$this->Add();
    break;
    case 'GET': 
      $this->GestionCertificado($parametros);
    case 'HEAD': 
      // echo json_encode( $method );
    break; 
    case 'DELETE': 
     // $this->Delete($parametros); 
    break; 
    case 'OPTIONS': 
     // echo json_encode( $method );
   break; 
   default: 
   echo json_encode( "Error" );
   break; 
  }
}


 }



private function Verificar($Nombre,$DB = ""){
  $Dir = Raiz();
  if (Existe($Dir.'/CertificadoExtintores/'.$Nombre.'.pdf') === true){
     return $this->Verificar(Random($DB));
  }else{
    return $Nombre;
  }
 
}
public function Alarma(){
  $ArrayBalsasPorVencer = $this->ExtinguisherModels->Alarma();

  foreach ($ArrayBalsasPorVencer as $Fila){
  
    $Serial = $Fila->Serial;
    $DatosEditar = '{"0":"'. $Fila->ID.'", "16":"1"}';
    $DatosEditar =  json_decode($DatosEditar, true);
    $isn= $this->ExtinguisherModels->Edit($DatosEditar);
  if($Fila->Correo != ""){
    $htmlContent = '<h1>Certificado De Extintores</h1>';
    $htmlContent .="<p> Su Extintor: $Serial, Esta Por VENCER actualmente tiene una vigencia de 30 dias.</p>";
    //EmailHtml($Fila->Correo,"SEGMARIND ADVERTENCIA", $htmlContent);
  };
  }

  $ArrayBalsasVencidas = $this->ExtinguisherModels->Alarma2();
 
  foreach ($ArrayBalsasVencidas as $Fila){
   
    $DatosEditar = '{"0":"'. $Fila->ID.'","11":"Vencido", "16":"2"}';
      $DatosEditar =  json_decode($DatosEditar, true);
     
      $isn= $this->ExtinguisherModels->Edit($DatosEditar);
    if($Fila->Correo != ""){
  
      $Serial = $Fila->Serial;
      $htmlContent = '<h1>Certificado Extintores </h1>';
      $htmlContent .="<p> Su Extintor: $Serial, Esta Vencidad actualmente deber renovar su certificado .</p>";
      //Html($Fila->Correo,"SEGMARIND ADVERTENCIA", $htmlContent);
   
      $this->MinutesModels->Edit($DatosEditar);
      
    };
    }

}


private function GetPremisos(){
  $Token = obtnerToken();
  $Autho = "";
 if($Token != FALSE){
  $Autho =str_replace('Bearer ','', $Token);
 }
 if( $Autho !=""){
  $Autho =str_replace('Bearer ','', $Autho);
  $Token = ValidarToken($Autho);
}
  if ( $Token === FALSE ){
    $DatosGET= isset($_GET["x"]) ? $_GET["x"]: "" ;
  
   
    $DatosGET =  $DatosGET!=""?ValidarToken($DatosGET) :"";
    $Token  =$DatosGET!=''?$DatosGET: $Token ;
    
   }
  if ( $Token === FALSE ){
    $DatosGET= isset($_GET["x"]) ? $_GET["x"]: "" ;
  
   
    $DatosGET =  $DatosGET!=""?ValidarToken($DatosGET) :"";
    $Token  =$DatosGET!=''?$DatosGET: $Token ;
    
   }
   if(isset($this->session)){
    $ID =  $Token== FALSE ? $this->session->userdata("User") :  $Token ;
   }else{
    $ID =   $Token== FALSE ? null :  $Token ;
   }
  $User = $this->UserModels->getUser($ID);
  $Nivel =$User[0]->Nivel;
  $Permiso= $this->db->get_where('detalleniveles',array("Status"=>"Activo","Ruta"=>"Inspetor","Nivel"=>$Nivel))->result();
  $per =0;
  if(  count($Permiso)>0){
  return $Permiso[0]->Permiso;
}else{
  return 0;
}

}
public function GestionCertificado($parametros)
{
  $FirmanteInterno=0;
  $Nombre = "";
  $Dir = Raiz(); 
  $Token = obtnerToken();
  $Autho = "";
 if($Token != FALSE){
  $Autho =str_replace('Bearer ','', $Token);
 }
 if( $Autho !=""){
  $Autho =str_replace('Bearer ','', $Autho);
  $Token = ValidarToken($Autho);
}
  if ( $Token === FALSE ){
    $DatosGET= isset($_GET["x"]) ? $_GET["x"]: "" ;
  
   
    $DatosGET =  $DatosGET!=""?ValidarToken($DatosGET) :"";
    $Token  =$DatosGET!=''?$DatosGET: $Token ;
    
   }
   if(isset($this->session)){
    $User =  $Token== FALSE ? $this->session->userdata("User") :  $Token ;
   }else{
    $User =  $Token== FALSE ? null :  $Token ;
   }
 
  if(count($parametros) ===0){ 
    echo "Debe enviar acta";
    return;
  } 
  if(DbMultiple== TRUE){ 
    $Nombre = $this->Verificar(Random($this->UserDB), $this->UserDB);
    
  }else{
    $Nombre = $this->Verificar(Random());
  }
  $Extintor = $this->ExtinguisherModels->getExtinguisher($parametros[0]); 

    if( $Extintor != null AND  count($parametros) ===1 ){
      if($Extintor[0]->StatusCertificado === 'Activo'){
        header("Content-type: application/pdf");
        header("Content-Disposition: inline; filename=documento.pdf");
        readfile($Dir.'CertificadoExtintores/'.$Extintor[0]->Certificado.'.pdf');
        return;
      }
      
  } 
  if( count($Extintor) === 0){
    echo "Certificado no existe";
    return;
  }
  $CodigoPlanilla =Digitos($Extintor[0]->ID,4);
  

  $Fecha= date("Y-m-d");
  $Vence = AddFechaActual(365);
  if(count($parametros) ===2){
    
    
    $DatosEditar = '{"0":"'.$Extintor[0]->ID.'","15":"'.$Vence.'" }';
    $Extintor[0]->Vence = $Vence ;
    $DatosEditar =  json_decode($DatosEditar, true);
    $isn= $this->ExtinguisherModels->Edit($DatosEditar);
    // Buscamos los datos del usuario
    $permiso= $this->GetPremisos();
  if($permiso == 1){
    $FirmanteInterno = "11";
  }
   
  
  if (Existe($Dir.'/Firmas/'. $FirmanteInterno.".png") === false){
    echo(json_encode(array("Error"=>"Firma no existe")));
    return ;
  }else{

  }
// Verificamos quien firmara el documento segun si nivvel 
  if($permiso == 1){
    // ispector empresa
    $DatosEditar = '{"0":"'.$Extintor[0]->ID.'","9":"'.$User.'"}';
    $DatosEditar =  json_decode($DatosEditar, true);

   // if($Extintor[0]->Inspector == null){
      // si no existe firma del ispector y existe un documento lo eliminamos para crear uno de nuevo 
      $isn= $this->ExtinguisherModels->Edit($DatosEditar);
      if(Existe($Dir.'CertificadoExtintores/'.$Extintor[0]->Certificado.'.pdf')=== true){
      //  unlink($Dir.'CertificadoExtintores/'.$Extintor[0]->Certificado.'.pdf');
      }
   // }else{
      // de existir firma es por que ya el documento fue firmado por un inspector
    //  echo(json_encode(array("Error"=>"Documento Firmado")));
    //  return;
   // }
  
    
  }else{
    echo(json_encode(array("Error"=>"No autorizado")));
    return ;
  }
 
 
 
  }else{
    // si no desea firmar documento igual preguntamos las firmas
  
    $FirmanteInterno = $Extintor[0]->Inspector == null ? 'Nada': $FirmanteInterno ;
  }

 

  // verificamos si ya existe un documento creado y guardamos el nombre
 // $Nombre = $Extintor[0]->Certificado != ""? $Extintor[0]->Certificado :$Nombre;

 if ($Extintor[0]->Certificado != "" and Existe($Dir.'CertificadoExtintores/'.$Nombre.'.pdf') AND count($parametros) ===1  ){
  // si existe el documento lo mandamos a mostrar
  // y como lo eliminamos previamente de querer crear la firma no hay problema
  header("Content-type: application/pdf");
  header("Content-Disposition: inline; filename=documento.pdf");
  readfile($Dir.'CertificadoExtintores/'.$Extintor[0]->Certificado.'.pdf');
  return;
 }
// buscamos la informacion que llevara el certificado




 $DatosArmador  = $this->ClientModels->getClient($Extintor[0]->Armador);
  $Agente= [""=>"","1"=>"CO2","2"=>"PQS","3"=>"ALOTRON","4"=>"AGUA","5"=>"CLORURO DE POTACION", "6"=>"CLORURO DE SODIO","7"=>"AGUA + ESPUMA QUIMICA"];
  $na= 'Embarcacion-Lugar';
  $Cer = 'CESMEC-IDIEM';
  $AgenteExtintor = $Agente[$Extintor[0]->Tipo];
  $CESMEC = $Extintor[0]->$Cer;
  $Embarcacion =  $Extintor[0]->$na;
  $Armador =  $DatosArmador[0]->Nombre.' '. $DatosArmador[0]->Apellidos;
  $Capacidad = $Extintor[0]->Capacidad;
  $Serial = $Extintor[0]->Serial;
  $CerAnt = $Extintor[0]->Certificado;
  $Tipo = $Extintor[0]->Tipo;
  $Email =  $DatosArmador[0]->Correo;
  $FechaI = $Fecha;
  $Fecha = $Vence;

   
   $Titulo = array('Embarcacion/lugar' => "Hola",'Hola'=>"" );
   $Extintor[0]->Elementos= str_replace('Titulo','ELEMENTOS INSPECCIONADOS',$Extintor[0]->Elementos);
   $Extintor[0]->Elementos= str_replace('Obs',utf8_encode('Observación'),$Extintor[0]->Elementos);
   $Arrayobj = [];
  $obj= json_decode($Extintor[0]->Elementos, true);
   foreach ($obj as $Key=> $val){
     $dato = [];
     $Datos2=[];
    foreach ($val as $Key2=> $val2){
      if ($Key2=== 'Status')
      {
        
        $dato['Si'] = ($val2 == true) ? 'X': '';
        $dato['No'] = ($val2 == '' OR  $val2 == false ) ? "X": " ";
      }else{
        $dato[$Key2] = $val2;
      }
      
    }
    $Titulos = array_keys($dato);
    
     for( $i=0; $i< count($Titulos); $i++  ){
      $Datos2[$Titulos[$i]] =  $dato[$Titulos[$i]];
     }
     

    $Arrayobj[$Key] = $Datos2;
  }


   
  $BodyElementos=  $this->BodyTabla( $Arrayobj); 
 
  $Year = date("Y");


  
// coder for CodeIgniter TCPDF Integration
// make new advance pdf document
$tcpdf = new Pdf('P', 'mm', 'A4', true, 'UTF-8', false);
 
// set document information

$tcpdf->SetAuthor('segmarind');
$tcpdf->SetTitle('Certificado De Extintores');
$tcpdf->SetSubject('segmarind');
$tcpdf->SetKeywords('TCPDF, PDF, segmarind, test, guide');
 
//set default header information
 
$tcpdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, "", "", array(0,65,256), array(0,65,127));


$tcpdf->setFooterData(array(0,65,0), array(0,65,127));
 
//set header  textual styles
$tcpdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
//set footer textual styles
$tcpdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
 
//set default monospaced textual style
$tcpdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
 
// set default margins
$tcpdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
// Set Header Margin
$tcpdf->SetHeaderMargin(PDF_MARGIN_HEADER);
// Set Footer Margin
$tcpdf->SetFooterMargin(PDF_MARGIN_FOOTER);
 
// set auto for page breaks
$tcpdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image for scale factor
$tcpdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// it is optional :: set some language-dependent strings
if (@file_exists(dirname(__FILE__).'/lang/eng.php'))
{
// optional
require_once(dirname(__FILE__).'/lang/eng.php');
// optional
$tcpdf->setLanguageArray($l);
}
 
// set default font for subsetting mode
$tcpdf->setFontSubsetting(true);



// Set textual style
// dejavusans is an UTF-8 Unicode textual style, on the off chance that you just need to
// print standard ASCII roasts, you can utilize center text styles like
// helvetica or times to lessen record estimate.
//$tcpdf->SetFont('dejavusans', '', 14, '', true);
 
// Add a new page
// This technique has a few choices, check the source code documentation for more data.
$tcpdf->AddPage();
if($FirmanteInterno != "Nada"){
  $tcpdf->Image( $Dir.'/Firmas/'.$FirmanteInterno.".png", 130, 205, 60);
}




$style = array(
  'border' => 0,
  'vpadding' => 'auto',
  'hpadding' => 'auto',
  'fgcolor' => array(0,0,0),
  'bgcolor' => array(255,255,255),
  'module_width' => 1, // width of a single module in points
  'module_height' => 1 // height of a single module in points
);
$MI_HOST = $this->ConfigModels->Value('MI_HOST');
 $tcpdf->write2DBarcode($MI_HOST.'CodeIgniter/CertificadoExtintores/'.$Nombre.'', 'QRCODE,Q', 90, 235, 30, 30, $style, 'C');
// set text shadow for effect
/*
$tcpdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,197,198), 'opacity'=>1, 'blend_mode'=>'Normal'));
 
//Set some substance to print
 */
$set_html = <<<EOD
 
 
<h3  style="text-align: center; text-decoration: underline;">CERTIFICADO DE INSPECCIÓN, MANTENIMIENTO  Y  RECARGA DE EXTINTOR PORTATIL</h3>
<h4  style="text-align: center;">SMI $CodigoPlanilla/$Year</h4>

<table    >

<tr>
<td ><FONT SIZE="12"><b>Embarcacion/lugar:</b> $Embarcacion</FONT></td>

<td ><FONT SIZE="12"><b>Certificado CESMEC / IDIEM :</b> $CESMEC</FONT></td>
</tr>
<tr>
<td ><FONT SIZE="12"><b>Agente Extintor:</b> $AgenteExtintor</FONT></td>
<td ><FONT SIZE="12"><b>Capacidad Agente extintor:</b> $Capacidad</FONT></td>
</tr>
<tr>
<td ><FONT SIZE="12"><b>Armador:</b> $Armador</FONT></td>
<td ><FONT SIZE="12"></FONT></td>
</tr>

</table>

<br/>
<br/>
<table   border="1" >

$BodyElementos


</table>




<br/>
<br/>
<h4  style="text-align: center; ">“El presente certificado tiene vigencia de un año a contar de la fecha de inspección”</h4>

<br/>
<h4  style="text-align: justify; ">El Inspector debidamente acreditado que suscribe certifica que el extintor descrito anteriormente, fue inspeccionado conforme a la Norma Chilena 2056 y a las disposiciones descritas en la Directiva DGTM y MM O-71/26 que regula el proceso de inspección, mantenimiento y recarga de los equipos portátiles contra incendio en el ámbito marítimo.</h4>
<br/>
<h5  style="text-align: left; ">Vigente hasta $Fecha  </h5>
 
EOD;

//Print content utilizing writeHTMLCell()
$tcpdf->writeHTMLCell(0, 0, '', '', $set_html, 0, 1, 0, true, '', true);
$tcpdf->SetFont("", 'B', 10);
$tcpdf->MultiCell(70,5, "
      DISTRIBUCIÓN COPIAS:
      1-CLIENTE  2- SEGMARIND
  ", 0, 'C', 0, 0, '', 235, true, 0, false, false, 35, 'M', false);



  $tcpdf->MultiCell(70,5, "____________________________
  Inspector Autorizado
      SEGMARIND LTDA
  D.S. y O.M.ORD.N°12600/447 VRS
 ", 0, 'C', 0, 1, 125, 235, true, 0, false, false, 40, 'M', false);

 $tcpdf->SetFont("", '', 8);
 $MI_HOST = $this->ConfigModels->Value('MI_HOST');
$tcpdf->MultiCell(175,5, "Puede verificar la valides de este documiento en: ".$MI_HOST."Sistema/Certificado/Extintores Debe usar el Código: $Nombre ", 0, 'C', 0, 0, 10, 265, true, 0, false, false, 35, 'M', true);
$tcpdf->SetFont("", 'B', 10);

 switch (count($parametros)) { 
  
  case 0:
    break;
  case 1:
    $tcpdf->Output('Certificado.pdf', 'I');
  break;
  case 2:
  
   if (Existe($Dir.'/CertificadoExtintores/') === false){
    CrearCarpeta($Dir.'/CertificadoExtintores/');
   
    
   }
   
    $tcpdf->Output($Dir.'/CertificadoExtintores/'.$Nombre.'.pdf', 'F');
    if( $FirmanteInterno != 'Nada' ){
      //$DatosArmador aqui enviamos los datos del certificado
      // actualizamos la fecha de vencimiento  a un ano 
      $this->ExtinguisherModels->GuardarActa($parametros[0],$Nombre);
 $htmlContent = '<h1>Certificado Extintores </h1>';
 $Finalizado = $this->DetalleOrdenExModels->Finalizar($Extintor[0]->ID,$Nombre,$Email);
       if($Email != ""){
       
      //  EmailHtml($Email,"SEGMARIND CERTIFICADO", $htmlContent,$Dir.'/CertificadoExtintores/'.$Nombre.'.pdf');

       }
    
       

       

       
        
    }
   
    
    header("Content-type: application/pdf");
    header("Content-Disposition: inline; filename=documento.pdf");
    readfile($Dir.'CertificadoExtintores/'.$Nombre.'.pdf');
   
  
    return;
    
    break;
  }





//
// successfully created CodeIgniter TCPDF Integration
}

function BodyTabla($arr){
  
  $arrayTitulo = [];
  $arrayTituloImprimir = "";
  $posT =0;
  $arrayTituloImprimir ="<tr>";
  $Fi = "";
  foreach (  $arr[0] as $key => $val){
    $arrayTitulo[$posT] = $key;
    if($key=='Si' OR $key== 'No'){
      $arrayTituloImprimir=$arrayTituloImprimir.'<th WIDTH= "5%" ><FONT SIZE="8"><b>'.utf8_decode($key).'</b></FONT></th>';
      
    }else{
      $arrayTituloImprimir=$arrayTituloImprimir.'<th WIDTH= "45%" ><FONT SIZE="8"><b>'.utf8_decode($key).'</b></FONT></th>';
    }
   
    $posT++;
  }
  $arrayTituloImprimir =$arrayTituloImprimir."</tr>";
  foreach ($arr as $Fila){
    $Fi=  $Fi.'<tr>';
    $Colum= '';
 
    
         for( $i=0; $i< count($arrayTitulo); $i++  ){
          foreach (  $Fila as $key => $val){
          if( $arrayTitulo[$i] ===$key){
            $Colum =  $Colum. '<td ><FONT SIZE="8"> '. $val.' </FONT></td>';
          }
        }
        }
    
    $Fi= $Fi.$Colum.'</tr>';
  }
return $arrayTituloImprimir.$Fi;
}

protected function middleware()
{
 
 return ['Sesion','Permisos'];
}
}
/* end CertificadoExtintoresCtrl.php file for CodeIgniter TCPDF Integration */
?>