<?php
class UsersModel extends ModelBase{

    public $tableName = 'sis_user';
    public $id = array('key'=>'iduser','value'=>'');

    public function addItem($datos){
        $this->setFieldArray($datos);
        list($resultado,$id,$mensaje) = $this->insert();
        return array ($resultado,$id,$mensaje);
    }

    public function DeleteItem(){
        list($resultado,$mensaje) = $this->delete();
        return array ($resultado,$mensaje);
    }

    public function UpdateItem($datos){
        $this->setFieldArray($datos);
        list($resultado,$mensaje) = $this->update();
        return array ($resultado,$mensaje);
    }
    
	public function validarUsuario($username,$password)
	{
		//realizamos la consulta de todos los items
		$consulta = $this->db->prepare('SELECT sis_user.* FROM sis_user WHERE username = "'.$username.'" AND password = "'.md5($password).'" AND (state = "1"  OR state = "4"  OR state = "5") AND usertype = 1 ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
	}
	
	public function validarAdministrador($username,$password)
	{
		//realizamos la consulta de todos los items
		$consulta = $this->db->prepare('SELECT sis_user.* FROM sis_user WHERE username = "'.$username.'" AND password = "'.md5($password).'" AND state = "1" AND usertype = 2 ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
	}
	
	public function obtenerUsuarioxId($id){
		//realizamos la consulta de usuario por id
		$consulta = $this->db->prepare('SELECT sis_user.* FROM sis_user WHERE iduser = "'.$id.'" ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
		
	}
	
	public function obtenerUsuarioxUsername($username){
		//realizamos la consulta de usuario por id
		$consulta = $this->db->prepare('SELECT sis_user.* FROM sis_user WHERE username = "'.$username.'" ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
		
	}
	
	public function obtenerUsuarioxUsernameMD5($username){
		//realizamos la consulta de usuario por id
		$consulta = $this->db->prepare('SELECT sis_user.* FROM sis_user WHERE MD5(sis_user.username) = "'.$username.'" ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
		
	}
	
	public function bloquearUsuario($iduser){
		//realizamos la consulta de usuario por id
		$consulta = $this->db->prepare('UPDATE  sis_user SET  state =  "2" WHERE  iduser = '.$iduser.' ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
		
	}
	
	public function setUserSession($datos){
		//realizamos la consulta de usuario por id
		$consulta = $this->db->prepare(' INSERT INTO  sis_session ( idsession , iduser , client_ip , date_session, date_last_activity, state )  VALUES ( "" ,  "'.$datos['iduser'].'",  "'.$datos['client_ip'].'",  "'.$datos['date_session'].'" ,  "'.$datos['date_last_activity'].'" ,  "'.$datos['state'].'" ) ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
		
	}
	
	
	
	public function obtenerEstadoUsuario($username){
		//realizamos la consulta de usuario por id
		$consulta = $this->db->prepare('SELECT sis_user.* FROM sis_user WHERE username = "'.$username.'"  ');
		$consulta->execute();
		//obtenemos el arreglo de datos y lo evaluamos
		$datauser = $consulta->fetch();
		$estado = "";
		
		if(isset($datauser['state'])){
			switch($datauser['state']){
				case 1:
					$state = "ACTIVE";
				break;
				case 2:
					$state = "LOCKED";
				break;
				case 3:
					$state = "DELETED";
				break;
				case 4:
					$state = "FLOGIN";
				break;
				case 5:
					$state = "RESET";
				break;
				
			}
			return $state;
				
		}else{
			return '';
		}
		
		
		
	}
	
	
		
	public function registrarLogIngreso($id_usu)
	{
		$consulta = $this->db->prepare(' INSERT INTO log_login ( id_log , id_usu , fec_log ) VALUES ( "" ,  "'.$id_usu.'",  "'.date("Ymd H:i:s", time()).'") ');
		$consulta->execute();
		//devolvemos ....
		return $consulta;
	}
	
	
	
	public function obtenerListaUsuariosIngresos($where="")
	{
		//realizamos la consulta de todos los items
		$consulta = $this->db->prepare('SELECT tb_usuarios.* , tb_roles.des_rol AS "rol", count(log_login.id_usu) as "ingresos",
max(log_login.fec_log) as "ultimo_ingreso" FROM tb_usuarios LEFT JOIN tb_roles ON tb_usuarios.id_rol = tb_roles.id_rol LEFT JOIN log_login ON tb_usuarios.id_usu = log_login.id_usu '.$where.' GROUP BY tb_usuarios.id_usu');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
	}
	
	public function setNewPassword($iduser,$password){
		//realizamos la consulta de usuario por id
		$consulta = $this->db->prepare('UPDATE  sis_user SET  password =  "'.md5($password).'" WHERE  iduser = '.$iduser.' ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
		
	}
	
	public function setInactive($iduser){
		//realizamos la consulta de usuario por id
		$consulta = $this->db->prepare('UPDATE  sis_user SET  state =  "2" WHERE  iduser = '.$iduser.' ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
		
	}
	
	public function setActive($iduser){
		//realizamos la consulta de usuario por id
		$consulta = $this->db->prepare('UPDATE  sis_user SET  state =  "1" WHERE  iduser = '.$iduser.' ');
		$consulta->execute();
		//devolvemos la coleccion para que la vista la presente.
		return $consulta;
		
	}
	
	
	
	public function getStringUsers()
	{
		//realizamos la consulta de todos los items
		$query = $this->db->prepare('SELECT u.*  FROM sis_user AS u ');
		$query->execute();
		//Se recibe el arreglo completo de usuarios.
		$arregloUsuarios = $query->fetchAll();
		$j = count($arregloUsuarios);
		$cadena = '';
		for($i=0; $j>$i;$i++){
			$arregloUsuario = $arregloUsuarios[$i];
			if(($j-1) == $i){
				$cadena .= $arregloUsuario['firstname'].' '.$arregloUsuario['lastname'].' [ '.$arregloUsuario['username'].' ]';
			}else{
				$cadena .= $arregloUsuario['firstname'].' '.$arregloUsuario['lastname'].' [ '.$arregloUsuario['username'].' ] , ';
			}

		}


		return $cadena;



	}



        public function getStringUser($iduser)
	{
		//realizamos la consulta de todos los items
		$query = $this->db->prepare('SELECT u.*  FROM sis_user AS u WHERE u.iduser = "'.$iduser.'" ');
		$query->execute();
		//Se recibe el arreglo completo de usuarios.
		$datosUsuarios = $query->fetch();
                $cadena = '';
                $cadena .= $datosUsuarios['firstname'].' '.$datosUsuarios['lastname'].' [ '.$datosUsuarios['username'].' ]';
		return $cadena;



	}


	

	
	/**
	* FUNCIONES DESARROLLADAS POR JOSE ANTONIO SAL Y ROSAS C.
	**/
	//JASYRC 06MAY2010
	public function obtenerListaRoles()
	{
            //realizamos la consulta de todos los items
            $consulta = $this->db->prepare('SELECT tb_roles.*  FROM  tb_roles ');
            $consulta->execute();
            //devolvemos la coleccion para que la vista la presente.
            return $consulta;
	}
	
	
	
	//JASYRC 06MAY2010
	public function getUsers($datos = array("inicio" => 0, "tamanio" => 5)){
		//realizamos la consulta de todos los items
		$query = "SELECT * FROM sis_user WHERE usertype = 1";
		$consulta = $this->db->prepare($query);
		$consulta->execute();
		$num_filas = $consulta->rowCount();
		//getPager($datos = array("total" => 0, "inicio" => 0, "pagina" => 5)//uso de la variable arreglo.
		$parametros = array("total" => $num_filas, "inicio" => $datos['inicio'], "pagina" =>  $datos['tamanio']);
		list($paginas,$navegador) = $this->getPager($parametros);
		
		
		//realizamos una consulta paginada
		$consulta = $this->db->prepare($query.' LIMIT '.$datos['inicio'].' , '.$datos['tamanio'].' ');
		$consulta->execute();
		
		//devolvemos la coleccion para que la vista la presente.
		return array($consulta,$paginas,$navegador);
	}
	
	//JASYRC 12MAY2010
        function addUser($username, $password, $data_user){
            $query = "INSERT INTO sis_user( username, password, date_create, firstname, lastname, email,"
                    ." photo, usertype, state ) VALUES ( '$username' , md5('$password'), '".date("Y-m-d H:i:s")."',"
                    ." '".$data_user['firstname']."', '".$data_user['lastname']."', '".$data_user['email']."',"
                    ." '".$data_user['urlphoto']."', 1, 4)";
            $result = $this->db->prepare($query);
            $result->execute();
            return $result;
	}
	
	//JASYRC 06MAY2010
	function editUser($user){
		$query = "SELECT * FROM sis_user WHERE iduser = '$user'";
		$result = $this->db->prepare($query);
		$result->execute();
		return $result;
	}
	
	//JASYRC 07MAY2010
	function updateUser($user, $firstname, $lastname, $state){
		$query = "UPDATE sis_user SET firstname = '$firstname', lastname = '$lastname'"
			.", state = $state WHERE iduser = $user";
		$result = $this->db->prepare($query);
		$result->execute();
		return $result;
	}
	
	//JASYRC 06MAY2010
	function delUser($user){
		$query = "UPDATE sis_user SET state = 3 WHERE iduser = $user";
		$result = $this->db->prepare($query);
		$result->execute();
		return $result;
	}
	
    //JASYRC 07MAY2010 - FECHA DE DESARROLLO
    //JASYRC 10MAY2010 - FECHA DE ACTUALIZACION
    function searchUserbyUName($username){
        $query = "SELECT * FROM sis_user WHERE username = '$username'";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }

    public function getPasswd($iduser){
        $query = "SELECT password FROM sis_user WHERE iduser = $iduser";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }

    public function getAllUsers(){
        $query = "SELECT username FROM sis_user WHERE usertype = 1";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }
}
?>
