<?php
include "library/config.php";
include "library/config2.php";


$postjson = json_decode(file_get_contents('php://input'),true);
$postjson = $_GET["aksi"];


if($postjson=='getnoticias'){
	$data2 = array();
    $sth2 = $dbh2->prepare("select noticias.id_noticia, noticias.titulo, noticias.contenido, noticias.link, noticias.fecha, noticias.imagen from noticias order by noticias.id_noticia DESC");
	$sth2->setFetchMode(PDO::FETCH_ASSOC);
	$sth2->execute();
	// Mostramos los resultados
	while ($row = $sth2->fetch()){
		$data2[] =array(
		    'titulo' => $row['titulo'],
      	'contenido' => $row['contenido'],
      	'link' => $row['link'],
        'fecha' => $row['fecha'],
        'imagen' => $row['imagen']
		);
	}
    $json_data = array(
    "items" => $data2);
	echo json_encode($json_data);
}


elseif($postjson=='mostrar_oecl'){
  $data = array();
  $sth2 = $dbh2->prepare("SELECT id_oecl, oecl, direccion, comuna, telefono, celular, contacto1, contacto2, contacto3, correo1, correo2, correo3 FROM oecl");
  $sth2->setFetchMode(PDO::FETCH_ASSOC);
  $sth2->execute();
  // Mostramos los resultados
  while ($row = $sth2->fetch()){             
      $data[] = array(
          'oecl' => $row['oecl'],
          'direccion' => $row['direccion'],
          'comuna' => $row['comuna'],
          'telefono' => $row['telefono'],
          'celular' => $row['celular'],
          'contacto1' => $row['contacto1'],
          'contacto2' => $row['contacto2'],
          'contacto3' => $row['contacto3'],
          'correo1' => $row['correo1'],
          'correo2' => $row['correo2'],
          'correo3' => $row['correo3'],
      );
   }
    $json_data = array(
    "items" => $data);
    echo json_encode($json_data);
}


elseif($postjson=='getpreguntas_frecuentes'){

  $data2 = array();
  $sth2 = $dbh2->prepare("select preguntas_frecuentes.titulo, preguntas_frecuentes.area, preguntas_frecuentes.respuesta from preguntas_frecuentes");
  $sth2->setFetchMode(PDO::FETCH_ASSOC);
  $sth2->execute();
  // Mostramos los resultados
  while ($row = $sth2->fetch()){
    $data[] = array(
        'titulo' => $row['titulo'],
        'area' => $row['area'],
        'respuesta' => $row['respuesta'] 
    );
  }
   $json_data = array(
    "items" => $data);
    echo json_encode($json_data);
}


