<?php



/*

 * Copyright 2017-09-08  Cámara de Comercio de Santa Marta para el Magdalena.

 * Autor: Luis Montoya <lmontoya@ccsm.org.co at www.ccsm.org.co>.

 * Archivo: Colaboradores.

 *

 * Licenciado bajo la Licencia Apache, Versión 2.0;

 * Usted no puede usar este archivo excepto en conformidad con la Licencia.

 * Usted puede obtener una copia de la Licencia en

 *

 *   	http://www.apache.org/licenses/LICENSE-2.0

 *

 * A menos que sea requerido por la ley aplicable o acordado por escrito, el software

 * Distribuido bajo la licencia se distribuye en una "AS IS" o  "COMO ESTA" BASE,

 * SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, expresas o implícitas.

 * Consulte la Licencia para los permisos y Limitaciones bajo la Licencia.

 */

 

 class Colaboradores {

    

    const ACTIVO     = 'ACTIVO';

    const DESACTIVO  = 'DESACTIVO';

    const SUSPENDIDO = 'SUSPENDIDO';

     /**

     * Devuelve todos los registros de colaboradores, según el estado.

     * Si no se envia el estado devuelve todos los registros 

     * sin importar su estado.

     * @param String $colaboradorESTADO

     * @return Array de Objetos colaboradores

     */

    public static function todos($colaboradorESTADO = null) {

        $datos    = array();

        $sqlQuery = ColaboradoresSQL::$sqlCompleto ;

        if (!is_null($colaboradorESTADO)) {

            $sqlQuery .= " WHERE CamaraColaboradores.colaboradorESTADO = ? ";

            array_push($datos, $colaboradorESTADO);

        }

        return SicamDB::selectVariasFilas($sqlQuery, $datos);

    }



    /**

     * Devuelve los registros de colaboradores en estado ACTIVO.

     * @return Array de Objetos colaboradores

     */

    public static function activos() {

        return self::todos(self::ACTIVO);

    }



    /**

     * Devuelve los registros de colaboradores en estado DESACTIVO.

     * @return Array de Objetos colaboradores

     */

    public static function desactivos() {

        return self::todos(self::DESACTIVO);

    }

    

    //put your code here

    public static function getColaboradoresPorSedes($idSede){

        $sqlQuery = '

        SELECT Personas.personaNOMBRES,CamaraColaboradores.colaboradorID

        FROM CamaraColaboradores 

        INNER JOIN Personas ON CamaraColaboradores.personaID = Personas.personaID

        INNER JOIN CamaraPuestosTrabajo ON CamaraColaboradores.puestoTrabajoID = CamaraPuestosTrabajo.puestoTrabajoID

        INNER JOIN CamaraSedes ON CamaraPuestosTrabajo.sedeID = CamaraSedes.sedeID

        WHERE (CamaraPuestosTrabajo.sedeID = ?)AND ( CamaraColaboradores.colaboradorESTADO =  "ACTIVO")';

        return SicamDB::selectVariasFilas($sqlQuery, array($idSede));

    }

    

    public static function porIdUsuario($usuarioID) {

        $sqlQuery = ColaboradoresSQL::DATOS_COLABORADORES_USUARIO_PERSONA_CARGO_DIRECION_CORREO . " WHERE Usuarios.usuarioID = ?; ";

        return SicamDB::selectUnaFila($sqlQuery, array($usuarioID));

    }



    public static function datosCompletosPorUsuario($usuarioID) {

        $sqlQuery = ColaboradoresSQL::$sqlCompleto . " WHERE ( Usuarios.usuarioID = ? ); ";

        return SicamDB::selectUnaFila($sqlQuery, array($usuarioID));

    }

    

    public static function datosColaboradoresUsuarioPorIdUsuario($usuarioID) {

        $sqlQuery = ColaboradoresSQL::DATOS_COLABORADORES_USUARIO_PERSONA_CARGO_DIRECION_CORREO." WHERE ( Usuarios.usuarioID = ? ); ";

        return SicamDB::selectUnaFila($sqlQuery, array($usuarioID));

    }

    

    public static function porCedula($identificacion) {

        return self::porIdentificacion(TiposIdentificacion::CEDULA, $identificacion);

    }

    public static function porIdentificacion($tipoIdentificacion, $identificacion) {

        $sqlQuery = ColaboradoresSQL::DATOS_COLABORADORES_USUARIO_PERSONA_CARGO_DIRECION_CORREO . " WHERE ( Personas.personaIDENTIFICACION = ?  ); ";

        return SicamDB::selectUnaFila($sqlQuery, array($identificacion));

    }

    

    public static function porNumeroIdentificacion($identificacion) {

        $sqlQuery = ColaboradoresSQL::$sqlDatosColaborador . " WHERE ( Personas.personaIDENTIFICACION = ?  ); ";

        return SicamDB::selectUnaFila($sqlQuery, array($identificacion));

    }

    

    public static function porId($colaboradorID) {

        $sqlQuery = ColaboradoresSQL::$sqlCompleto . " WHERE ( CamaraColaboradores.colaboradorID = ? ); ";

        return SicamDB::selectUnaFila($sqlQuery, array($colaboradorID));

    }

    

    public static function guardar($cargoID, $personaID, $puestoTrabajoID, $tipoColaboradorID, $colaboradorEMAIL, $colaboradorESTADO, $colaboradorJefeInmediato) {

        $sqlQuery = "INSERT INTO CamaraColaboradores ( cargoID, personaID, puestoTrabajoID, tipoColaboradorID, colaboradorEMAIL ,colaboradorESTADO, colaboradorJEFEINMEDIATO, colaboradorUSRACTIVO ) VALUES (?, ?, ?, ?, ?, ?, ?);";

        return SicamDB::insertFila($sqlQuery, array($cargoID, $personaID, $puestoTrabajoID, $tipoColaboradorID,

                    $colaboradorEMAIL, $colaboradorESTADO, $colaboradorJefeInmediato, Cliente::usuarioID()));

    }

    

    public static function actualizar($colaboradorID, $cargoID, $puestoTrabajoID, $tipoColaboradorID, $colaboradorESTADO) {

        $sqlQuery = ColaboradoresSQL::ACTUALIZAR_REGISTRO;

        return SicamDB::actualizarFila($sqlQuery, array($cargoID, $puestoTrabajoID, $tipoColaboradorID, $colaboradorESTADO, $colaboradorID));

    }



    public static function eliminar($colaboradorID) {

        $sqlQuery = "DELETE FROM CamaraColaboradores WHERE colaboradorID = ?;";

        return SicamDB::actualizarFila($sqlQuery, array($colaboradorID));

    }



    public static function actualizarTipoColaborador($tipoColaboradorID, $colaboradorID) {

        $sqlQuery = "UPDATE CamaraColaboradores SET tipoColaboradorID = ?	WHERE	colaboradorID = ? ;";

        return SicamDB::actualizarFila($sqlQuery, array($tipoColaboradorID, $colaboradorID));

    }



    public static function actualizarCargoColaborador($cargoID, $colaboradorID) {

        $sqlQuery = "UPDATE CamaraColaboradores SET cargoID = ?	WHERE	colaboradorID = ? ;";

        return SicamDB::actualizarFila($sqlQuery, array($cargoID, $colaboradorID));

    }



    public static function actualizarPuestoTrabajoColaborador($puestoTrabajoID, $colaboradorID) {

        $sqlQuery = "UPDATE CamaraColaboradores SET puestoTrabajoID = ?	WHERE	colaboradorID = ? ;";

        return SicamDB::actualizarFila($sqlQuery, array($puestoTrabajoID, $colaboradorID));

    }



    public static function actualizarJefeInmediato($jefeInmediato, $colaboradorID) {

        $sqlQuery = ColaboradoresSQL::ACTUALIZAR_JEFEINMEDIATO;

        return SicamDB::actualizarFila($sqlQuery, array($jefeInmediato, $colaboradorID));

    }



    public static function actualizarEstadoColaborador($estadoColaborador, $colaboradorID) {

        $sqlQuery = "UPDATE CamaraColaboradores SET colaboradorESTADO = ?	WHERE	colaboradorID = ? ;";

        return SicamDB::actualizarFila($sqlQuery, array($estadoColaborador, $colaboradorID));

    }





    public static function porCargo($cargoID){

        $sqlQuery = ColaboradoresSQL::DATOS_COLABORADORES_USUARIO_PERSONA_CARGO 

            . " WHERE CamaraCargos.cargoID = ? AND CamaraColaboradores.colaboradorESTADO = '".self::ACTIVO."' ";

        return SicamDB::selectUnaFila($sqlQuery, array($cargoID));

    }

    

    public static function enElCargo($cargoID){

        $sqlQuery = ColaboradoresSQL::DATOS_COLABORADORES_USUARIO_PERSONA_CARGO 

            . " WHERE CamaraCargos.cargoID = ? AND CamaraColaboradores.colaboradorESTADO = '".self::ACTIVO."' ";

        return SicamDB::selectVariasFilas($sqlQuery, array($cargoID));

    }



    /*

    **

    ***/

    

    public static function datos($colaboradorID) {

        $sqlQuery = ColaboradoresSQL::DATOS_BASICOS . " WHERE CamaraColaboradores.colaboradorID =  ? ; ";

        $colaborador =  SicamDB::selectUnaFila($sqlQuery, array($colaboradorID));

        if(!empty($colaborador->cargoID)):

            $colaborador->jefeInmediato = Cargos::datos($colaborador->cargoID)->cargoPERMISOS;

        endif;

        $colaborador->persona = Personas::datos($colaborador->personaID);

        return $colaborador;

        

    }

    

    public static function actualizarFOTO($urlFOTO, $colaboradorID) {

        $sqlQuery = ColaboradoresSQL::ACTUALIZAR_FOTO;

        return SicamDB::actualizarFila($sqlQuery, array($urlFOTO, $colaboradorID));

    }

}


