<?php
	
date_default_timezone_set ( "America/Lima" );
define( 'SF_ROOT_DIR', "../" );
define( 'SF_APP',      'sys' );
require_once( SF_ROOT_DIR.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php' );


 

header("Content-type: application/json; charset=utf-8");

$content = trim(file_get_contents("php://input"));

$url_base = "http://www.akistah.com";

//Attempt to decode the incoming RAW post data from JSON.
$decoded = json_decode($content, true);

$_POST = $decoded;

$j_datos = $_POST;

$o_datos = $j_datos['datos'];

//print_r($o_datos);


$cadena_log = json_encode($_POST);
guardar_log($cadena_log,'planilla');

function guardar_log($cadena_log,$tipo){

	$con = Conexion::getConexion();
	$sql = "INSERT INTO
            cr_wslog
            (idlog,cadena,fecharegistro,tipo)
            VALUES
            (null,'".$cadena_log."',now(),'planilla')"
	;
	
	$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
}


function obternerColaboradorAsistencia($idsede,$incluye_administrador=1){
										
	$con = Conexion::getConexion();
	if($idsede){
	    $sql = "	( SELECT `Nombres`,`ApellidoPaterno`,`ApellidoMaterno`,`dni`,`FlagEstadoAsistencia`,`IdPadre` ,`idrol` ,`idsucursal`
					FROM `cr_colaborador` 
					LEFT JOIN cr_sucursal on cr_sucursal.idadministrador = cr_colaborador.idpadre
					WHERE 1 
							and cr_colaborador.eliminado='0'
							and cr_sucursal.eliminado='0'
							and idrol<>'sys.gen'
							and FlagEstadoAsistencia <> 'X'
							and cr_sucursal.idsucursal = '".$idsede."'
					)
	            ";
	            
	    if($incluye_administrador){
	    	$sql .= "
	    			union
	    			(
	    			SELECT `Nombres`,`ApellidoPaterno`,`ApellidoMaterno`,`dni`,`FlagEstadoAsistencia`,`IdPadre` ,`idrol` ,`idsucursal`
					FROM `cr_colaborador` 
					LEFT JOIN cr_sucursal on cr_sucursal.idadministrador = cr_colaborador.idcolaborador
					WHERE 1 
							and cr_colaborador.eliminado='0'
							and cr_sucursal.eliminado='0'
							and idrol<>'sys.gen'
							and FlagEstadoAsistencia <> 'X'
							and cr_sucursal.idsucursal = '".$idsede."'
					)
							
	            ";
	    }
		//echo $sql;  	
		$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
		$num_rows = mysql_num_rows($result);
		//$a_empleados = array();
		if($num_rows>0){
			$i = 1;
	     	while ($o_valor = mysql_fetch_object($result)) {
			     $a_empleadosX[$i]['dni'] = $o_valor->dni;
			     $a_empleadosX[$i]['nombres'] = $o_valor->Nombres;
			     $a_empleadosX[$i]['apellido_paterno'] = utf8_encode($o_valor->ApellidoPaterno);
			     $a_empleadosX[$i]['apellido_materno'] = utf8_encode($o_valor->ApellidoMaterno);
			     $a_empleadosX[$i]['estado'] = $o_valor->FlagEstadoAsistencia;
			     $a_empleadosX[$i]['idsede'] = $o_valor->idsucursal;
				 $i++;
				
			 }
	    }
	}
    return $a_empleadosX;
}