elseif($postjson=='getdata'){
    
    $rut=$_GET["rut"];

     $sth2 = $dbh2->prepare("INSERT INTO visita (rut, fecha) VALUES (?, NOW())");
    $sth2->bindParam(1, $rut);
    // Excecute
    $sth2->execute();



  $sth = $dbh->prepare("select 
Trabajador.TrabajadorId as trab_id,
Trabajador.TrabajadorNombre as nombres, 
Trabajador.TrabajadorPaterno as paterno 
from 
gdoc_corma.Trabajador 
where Trabajador.trabajadorRutDv='$rut'");
  $sth->setFetchMode(PDO::FETCH_ASSOC);
  $sth->execute();


  // Mostramos los resultados
  while ($row = $sth->fetch()){
    $trab_id = $row['trab_id'];
    $nombres = $row['nombres'];
    $paterno = $row['paterno'];
  }


  $data = array();
  $sth = $dbh->prepare("
  SELECT
Trabajador.TrabajadorNombre as nombres,
Trabajador.TrabajadorPaterno as paterno,
OECL.OECLFantasia as fantasia,
Cargo_Agr.Cargo_AgrId,
Area.AreaNombre as nombre_area,
Cargo.CargoNombre AS cargo_cert,
DATE_FORMAT(CompLaboral.CompLaboralFchSolicitud,('%d-%m-%Y')) AS fecha,
Credencial.CredencialId AS credencial,
Credencial.CredencialFchEmision as emision,
CompLaboral.CompLaboralSAG as sag,
CompLaboral.CompLaboralCargoId,
CompLaboral.CompLaboralId as LABORAL_ID,
ifnull(CompLaboral.CompLaboralObs, 'sin comentarios') as OBS,
ifnull(CompLaboral.CompLaboralObsDescarte, 'sin comentarios') as OBS_DESCARTE,
Credencial.CredencialTermino as vencimiento,

CompLaboral.EstadoCompId as ESTADO,
CompLaboral.CompLaboralAntiguo AS ANTIGUO,
CompLaboral.OTId as OT_ID,
CompLaboral.CompLaboralFchRevision as FECHA_REVISION,
EstadoComp.EstadoCompNombre as estC_nombre,
EstadoComp.EstadoCompId as estC_id,
(SELECT
EvaComp.EvaCompFchVence
FROM
EvaComp
WHERE
EvaComp.CompLaboralId=CompLaboral.CompLaboralId and
EvaComp.EvaCompTipoEvaId=1
LIMIT 1) AS medica,
(SELECT
EvaComp.EvaCompFchVence
FROM
EvaComp
WHERE
EvaComp.CompLaboralId=CompLaboral.CompLaboralId and
EvaComp.EvaCompTipoEvaId=2
LIMIT 1) AS psicologica,
(SELECT
EvaComp.EvaCompFchVence
FROM
EvaComp
WHERE
EvaComp.CompLaboralId=CompLaboral.CompLaboralId and
EvaComp.EvaCompTipoEvaId=3
LIMIT 1) AS tecnica,
if(Contratista.ContratistaFantasia is null, 'no','si') as TIENECONT,
Credencial.CredencialFondo as fondo
FROM gdoc_corma.CompLaboral
LEFT OUTER JOIN gdoc_corma.OECL ON (CompLaboral.CompLaboralOECLId = OECL.OECLId)
LEFT OUTER JOIN gdoc_corma.Solicitud ON (CompLaboral.CompLaboralSolicitudId = Solicitud.SolicitudId)
LEFT OUTER JOIN gdoc_corma.Contratista ON (Solicitud.ContratistaId = Contratista.ContratistaId)
LEFT OUTER JOIN gdoc_corma.Cargo ON (CompLaboral.CompLaboralCargoId = Cargo.CargoId)
LEFT OUTER JOIN gdoc_corma.Area ON (CompLaboral.CompLaboralAreaId = Area.AreaId)
LEFT OUTER JOIN gdoc_corma.Cargo_Agr ON (CompLaboral.CompLaboralCargoId = Cargo_Agr.Cargo_AgrId)
INNER JOIN gdoc_corma.EstadoComp ON (CompLaboral.EstadoCompId = EstadoComp.EstadoCompId)
LEFT OUTER JOIN gdoc_corma.cor_cargos ON (CompLaboral.CompLaboralCargoId = cor_cargos.COD_CARGO)
LEFT OUTER JOIN gdoc_corma.Credencial ON (CompLaboral.CompLaboralId = Credencial.CredencialCompLaboralId)
INNER JOIN gdoc_corma.Trabajador ON (Trabajador.TrabajadorId = CompLaboral.TrabajadorId)
WHERE
CompLaboral.CompLaboralId IN (SELECT c1.CompLaboralId FROM CompLaboral c1
JOIN (SELECT CompLaboral.CompLaboralCargoId, Max(CompLaboralId) AS MAX_LABORAL_ID
FROM CompLaboral  WHERE  CompLaboral.TrabajadorId = '$trab_id'  AND CompLaboral.EstadoCompId IN ( 6, 7, 8, 9, 12, 13 )
GROUP BY CompLaboral.CompLaboralCargoId) c2 ON c2.CompLaboralCargoId = c1.CompLaboralCargoId AND c2.max_laboral_id = c1.CompLaboralId) order by CompLaboral.CompLaboralId ");
  $sth->setFetchMode(PDO::FETCH_ASSOC);
  $sth->execute();


  // Mostramos los resultados
  while ($row = $sth->fetch()){

  $fech_med="";
  $fech_psi="";
  $fech_tec="";

    //buscamos la fecha medico
    $sthm = $dbh->prepare("
      SELECT 
EvaComp.EvaCompVigencia as VIGENCIA, 
EvaComp.EvaCompReconocida as evacompreconocida,
EvaComp.EvaCompFchVence as venc,
EvaComp.EvaCompFchExamen as FECHA_EXAMEN,
EvaComp.EstadoEvaId as eva_estado 
FROM 
gdoc_corma.EvaComp
WHERE   EvaComp.EvaCompTipoEvaId = 1 AND    EvaComp.CompLaboralId = ?
      ");
    $sthm->bindParam(1, $row['LABORAL_ID']);
    $sthm->setFetchMode(PDO::FETCH_ASSOC);
    $sthm->execute();
    while ($row2 = $sthm->fetch()){
        $fech_med=$row2['venc'];
        //echo $row2['venc'];

    }


    $datetime1 = new DateTime('now');
    $datetime2 = new DateTime($fech_med);
    $dias_vigencia_medica = $datetime1->diff($datetime2);


    //buscamos la fecha psicologico
    $sthm = $dbh->prepare("
      SELECT 
EvaComp.EvaCompVigencia as VIGENCIA, 
EvaComp.EvaCompReconocida as evacompreconocida,
EvaComp.EvaCompFchVence as venc,
EvaComp.EvaCompFchExamen as FECHA_EXAMEN,
EvaComp.EstadoEvaId as eva_estado 
FROM 
gdoc_corma.EvaComp
WHERE   EvaComp.EvaCompTipoEvaId = 2 AND    EvaComp.CompLaboralId = ?
      ");
    $sthm->bindParam(1, $row['LABORAL_ID']);
    $sthm->setFetchMode(PDO::FETCH_ASSOC);
    $sthm->execute();
    while ($row2 = $sthm->fetch()){
        $fech_psi=$row2['venc'];
        //echo $row2['venc'];

    }

    $datetime1 = new DateTime('now');
    $datetime2 = new DateTime($fech_psi);
    $dias_vigencia_psicologica = $datetime1->diff($datetime2);


     //buscamos la fecha tecnico
    $sthm = $dbh->prepare("
    SELECT 
EvaComp.EvaCompVigencia as VIGENCIA, 
EvaComp.EvaCompReconocida as evacompreconocida,
EvaComp.EvaCompFchVence as venc,
EvaComp.EvaCompFchExamen as FECHA_EXAMEN,
EvaComp.EstadoEvaId as eva_estado 
FROM 
gdoc_corma.EvaComp
WHERE   EvaComp.EvaCompTipoEvaId = 3 AND    EvaComp.CompLaboralId = ?
    ");
    $sthm->bindParam(1, $row['LABORAL_ID']);
    $sthm->setFetchMode(PDO::FETCH_ASSOC);
    $sthm->execute();
    while ($row2 = $sthm->fetch()){
        $fech_tec=$row2['venc'];
        //echo $row2['venc'];
    }

    $datetime1 = new DateTime('now');
    $datetime2 = new DateTime($fech_tec);
    $dias_vigencia_tecnica = $datetime1->diff($datetime2);


      if($dias_vigencia_medica->format('%R%a')>=60){
        $medica_v="v";
      }
      if($dias_vigencia_medica->format('%R%a')<60 && $dias_vigencia_medica->format('%R%a')>=30 ){
        $medica_v="n";
      }
      if($dias_vigencia_medica->format('%R%a')<30){
        $medica_v="r";
      }
   
      if($dias_vigencia_psicologica->format('%R%a')>=60){
        $psicologica_v="v";
      }
      if($dias_vigencia_psicologica->format('%R%a')<60 && $dias_vigencia_psicologica->format('%R%a')>=30 ){
        $psicologica_v="n";
      }
      if($dias_vigencia_psicologica->format('%R%a')<30){
        $psicologica_v="r";
      }

 
      if($dias_vigencia_tecnica->format('%R%a')>=60){
        $tecnica_v="v";
      }
      if($dias_vigencia_tecnica->format('%R%a')<60 && $dias_vigencia_tecnica->format('%R%a')>=30 ){
        $tecnica_v="n";
      }
      if($dias_vigencia_tecnica->format('%R%a')<30){
        $tecnica_v="r";
      }

      $m = $fech_med;
      $p = $fech_psi;
      $t = $fech_tec;
    
        if(empty($m)){
            $m="N/A";
        }
        if(empty($p)){
            $p="N/A";
        }
        if(empty($t)){
            $t="N/A";
        }
        
      

      if($m>=$p && !empty($m)){
      	$vencimiento=$p;
      }elseif($p>=$m && !empty($p)){
      	$vencimiento=$m;
      }elseif($t>=$m && !empty($t)){
        $vencimiento=$t;
      }elseif($t>=$p && !empty($t)){
        $vencimiento=$t;  
      }
     
      if($medica_v== "r" || $psicologica_v == "r" || $tecnica_v == "r"){
         

        if($medica_v== "r" || $tecnica_v == "r"){
        }  
        elseif($row['sag']!=""){
            $sin_utf8 = $row['nombre_area'];
            $con_utf8 = utf8_encode($sin_utf8);
            $row['nombre_area']=$con_utf8;
            
               $sin_utf8 = $nombres;
            $con_utf8 = utf8_encode($sin_utf8);
            $nombres=$con_utf8;
            
            $sin_utf8 = $paterno;
            $con_utf8 = utf8_encode($sin_utf8);
            $paterno=$con_utf8;
            
            
           $data[] = array(
          'rut' => $rut,
          'cargo_cert' => $row['cargo_cert'],
          'fantasia' => $row['fantasia'],
          'nombre_area' => $row['nombre_area'],
          'credencial' => $row['credencial'],
          'emision' => $row['emision'],
          'sag' => $row['sag'],
          'medica' => $row['medica'],
          'psicologica' => $row['psicologica'],
          'tecnica' => $row['tecnica'],
          'nombres' => $nombres,
          'paterno' => $paterno,
          'laboral_id' => $row['LABORAL_ID'],
          'medica_v' => $medica_v,
          'psicologica_v' => $psicologica_v,
          'tecnica_v' => $tecnica_v,
          'vencimiento' => $vencimiento,
          'fondo' => $row['fondo'],
          );


        }else{
          $data[] = array(
            'rut' => "vacio",
          );
        }
      	

        }else{  
            $sin_utf8 = $row['nombre_area'];
            $con_utf8 = utf8_encode($sin_utf8);
            $row['nombre_area']=$con_utf8;
            
            $sin_utf8 = $nombres;
            $con_utf8 = utf8_encode($sin_utf8);
            $nombres=$con_utf8;
            
            $sin_utf8 = $paterno;
            $con_utf8 = utf8_encode($sin_utf8);
            $paterno=$con_utf8;
            
            
            
		    $data[] = array(
              'rut' => $rut,
		      'cargo_cert' => $row['cargo_cert'],
		      'fantasia' => $row['fantasia'],
		      'nombre_area' => $row['nombre_area'],
		      'credencial' => $row['credencial'],
		      'emision' => $row['emision'],
		      'sag' => "-",
		      'medica' => $row['medica'],
		      'psicologica' => $row['psicologica'],
		      'tecnica' => $row['tecnica'],
               'nombres' => $nombres,
		      'paterno' => $paterno,
		      'laboral_id' => $row['LABORAL_ID'],
		      'medica_v' => $medica_v,
		      'psicologica_v' => $psicologica_v,
		      'tecnica_v' => $tecnica_v,
		      'vencimiento' => $vencimiento,
		      'fondo' => $row['fondo'],
		    );
		  
		  }




     /*echo $rut;
     echo "--";
  echo $row['cargo_cert'];
  echo "--";
  echo $row['fantasia'];
  echo "--";
  echo $row['nombre_area'];
  echo "--";
  echo $row['credencial'];
  echo "--";
  echo $row['emision'];

  echo "--";
  echo $row['medica'];
  echo "--";
  echo $row['psicologica'];
  echo "--";
  echo $row['tecnica'];
  echo "--";
  echo $nombres;
   echo "--";
  echo $paterno;
  echo "--";
  echo $row['LABORAL_ID'];
  echo "--";
  echo $medica_v;
  echo "--";
  echo $psicologica_v;
  echo "--";
  echo $tecnica_v;
  echo "--";
  echo $vencimiento;
      */
  }
  
 

  /*
  if(empty($data)){
    $data[] = array(
        'rut' => "vacio",
        );
  }
*/


//    print_r($data);

  
  
  

   $json_data = array(
    "items" => $data);
    echo json_encode($json_data);

}




elseif($postjson=='getultimas_evaluaciones'){
$rut=$_GET["rut"];
// Normalizar el RUT - convertir 'k' a 'K' si es el último carácter
if(substr($rut, -1) === 'k') {
    $rut = substr($rut, 0, -1) . 'K';
}

$sth2 = $dbh2->prepare("INSERT INTO visita (rut, fecha) VALUES (?, NOW())");
    $sth2->bindParam(1, $rut);
    // Excecute
    $sth2->execute();


  $data = array();
  $sth = $dbh->prepare("select 
EvaComp.EvaCompTipoEvaId as 'tipo_eva',
max(EvaComp.EvaCompFchExamen) as 'fecha',
Trabajador.trabajadorRutDv as'rut'
from
gdoc_corma.Trabajador,CompLaboral,EvaComp,TipoEvaluacion,Credencial
where
Trabajador.TrabajadorId=CompLaboral.TrabajadorId
and
CompLaboral.CompLaboralId=EvaComp.CompLaboralId
and
Trabajador.trabajadorRutDv=?
and
EvaComp.EvaCompTipoEvaId=TipoEvaluacion.TipoEvaluacionId
and
Credencial.CredencialCompLaboralId=CompLaboral.CompLaboralId
group by EvaComp.EvaCompTipoEvaId");

  $sth->bindParam(1, $rut);
  $sth->setFetchMode(PDO::FETCH_ASSOC);
  $sth->execute();
  $vuelta=0;
  $data3 = array();
  $row2="";
  // Mostramos los resultados
 
  while ($row = $sth->fetch()){
      
      $fecha=$row['fecha'];
      $rut=$row['rut']; 
      //divido el rut para agregar a la consulta y obtener el nombre del archivo final 
      $str = $rut;

      $array = explode("-", $str);
      $rut_ent= $array[0]; 
      $cod_div= $array[1];

      
      $rut_ent_f=str_replace('.', '',$rut_ent);
      
      $tipo_eva=$row['tipo_eva']; 

      if($tipo_eva==1){
        $tipo_evan=15;
      }
      if($tipo_eva==2){
        $tipo_evan=16;
      }
      if($tipo_eva==3){
        $tipo_evan=17;
      }


      $sth2 = $dbh->prepare("select 
      
EvaComp.EvaCompTipoEvaId as 'tipo',
EvaComp.EvaCompFchExamen as 'fecha',
EvaComp.EvaCompFchVence as 'fecha_vencimiento',
Trabajador.trabajadorRutDv as 'rut',
EvaComp.CompLaboralId as 'laboral' 
from gdoc_corma.Trabajador,CompLaboral,EvaComp
where
Trabajador.TrabajadorId=CompLaboral.TrabajadorId
and
CompLaboral.CompLaboralId=EvaComp.CompLaboralId
and
EvaComp.EvaCompFchExamen=?
and
Trabajador.trabajadorRutDv=?
and
EvaComp.EvaCompTipoEvaId=?
group by EvaComp.EvaCompTipoEvaId,EvaComp.EvaCompFchExamen,EvaComp.EvaCompFchVence,Trabajador.trabajadorRutDv,EvaComp.CompLaboralId order by EvaComp.CompLaboralId  desc limit 1
");

        $sth2=$dbh->prepare("select 
EvaComp.EvaCompTipoEvaId as 'tipo',
EvaComp.EvaCompFchExamen as 'fecha',
EvaComp.EvaCompFchVence as 'fecha_vencimiento',
Trabajador.trabajadorRutDv as 'rut',
Trabajador.trabajadorDv as 'divisor',
EvaComp.CompLaboralId as 'laboral', 
Trabajador.TrabajadorPaterno as 'apellido',
Docto.DoctoFileName as  'nombre_documento',
Docto.DoctoURL as 'url',
Docto.DoctoInstancia as 'instancia',
Docto.DoctoInd as 'doctoind'
from gdoc_corma.Trabajador,CompLaboral,EvaComp,Docto
where
Trabajador.TrabajadorId=CompLaboral.TrabajadorId
and
CompLaboral.CompLaboralId=EvaComp.CompLaboralId
and
Docto.DoctoRut=Trabajador.TrabajadorRut
and
EvaComp.EvaCompFchExamen=?
and
Trabajador.trabajadorRutDv=?
and
EvaComp.EvaCompTipoEvaId=?
and
Docto.TipoDocumentoId=?
group by EvaComp.EvaCompTipoEvaId,EvaComp.EvaCompFchExamen,EvaComp.EvaCompFchVence,Trabajador.trabajadorRutDv,EvaComp.CompLaboralId, Docto.DoctoFileName, Docto.DoctoURL, Docto.DoctoInstancia, Docto.DoctoInd  order by Docto.DoctoInstancia  desc limit 1
");







                            $sth2->bindParam(1, $fecha);
                            $sth2->bindParam(2, $rut);
                            $sth2->bindParam(3, $tipo_eva);
                            $sth2->bindParam(4, $tipo_evan);

                            $sth2->setFetchMode(PDO::FETCH_ASSOC);
                            $sth2->execute();

                             while ($row2 = $sth2->fetch()){
                            	
                            $datetime1 = new DateTime('now');
						    $datetime2 = new DateTime($row2['fecha_vencimiento']);
						    $diferencia = $datetime1->diff($datetime2);
								
							if($diferencia->format('%R%a')>=60){
						        $color="v";
						      }
						      if($diferencia->format('%R%a')<60 && $diferencia->format('%R%a')>=30 ){
						        $color="n";
						      }
						      if($diferencia->format('%R%a')<30){
						        $color="r";
						      }           
						      
                            /* esto se comento, por que ahora url tiene la direccion de los documentos, asi que es mas rapido acceder 						
                            if(is_null($row2['doctoind'])){
                                
                                
                                 
                                $url_procesada="http://143.110.233.210/uploadgx/Carpeta/".$rut_ent_f."-".$row2['divisor']."-".$row2['apellido']."/".$row2['nombre_documento'];
                                
                                
                                
                                
                            }else{
                                
                                
                                 $url_procesada="http://okmAdmin:admin@143.110.233.210:8080/OpenKM/Download?uuid=".$row2['doctoind'];
                              
                                
                            }
                            */
                            //esta linea se agrego 
                            $url_procesada=$row2['url'];
                            
                              $data3[$vuelta] = array(
                                    'tipo' => $row2['tipo'],
                                    'fecha' => $row2['fecha'],
                                    'laboral' => $row2['laboral'],
                                    'rut' => $row2['rut'],
                                    'color' => $color,
                                    'fecha_vencimiento' => $row2['fecha_vencimiento'],
                                    'url'=> $url_procesada,
                                    'apellido' => $row2['apellido'],
                                    'rut_sin_puntos' => $rut_ent_f,
                                    'codigo_verificador' => $row2['divisor'],
                                    'nombre_documento' => $row2['nombre_documento'],
                                    'doctoind' => $row2['doctoind'],

                                );           




                             }
                             $vuelta=$vuelta+1;
                       


  }



   $json_data = array(
    "items" => $data3);
    echo json_encode($json_data);



}



elseif($postjson=='validar_rut'){
  $rut=$_GET["rut"];
  $num_credencial=$_GET["numero_credencial"];
  
  
  /* proceso el rut y actualizo el campo Trabajador.trabajadorRutDv para que tenga informacion.
  */
  
  $rut_provisorio=$_GET["rut"];
  $rut_p1= substr($rut_provisorio, 0, 10);  // abcdef
  
  $cadena = $rut_p1;
  $resultado = str_replace(".", "", $cadena);
  $resultado2= str_replace("-", "", $resultado);
  //echo $resultado2;
  
  
  //aqui actualizamos la data en en campo trabajadorrutdv
   $data = array();
  $sth = $dbh->prepare("UPDATE gdoc_corma.Trabajador
SET Trabajador.trabajadorRutDv = ?
WHERE Trabajador.TrabajadorRut=?");

  $sth->bindParam(1, $rut);
  $sth->bindParam(2, $resultado2);
  $sth->setFetchMode(PDO::FETCH_ASSOC);
  $sth->execute();
  
  
  
  //-------------------

  $data = array();
  $sth = $dbh->prepare("
SELECT Trabajador.trabajadorRutDv as 'rut' FROM gdoc_corma.Trabajador,CompLaboral,Credencial 
where 
CompLaboral.TrabajadorId=Trabajador.TrabajadorId
and
CompLaboral.CompLaboralId=Credencial.CredencialCompLaboralId
and
Trabajador.trabajadorRutDv=?
and
Credencial.CredencialId=?");

  $sth->bindParam(1, $rut);
  $sth->bindParam(2, $num_credencial);
  $sth->setFetchMode(PDO::FETCH_ASSOC);
  $sth->execute();
  // Mostramos los resultados
  $rutt="nulo";
  while ($row = $sth->fetch()){
	  $rutt = $row['rut'];
   }

   $data[] = array(
  		'rut' => $rutt,
    );

  
     $json_data = array(
    "items" => $data);
    echo json_encode($json_data);
  
  
  if($rut==$rutt){
  
  $sth2 = $dbh2->prepare("INSERT INTO visita (rut, fecha) VALUES (?, NOW())");
    $sth2->bindParam(1, $rut);
    // Excecute
    $sth2->execute();
  
  
  $sth2 = $dbh2->prepare("INSERT INTO registro_instalacion (rut, credencial, numero_telefono, fecha_instalacion) VALUES (?, ?, ?, NOW())");
  $sth2->bindParam(1, $rut);
  $sth2->bindParam(2, $num_credencial);
  $sth2->bindParam(3, $numero_telefono);
  // Excecute
  $sth2->execute();
  }
  

}

elseif($postjson=='contacto'){

  $rut = $_GET["rut"];
  $pregunta = $_GET["pregunta"];
  $correo = $_GET["correo"];
  $tipo_pregunta = $_GET["tipo_pregunta"];

    $sth2 = $dbh2->prepare("INSERT INTO visita (rut, fecha) VALUES (?, NOW())");
    $sth2->bindParam(1, $rut);
    // Excecute
    $sth2->execute();

  $sth2 = $dbh2->prepare("INSERT INTO contactenos (rut, pregunta, correo, tipo_pregunta, fecha) VALUES (?, ?, ?, ?, NOW())");

  
  $sth2->bindParam(1, $rut);
  $sth2->bindParam(2, $pregunta);
  $sth2->bindParam(3, $correo);
  $sth2->bindParam(4, $tipo_pregunta);
  // Excecute
  $sth2->execute();

    $data[] = array(
  		'respuesta' => "ok",
    );

  	$json_data = array(
    "items" => $data);
    echo json_encode($json_data);

}  
elseif($postjson=='getpyr'){
  $rut = $_GET["rut"];

  $sth2 = $dbh2->prepare("INSERT INTO visita (rut, fecha) VALUES (?, NOW())");
    $sth2->bindParam(1, $rut);
    // Excecute
    $sth2->execute();
  
    $data2 = array();
  
  $sth2 = $dbh2->prepare("select contactenos.id_contactenos, contactenos.fecha, contactenos.pregunta, contactenos.respuesta from contactenos where contactenos.rut = ? order by contactenos.id_contactenos DESC");
  $sth2->bindParam(1, $rut);
  $sth2->setFetchMode(PDO::FETCH_ASSOC);
  $sth2->execute();
  // Mostramos los resultados
  while ($row2 = $sth2->fetch()){

    $data[] =array(
        'fecha' => $row2['fecha'],
        'pregunta' => $row2['pregunta'],
        'respuesta' => $row2['respuesta'],
    );
    }

  	$json_data = array(
    "items" => $data);
    echo json_encode($json_data);
}

elseif($postjson=='subir_documento_actualizacion'){
    error_log("Iniciando subir_documento_actualizacion");
    error_log("POST data: " . print_r($_POST, true));
    error_log("FILES data: " . print_r($_FILES, true));

    try {
        // Verificar que los datos necesarios estén presentes
        if (!isset($_POST['rut']) || !isset($_POST['tipo_documento']) || !isset($_FILES['archivo']) || !isset($_POST['apellido_paterno']) || !isset($_POST['nombres'])) {
            throw new Exception('Faltan datos requeridos');
        }

        $rut = formatearRut($_POST['rut']);
        $apellido_paterno = strtoupper($_POST['apellido_paterno']);
        $nombres = $_POST['nombres'];
        error_log("RUT formateado: " . $rut);
        error_log("Apellido paterno: " . $apellido_paterno);
        error_log("Nombres: " . $nombres);
        
        // Crear directorio base si no existe
        $base_dir = 'actualizacion_trabajadores';
        if (!file_exists($base_dir)) {
            if (!mkdir($base_dir, 0777, true)) {
                throw new Exception('Error al crear directorio base');
            }
            error_log("Directorio base creado: " . $base_dir);
        }

        // Crear directorio del trabajador usando RUT y apellido paterno
        $worker_dir = $base_dir . '/' . $rut . '_' . $apellido_paterno;
        if (!file_exists($worker_dir)) {
            if (!mkdir($worker_dir, 0777, true)) {
                throw new Exception('Error al crear directorio del trabajador');
            }
            error_log("Directorio del trabajador creado: " . $worker_dir);
        }

        // Procesar el archivo subido
        $file = $_FILES['archivo'];
        $tipo_documento = $_POST['tipo_documento'];
        
        // Generar el nombre del archivo según el tipo de documento
        $nombre_archivo = $rut . '_' . $apellido_paterno . '_' . $tipo_documento . '.jpg';
        $ruta_completa = $worker_dir . '/' . $nombre_archivo;
        
        // Determinar el campo a actualizar en la base de datos
        $campo_bd = '';
        switch($tipo_documento) {
            case 'perfil':
                $campo_bd = 'foto_perfil';
                break;
            case 'carnet_frontal':
                $campo_bd = 'carnet_frontal';
                break;
            case 'carnet_reverso':
                $campo_bd = 'carnet_reverso';
                break;
            case 'licencia_frontal':
                $campo_bd = 'licencia_frontal';
                break;
            case 'licencia_reverso':
                $campo_bd = 'licencia_reverso';
                break;
            case 'firma':
                $campo_bd = 'firma_digital';
                break;
            default:
                throw new Exception('Tipo de documento no válido');
        }

        error_log("Intentando mover archivo a: " . $ruta_completa);

        if (move_uploaded_file($file['tmp_name'], $ruta_completa)) {
            error_log("Archivo movido exitosamente");

            // Actualizar la base de datos con el nombre del archivo
            $stmt = $dbh2->prepare("SELECT id_actualizacion FROM actualizacion_trabajadores WHERE rut = ?");
            $stmt->execute([$rut]);
            
            if ($stmt->rowCount() > 0) {
                $update_sql = "UPDATE actualizacion_trabajadores SET $campo_bd = ?, nombres = ?, apellido_paterno = ?, fecha_actualizacion = NOW() WHERE rut = ?";
                $stmt = $dbh2->prepare($update_sql);
                $stmt->execute([$nombre_archivo, $nombres, $apellido_paterno, $rut]);
            } else {
                $insert_sql = "INSERT INTO actualizacion_trabajadores (rut, nombres, apellido_paterno, $campo_bd, fecha_creacion) VALUES (?, ?, ?, ?, NOW())";
                $stmt = $dbh2->prepare($insert_sql);
                $stmt->execute([$rut, $nombres, $apellido_paterno, $nombre_archivo]);
            }

            $response = array(
                'items' => array(
                    array(
                        'respuesta' => 'ok',
                        'mensaje' => 'Documento subido correctamente',
                        'ruta' => $ruta_completa
                    )
                )
            );
        } else {
            throw new Exception('Error al mover el archivo subido');
        }

    } catch (Exception $e) {
        error_log("Error en subir_documento_actualizacion: " . $e->getMessage());
        $response = array(
            'items' => array(
                array(
                    'respuesta' => 'error',
                    'mensaje' => $e->getMessage(),
                    'ruta' => null
                )
            )
        );
    }

    header('Content-Type: application/json');
    echo json_encode($response);
}

elseif($postjson=='obtener_estado_actualizacion_documentos'){
    try {
        error_log("Recibiendo petición obtener_estado_actualizacion_documentos");
        error_log("GET params: " . print_r($_GET, true));
        
        if (!isset($_GET['rut']) || empty($_GET['rut'])) {
            throw new Exception("RUT no proporcionado");
        }
        
        $rut = $_GET['rut'];
        $rut_formateado = formatearRut($rut);
        error_log("RUT recibido: $rut, RUT formateado: $rut_formateado");

        // Obtener el apellido paterno
        $stmt = $dbh2->prepare("SELECT apellido_paterno FROM actualizacion_trabajadores WHERE rut = ?");
        $stmt->execute([$rut_formateado]);
        $apellido_paterno = $stmt->fetchColumn();
        $apellido_paterno = strtoupper($apellido_paterno);
        
        // Verificar si existe el directorio del trabajador
        $directorio_trabajador = "actualizacion_trabajadores/" . $rut_formateado . "_" . $apellido_paterno;
        $directorio_existe = file_exists($directorio_trabajador) && is_dir($directorio_trabajador);
        error_log("Verificando directorio: $directorio_trabajador - Existe: " . ($directorio_existe ? "Sí" : "No"));
        
        // Usar la conexión PDO existente ($dbh2) y la tabla correcta con todos los campos
        $query = "SELECT 
            id_actualizacion,
            rut,
            nombres,
            apellido_paterno,
            apellido_materno,
            foto_perfil,
            carnet_frontal,
            carnet_reverso,
            licencia_frontal,
            licencia_reverso,
            firma_digital,
            fecha_creacion,
            fecha_actualizacion,
            estado
        FROM actualizacion_trabajadores 
        WHERE rut = :rut";
        
        $stmt = $dbh2->prepare($query);
        $stmt->bindParam(':rut', $rut_formateado);
        $stmt->execute();
        
        $result = array();
        
        if($stmt->rowCount() > 0){
            while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
                // Construir rutas completas de los archivos
                $base_path = "actualizacion_trabajadores/" . $rut_formateado . "_" . strtoupper($row['apellido_paterno']);
                
                // Obtener los nombres de archivo de la base de datos
                $foto_perfil_path = $row['foto_perfil'] ? $base_path . "/" . $row['foto_perfil'] : "";
                $carnet_frontal_path = $row['carnet_frontal'] ? $base_path . "/" . $row['carnet_frontal'] : "";
                $carnet_reverso_path = $row['carnet_reverso'] ? $base_path . "/" . $row['carnet_reverso'] : "";
                $licencia_frontal_path = $row['licencia_frontal'] ? $base_path . "/" . $row['licencia_frontal'] : "";
                $licencia_reverso_path = $row['licencia_reverso'] ? $base_path . "/" . $row['licencia_reverso'] : "";
                $firma_digital_path = $row['firma_digital'] ? $base_path . "/" . $row['firma_digital'] : "";
                
                // Construir array de documentos subidos
                $docs_subidos = array();
                
                // Verificar la existencia real de cada archivo
                if($row['foto_perfil'] && file_exists($base_path . "/" . $row['foto_perfil'])) {
                    $docs_subidos[] = $row['foto_perfil'];
                }
                if($row['carnet_frontal'] && file_exists($base_path . "/" . $row['carnet_frontal'])) {
                    $docs_subidos[] = $row['carnet_frontal'];
                }
                if($row['carnet_reverso'] && file_exists($base_path . "/" . $row['carnet_reverso'])) {
                    $docs_subidos[] = $row['carnet_reverso'];
                }
                if($row['licencia_frontal'] && file_exists($base_path . "/" . $row['licencia_frontal'])) {
                    $docs_subidos[] = $row['licencia_frontal'];
                }
                if($row['licencia_reverso'] && file_exists($base_path . "/" . $row['licencia_reverso'])) {
                    $docs_subidos[] = $row['licencia_reverso'];
                }
                if($row['firma_digital'] && file_exists($base_path . "/" . $row['firma_digital'])) {
                    $docs_subidos[] = $row['firma_digital'];
                }
                
                // Log para debug
                error_log("Base path: " . $base_path);
                error_log("Documentos encontrados: " . print_r($docs_subidos, true));
                
                array_push($result, array(
                    'id' => $row['id_actualizacion'],
                    'rut' => $row['rut'],
                    'nombres' => $row['nombres'],
                    'apellido_paterno' => $row['apellido_paterno'],
                    'apellido_materno' => $row['apellido_materno'],
                    'foto_perfil' => $foto_perfil_path,
                    'carnet_frontal' => $carnet_frontal_path,
                    'carnet_reverso' => $carnet_reverso_path,
                    'licencia_frontal' => $licencia_frontal_path,
                    'licencia_reverso' => $licencia_reverso_path,
                    'firma_digital' => $firma_digital_path,
                    'fecha_creacion' => $row['fecha_creacion'],
                    'fecha_actualizacion' => $row['fecha_actualizacion'],
                    'estado' => $row['estado'],
                    'documentos_subidos' => implode(',', array_map(function($doc) {
                        return basename($doc, '.jpg');
                    }, $docs_subidos))
                ));
            }
            error_log("Registros encontrados en BD: " . $stmt->rowCount());
        } else if ($directorio_existe) {
            try {
                // Intentar insertar un nuevo registro
                $insert_query = "INSERT INTO actualizacion_trabajadores 
                    (rut, estado, fecha_creacion) 
                    VALUES (:rut, 0, NOW())";
                $insert_stmt = $dbh2->prepare($insert_query);
                $insert_stmt->bindParam(':rut', $rut_formateado);
                $insert_stmt->execute();
                
                array_push($result, array(
                    'id' => $dbh2->lastInsertId(),
                    'rut' => $rut_formateado,
                    'nombres' => '',
                    'apellido_paterno' => '',
                    'apellido_materno' => '',
                    'foto_perfil' => '',
                    'carnet_frontal' => '',
                    'carnet_reverso' => '',
                    'licencia_frontal' => '',
                    'licencia_reverso' => '',
                    'firma_digital' => '',
                    'fecha_creacion' => date('Y-m-d H:i:s'),
                    'fecha_actualizacion' => null,
                    'estado' => 0,
                    'documentos_subidos' => ''
                ));
                error_log("Nuevo registro creado en BD para el directorio existente");
            } catch (Exception $e) {
                error_log("Error al crear nuevo registro: " . $e->getMessage());
                array_push($result, array(
                    'id' => 0,
                    'rut' => $rut_formateado,
                    'nombres' => '',
                    'apellido_paterno' => '',
                    'apellido_materno' => '',
                    'foto_perfil' => '',
                    'carnet_frontal' => '',
                    'carnet_reverso' => '',
                    'licencia_frontal' => '',
                    'licencia_reverso' => '',
                    'firma_digital' => '',
                    'fecha_creacion' => date('Y-m-d H:i:s'),
                    'fecha_actualizacion' => null,
                    'estado' => 0,
                    'documentos_subidos' => ''
                ));
            }
        }
        
        $response = array(
            'status' => 'OK',
            'message' => 'Datos obtenidos correctamente',
            'items' => $result
        );
        
    } catch (Exception $e) {
        error_log("Error en obtener_estado_actualizacion_documentos: " . $e->getMessage());
        $response = array(
            'status' => 'ERROR',
            'message' => $e->getMessage(),
            'items' => array()
        );
    }
    
    header('Content-Type: application/json');
    echo json_encode($response);
}

elseif($postjson=='actualizar_estado_documentos'){
    $rut = $_GET["rut"];
    $estado = $_GET["estado"]; // 0: En proceso, 1: Terminado
    
    try {
        $sth2 = $dbh2->prepare("UPDATE actualizacion_trabajadores 
            SET estado = ?, fecha_actualizacion = NOW()
            WHERE rut = ?");
        
        $sth2->bindParam(1, $estado);
        $sth2->bindParam(2, $rut);
        
        if($sth2->execute()) {
            if($sth2->rowCount() > 0) {
                $data[] = array(
                    'respuesta' => "ok",
                    'mensaje' => "Estado actualizado correctamente"
                );
            } else {
                $data[] = array(
                    'respuesta' => "error",
                    'mensaje' => "No se encontró el registro para actualizar"
                );
            }
        } else {
            $data[] = array(
                'respuesta' => "error",
                'mensaje' => "Error al actualizar el estado"
            );
        }
    } catch (PDOException $e) {
        $data[] = array(
            'respuesta' => "error",
            'mensaje' => "Error en la base de datos: " . $e->getMessage()
        );
    }
    
    $json_data = array(
        "items" => $data
    );
    echo json_encode($json_data);
}

// Agregar antes del último  las siguientes funciones
function formatearRut($rut) {
    // Eliminar puntos y guión si existen
    $rut = str_replace(['.', '-'], '', $rut);
    
    // Separar cuerpo y dígito verificador
    $cuerpo = substr($rut, 0, -1);
    $dv = substr($rut, -1);
    
    // Formatear el cuerpo con puntos
    $len = strlen($cuerpo);
    $cuerpo_formateado = '';
    
    while($len > 3) {
        $cuerpo_formateado = '.' . substr($cuerpo, $len - 3, 3) . $cuerpo_formateado;
        $len -= 3;
    }
    $cuerpo_formateado = substr($cuerpo, 0, $len) . $cuerpo_formateado;
    
    // Retornar RUT formateado
    return $cuerpo_formateado . '-' . $dv;
}

function validarRut($rut) {
    // Eliminar puntos y guión
    $rut = str_replace(['.', '-'], '', $rut);
    
    // Obtener cuerpo y dígito verificador
    $cuerpo = substr($rut, 0, -1);
    $dv = strtoupper(substr($rut, -1));
    
    // Calcular dígito verificador
    $suma = 0;
    $multiplo = 2;
    
    for($i = strlen($cuerpo) - 1; $i >= 0; $i--) {
        $suma += intval($cuerpo[$i]) * $multiplo;
        $multiplo = $multiplo == 7 ? 2 : $multiplo + 1;
    }
    
    $dvEsperado = 11 - ($suma % 11);
    
    if($dvEsperado == 11) {
        $dvEsperado = '0';
    } elseif($dvEsperado == 10) {
        $dvEsperado = 'K';
    } else {
        $dvEsperado = strval($dvEsperado);
    }
    
    return $dv == $dvEsperado;
}

function obtener_estado_actualizacion_documentos($rut) {
    global $mysqli;
    
    try {
        // Formatear el RUT para la consulta
        $rut = formatearRut($rut);
        
        // Consultar el estado actual
        $query = "SELECT estado, documentos_subidos FROM actualizacion_trabajadores WHERE rut = ?";
        $stmt = $mysqli->prepare($query);
        $stmt->bind_param("s", $rut);
        $stmt->execute();
        $result = $stmt->get_result();
        
        $response = array();
        $response['items'] = array();
        
        if ($result->num_rows > 0) {
            while ($row = $result->fetch_assoc()) {
                $item = array(
                    'estado' => intval($row['estado']),
                    'documentos_subidos' => $row['documentos_subidos']
                );
                array_push($response['items'], $item);
            }
        }
        
        // Asegurar que siempre devolvemos un JSON válido
        header('Content-Type: application/json');
        echo json_encode($response);
        
    } catch (Exception $e) {
        // En caso de error, devolver un JSON con el mensaje de error
        header('Content-Type: application/json');
        echo json_encode(array(
            'error' => true,
            'message' => $e->getMessage(),
            'items' => array()
        ));
    }
}

?>
