<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ColaboradoresSQL
 *
 * @author root
 */
class ColaboradoresSQL {

    const DATOS_COLABORADORES_USUARIO_PERSONA_CARGO = <<<sql
SELECT	
	CamaraColaboradores.colaboradorID, 
	CamaraColaboradores.cargoID,
	CamaraColaboradores.personaID,
	CamaraColaboradores.puestoTrabajoID,
	CamaraColaboradores.tipoColaboradorID,
	CamaraColaboradores.colaboradorEMAIL,
	CamaraColaboradores.colaboradorCELULAR,
	CamaraColaboradores.colaboradorFOTO, 
	CamaraColaboradores.colaboradorFIRMA,
	CamaraColaboradores.colaboradorESTADO,
	CamaraColaboradores.colaboradorJEFEINMEDIATO,
	CamaraColaboradores.colaboradorFCHACTIVO,
	CamaraColaboradores.colaboradorUSRACTIVO,
	CamaraColaboradores.colaboradorFCHSUSPENDIDO,
	CamaraColaboradores.colaboradorUSRSUSPENDE,
	CamaraColaboradores.colaboradorFCHDESACTIVA,
	CamaraColaboradores.colaboradorUSRDESACTIVA,
	Usuarios.usuarioID,
	Usuarios.colaboradorID,
	Usuarios.aplicacionID,
	Usuarios.usuarioNOMBRE,
	Usuarios.usuarioULTINGRESO,
	Usuarios.usuarioULTDIRECCIONIP,
	Usuarios.usuarioULTLATITUD,
	Usuarios.usuarioULTLONGITUD,
	Usuarios.usuarioESTADO,
	Usuarios.usuarioFCHACTIVO,
	Usuarios.usuarioUSRACTIVA,
	Usuarios.usuarioFCHDESACTIVO,
	Usuarios.usuarioUSRDESACTIVA,
        Usuarios.usuarioADMINISTRADOR,
	CamaraCargos.cargoID,
	CamaraCargos.unidadID,
	CamaraCargos.tipoCargoID,
	CamaraCargos.cargoCODIGO,
	CamaraCargos.cargoTITULO,
	CamaraCargos.cargoPADRE,
	CamaraCargos.cargoPERMISOS,
	Personas.personaID,
	Personas.tipoPersonaID,
	Personas.tiposOrganizacionID,
	Personas.tipoIdentificacionID,
	Personas.personaLUGAREXPEDICIONCC,
	Personas.personaIDENTIFICACION,
	Personas.personaRAZONSOCIAL,
	Personas.personaNOMBRES,
	Personas.personaAPELLIDOS,
	Personas.personaNACIONALIDAD,
	Personas.personaIMAGEN,
	Personas.personaFCHNACIMIENTO,
	Personas.personaLUGARNACIMIENTO,
	Personas.personaSEXO,
	Personas.personaTIPOSANGRE,
	Personas.personaESTADOCIVIL,
	Personas.personaAFILIADO,
	Personas.personaFCHCREADO,
	Personas.personaUSRCREA,
	Personas.personaFCHMODIFICADO,
	Personas.personaUSRMODIFICA,
	Personas.personaPAGINAWEB
FROM CamaraColaboradores
INNER JOIN Personas ON CamaraColaboradores.personaID = Personas.personaID
INNER JOIN Usuarios ON CamaraColaboradores.colaboradorID = Usuarios.colaboradorID
INNER JOIN CamaraCargos ON CamaraColaboradores.cargoID = CamaraCargos.cargoID 
sql;
    static $sqlCompleto = <<<sql
    SELECT 
      TiposColaboradores.tipoColaboradorCODIGO
      , TiposColaboradores.tipoColaboradorTITULO
      , TiposCargos.tipoCargoID
      , TiposCargos.tipoCargoCODIGO
      , TiposCargos.tipoCargoTITULO
      , CamaraUnidadesDivisiones.unidadID
      , CamaraUnidadesDivisiones.unidadCODIGO
      , CamaraUnidadesDivisiones.unidadTITULO
      , CamaraCargos.cargoCODIGO
      , CamaraCargos.cargoTITULO
      , CamaraCargos.cargoPERMISOS
      , CamaraSedes.sedeCODIGO
      , CamaraSedes.sedeTITULO
      , CamaraSedes.sedeID
      , CamaraPuestosTrabajo.puestoTrabajoCODIGO
      , CamaraPuestosTrabajo.puestoTrabajoTITULO
      , Personas.personaIDENTIFICACION
      , Personas.personaRAZONSOCIAL
      , Personas.personaNOMBRES
      , Personas.personaAPELLIDOS
      , Personas.personaIMAGEN
      , Personas.personaFCHNACIMIENTO
      , CamaraColaboradores.colaboradorEMAIL
      , CamaraColaboradores.*
      , Usuarios.usuarioID
      , Usuarios.usuarioNOMBRE
      , Usuarios.usuarioULTINGRESO
      , Usuarios.usuarioULTDIRECCIONIP
      , Usuarios.usuarioULTLATITUD
      , Usuarios.usuarioULTLONGITUD
      , Usuarios.usuarioESTADO
      , ColaboradoresSalud.colaboradorSaludID
      , EntidadesSalud.entidadSaludID
      , EntidadesSalud.entidadSaludTITULO
      , ColaboradoresPensiones.colaboradorPensionID
      , EntidadesPensiones.entidadPensionID
      , EntidadesPensiones.entidadPensionTITULO 
    FROM
      CamaraColaboradores 
      LEFT JOIN Personas 
        ON (
          CamaraColaboradores.personaID = Personas.personaID
        ) 
      LEFT JOIN CamaraCargos 
        ON (
          CamaraColaboradores.cargoID = CamaraCargos.cargoID
        ) 
      LEFT JOIN CamaraPuestosTrabajo 
        ON (
          CamaraColaboradores.puestoTrabajoID = CamaraPuestosTrabajo.puestoTrabajoID
        ) 
      LEFT JOIN TiposColaboradores 
        ON (
          CamaraColaboradores.tipoColaboradorID = TiposColaboradores.tipoColaboradorID
        ) 
      LEFT JOIN Usuarios 
        ON (
          CamaraColaboradores.colaboradorID = Usuarios.colaboradorID
        ) 
      LEFT JOIN TiposCargos 
        ON (
          CamaraCargos.tipoCargoID = TiposCargos.tipoCargoID
        ) 
      LEFT JOIN CamaraUnidadesDivisiones 
        ON (
          CamaraCargos.unidadID = CamaraUnidadesDivisiones.unidadID
        ) 
      LEFT JOIN CamaraSedes 
        ON (
          CamaraPuestosTrabajo.sedeID = CamaraSedes.sedeID
        ) 
      LEFT JOIN ColaboradoresSalud 
        ON CamaraColaboradores.colaboradorID = ColaboradoresSalud.colaboradorID 
        AND ColaboradoresSalud.colaboradorSaludESTADO = 'ACTIVO' 
      LEFT JOIN EntidadesSalud 
        ON ColaboradoresSalud.entidadSaludID = EntidadesSalud.entidadSaludID 
      LEFT JOIN ColaboradoresPensiones 
        ON CamaraColaboradores.colaboradorID = ColaboradoresPensiones.colaboradorID 
        AND ColaboradoresPensiones.colaboradorPensionESTADO = 'ACTIVO' 
      LEFT JOIN EntidadesPensiones 
        ON ColaboradoresPensiones.entidadPensionID = EntidadesPensiones.entidadPensionID 
        
        


sql;
    static $sqlDatosColaborador = <<<sql
SELECT 
	CamaraColaboradores.* 
	, CamaraCargos.cargoCODIGO
    , CamaraCargos.cargoTITULO
    , CamaraUnidadesDivisiones.unidadCODIGO
    , CamaraUnidadesDivisiones.unidadTITULO
    , Personas.personaIDENTIFICACION
    , Personas.personaNOMBRES
    , Personas.personaAPELLIDOS
    , Personas.personaIMAGEN
    , CamaraPuestosTrabajo.puestoTrabajoCODIGOACTIVO
    , CamaraPuestosTrabajo.puestoTrabajoTITULO
    , CamaraSedes.sedeCODIGO
    , CamaraSedes.sedeTITULO
    , TiposColaboradores.tipoColaboradorCODIGO
    , TiposColaboradores.tipoColaboradorTITULO
    , CamaraSedes.sedeID
    , CamaraUnidadesDivisiones.unidadID
    , DatosJefeInmediato.personaIDENTIFICACION AS jefeInmediatoIDENTIFICACION 
    , DatosJefeInmediato.personaNOMBRES AS jefeInmediatoNOMBRES 
    , DatosJefeInmediato.personaAPELLIDOS AS jefeInmediatoAPELLIDOS
    , DatosJefeInmediato.personaIMAGEN AS jefeInmediatoIMAGEN 
    , CargoJefeInmediato.cargoCODIGO AS jefeInmediatoCargoCODIGO 
    , CargoJefeInmediato.cargoTITULO AS jefeInmediatoCargoTITULO 
    , UnidadJefeInmediato.unidadCODIGO AS jefeInmediatoUnidadCODIGO 
    , UnidadJefeInmediato.unidadTITULO AS jefeInmediatoUnidadTITULO 
    , UnidadJefeInmediato.unidadID AS jefeInmediatoUnidadID 
    , JefeInmediato.colaboradorID AS jefeInmediatoColaboradorID 
    , JefeInmediato.cargoID AS jefeInmediatoCargoID 
    , JefeInmediato.personaID AS jefeInmediatoPersonaID 
    , JefeInmediato.puestoTrabajoID AS jefeInmediatoPuestoTrabajoID 
    , JefeInmediato.tipoColaboradorID AS jefeInmediatoTipoColaboradorID 
    , JefeInmediato.colaboradorEMAIL AS jefeInmediatoColaboradorEMAIL 
    , JefeInmediato.colaboradorCELULAR AS jefeInmediatoColaboradorCELULAR 
    , JefeInmediato.colaboradorFIRMA AS jefeInmediatoColaboradorFIRMA 
FROM CamaraColaboradores
    INNER JOIN Personas 
        ON (CamaraColaboradores.personaID = Personas.personaID)
    INNER JOIN CamaraCargos 
        ON (CamaraColaboradores.cargoID = CamaraCargos.cargoID)
    INNER JOIN CamaraPuestosTrabajo 
        ON (CamaraColaboradores.puestoTrabajoID = CamaraPuestosTrabajo.puestoTrabajoID)
    LEFT JOIN TiposColaboradores 
        ON (CamaraColaboradores.tipoColaboradorID = TiposColaboradores.tipoColaboradorID)
    INNER JOIN CamaraColaboradores AS JefeInmediato
        ON (CamaraColaboradores.colaboradorJEFEINMEDIATO = JefeInmediato.colaboradorID)
    LEFT JOIN CamaraUnidadesDivisiones 
        ON (CamaraCargos.unidadID = CamaraUnidadesDivisiones.unidadID)
    INNER JOIN CamaraSedes 
        ON (CamaraPuestosTrabajo.sedeID = CamaraSedes.sedeID)
    INNER JOIN CamaraCargos AS CargoJefeInmediato
        ON (JefeInmediato.cargoID = CargoJefeInmediato.cargoID)
    INNER JOIN Personas AS DatosJefeInmediato
        ON (JefeInmediato.personaID = DatosJefeInmediato.personaID)
    INNER JOIN CamaraUnidadesDivisiones AS UnidadJefeInmediato
        ON (CargoJefeInmediato.unidadID = UnidadJefeInmediato.unidadID)  
            
sql;

const DATOS_COLABORADORES_USUARIO_PERSONA_CARGO_DIRECION_CORREO = <<<sql
SELECT	
	CamaraColaboradores.colaboradorID, 
	CamaraColaboradores.cargoID,
	CamaraColaboradores.personaID,
	CamaraColaboradores.puestoTrabajoID,
	CamaraColaboradores.tipoColaboradorID,
	CamaraColaboradores.colaboradorEMAIL,
	CamaraColaboradores.colaboradorCELULAR,
	CamaraColaboradores.colaboradorFOTO,
	CamaraColaboradores.colaboradorFIRMA,
	CamaraColaboradores.colaboradorESTADO,
	CamaraColaboradores.colaboradorJEFEINMEDIATO,
	CamaraColaboradores.colaboradorFCHACTIVO,
	CamaraColaboradores.colaboradorUSRACTIVO,
	CamaraColaboradores.colaboradorFCHSUSPENDIDO,
	CamaraColaboradores.colaboradorUSRSUSPENDE,
	CamaraColaboradores.colaboradorFCHDESACTIVA,
	CamaraColaboradores.colaboradorUSRDESACTIVA,
	Usuarios.usuarioID,
	Usuarios.usuarioNOMBRE,
	Usuarios.usuarioULTINGRESO,
	Usuarios.usuarioULTDIRECCIONIP,
	Usuarios.usuarioULTLATITUD,
	Usuarios.usuarioULTLONGITUD,
	Usuarios.usuarioESTADO,
	Usuarios.usuarioFCHACTIVO,
	Usuarios.usuarioUSRACTIVA,
	Usuarios.usuarioFCHDESACTIVO,
	Usuarios.usuarioUSRDESACTIVA,
        Usuarios.usuarioADMINISTRADOR,
	CamaraCargos.cargoID,
	CamaraCargos.unidadID,
	CamaraCargos.tipoCargoID,
	CamaraCargos.cargoCODIGO,
	CamaraCargos.cargoTITULO,
	CamaraCargos.cargoPADRE,
	CamaraCargos.cargoPERMISOS,
	Personas.personaID,
	Personas.tipoPersonaID,
	Personas.tiposOrganizacionID,
	Personas.tipoIdentificacionID,
	Personas.personaLUGAREXPEDICIONCC,
	Personas.personaIDENTIFICACION,
	Personas.personaRAZONSOCIAL,
	Personas.personaNOMBRES,
	Personas.personaAPELLIDOS,
	Personas.personaNACIONALIDAD,
	Personas.personaIMAGEN,
	Personas.personaFCHNACIMIENTO,
	Personas.personaLUGARNACIMIENTO,
	Personas.personaSEXO,
	Personas.personaTIPOSANGRE,
	Personas.personaESTADOCIVIL,
	Personas.personaAFILIADO,
	Personas.personaFCHCREADO,
	Personas.personaUSRCREA,
	Personas.personaFCHMODIFICADO,
	Personas.personaUSRMODIFICA,
	Personas.personaPAGINAWEB,
	PersonasDirecciones.*,
	PersonasCorreos.*,
	CamaraSedes.sedeID
FROM CamaraColaboradores
LEFT JOIN Personas ON CamaraColaboradores.personaID = Personas.personaID
LEFT JOIN Usuarios ON CamaraColaboradores.colaboradorID = Usuarios.colaboradorID
LEFT JOIN CamaraCargos ON CamaraColaboradores.cargoID = CamaraCargos.cargoID 
LEFT JOIN PersonasDirecciones ON CamaraColaboradores.personaID = PersonasDirecciones.personasID AND PersonasDirecciones.direccionTIPO = 'DOMICILIO'
LEFT JOIN PersonasCorreos ON CamaraColaboradores.personaID = PersonasCorreos.personaID AND PersonasCorreos.correoESTADO = 'ACTIVO'
LEFT JOIN CamaraPuestosTrabajo ON CamaraColaboradores.puestoTrabajoID = CamaraPuestosTrabajo.puestoTrabajoID
LEFT JOIN CamaraSedes ON CamaraPuestosTrabajo.sedeID = CamaraSedes.sedeID
sql;


