diff --git a/www/protected/models/Candidato.php b/www/protected/models/Candidato.php index a27a527..338a87c 100644 --- a/www/protected/models/Candidato.php +++ b/www/protected/models/Candidato.php @@ -46,6 +46,11 @@ class Candidato extends CActiveRecord public $foto; public $capacidad_tecnica_search; + public $idiomas_search; + public $tecnologias_search; + public $funciones_search; + public $salario_ini_search; + public $salario_fin_search; public $nombre_estado_search; public $nombreCompleto_search; @@ -177,6 +182,8 @@ class Candidato extends CActiveRecord // Please remove those attributes that should not be searched. array('id, id_estado, nombre_estado_search, nombreCompleto_search, capacidad_tecnica_search, + idiomas_search, salario_ini_search, salario_fin_search, + tecnologias_search, funciones_search, dni, email, telefono_fijo, telefono_movil, sexo, fecha_nacimiento, lugar_nacimiento, localidad, fecha_alta, usuario_alta, @@ -218,6 +225,7 @@ class Candidato extends CActiveRecord 'id' => 'ID', 'id_estado' => 'ID estado', 'nombre_estado_search' => 'Estado', + 'idiomas_search' => 'Idioma', 'nombreApellidos' => 'Candidato', 'foto' => 'Foto', 'dni' => 'DNI/Pasaporte', @@ -245,6 +253,9 @@ class Candidato extends CActiveRecord 'disponibilidad_proyectos_internacionales' => 'Disponibilidad para proyectos internacionales', 'nombreCompleto_search' => 'Candidato', + 'observaciones' => 'Observaciones', + 'tecnologias_search'=> 'TecnologĂas', + 'funciones_search'=> 'Perfiles funcionales', ); } @@ -258,12 +269,13 @@ class Candidato extends CActiveRecord // should not be searched. $criteria=new CDbCriteria; - $criteria->with = array('capacidades', 'estados');//, 'capacidades.capacidadesFuncionales'); + $criteria->with = array('capacidades', 'estados', 'idiomas');//, 'capacidades.capacidadesFuncionales'); $criteria->together = true; $criteria->compare('t.id',$this->id); $criteria->compare('t.id_estado',$this->id_estado); $criteria->compare( 'estados.descripcion', $this->nombre_estado_search, true ); + $criteria->compare('t.observaciones',$this->observaciones,true); $criteria->compare('t.dni',$this->dni,true); $criteria->compare('t.email',$this->email,true); @@ -271,7 +283,44 @@ class Candidato extends CActiveRecord $criteria->compare('t.telefono_movil',$this->telefono_movil,true); $criteria->compare( 'concat(t.nombre, " ", t.apellidos)', $this->nombreCompleto_search, true ); - $criteria->compare( 'capacidades.perfil_tecnico_id', $this->capacidad_tecnica_search, true ); + $criteria->compare( 'capacidades.perfil_tecnico_id', $this->capacidad_tecnica_search, true ); + + if (($this->idiomas_search != '') && ($this->idiomas_search[0] != '')){ + $cadena = ''; + foreach ($this->idiomas_search as $idioma_search){ + if ($cadena != '') + $cadena = $cadena . ','; + $cadena = $cadena . "'" . $idioma_search . "'"; + } + $criteria->addCondition(('idiomas.idioma in ('. $cadena . ')')); +// $criteria->addCondition(('t.id in (SELECT candidato_id FROM `tbl_candidatos_capacidades` WHERE id in (SELECT capacidad_id FROM `tbl_candidatos_capacidades_tecnologias` WHERE tecnologia_id in (5,56)))')); + } + + if (($this->tecnologias_search != '') && ($this->tecnologias_search[0] != '')){ + $cadena = ''; + foreach ($this->tecnologias_search as $tecnologia_search){ + if ($cadena != '') + $cadena = $cadena . ','; + $cadena = $cadena . "'" . $tecnologia_search . "'"; + } + $criteria->addCondition(('t.id in (SELECT candidato_id FROM `tbl_candidatos_capacidades` WHERE id in (SELECT capacidad_id FROM `tbl_candidatos_capacidades_tecnologias` WHERE tecnologia_id in ('. $cadena .')))')); + } + + if (($this->funciones_search != '') && ($this->funciones_search[0] != '')){ + $cadena = ''; + foreach ($this->funciones_search as $funcional_search){ + if ($cadena != '') + $cadena = $cadena . ','; + $cadena = $cadena . "'" . $funcional_search . "'"; + } + $criteria->addCondition(('t.id in (SELECT candidato_id FROM `tbl_candidatos_capacidades` WHERE id in (SELECT capacidad_id FROM `tbl_candidatos_capacidades_funcionales` WHERE funcional_id in ('. $cadena .')))')); + } + + if ($this->salario_ini_search != '') + $criteria->addCondition(('t.salario_minimo >='. $this->salario_ini_search)); + if ($this->salario_fin_search != '') + $criteria->addCondition(('t.salario_minimo <='. $this->salario_fin_search)); + $sort = new CSort(); $sort->attributes = array( @@ -293,11 +342,13 @@ class Candidato extends CActiveRecord 'desc' => 'capacidades.perfil_tecnico_id desc', ), ); - +echo $criteria->condition; return new CActiveDataProvider($this, array( 'criteria' => $criteria, 'sort' => $sort, )); + + } protected function beforeValidate() { diff --git a/www/protected/views/candidato/_search.php b/www/protected/views/candidato/_search.php index d3ef29b..2c1d047 100644 --- a/www/protected/views/candidato/_search.php +++ b/www/protected/views/candidato/_search.php @@ -5,21 +5,6 @@ 'method'=>'get', )); ?> -