<?php 
defined('BASEPATH') OR exit('No direct script access allowed');
class CertificadoTrajeCtrl 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.'/CertificadoTraje/'.$Nombre.'.pdf') === true){
     return $this->Verificar(Random($DB));
  }else{
    return $Nombre;
  }
 
}
public function Alarma(){

  $ArrayBalsasPorVencer = $this->ShipModels->Alarma();

  $COD =  utf8_encode('Código');
  foreach ($ArrayBalsasPorVencer as $Fila){
    $Usuario= $this->ClientModels->getClient($Fila->Armador);
    $Serial = $Fila->Serial;
    $DatosEditar = '{"0":"'. $Fila->$COD.'", "13":"1"}';
    $DatosEditar =  json_decode($DatosEditar, true);
    $isn= $this->ShipModels->Edit($DatosEditar);
  if($Usuario[0]->Correo != ""){
    $htmlContent = '<h1>Certificado De Traje</h1>';
    $htmlContent .="<p> Su Certificado De Trajes De Inmersión: $Serial, Esta Por VENCER actualmente tiene una vigencia de 30 dias.</p>";
    EmailHtml($Usuario[0]->Correo,"SEGMARIND ADVERTENCIA", $htmlContent);
  };
  }

  $ArrayBalsasVencidas = $this->ShipModels->Alarma2();
  foreach ($ArrayBalsasVencidas as $Fila){
    $Usuario= $this->ClientModels->getClient($Fila->Armador);
    $DatosEditar = '{"0":"'. $Fila->$COD.'","9":"Vencido", "13":"2"}';
      $DatosEditar =  json_decode($DatosEditar, true);
     
      $isn= $this->ShipModels->Edit($DatosEditar);
    if($Usuario[0]->Correo != ""){
  
      $Serial = $Fila->Serial;
      $htmlContent = '<h1>Certificado Traje </h1>';
      $htmlContent .="<p> Su Sertificado de trajes De Inmersión : $Serial, Esta Vencidad actualmente deber renovar su certificado .</p>";
      EmailHtml($Usuario[0]->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(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)
{

  $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());
  }
  $Traje = $this->ShipModels->getShip($parametros[0]); 

    if( $Traje != null AND count($parametros) ===1){
      if($Traje[0]->StatusCertificado === 'Activo'){
        header("Content-type: application/pdf");
        header("Content-Disposition: inline; filename=documento.pdf");
        readfile($Dir.'CertificadoTraje/'.$Traje[0]->Certificado.'.pdf');
        return;
      }
      
  } 
  $DatosTrajes = json_decode($Traje[0]->Trajes, true);
  $Cliente= $this->ClientModels->getClient($Traje[0]->Armador);

  $CodigoPlanilla =Digitos($DatosTrajes['Cod'] +1,4);

  $Codigo= 'CÃ³digo';
  if(count($parametros) ===2){

    $TDatos =json_decode($Traje[0]->Trajes,true);
    $DatosEditar = '{"0":"'.$Traje[0]->$Codigo.'","12":"'.$TDatos['Vence']['value'].'" }';
    $Traje[0]->Vence = $TDatos['Vence']['value'] ;
    $DatosEditar =  json_decode($DatosEditar, true);
    $isn= $this->ShipModels->Edit($DatosEditar);
    // Buscamos los datos del usuario
    $permiso= $this->GetPremisos();
  if($permiso == 1){
    $FirmanteInterno = random_int(1, 5);
  }
   
  
  if (Existe($Dir.'/Firmas/'.$FirmanteInterno.".png") === false){
    echo(json_encode(array("Error"=>"Firma no existe")));
    return ;
  }
// Verificamos quien firmara el documento segun si nivvel 
  if($permiso == 1){
    // ispector empresa
    $DatosEditar = '{"0":"'.$Traje[0]->$Codigo.'","10":"'.$User.'", "13":"0"}';
    $DatosEditar =  json_decode($DatosEditar, true);   
      $isn= $this->ShipModels->Edit($DatosEditar);

  }else{
    echo(json_encode(array("Error"=>"No autorizado")));
  }
 

  }else{
    // si no desea firmar documento igual preguntamos las firmas
  
    $FirmanteInterno = $Traje[0]->Inspector == null ? 'Nada':$Traje[0]->Inspector ;
  }

 

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

 if ($Traje[0]->Certificado != "" and Existe($Dir.'CertificadoTraje/'.$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.'CertificadoTraje/'.$Nombre.'.pdf');
  return;
 }
// buscamos la informacion que llevara el certificado


$Fecha = date("Y-m-d");
$Year = date("Y");
$Embarcacion = $Traje[0]->Nombre;
$Bandera =$DatosTrajes['Bandera']['value'];
$Armador= $Cliente[0]->Nombre.' '.  $Cliente[0]->Apellidos;
$Lugar = $DatosTrajes['Lugar']['value'];
$NOTA = "Nota";
$Vence = $DatosTrajes['Vence']['value'];
$Tabla =  json_encode($DatosTrajes['Tabla']);
$Tabla = str_replace('Serie',utf8_encode('N° Serie Traje'),$Tabla);
$Tabla = str_replace('Servicio','Servicio Efectuado',$Tabla);
$Tabla = str_replace('Fabricacion',utf8_encode('Fecha Fabricación'),$Tabla);
$Tabla = str_replace('Observacion',utf8_encode('Observaciones'),$Tabla);
$Tabla=json_decode($Tabla,true);
$BodyElementos=  $this->BodyTabla( $Tabla); 

  
 

   
   



   




  
// 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 Traje');
$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/CertificadoTraje/'.$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 INSPECCION TRAJE INMERSION</h3>
<h4  style="text-align: center;">ITI  $CodigoPlanilla/$Year</h4>

<table border="1"   >

<tr>
<td  WIDTH= "33%" height = "50PX"  ><span style= "text-align: center; display:block;"><FONT style= "text-align: center; display:block;" SIZE="11"><b>Nombre Buque</b> </FONT></span><br><FONT style= "text-align: center; display:block;" SIZE="10"> $Embarcacion</FONT></td>
<td  WIDTH= "33%" height = "50PX" ><span style= "text-align: center; display:block;"><FONT style= "text-align: center; display:block;" SIZE="11"><b>Bandera</b> </FONT></span><br><FONT style= "text-align: center; display:block;" SIZE="10"> $Bandera</FONT></td>
<td  WIDTH= "33%" height = "50PX"><span style= "text-align: center; display:block;"><FONT style= "text-align: center; display:block;" SIZE="11"><b>Armador</b> </FONT></span><br><FONT style= "text-align: center; display:block;" SIZE="10"> $Armador</FONT></td>
</tr>
<tr>
<td  WIDTH= "33%" ><span style= "text-align: center; display:block;"><FONT style= "text-align: center; display:block;" SIZE="11"><b>Fecha</b> </FONT></span><br><FONT style= "text-align: center; display:block;" SIZE="10"> $Fecha</FONT></td>
<td  WIDTH= "33%" ><span style= "text-align: center; display:block;"><FONT style= "text-align: center; display:block;" SIZE="11"><b>Lugar</b> </FONT></span><br><FONT style= "text-align: center; display:block;" SIZE="10"> $Lugar</FONT></td>
<td  WIDTH= "33%" ><span style= "text-align: center; display:block;"><FONT style= "text-align: center; display:block;" SIZE="11"><b>Vencimiento</b> </FONT></span><br><FONT style= "text-align: center; display:block;" SIZE="10"> $Vence</FONT></td>
</tr>


</table>

<br/>
<br/>
<h5  style="text-align: justify; ">El abajo firmante, Inspector debidamente autorizado, certifica que los siguientes trajes de inmersión, han sido inspeccionado y mantenido de acuerdo a las especificaciones técnicas que les rige, N.CH 2056 y Circulares DGTM 0-71/024 y O-71/026, marcando con etiquetas de servicio y dejado en condiciones satisfactorias para su debido uso.</h5>
<br/>

<br/>
<FONT style= "text-align: center; display:block;" SIZE="9"><b>INSPECCION DE TRAJES DE INMERSION</b></FONT><br>
<table   border="1" >


$BodyElementos

</table>
<br/>
<br/>

<FONT SIZE="10" >NOTA: </FONT><br>

<br/>
<FONT SIZE="10" >DC	=	Deslizamiento Cierre</FONT><br>
<FONT SIZE="10" >LE	=	Luz Estroboscópica</FONT><br>
<FONT SIZE="10" >ET  =	Estanqueidad Traje</FONT><br>
<FONT SIZE="10" >CA  =	Cambio Adhesivos</FONT><br>


 
EOD;

//Print content utilizing writeHTMLCell()
$tcpdf->writeHTMLCell(0, 0, '', '', $set_html, 0, 1, 0, true, '', true);
$tcpdf->SetFont("", 'B', 10);



  $tcpdf->MultiCell(70,5, "____________________________
         Inspector Empresa
Resolución C.P. Chacabuco 12.265/399
 ", 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/Traje 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.'/CertificadoTraje/') === false){
    CrearCarpeta($Dir.'/CertificadoTraje/');
   
    
   }
   
    $tcpdf->Output($Dir.'/CertificadoTraje/'.$Nombre.'.pdf', 'F');
    if( $FirmanteInterno != 'Nada' ){
      //$DatosArmador aqui enviamos los datos del certificado
      // actualizamos la fecha de vencimiento  a un ano 
      $this->ShipModels->GuardarActa($parametros[0],$Nombre);

    
       

       

       
        
    }
   
    
    header("Content-type: application/pdf");
    header("Content-Disposition: inline; filename=documento.pdf");
    readfile($Dir.'CertificadoTraje/'.$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;
   
      $arrayTituloImprimir=$arrayTituloImprimir.'<th ><FONT SIZE="8"><b>'.utf8_decode($key).'</b></FONT></th>';
   
    $posT++;
  }
  $arrayTituloImprimir =$arrayTituloImprimir."</tr>";
  foreach ($arr as $Fila){
    $Fi=  $Fi.'<tr>';
    $Colum= '';
 
         $Dato= "";
         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>';
          }
          if( $val != ""){
            $Dato= $val;
          }
        }
        }
    if($Dato!= ""){
      $Fi= $Fi.$Colum.'</tr>';
    }
    
  }
return $arrayTituloImprimir.$Fi;
}

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