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:
parent
cb5a90388f
commit
efac4437b5
@ -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() {
|
||||
|
||||
@ -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> € - <span id="salario_fin_search" class="color069"></span>€
|
||||
|
||||
<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')); ?>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user