Se añade la funcionalidad para busquedas más detalladas (nombre, apellidos, observaciones, salario minimo, tecnologias y funciones (no se añade perfiltecnico porque ya lo tiene en el grid), faltaría la busqueda sobre contenido de documentos

git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_IntranetNueva/trunk@80 77cfc57b-8ef4-1849-9df6-4a38aa5da120
This commit is contained in:
roberto 2012-08-24 15:33:23 +00:00
parent cb5a90388f
commit efac4437b5
2 changed files with 138 additions and 61 deletions

View File

@ -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() {

View File

@ -5,21 +5,6 @@
'method'=>'get',
)); ?>
<div class="row">
<?php echo $form->label($model,'id'); ?>
<?php echo $form->textField($model,'id'); ?>
</div>
<div class="row">
<?php echo $form->label($model,'foto'); ?>
<?php echo $form->textField($model,'foto',array('size'=>60,'maxlength'=>255)); ?>
</div>
<div class="row">
<?php echo $form->label($model,'dni'); ?>
<?php echo $form->textField($model,'dni',array('size'=>60,'maxlength'=>255)); ?>
</div>
<div class="row">
<?php echo $form->label($model,'nombre'); ?>
<?php echo $form->textField($model,'nombre',array('size'=>60,'maxlength'=>255)); ?>
@ -30,55 +15,96 @@
<?php echo $form->textField($model,'apellidos',array('size'=>60,'maxlength'=>255)); ?>
</div>
<div class="row">
<?php echo $form->label($model,'email'); ?>
<?php echo $form->textField($model,'email',array('size'=>60,'maxlength'=>255)); ?>
<div class="row">
<?php echo $form->label($model,'observaciones'); ?>
<?php echo $form->textField($model,'observaciones',array('size'=>60,'maxlength'=>255)); ?>
</div>
<div class="row">
<?php echo $form->label($model,'telefono_fijo'); ?>
<?php echo $form->textField($model,'telefono_fijo',array('size'=>60,'maxlength'=>255)); ?>
</div>
<div class="row">
<?php echo $form->label($model,'idiomas_search'); ?>
<?php
$lista = CHtml::listData(Idioma::model()->findAll(),'id', 'descripcion');
$idiomas = Idioma::model()->findAll();
foreach ($idiomas as $idioma) {
if (array_key_exists($idioma->id, $lista)) {
$lista[$idioma->descripcion] = $lista[$idioma->id];
unset($lista[$idioma->id]);
}
}
echo $form->dropDownList(
$model,
'idiomas_search',
$lista,
array(
'empty'=>'',
'size'=>'7',
'multiple'=>'true',
'class'=>'mf',
));
?>
</div>
<div class="row">
<?php echo $form->label($model,'telefono_movil'); ?>
<?php echo $form->textField($model,'telefono_movil',array('size'=>60,'maxlength'=>255)); ?>
</div>
<div class="row">
<?php echo $form->label($model,'Salario mínimo entre'); ?>
<span id="salario_ini_search" class="color069"></span> &euro; - <span id="salario_fin_search" class="color069"></span>&euro;
<div class="row">
<?php echo $form->label($model,'sexo'); ?>
<?php echo $form->textField($model,'sexo',array('size'=>60,'maxlength'=>255)); ?>
</div>
<?php
$this->widget('zii.widgets.jui.CJuiSliderInput', array(
'model'=>$model,
'attribute'=>'salario_ini_search',
'maxAttribute'=>'salario_fin_search',
'event'=>'change',
'options'=>array(
'range'=>true,
'step'=>1000,
'min'=>12000,
'max'=>60000,
'slide'=>'js:function(event,ui){$("#salario_ini_search").text(ui.values[0]);$("#salario_fin_search").text(ui.values[1]);}',
),
'htmlOptions' => array(
'class' => 'lf',
),
));
?>
<div class="row">
<?php echo $form->label($model,'fecha_nacimiento'); ?>
<?php echo $form->textField($model,'fecha_nacimiento'); ?>
</div>
</div>
<div class="row">
<?php echo $form->label($model,'tecnologias_search'); ?>
<?php
$lista = CHtml::listData(Tecnologia::model()->findAll(),'id', 'descripcion');
echo $form->dropDownList(
$model,
'tecnologias_search',
$lista,
array(
'empty'=>'',
'size'=>'7',
'multiple'=>'true',
'class'=>'mf',
));
?>
</div>
<div class="row">
<?php echo $form->label($model,'lugar_nacimiento'); ?>
<?php echo $form->textField($model,'lugar_nacimiento',array('size'=>60,'maxlength'=>255)); ?>
</div>
<div class="row">
<?php echo $form->label($model,'fecha_alta'); ?>
<?php echo $form->textField($model,'fecha_alta'); ?>
</div>
<div class="row">
<?php echo $form->label($model,'usuario_alta'); ?>
<?php echo $form->textField($model,'usuario_alta'); ?>
</div>
<div class="row">
<?php echo $form->label($model,'fecha_modificacion'); ?>
<?php echo $form->textField($model,'fecha_modificacion'); ?>
</div>
<div class="row">
<?php echo $form->label($model,'usuario_modificacion'); ?>
<?php echo $form->textField($model,'usuario_modificacion'); ?>
</div>
<div class="row">
<?php echo $form->label($model,'funciones_search'); ?>
<?php
$lista = CHtml::listData(PerfilFuncional::model()->findAll(),'id', 'descripcion');
echo $form->dropDownList(
$model,
'funciones_search',
$lista,
array(
'empty'=>'',
'size'=>'7',
'multiple'=>'true',
'class'=>'mf',
));
?>
</div>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton(Yii::t('intranet', 'Search')); ?>