function saveAsistencia($dni,$fecharegistro,$fecha,$hora_minuto_pactado,$hora,$tipo_registro,$tipo_entrada,$idsede,$idasistencia,$idmarcacion){

	
	$con = Conexion::getConexion();
	
	$sql = "	SELECT idcolaborador,sueldo
				FROM `cr_colaborador` 
				WHERE 1 
						and dni	=	'".$dni."'
						and eliminado = '0'
            ";
	//echo $sql;  	
	$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
	$num_rows = mysql_num_rows($result);
	//$a_empleados = array();
	if($num_rows>0){
		$i = 1;
     	while ($o_valor = mysql_fetch_object($result)) {
		     $idcolaborador = $o_valor->idcolaborador;
		     $sueldo 		= $o_valor->sueldo;
		}
	}	 
	
	
	
	if($idcolaborador){
		
		$sql = "	SELECT *
					FROM `cr_asistencia` 
					WHERE 1 
							and IdAsistenciaRef	=	'".$idasistencia."'
							and IdSucursal		=	'".$idsede."'
							
	            ";
		//echo $sql;  	
		//and IdAsistenciaRef	=	'".$idasistencia."'
		$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
		$num_rows = mysql_num_rows($result);
		//$a_empleados = array();
		
		
		
		
		
		if($num_rows == 0){
			
			$monto = "0.00";
			
			if($tipo_entrada == "T"){
				$monto = "5";
			}else{
				
				$sql = "	SELECT *
							FROM `rh_marcacion_colaborador` 
								WHERE 1 
								and idregistro		=	'".$idmarcacion."'
								and idcolaborador	=	'".$idcolaborador."'
								and estado			=	'A'
							order by secuencia
						";
				//echo $sql;  	
				$result2 = mysql_db_query(Conexion::getNameDb(), $sql, $con);
				$num_rows2 = mysql_num_rows($result2);
				//echo "date marco ";
				$date_marco = $fecha." ".$hora; //2019-04-05 09:25
				if($num_rows2>0){
					$i = 1;
					while ($o_valor2 = mysql_fetch_object($result2)) {
						 $secuencia		 		= $o_valor2->secuencia;
						 $horaminutodesde 		= $o_valor2->horaminutodesde;
						 $horaminutohasta 		= $o_valor2->horaminutohasta;
						 
						 //echo "fecah desde";
						 $fecha_desde			= $fecha." ".$horaminutodesde.":00";
						 //echo "fecah hasta";
						 $fecha_hasta			= $fecha." ".$horaminutohasta.":00";
						 //echo $fecha_hasta."<br>";
						 
						 //echo $date_marco ." > ". $fecha_desde ."&&". $date_marco ."<=". $fecha_hasta."<br>";
						 if($date_marco > $fecha_desde && $date_marco <= $fecha_hasta){
							$tipo_entrada 		= $o_valor2->idtipo;
							$monto 				= $o_valor2->montodescuento;
						 }else{
						 	if($secuencia == "1" && $date_marco < $fecha_desde){ //Ingreso demasiado temprano
						 		$tipo_entrada 		= $o_valor2->idtipo;
						 		$fecha_desde 		= $fecha_desde;
						 	}
						 }
						 //echo "<br>";
					}
				}	 
				
								
			}
			
			
			$sql = "	INSERT INTO cr_asistencia
						(IdAsistencia,IdColaborador,TipoRegistro,TipoAsistencia,Estado,Fecha,HoraMinuto,HoraMinutoPactado,IdAsistenciaRef,IdSucursal,Monto,UsuarioCreacion,FechaCreacion)
						VALUES
						(null,'".$idcolaborador."','".$tipo_registro."','".$tipo_entrada."','A','".$fecha."','".$fecharegistro."','".$fecha_desde."','".$idasistencia."','".$idsede."','".$monto."','monitor-".$idsede."','".date('Y-m-d H:i:s')."')
					";
			 echo $sql."<br>";
			$resulti = mysql_db_query(Conexion::getNameDb(), $sql, $con);
			if($resulti){
				return true;
			}else{
				return false;
			}
			
		}else{
			return false;
		}
			
		
		
	}else{
		return false;
	}
    
}

//echo $o_datos['metodo']."*****************************";

