<?php

/**
 * Descripción del Modelo de Datos Usuarios
 *
 * %%DESC_MODELO%%
 *
 * 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.php.net/license/3_01.txt. 
 * 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.
 *
 * @package    Modelos\Datos\Usuarios
 * @author     LUIS ANTONIO MONTOYA CONTRERAS <lmontoya@ccsm.org.co>
 * @author     SICAM 20171025 <sicam32@ccsm.org.co>
 * @copyright  2017 Cámara de Comercio de Santa Marta para el Magdalena
 * @license    http://www.php.net/license/3_01.txt  PHP License 3.01
 * @version    201712181018
 * @link       http://sicam.ccsm.org.co/docs/modelos/datos/Usuarios
 */
 
class Usuarios  {

    //put your code here
    public static function usuarioColaboradorPorUserPass($usuario, $password) {
        $sqlQuery = UsuariosSQL::DATOS_COMPLETOS . 'WHERE '
                . 'Usuarios.colaboradorID IS NOT NULL '
                . 'AND Usuarios.usuarioNOMBRE = ? '
                . 'AND Usuarios.usuarioCLAVE = MD5(?)';
        return SicamDB::selectUnaFila($sqlQuery, array($usuario, $password));
    }
    
    public static function deApiPorUserPass($usuario, $password) {
        $sqlQuery = UsuariosSQL::DATOS_COMPLETOS_API . ' WHERE '
                . 'Usuarios.aplicacionID IS NOT NULL '
                . 'AND Usuarios.usuarioNOMBRE = ? '
                . 'AND Usuarios.usuarioCLAVE = MD5(?)';
        return SicamDB::selectUnaFila($sqlQuery, array($usuario, $password));
    }
    
    public static function datosCompletosApi($idUsuario) {
        $sqlQuery = UsuariosSQL::DATOS_COMPLETOS_API . ' WHERE '
                . 'Usuarios.aplicacionID IS NOT NULL '
                . 'AND Usuarios.usuarioID = ? ';
        return SicamDB::selectUnaFila($sqlQuery, array($idUsuario));
    }
    
    public static function datosCompletosApiporNombre($usuarioNombre) {
        $sqlQuery = UsuariosSQL::DATOS_COMPLETOS_API . ' WHERE '
                . 'Usuarios.aplicacionID IS NOT NULL '
                . 'AND Usuarios.usuarioNOMBRE = ? ';
        return SicamDB::selectUnaFila($sqlQuery, array($usuarioNombre));
    }
    
    public static function todos() {
        $sqlQuery = UsuariosSQL::DATOS_COMPLETOS;
        return SicamDB::selectVariasFilas($sqlQuery, array());
    }
    
    public static function datos($userID) {
        $sqlQuery = UsuariosSQL::DATOS_COMPLETOS . ' WHERE ( Usuarios.usuarioID = ? );' ;
        return SicamDB::selectUnaFila($sqlQuery, array($userID));
    }
    
    public static function porUsernamePass($user, $password) {
        $sqlQuery = "SELECT usuarioID , colaboradorID, usuarioNOMBRE, usuarioESTADO FROM Usuarios "
                . " WHERE ( Usuarios.usuarioNOMBRE = ? AND Usuarios.usuarioCLAVE = MD5(?) AND Usuarios.usuarioESTADO = 'ACTIVO'); ";
        return SicamDB::selectUnaFila($sqlQuery, array($user, $password));
    }
    
    public static function datoPorNombre($usuarioNOMBRE) {
        $sqlQuery = "SELECT usuarioID , colaboradorID, usuarioNOMBRE, usuarioESTADO FROM Usuarios "
                . " WHERE ( Usuarios.usuarioNOMBRE = ? ); ";
        return SicamDB::selectUnaFila($sqlQuery, array($usuarioNOMBRE));
    }
    
    public static function porUsername($userCORREO) {
        $sqlQuery = "SELECT usuarioID , colaboradorID, usuarioNOMBRE, usuarioESTADO FROM Usuarios "
                . " WHERE ( Usuarios.usuarioNOMBRE = ? AND Usuarios.usuarioESTADO = 'ACTIVO'); ";
        return SicamDB::selectUnaFila($sqlQuery, array($userCORREO));
    }
    public static function porId($userID) {
        $sqlQuery = "SELECT usuarioID , colaboradorID, usuarioNOMBRE, usuarioESTADO FROM Usuarios "
                . " WHERE ( Usuarios.usuarioID = ? ); ";
        return SicamDB::selectUnaFila($sqlQuery, array($userID));
    }
    