    /**
     * Consulta SQL  que permite SELECIONAR con los datos básicos de un registro.
     */
    const DATOS_BASICOS = <<<sql
    SELECT
    	CamaraColaboradores.colaboradorID,
    	CamaraColaboradores.cargoID,
    	CamaraColaboradores.personaID,
    	CamaraColaboradores.puestoTrabajoID,
    	CamaraColaboradores.tipoColaboradorID,
    	CamaraColaboradores.colaboradorEMAIL,
    	CamaraColaboradores.colaboradorCELULAR,
    	CamaraColaboradores.colaboradorFIRMA,
    	CamaraColaboradores.colaboradorFOTO,
    	CamaraColaboradores.colaboradorESTADO,
    	CamaraColaboradores.colaboradorJEFEINMEDIATO,
    	CamaraColaboradores.colaboradorFCHACTIVO,
    	CamaraColaboradores.colaboradorUSRACTIVO,
    	CamaraColaboradores.colaboradorFCHSUSPENDIDO,
    	CamaraColaboradores.colaboradorUSRSUSPENDE,
    	CamaraColaboradores.colaboradorFCHDESACTIVA,
    	CamaraColaboradores.colaboradorUSRDESACTIVA,
    	CamaraCargos.cargoID,
    	CamaraCargos.cargoCODIGO,
    	CamaraCargos.cargoTITULO,
    	TiposCargos.tipoCargoID,
    	TiposCargos.tipoCargoCODIGO,
    	TiposCargos.tipoCargoTITULO,
    	CamaraUnidadesDivisiones.unidadCODIGO,
    	CamaraUnidadesDivisiones.unidadCODIGOACTIVO,
    	CamaraUnidadesDivisiones.unidadTITULO,
    	CamaraPuestosTrabajo.puestoTrabajoID,
    	CamaraPuestosTrabajo.puestoTrabajoCODIGOACTIVO,
    	CamaraPuestosTrabajo.puestoTrabajoCODIGO,
    	CamaraPuestosTrabajo.puestoTrabajoTITULO,
    	CamaraSedes.sedeID,
    	CamaraSedes.sedeCODIGO,
    	CamaraSedes.sedeCODIGOACTIVO,
    	CamaraSedes.sedeTITULO,
    	CamaraSedes.sedeCIUDAD
    FROM
    	CamaraColaboradores
    LEFT JOIN CamaraCargos ON CamaraColaboradores.cargoID = CamaraCargos.cargoID
    LEFT JOIN TiposCargos ON CamaraCargos.tipoCargoID = TiposCargos.tipoCargoID
    LEFT JOIN CamaraUnidadesDivisiones ON CamaraCargos.unidadID = CamaraUnidadesDivisiones.unidadID
    LEFT JOIN CamaraPuestosTrabajo ON CamaraColaboradores.puestoTrabajoID = CamaraPuestosTrabajo.puestoTrabajoID
    LEFT JOIN CamaraSedes ON CamaraPuestosTrabajo.sedeID = CamaraSedes.sedeID
sql;
    
    /**
     * Consulta SQL que ACTUALIZA los datos básicos de un registro
     */
    const ACTUALIZAR_REGISTRO = <<<sql
    UPDATE
      CamaraColaboradores
    SET
      cargoID = ?,
      puestoTrabajoID = ?,
      tipoColaboradorID = ?,
      colaboradorESTADO = ?
    WHERE colaboradorID = ?
sql;
    
    /**
     * Consulta SQL que ACTUALIZA el jefe inmediato 
     */
    const ACTUALIZAR_JEFEINMEDIATO = <<<sql
    UPDATE
      CamaraColaboradores
    SET
        colaboradorJEFEINMEDIATO = ?
    WHERE colaboradorID = ?
sql;

const ACTUALIZAR_FOTO = <<<sql
    UPDATE
      CamaraColaboradores
    SET
        colaboradorFOTO = ?
    WHERE colaboradorID = ?
sql;
    
}

