diff --git a/www/protected/models/Candidato.php b/www/protected/models/Candidato.php index 3b50a9b..e5db56d 100644 --- a/www/protected/models/Candidato.php +++ b/www/protected/models/Candidato.php @@ -36,6 +36,8 @@ * @property EstadoCandidato $estado * @property CandidatoIdioma[] $idiomas * @property CandidatoTitulacion[] $titulaciones + * @property CandidatoAreaFuncional[] $areasFuncionales + * @property CandidatoCapacidadProfesional[] $capacidadesProfesionales * * @package application.models * @@ -47,15 +49,22 @@ class Candidato extends CActiveRecord { public $ficheroFotografia; public $fotografia; + public $descripcionEstado; private $_nombreCompleto; + /** * @brief Devuelve el nombre completo de un candidato. * @return string $nombreCompleto */ public function getNombreCompleto() { - return $this->nombre . ' ' . $this->apellidos; + + if (isset($this->_nombreCompleto)) { + return $this->_nombreCompleto; + } + $this->_nombreCompleto = $this->nombre . ' ' . $this->apellidos; + return $this->_nombreCompleto; } public function setNombreCompleto($value) { @@ -129,7 +138,7 @@ class Candidato extends CActiveRecord { // The following rule is used by search(). // Please remove those attributes that should not be searched. - array('id, id_estado, estado, nombre, apellidos, nombreCompleto, + array('id, id_estado, estado, descripcionEstado, nombre, apellidos, nombreCompleto, n_identificacion, email, telefono_fijo, telefono_movil, sexo, fecha_nacimiento, lugar_nacimiento, localidad, carnet_conducir, vehiculo_propio, @@ -146,14 +155,33 @@ class Candidato extends CActiveRecord { */ public function relations() { return array( + 'estado' => array(self::BELONGS_TO, 'EstadoCandidato', 'id_estado'), + 'idiomas' => array(self::HAS_MANY, 'CandidatoIdioma', 'candidato_id'), 'idiomasCount' => array(self::STAT, 'CandidatoIdioma', 'candidato_id'), + 'titulaciones' => array(self::HAS_MANY, 'CandidatoTitulacion', 'candidato_id'), 'titulacionesCount' => array(self::STAT, 'CandidatoTitulacion', 'candidato_id'), - 'estado' => array(self::BELONGS_TO, 'EstadoCandidato', 'id_estado'), + + 'areasFuncionales' => array(self::HAS_MANY, 'CandidatoAreaFuncional', 'id_candidato'), + 'areasFuncionalesCount' => array(self::STAT, 'CandidatoAreaFuncional', 'id_candidato'), + + 'capacidadesProfesionales' => array(self::HAS_MANY, 'CandidatoCapacidadProfesional', 'id_candidato'), + 'capacidadesProfesionalesCount' => array(self::STAT, 'CandidatoTitulacion', 'id_candidato'), ); } + public function scopes() { + return array( + 'disponibles' => array( + 'condition' => 'id_estado = 1', + ), + 'no_disponibles' => array( + 'condition' => 'id_estado = 2', + ), + ); + } + /** * @brief Busca el ID del estado inicial de un candidato. * @return integer @@ -175,7 +203,7 @@ class Candidato extends CActiveRecord { return array( 'id' => 'ID', 'id_estado' => 'Estado', - + 'descripcionEstado' => 'Estado', 'n_identificacion' => 'DNI/Pasaporte', 'nombre' => 'Nombre', 'apellidos' => 'Apellidos', @@ -218,11 +246,12 @@ class Candidato extends CActiveRecord { $criteria->compare('t.id', $this->id); $criteria->compare('t.id_estado', $this->id_estado); - //$criteria->compare('estado.descripcion', $this->estado, true); + $criteria->compare('estado.descripcion', $this->descripcionEstado, true); $criteria->compare('t.n_identificacion', $this->n_identificacion, true); $criteria->compare('t.nombre', $this->nombre, true); $criteria->compare('t.apellidos', $this->apellidos, true); + $criteria->compare( 'concat(t.nombre, " ", t.apellidos)', $this->_nombreCompleto, true ); $criteria->compare('t.sexo', $this->sexo, true); $criteria->compare('t.localidad', $this->localidad, true); @@ -260,12 +289,17 @@ class Candidato extends CActiveRecord { $sort->modelClass = 'Candidato'; $sort->attributes = array( '*', - 'defaultOrder' => 'id', + 'defaultOrder' => 'id', + 'descripcionEstado' => array( + 'asc' => 'estado.descripcion', + 'desc' => 'estado.descripcion desc', + ), 'nombreCompleto' => array( 'asc' => 'concat(t.nombre, " ", t.apellidos)', 'desc' => 'concat(t.nombre, " ", t.apellidos) desc', ), ); + return new CActiveDataProvider($this, array( 'criteria' => $criteria, 'sort' => $sort, diff --git a/www/themes/profind/views/candidato/_grid.php b/www/themes/profind/views/candidato/_grid.php index a217702..c69e8a8 100644 --- a/www/themes/profind/views/candidato/_grid.php +++ b/www/themes/profind/views/candidato/_grid.php @@ -14,7 +14,7 @@ $columnas = array( ), array( 'type' => 'html', - 'name' => 'id_estado', + 'name' => 'descripcionEstado', 'value' => 'CHtml::encode($data->estado->descripcion);', 'headerHtmlOptions' => array( 'class' => 'sorting', @@ -62,7 +62,7 @@ $gridView = $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider' => $candidatos->search(), 'columns' => $columnas, 'filter' => $candidatos, - 'filterPosition' => 'footer', + 'filterPosition' => 'header', 'cssFile' => false, 'htmlOptions' => array('class' => 'dataTables_wrapper form-inline'), 'itemsCssClass' => 'table table-striped table-bordered dataTable', @@ -83,11 +83,15 @@ $gridView = $this->widget('zii.widgets.grid.CGridView', array(

-
- 'icon-plus'), '') . ' ' . Yii::t('profind', 'Nuevo candidato'), - $this->createUrl('create'), - array('class' => 'btn') - ); ?> +
+ 'icon-plus'), '') . ' ' . Yii::t('profind', 'Nuevo candidato'), + $this->createUrl('create'), + array('class' => 'btn') + ); ?> + 'icon-filter'), '') . ' ' . Yii::t('profind', 'Filtro'), + $this->createUrl('create'), + array('class' => 'btn') + ); ?>