if(isset($o_datos['metodo']) && $o_datos['metodo'] == 'actualizar_datos_empleado'){
   
   
    /*
    LISTAR AQUI LOS EMPLEADOS Y USAR EL ESQUEMA INDICADO
    
    Los parámetros de entrada son:
    metodo: actualizar_datos_empleado
    idsede: 1  (se indicará el id de la sede de la cual se desea actualizar la información de los empleados)
    
    ESTADO: N, para empleados nuevos
    ESTADO: A, para activar empleados existentes
    ESTADO: S, para suspender empleados existentes
    
    OJO: si el dni ya existe y se envía estado = N, no se hace nada pues ya existe el empleado
    */
    
    //listar empleados
	//echo "*******************************";
	$idsede = $o_datos['idsede'];
	$a_empleados = obternerColaboradorAsistencia($idsede,1);
		
	$a_resultado['estado'] = "1";
	$a_resultado['mensaje'] = "Exito";
    $a_resultado["empleados"] = $a_empleados;

    if(is_array($a_resultado)){
        $a_respuesta = $a_resultado;
        print html_entity_decode(json_encode($a_respuesta,JSON_FORCE_OBJECT));
    }

    //echo "*******************************";
    
}elseif(isset($o_datos['metodo']) && $o_datos['metodo'] == 'cerrar_estado'){
	
	$idsede = $o_datos['idsucursal'];

	$con = Conexion::getConexion();
	
	$sql = "	SELECT IdAdministrador 
				FROM  cr_sucursal
				WHERE 	IdSucursal = '".$idsede."'

            ";
	//echo $sql;  	
	$result2 = mysql_db_query(Conexion::getNameDb(), $sql, $con);
	
	$num_rows2 = mysql_num_rows($result2);
	//echo "date marco ";
	$date_marco = $fecha." ".$hora; //2019-04-05 09:25
	if($num_rows2>0){
		$i = 1;
		while ($o_valor2 = mysql_fetch_object($result2)) {
			$IdPadre= $o_valor2->IdAdministrador;
		}
	}
	
	
    $sql = "	UPDATE `cr_colaborador` 
				SET 	FlagEstadoAsistencia = 'X'
				WHERE 	IdPadre = '".$IdPadre."' or idcolaborador = '".$IdPadre."'

            ";
	//echo $sql;  	
	$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
	

}elseif(isset($o_datos['metodo']) && $o_datos['metodo'] == 'registro_asistencia'){
	
	
	if(is_array($o_datos['asistencias'])){
		$asistencias = $o_datos['asistencias'];
		foreach($asistencias as $key => $temp){
			$dni 			= $temp['dni'];
			$idasistencia 	= $temp['idasistencia'];
			if(strlen($dni) != 8){
				$a_registroserrados[] = $idasistencia;
				continue;
			}
			
			$fecharegistro			= $temp['fecharegistro'];
			$fecha 					= $temp['fecha'];
			$horapactado 			= $temp['horapactado'];
			$hora 					= $temp['hora'];
			$tipo_registro 			= $temp['tipo_registro'];
			$tipo_entrada 			= $temp['tipo_entrada'];
			$hora_minuto_pactado 	= $temp['hora_minuto_pactado'];
			
			$con = Conexion::getConexion();
			
			$sql = "	SELECT *
						FROM `rh_marcacion_registro` 
						WHERE 1 
								and idequivalencia	=	'".$tipo_registro."'
					";
			
			$result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
			$num_rows = mysql_num_rows($result);
			
			if($num_rows>0)
			{
				
				while ($o_valor = mysql_fetch_object($result)) {
					$idmarcacion = $o_valor->idregistro;
				}
				
				//echo "Id Marcacion:".$idmarcacion."<br>";
			
				if(!$hora_minuto_pactado){
					$hora_minuto_pactado = $fecha." 09:15:00";
				}
				
				$idsede 		= $temp['idsede'];
				
				//echo "********************************";
				
				if(!$dni){
					$a_registroserrados[] = $idasistencia;
					continue;
				}
				if(!$fecharegistro){
					$a_registroserrados[] = $idasistencia;
					
					
					continue;
				}
				if(!$tipo_registro){
					
					$a_registroserrados[] = $idasistencia;
					continue;
				}
				
				
				$resultado = saveAsistencia($dni,$fecharegistro,$fecha,$hora_minuto_pactado,$hora,$tipo_registro,$tipo_entrada,$idsede,$idasistencia,$idmarcacion);
				
				
				if($resultado){
					
				}else{
					$a_registroserrados[] = $idasistencia;
				}
				
				//echo "333333333333333333333333333";
			}
			
			
		}
		
		if(is_array($a_registroserrados)){
			$a_registroserrados = "";
			$a_resultado["resultado"]['a_registroserrados'] = $a_registroserrados;
			$a_resultado["resultado"]['mensaje'] 			= "No se registraron correctamente las asistencias";
			$a_resultado["resultado"]['error_code'] 		= "0";
			
		}else{
			$a_resultado["resultado"]['mensaje'] 		= "Las asistencias se registraron correctamente";
			$a_resultado["resultado"]['error_code'] 	= "1";		
		}
		
	}else{
		$a_resultado["resultado"]['mensaje'] 		= "No hay registros de asistencia a adicionar";
		$a_resultado["resultado"]['error_code'] 	= "1";		
	}
		
	
	
    
    //la estructura a recibir será esta
    /*
    {"datos":
        {
        "metodo":"registro_asistencia",
        "asistencias":
            {
            "1":
                {"dni":"12345678","fecha":"2018-11-18","hora":"08:10","tipo_registro":"1","tipo_entrada":"","idsede":"1", "idasistencia":"1"},
            "2":
                {"dni":"00555555","fecha":"2018-11-18","hora":"08:00","tipo_registro":"1","tipo_entrada":"","idsede":"1", "idasistencia":"2"},
            "3":
                {"dni":"12345670","fecha":"2018-11-18","hora":"08:40","tipo_registro":"1","tipo_entrada":"","idsede":"1", "idasistencia":"3"}
            }
        }
    }
    
    data: 
		{"datos":
		{"metodo":"registro_asistencia",

		"asistencias":

		{"6":
		{"idasistencia":"6",
		"idsede":"1",
		"dni":"43785417",
		"tipo_registro":"1",
		"fecharegistro":"2018-11-27 08:57:39",
		"fecha":"2018-11-27",
		"hora":"08:57:39",
		"tipo_entrada":"N"
		},

"9":{"idasistencia":"9","idsede":"1","dni":"98557444","tipo_registro":"1","fecharegistro":"2018-11-27 09:12:58","fecha":"2018-11-27","hora":"09:12:58","tipo_entrada":"N"}

}}}
    
    Donde:
    tipo_registro:
    1: Ingreso a la Empresa | 3: Salida por Refrigerio | 4: Regreso de Refrigerio | 5: Salida por Comisión o asunto personal | 6: Regreso de Comisión o asunto personal | 7: Salida de la Empresa

    tipo_entrada:
    F: Falta, 
    T: Tardanza, 
    N: Normal, 
    en blanco si no se configuraron horarios
    */
    
    //respuesta a devolver
    //caso exito
    /*
    $a_resultado["resultado"]['mensaje'] = "Las asistencias se registraron correctamente";
    $a_resultado["resultado"]['error_code'] = "1";
	*/
    /*
    //caso error
    $a_resultado["resultado"]['mensaje'] = "No se registraron correctamente las asistencias";
    $a_resultado["resultado"]['error_code'] = "0";
    */
    
    if(is_array($a_resultado)){
        $a_respuesta = $a_resultado;
        print json_encode($a_respuesta);
    }
	
    
}