    public static function porIdporContrasena($userID,$password) {
        $sqlQuery = "SELECT usuarioID , colaboradorID, usuarioNOMBRE, usuarioESTADO FROM Usuarios "
                . " WHERE ( Usuarios.usuarioID = ? ) AND ( Usuarios.usuarioCLAVE = MD5(?) ); ";
        return SicamDB::selectUnaFila($sqlQuery, array($userID,$password));
    }
    public static function usuariosActivos() {
        $sqlQuery = "SELECT usuarioID , colaboradorID , usuarioNOMBRE FROM Usuarios "
                . " WHERE (Usuarios.usuarioESTADO = 'ACTIVO'); ";
        return SicamDB::selectVariasFilas($sqlQuery);
    }
    
    public static function guardar($colaboradorID, $usuarioNOMBRE, $usuarioCLAVE, $usuarioUSRACTIVA) {
        $sqlQuery = "INSERT INTO Usuarios ( colaboradorID, usuarioNOMBRE, usuarioCLAVE, usuarioUSRACTIVA ) VALUES ( ?, ?, MD5(?), ?);";
        return SicamDB::insertFila($sqlQuery, array($colaboradorID, $usuarioNOMBRE, $usuarioCLAVE, $usuarioUSRACTIVA));
    }
    
    public static function colaborador($usuarioID) {
        $colaborador = Colaboradores::datosCompletosPorUsuario($usuarioID);
        $colaborador->contacto = Personas::buscarPersonaPorId($colaborador->personaID);
        $colaborador->estudios = PersonasEstudios::estudiosPorIdPersonas($colaborador->personaID);
        $colaborador->familiar = PersonasRelaciones::relacionesPersonasPorIDPersonas($colaborador->personaID);
        return $colaborador;
    }
    
    
    /*
    **
    ***/
    
    public static function roles($usuarioID) {
        $sqlQuery = UsuariosSQL::ROLES . " WHERE Usuarios.usuarioID = ?";
        return SicamDB::selectVariasFilas($sqlQuery, array($usuarioID));
    }
    
    public static function asignarPermiso($permisoID, $usaurioID) {
        $sqlQuery = UsuariosSQL::ASIGNAR_PERMISO;
        return SicamDB::insertFila($sqlQuery, array($permisoID, $usaurioID));
    }
    
    public static function asignarRol($rolID, $usaurioID) {
        $sqlQuery = UsuariosSQL::ASIGNAR_ROL;
        return SicamDB::insertFila($sqlQuery, array($rolID, $usaurioID));
    }
    
    public static function permisos($usaurioID) {
        $sqlQuery = ControlOperacionesSQL::DATOS_POR_USUARIO . " WHERE Usuarios.usuarioID = ?";
        return SicamDB::selectVariasFilas($sqlQuery, array($usaurioID));
    }
    
    public static function activar($usuarioID) {
        $sqlQuery = UsuariosSQL::ACTIVAR;
        return SicamDB::actualizarFila($sqlQuery, array(Cliente::usuarioID(), $usuarioID));
    }
    
    public static function desactivar($usuarioID) {
        $sqlQuery = UsuariosSQL::DESACTIVAR;
        return SicamDB::actualizarFila($sqlQuery, array(Cliente::usuarioID(), $usuarioID));
    }
    
    public static function actualizarClave($userPassword, $userID) {
        $sqlQuery = "UPDATE Usuarios SET usuarioCLAVE = MD5(?) WHERE usuarioID = ?;";
        return SicamDB::actualizarFila($sqlQuery, array($userPassword, $userID));
    }
    
    public static function eliminarPermiso($operacionID, $usuarioID){
        $sqlQuery = UsuariosSQL::ELIMINAR_PERMISO;
        return SicamDB::actualizarFila($sqlQuery, array($operacionID, $usuarioID));
    }
    
    public static function eliminarRol($rolID, $usuarioID){
        $sqlQuery = UsuariosSQL::ELIMINAR_ROL;
        return SicamDB::actualizarFila($sqlQuery, array($rolID, $usuarioID));
    }
    
    
    
    
    public static function registrarLogin($ipSesion, $latSesion, $lngSesion){
        $sqlQuery = "UPDATE Usuarios "
                    . " SET Usuarios.usuarioULTINGRESO = NOW(), "
                    . " Usuarios.usuarioULTDIRECCIONIP = ?, Usuarios.usuarioULTLATITUD = ?, Usuarios.usuarioULTLONGITUD = ? "
                    . " WHERE "
                    . " Usuarios.usuarioID = ? ";
        return SicamDB::actualizarFila($sqlQuery, array($ipSesion, $latSesion, $lngSesion, Cliente::usuarioID()));
    }
    
}
// Generado el 2017-12-18 10:18:50:000000

