<?php 
	require_once "conexion.php";
	require_once "conexion.svrppal.php";
	require_once "conexion.mails.php";
	require_once "conexionBritish.php";
	require_once "conexion.svrpruebas.php";
	require_once "conexion.svrdatos.php";

	class ModeloPersonal
	{
		
		/*=====================================================================================
		CONSULTA HERRAMIENTA CON CIERTOS REQUISITOS RECIBIDOS COMO PARAMETRO.
		=====================================================================================*/
		public function mdlConsultaHerramientas($tipo, $desde, $hasta){

			$query = "SELECT * FROM gestion_humana_herramientas_personal WHERE estado = 'A' AND tipo = '$tipo' LIMIT $desde, $hasta";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->execute();

			return $sql; 

		}

		/*===================================================================================
		CONSULTA TODAS LA HERRAMIENTAS REGISTRADAS CUYO ESTADO ES A (Activo)
		=====================================================================================*/
		public function mdlConsultaTodaHerramienta(){

			$query = "SELECT * FROM gestion_humana_herramientas_personal WHERE estado = 'A'";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->execute();

			return $sql; 

		}


		/*=====================================================================================
		REGISTRA SOLICITUD DE CONTRATACIÓN.		
		=====================================================================================*/
		public function mdlRegistraSolicitudContratacion($datos){

			$query = "INSERT INTO gestion_humana_solicitud_contratacion (id, cod_tarea, fecha_creacion, usuario_crea, nit_solicitante, nombre_solicitante, correo_solicitante, celular_solicitante, estado, empresa,sede, id_cargo, tipo_tecnico, tipo_asesor, tipo_solicitud, nit_empleado_transferir, cargo_solicitado, centro_costo, planta, nit_jefe_imediato, cargo_jefe, motivo, justificacion_requerimiento, nit_empleado_remplazado, salario, requisitos_adicionales, cuales_requisitos, prueba_tecnica, nit_candidato_interno1, nombre_candidato_interno1, nit_candidato_interno2, nombre_candidato_interno2, nit_candidato_externo1, nombre_candidato_externo1, nit_candidato_externo2, nombre_candidato_externo2, otras_herramientas)VALUES(:id, :cod_tarea, :fecha_creacion, :usuario_crea, :nit_solicitante, :nombre_solicitante, :correo_solicitante, :celular_solicitante, :estado, :empresa, :sede, :id_cargo, :tipo_tecnico, :tipo_asesor, :tipo_solicitud, :nit_empleado_transferir, :cargo_solicitado, :centro_costo, :planta, :nit_jefe_imediato, :cargo_jefe, :motivo, :justificacion_requerimiento, :nit_empleado_remplazado, :salario, :requisitos_adicionales, :cuales_requisitos, :prueba_tecnica, :nit_candidato_interno1, :nombre_candidato_interno1, :nit_candidato_interno2, :nombre_candidato_interno2, :nit_candidato_externo1, :nombre_candidato_externo1, :nit_candidato_externo2, :nombre_candidato_externo2, :otras_herramientas)";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->bindParam(":id", $datos['id']);
			$sql->bindParam(":cod_tarea", $datos['cod_tarea']);
			$sql->bindParam(":fecha_creacion", $datos['fecha_creacion']);
			$sql->bindParam(":usuario_crea", $datos['usuario']);
			$sql->bindParam(":nit_solicitante", $datos['nit_solicitante']);
			$sql->bindParam(":nombre_solicitante", $datos['nombre_solicitante']);
			$sql->bindParam(":correo_solicitante", $datos['correo_solicitante']);
			$sql->bindParam(":celular_solicitante", $datos['celular_solicitante']);
			$sql->bindParam(":estado", $datos['estado']);
			$sql->bindParam(":empresa", $datos['empresa']);
			$sql->bindParam(":sede", $datos['sede']);
			$sql->bindParam(":id_cargo", $datos['cargo']);
			$sql->bindParam(":tipo_tecnico", $datos['tecnico']);
			$sql->bindParam(":tipo_asesor", $datos['asesor']);
			$sql->bindParam(":tipo_solicitud", $datos['tipo_solicitud']);
			$sql->bindParam(":nit_empleado_transferir", $datos['nit_empleado']);
			$sql->bindParam(":cargo_solicitado", $datos['cargo_solicitado']);
			$sql->bindParam(":centro_costo", $datos['centro_costo']);
			$sql->bindParam(":planta", $datos['planta']);
			$sql->bindParam(":nit_jefe_imediato", $datos['nit_jefe']); //Falta
			$sql->bindParam(":cargo_jefe", $datos['cargo_jefe']); //Falta
			$sql->bindParam(":motivo", $datos['motivo_reqisicion']);
			$sql->bindParam(":justificacion_requerimiento", $datos['justificacion_requerimiento']);
			$sql->bindParam(":nit_empleado_remplazado", $datos['remplaza_a']);
			$sql->bindParam(":salario", $datos['salario']);
			$sql->bindParam(":requisitos_adicionales", $datos['requisito_adicional']);
			$sql->bindParam(":cuales_requisitos", $datos['cuales_requiritos_adicioneles']);
			$sql->bindParam(":prueba_tecnica", $datos['requiere_prueba_tecnica']);
			$sql->bindParam(":nit_candidato_interno1", $datos['nit_candidato_interno1']);
			$sql->bindParam(":nombre_candidato_interno1", $datos['nombre_candidato_interno1']);
			$sql->bindParam(":nit_candidato_interno2", $datos['nit_candidato_interno2']);
			$sql->bindParam(":nombre_candidato_interno2", $datos['nombre_candidato_interno2']);
			$sql->bindParam(":nit_candidato_externo1", $datos['nit_candidato_externo1']);
			$sql->bindParam(":nombre_candidato_externo1", $datos['nombre_candidato_externo1']);
			$sql->bindParam(":nit_candidato_externo2", $datos['nit_candidato_externo2']);
			$sql->bindParam(":nombre_candidato_externo2", $datos['nombre_candidato_externo2']);
			$sql->bindParam(":otras_herramientas", $datos['otras_herramientas']);

			$sql->execute();

			return $sql; 

		}

		/*=====================================================================================
		ACTUALIZA SOLICITUD DE CONTRATACIÓN.		
		=====================================================================================*/
		public function mdlActualizaSolicitudContratacion($id_solicitud, $codigo_tarea){

			$query = "UPDATE gestion_humana_solicitud_contratacion SET cod_tarea = '$codigo_tarea' WHERE id = '$id_solicitud'";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->execute();

			return $sql; 

		}

		/*=====================================================================================
		REGISTRA DETALLE DE HERRAMIENTAS
		=====================================================================================*/
		public function mdlRegistraDetalleHerramienta($id_solicitud_contratacion, $id_herramienta, $nombre_herramienta, $observacion, $requerido){

			$query = "INSERT INTO gestion_humana_solicitud_contratacion_detalle (id_solicitud_contratacion, id_herramienta, nombre_herramienta, observacion, requerido)VALUES(:id_solicitud_contratacion, :id_herramienta, :nombre_herramienta, :observacion, :requerido)";

			$sql = ConexionMails::conectar()->prepare($query);
				
			$sql->bindParam(":id_solicitud_contratacion", $id_solicitud_contratacion);
			$sql->bindParam(":id_herramienta", $id_herramienta);
			$sql->bindParam(":nombre_herramienta", $nombre_herramienta);
			$sql->bindParam(":observacion", $observacion);
			$sql->bindParam(":requerido", $requerido);

			$sql->execute();

			return $sql;

		}

		/*=====================================================================================
		CONSULTA ID CONSECUTIVO DE LAS SOLICITUDES DE CONTRATACIÓN
		=====================================================================================*/
		public function mdlConsultaConsecutivoSolicitud(){

			$query = "SELECT MAX(id) as consecutivo FROM gestion_humana_solicitud_contratacion";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->execute();

			return $sql;

		}


		/*=====================================================================================
		CONSULTA EMPLEADOS
		=====================================================================================*/
		public function mdlListaEmpleados($nombre){

			$link = ConexionSVRPPAL::conectarAndar();
		
			$sql_orden = "SELECT * FROM v_gestor_personal_activo WHERE nombres_evaluado LIKE '%$nombre%' OR nit_evaluado LIKE '$nombre%'";
			
	    	$resultado = odbc_exec($link, $sql_orden);

	        return $resultado;

			odbc_close($link);

		}

		/*=====================================================================================
		CONSULTA CARGOS
		=====================================================================================*/
		public function mdlListarCargos($cargo){

			$link = ConexionSVRPPAL::conectarAndar();
		
			$sql_orden = "SELECT * FROM v_gestor_cargos WHERE descripcion LIKE '%$cargo%' ORDER BY descripcion ASC";
			
	    	$resultado = odbc_exec($link, $sql_orden);

	        return $resultado;

			odbc_close($link);

		}

		/*=====================================================================================
		CONSULTA CENTROS
		=====================================================================================*/
		public function mdlListarCentro($centro){

			$link = ConexionSVRPPAL::conectarAndar();
		
			$sql_orden = "SELECT * FROM v_gestor_centros_costo WHERE descripcion LIKE '%$centro%'";
			
	    	$resultado = odbc_exec($link, $sql_orden);

	        return $resultado;

			odbc_close($link);

		}

		/*=====================================================================================
		CONSULTA PLANTAS
		=====================================================================================*/
		public function mdlListarPlanta($planta){

			$link = ConexionSVRPPAL::conectarAndar();
		
			$sql_orden = "SELECT * FROM v_gestor_plantas WHERE descripcion LIKE '%$planta%'";
			
	    	$resultado = odbc_exec($link, $sql_orden);

	        return $resultado;

			odbc_close($link);

		}

		/*=============================================
		CONSULTA TAREAS
		=============================================*/
		public static function mdlConsultarTareas(){

			$query = "SELECT * FROM gestor_tareas";

			$link  = ConexionMails::conectar()->prepare($query);

			$link->execute();

			return $link;

		}

		/*=============================================
		REGISTRA TAREA
		=============================================*/
		public static function mdlRegistrarTarea($datos){

			$query  = "INSERT INTO gestor_tareas (codigo_tarea, titulo, tipo_tarea, creada_por, fecha_creacion, estado, responsable)VALUES (:codigo_tarea, :titulo, :tipo_tarea, :creada_por, :fecha_creacion, :estado, :responsable)";

			$link = ConexionMails::conectar()->prepare($query);

			$link->bindParam(":codigo_tarea", $datos['codigo_tarea'], PDO::PARAM_STR);
			$link->bindParam(":titulo", $datos['titulo'], PDO::PARAM_STR);
			$link->bindParam(":tipo_tarea", $datos['tipo_tarea']);
			$link->bindParam(":creada_por", $datos['creada_por'], PDO::PARAM_STR);
			$link->bindParam(":fecha_creacion", $datos['fecha_creacion'], PDO::PARAM_STR);
			$link->bindParam(":estado", $datos['estado'], PDO::PARAM_STR);
			$link->bindParam(":responsable", $datos['responsable'], PDO::PARAM_STR);
			$link->execute();

			return $link;

		}

		/*=============================================
		CONSULTAR TIPO TAREA
		=============================================*/
		public static function mdlConsultarTipoTarea($id_tipo_tarea){

			$query = "SELECT * FROM gestor_tipo_tarea WHERE id = :id_tipo_tarea";

			$link  = ConexionMails::conectar()->prepare($query);

			$link->bindParam(":id_tipo_tarea", $id_tipo_tarea, PDO::PARAM_INT);

			$link->execute();

			return $link;

		}

		/*=============================================
		LISTA TERCEROS
		=============================================*/
		public function mdlListaTerceros($tabla, $nombre){

			$stmt = ConexionSVRPPAL::conectarAndar();

			$sql_orden = "SELECT  TOP 100 * FROM $tabla WHERE nombres LIKE '%$nombre%' OR nit LIKE '$nombre%'";
			
			$resultado = odbc_exec($stmt, $sql_orden);		

			return $resultado;

			odbc_close($stmt);

		}

		/*==================================================================
		LISTA TAREAS
		==================================================================*/
		public function mdlMostrarTareas($datos){

			$fecha_actual = date('Y-m-d');

			if($datos['nit_responsable']!="" && $datos['tareas_futuras']!="" && $datos['tareas_finalizadas']!="" && $datos['tareas_canceladas']!=""){

				$query = "SELECT t.titulo, sc.nombre_solicitante, t.fecha_creacion, t.estado, t.codigo_tarea, t.tipo_tarea, t.creada_por, t.responsable FROM gestor_tareas t LEFT JOIN gestor_tipo_tarea tt ON tt.id = t.tipo_tarea LEFT JOIN gestion_humana_solicitud_contratacion sc ON t.codigo_tarea = sc.cod_tarea  WHERE t.responsable = ".$datos['nit_responsable'];

			}else if($datos['nit_responsable']!="" && $datos['tareas_futuras']!="" && $datos['tareas_finalizadas']!=""){

				$query = "SELECT t.titulo, sc.nombre_solicitante, t.fecha_creacion, t.estado, t.codigo_tarea, t.tipo_tarea, t.creada_por, t.responsable FROM gestor_tareas t LEFT JOIN gestor_tipo_tarea tt ON tt.id = t.tipo_tarea LEFT JOIN gestion_humana_solicitud_contratacion sc ON t.codigo_tarea = sc.cod_tarea  WHERE t.estado != 'Cancelada' AND t.responsable = ".$datos['nit_responsable'];

			}else if($datos['nit_responsable']!="" && $datos['tareas_futuras']!="" && $datos['tareas_canceladas']!=""){

				$query = "SELECT t.titulo, sc.nombre_solicitante, t.fecha_creacion, t.estado, t.codigo_tarea, t.tipo_tarea, t.creada_por, t.responsable FROM gestor_tareas t LEFT JOIN gestor_tipo_tarea tt ON tt.id = t.tipo_tarea LEFT JOIN gestion_humana_solicitud_contratacion sc ON t.codigo_tarea = sc.cod_tarea  WHERE t.estado != 'Finalizada' AND t.responsable = ".$datos['nit_responsable'];

			}else if($datos['tareas_futuras']!=""){

				$query = "SELECT t.titulo, sc.nombre_solicitante, t.fecha_creacion, t.estado, t.codigo_tarea, t.tipo_tarea, t.creada_por, t.responsable FROM gestor_tareas t LEFT JOIN gestor_tipo_tarea tt ON tt.id = t.tipo_tarea LEFT JOIN gestion_humana_solicitud_contratacion sc ON t.codigo_tarea = sc.cod_tarea WHERE t.estado != 'Finalizada' AND t.estado != 'Cancelada' AND t.responsable = ".$datos['nit_responsable'];

			}else if($datos['tareas_finalizadas']!=""){

				$query = "SELECT t.titulo, sc.nombre_solicitante, t.fecha_creacion, t.estado, t.codigo_tarea, t.tipo_tarea, t.creada_por, t.responsable FROM gestor_tareas t LEFT JOIN gestor_tipo_tarea tt ON tt.id = t.tipo_tarea LEFT JOIN gestion_humana_solicitud_contratacion sc ON t.codigo_tarea = sc.cod_tarea  WHERE t.estado = 'Finalizada' AND t.responsable = ".$datos['nit_responsable'];

			}else if($datos['tareas_canceladas']!=""){

				$query = "SELECT t.titulo, sc.nombre_solicitante, t.fecha_creacion, t.estado, t.codigo_tarea, t.tipo_tarea, t.creada_por, t.responsable FROM gestor_tareas t LEFT JOIN gestor_tipo_tarea tt ON tt.id = t.tipo_tarea LEFT JOIN gestion_humana_solicitud_contratacion sc ON t.codigo_tarea = sc.cod_tarea  WHERE t.estado = 'Cancelada' AND t.responsable = ".$datos['nit_responsable'];

			}else if($datos['id_tipo_tarea']!=""){

				$query = "SELECT t.titulo, sc.nombre_solicitante, t.fecha_creacion, t.estado, t.codigo_tarea, t.tipo_tarea, t.creada_por, t.responsable FROM gestor_tareas t LEFT JOIN gestor_tipo_tarea tt ON tt.id = t.tipo_tarea LEFT JOIN gestion_humana_solicitud_contratacion sc ON t.codigo_tarea = sc.cod_tarea  WHERE tt.id = ".$datos['id_tipo_tarea']." AND t.responsable = ".$datos['nit_responsable'];

			}else if($datos['tarea'] != ""){

				$query = "SELECT t.titulo, sc.nombre_solicitante, t.fecha_creacion, t.estado, t.codigo_tarea, t.tipo_tarea, t.creada_por, t.responsable FROM gestor_tareas t LEFT JOIN gestor_tipo_tarea tt ON tt.id = t.tipo_tarea LEFT JOIN gestion_humana_solicitud_contratacion sc ON t.codigo_tarea = sc.cod_tarea  WHERE tt.tipo_tarea LIKE '%".$datos['tarea']."%' AND responsable = ".$datos['nit_responsable'];

			}else if($datos['nit_responsable']!=""){

				$query = "SELECT t.titulo, sc.nombre_solicitante, t.fecha_creacion, t.estado, t.codigo_tarea, t.tipo_tarea, t.creada_por, t.responsable FROM gestor_tareas t LEFT JOIN gestor_tipo_tarea tt ON tt.id = t.tipo_tarea LEFT JOIN gestion_humana_solicitud_contratacion sc ON t.codigo_tarea = sc.cod_tarea WHERE t.estado != 'Finalizada' AND t.estado != 'Cancelada' AND t.responsable = ".$datos['nit_responsable'];

			}
			
			$link =  ConexionMails::conectar()->prepare($query);

			$link->execute();

			return $link;

		}

		/*==================================================================
		CONSULTA TAREA
		==================================================================*/
		public function mdlConsultaTarea($codigo_tarea){

			$query = "SELECT * FROM gestor_tareas WHERE codigo_tarea = '$codigo_tarea'";
			
			$link =  ConexionMails::conectar()->prepare($query);

			$link->execute();

			return $link;

		}

		/*==================================================================
		CONSULTA SOLICITUD
		==================================================================*/
		public function mdlConsultaResumenSolicitud($cod_tarea){

			$query = "SELECT * FROM gestion_humana_solicitud_contratacion WHERE cod_tarea = :cod_tarea";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->bindParam(":cod_tarea", $cod_tarea);

			$sql->execute();

			return $sql;

		}

		/*==============================================================================
		REGISTRA OBSERVACIÓN DE APROBACIÓN O RECHAZO DE UNA SOLICITUD DE CONTRATACIÓN
		==============================================================================*/
		public function mdlRegistraObservacionAprobacionRechazo($datos){

			if($datos['tipo'] == "aprobacion"){

				$query = "UPDATE gestion_humana_solicitud_contratacion SET observacion_solicitud = :observacion_solicitud, usuario_aprueba = :usuario_aprueba, fecha_hora_aprueba = :fecha_hora_aprueba, fecha_ultima_edicion = :fecha_ultima_edicion, usuario_ultima_edicion = :usuario_ultima_edicion WHERE cod_tarea = :cod_tarea";

				$sql = ConexionMails::conectar()->prepare($query);

				$sql->bindParam(":usuario_aprueba", $datos['usuario']);
				$sql->bindParam(":fecha_hora_aprueba", $datos['fecha']);

			}else if($datos['tipo'] == "rechazo"){

				$query = "UPDATE gestion_humana_solicitud_contratacion SET observacion_solicitud = :observacion_solicitud, usuario_rechaza = :usuario_rechaza, fecha_hora_rechaza = :fecha_hora_rechaza, fecha_ultima_edicion = :fecha_ultima_edicion, usuario_ultima_edicion = :usuario_ultima_edicion WHERE cod_tarea = :cod_tarea";

				$sql = ConexionMails::conectar()->prepare($query);

				$sql->bindParam(":usuario_rechaza", $datos['usuario']);
				$sql->bindParam(":fecha_hora_rechaza", $datos['fecha']);

			}

			$sql->bindParam(":cod_tarea", $datos['cod_tarea']);
			$sql->bindParam(":observacion_solicitud", $datos['observacion']);		
			$sql->bindParam(":fecha_ultima_edicion", $datos['fecha']);
			$sql->bindParam(":usuario_ultima_edicion", $datos['usuario']);

			$sql->execute();

			return $sql;

		}

		/*==========================================================================
		CONSULTA SINPLE 
		==========================================================================*/
		public function mdlConsultaEmpleado($nitempleado){

			$link = ConexionSVRPPAL::conectarAndar();

			odbc_close($link);

			$link = ConexionSVRPPAL::conectarAndar();

			$sql_orden = "SELECT * FROM terceros WHERE nit = '".$nitempleado."'";

	    	$resultado = odbc_exec($link, $sql_orden);

	        return $resultado;

		}

		/*==========================================================================
		CONSULTA SINPLE 
		==========================================================================*/
		public function mdlConsultaCargo($idcargo){

			$link = ConexionSVRPPAL::conectarAndar();

			$sql_orden = "SELECT * FROM v_gestor_cargos WHERE oficio = '$idcargo'";

	    	$resultado = odbc_exec($link, $sql_orden);

	        return $resultado;

		}

		/*==========================================================================
		CONSULTA LAS SOLICITUDES DE CONTRATACIÓN
		==========================================================================*/
		public function mdlSolicitudContratacion(){

			$query = "SELECT * FROM gestion_humana_solicitud_contratacion sc LEFT JOIN gestor_tareas t ON t.codigo_tarea = sc.cod_tarea WHERE sc.estado = 'A' AND t.responsable";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->execute();

			return $sql;

		}

		/*==========================================================================
		CONSULTA ENCARGADO AUTORIZAR
		==========================================================================*/
		public function mdlEncargadoAutoriza($id_cargo){

			$query = "SELECT * FROM gestion_humana_autorizacion_contratacion WHERE id_cargo = '$id_cargo'";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->execute();

			return $sql;

		}


		/*==========================================================================
		ACTUALIZA TAREA
		==========================================================================*/
		public function mdlActualizaEstadoTarea($fecha_finaliza, $usuario_finaliza, $cod_tarea){

			$query = "UPDATE gestor_tareas SET estado = 'Finalizada', fecha_finalizacion = '$fecha_finaliza', finalizada_por = '$usuario_finaliza' WHERE codigo_tarea = '$cod_tarea'";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->execute();

			return $sql;

		}

		/*==========================================================================
		ACTUALIZA nivel_autorizado
		==========================================================================*/
		public function mdlActualizaNivelAutorizaTarea($cod_tarea, $nivel_autorizado){

			$query = "UPDATE gestor_tareas SET nivel_autorizado = '$nivel_autorizado' WHERE codigo_tarea = '$cod_tarea'";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->execute();

			return $sql;

		}


		/*==========================================================================
		REGISTRA AUDITORIA DE SOLICITUD CONTRATACIÓN.
		==========================================================================*/
		public function mdlRegistraAuditoriaSolicitudContratacion($datos){

			$query = "INSERT INTO gestion_humana_auditoria_contratacion (id_solicitud, estado, fecha_hora, usuario) VALUES(:id_solicitud, :estado, :fecha_hora, :usuario)";

			$sql = ConexionMails::conectar()->prepare($query);

			$sql->bindParam(":id_solicitud", $datos['id_solicitud']);
			$sql->bindParam(":estado", $datos['estado']);
			$sql->bindParam(":fecha_hora", $datos['fecha']);
			$sql->bindParam(":usuario", $datos['usuario']);

			$sql->execute();

			return $sql;

		}

	}

 ?>
