Incam_PROFIND_Web/www/protected/components/UsuarioWeb.php

107 lines
3.1 KiB
PHP
Raw Normal View History

<?php
/**
* @class UsuarioWeb
* @brief Guarda los datos del usuario registrado que está en sesión
*
* @package application.components
*/
class UsuarioWeb extends CWebUser {
private $_model;
/**
* @brief Actualiza la fecha de la última entrada (last login) del usuario
* que ha iniciado sesión.
*/
public function afterLogin(){
if (($this->_model === null) && ($this->loadUser()))
Usuario::model()->updateByPk($this->id, array(
'last_login_time'=> date("Y-m-d H:i:s"),
));
return true;
}
/**
* @brief ID de la empresa del usuario que está en sesión.
* @return integer
*/
public function getId_empresa() {
$usuario = $this->loadUser($this->id);
return $usuario->id_empresa;
}
/**
* @brief Comprueba si el usuario que está en sesión es coordinador o no.
* @return boolean
*/
public function getEsCoordinador() {
$usuario = $this->loadUser();
return ($usuario->tipo == Usuario::TIPO_USUARIO_COORDINADOR);
}
/**
* @brief Comprueba si el usuario que está en sesión tiene/puede tener
* un equipo de agentes.
* @return boolean
*/
public function getTieneEquipo() {
$subscripcion = $this->loadSubscripcion();
if ($subscripcion)
return ($subscripcion->producto->max_agentes > 0);
else
return false;
}
/**
* @brief Devuelve la subscripción del usuario que está en sesión.
* @return Subscripcion
*/
public function getSubscripcion() {
return $this->loadSubscripcion();
}
/**
* @brief Devuelve el nombre del usuario que está en sesión.
* Si el usuario ha rellenado su nombre y apellidos, devuelve el nombre
* completo. Si no, devuelve la dirección e-mail del usuario.
* @return string
*/
public function getName() {
$usuario = $this->loadUser();
return ($usuario && $usuario->nombre) ? $usuario->nombreCompleto : parent::getName();
}
/**
* @brief Devuelve el email del usuario que está en sesión.
* @return string
*/
public function getEmail() {
$usuario = $this->loadUser();
return $usuario->email;
}
/**
* @brief Devuelve el usuario que ha hecho sesión.
* @return Usuario
*/
protected function loadUser() {
if ($this->_model === null) {
$this->_model = Usuario::model()->findByPk($this->id);
if ($this->_model === null)
throw new CHttpException(404, Yii::t('profind', 'La página solicitada no existe.'));
}
return $this->_model;
}
/**
* @brief Devuelve la subscripción activa del usuario que ha hecho sesión.
* @return Subscripcion
*/
protected function loadSubscripcion() {
return Subscripcion::model()->activa()->findByAttributes(array('id_usuario' => $this->id));
}
}
?>