From f3ce0b8dbf906afb0a617bf21069be7231fb5544 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 28 Mar 2012 16:51:53 +0000 Subject: [PATCH] =?UTF-8?q?Se=20a=C3=B1aden=20las=20capacidades=20funciona?= =?UTF-8?q?les=20a=20los=20candidatos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_IntranetNueva/trunk@39 77cfc57b-8ef4-1849-9df6-4a38aa5da120 --- .../CandidatoCapacidadController.php | 50 +++++++- www/protected/models/Candidato.php | 9 +- .../models/CandidatoCapacidadFuncional.php | 2 +- .../models/CandidatoCapacidadTecnologia.php | 1 - .../models/CapacidadProfesional.bak.php | 111 ------------------ .../CapacidadProfesionalTecnologia.bak.php | 98 ---------------- www/protected/tests/fixtures/tbl_usuarios.php | 18 ++- .../views/candidatoCapacidad/_form.php | 20 ++-- .../views/candidatoCapacidad/_funcionales.php | 60 ++++++++++ .../views/candidatoCapacidad/_tecnologias.php | 70 ++++++----- .../views/candidatoCapacidad/update.php | 2 + 11 files changed, 175 insertions(+), 266 deletions(-) delete mode 100644 www/protected/models/CapacidadProfesional.bak.php delete mode 100644 www/protected/models/CapacidadProfesionalTecnologia.bak.php create mode 100644 www/protected/views/candidatoCapacidad/_funcionales.php diff --git a/www/protected/controllers/CandidatoCapacidadController.php b/www/protected/controllers/CandidatoCapacidadController.php index 113534f..bb85cb0 100644 --- a/www/protected/controllers/CandidatoCapacidadController.php +++ b/www/protected/controllers/CandidatoCapacidadController.php @@ -53,6 +53,8 @@ class CandidatoCapacidadController extends Controller */ public function actionCreate($cid) { + Yii::import('ext.multimodelform.MultiModelForm'); + $model=new CandidatoCapacidad; $model->candidato_id = $cid; @@ -67,9 +69,31 @@ class CandidatoCapacidadController extends Controller if(isset($_POST['CandidatoCapacidad'])) { $model->attributes=$_POST['CandidatoCapacidad']; - if($model->save()) { - Yii::app()->user->setFlash('success', Yii::t('intranet', 'Capacidad creada correctamente.')); - $this->redirect(array('index', 'cid'=>$cid)); + + $foundInvalidChild = false; + if ($model->validate()) { + if (!MultiModelForm::validate($tecnologia, $tecnologiasValidas, $tecnologiasBorradas)) { + Yii::app()->user->setFlash('error', Yii::t('intranet', 'Alguna tecnología no es válida.')); + $foundInvalidChild = true; + } + } else { + Yii::app()->user->setFlash('error', Yii::t('intranet', 'Algún dato de la capacidad profesional no es válida.')); + } + + if (!$foundInvalidChild && $model->save() ) { + $masterValues = array ('capacidad_id'=>$model->id); + + if (!MultiModelForm::save($tecnologia, $tecnologiasValidas, $tecnologiasBorradas, $masterValues)) { + Yii::app()->user->setFlash('error', Yii::t('intranet', 'Se ha producido un error al guardar los datos de las tecnologías.')); + $foundInvalidChild = true; + } + + if (!$foundInvalidChild) { + Yii::app()->user->setFlash('success', Yii::t('intranet', 'Capacidad creada correctamente.')); + $this->redirect(array('index', 'cid'=>$candidato->id)); + } + } else { + Yii::app()->user->setFlash('error', Yii::t('intranet', 'Se ha producido un error al guardar la capacidad.')); } } @@ -94,7 +118,10 @@ class CandidatoCapacidadController extends Controller $candidato = Candidato::model()->findByPk($model->candidato_id); $tecnologia = new CandidatoCapacidadTecnologia(); - $tecnologiasValidas = array(); + $tecnologiasValidas = array(); + + $funcional = new CandidatoCapacidadFuncional(); + $funcionalesValidas = array(); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); @@ -109,6 +136,10 @@ class CandidatoCapacidadController extends Controller Yii::app()->user->setFlash('error', Yii::t('intranet', 'Alguna tecnología no es válida.')); $foundInvalidChild = true; } + if (!MultiModelForm::validate($funcional, $funcionalesValidas, $funcionalesBorradas)) { + Yii::app()->user->setFlash('error', Yii::t('intranet', 'Alguna capacidad funcional no es válida.')); + $foundInvalidChild = true; + } } else { Yii::app()->user->setFlash('error', Yii::t('intranet', 'Algún dato de la capacidad profesional no es válida.')); } @@ -120,13 +151,18 @@ class CandidatoCapacidadController extends Controller Yii::app()->user->setFlash('error', Yii::t('intranet', 'Se ha producido un error al guardar los datos de las tecnologías.')); $foundInvalidChild = true; } + + if (!MultiModelForm::save($funcional, $funcionalesValidas, $funcionalesBorradas, $masterValues)) { + Yii::app()->user->setFlash('error', Yii::t('intranet', 'Se ha producido un error al guardar los datos de las capacidades profesionales.')); + $foundInvalidChild = true; + } if (!$foundInvalidChild) { Yii::app()->user->setFlash('success', Yii::t('intranet', 'Capacidad actualizada correctamente.')); $this->redirect(array('index', 'cid'=>$candidato->id)); } } else { - //Yii::app()->user->setFlash('error', Yii::t('intranet', 'Se ha producido un error al guardar la capacidad.')); + // Yii::app()->user->setFlash('error', Yii::t('intranet', 'Se ha producido un error al guardar la capacidad.')); } } @@ -134,7 +170,9 @@ class CandidatoCapacidadController extends Controller 'model'=>$model, 'candidato'=>$candidato, 'tecnologia'=>$tecnologia, - 'tecnologiasValidas'=>$tecnologiasValidas, + 'tecnologiasValidas'=>$tecnologiasValidas, + 'funcional'=>$funcional, + 'funcionalesValidas'=>$funcionalesValidas, )); } diff --git a/www/protected/models/Candidato.php b/www/protected/models/Candidato.php index 803b88f..07e1705 100644 --- a/www/protected/models/Candidato.php +++ b/www/protected/models/Candidato.php @@ -80,8 +80,15 @@ class Candidato extends CActiveRecord } public function getNombreCompletoLocalidad() { + $nombre = ''; $poblacion = Poblacion::model()->with('provincia')->findByPk($this->localidad); - return $poblacion->poblacion . ' (' . $poblacion->provincia->provincia . ')'; + if (isset($poblacion)) { + $nombre = $poblacion->poblacion; + if (isset($poblacion->provincia)) { + $nombre .= ' (' . $poblacion->provincia->provincia . ')'; + } + } + return $nombre; } /** diff --git a/www/protected/models/CandidatoCapacidadFuncional.php b/www/protected/models/CandidatoCapacidadFuncional.php index a9ad863..207e39f 100644 --- a/www/protected/models/CandidatoCapacidadFuncional.php +++ b/www/protected/models/CandidatoCapacidadFuncional.php @@ -41,7 +41,7 @@ class CandidatoCapacidadFuncional extends CActiveRecord // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( - array('capacidad_id, funcional_id', 'required'), + array('funcional_id', 'required'), array('capacidad_id, funcional_id, meses_funcional', 'numerical', 'integerOnly'=>true), // The following rule is used by search(). // Please remove those attributes that should not be searched. diff --git a/www/protected/models/CandidatoCapacidadTecnologia.php b/www/protected/models/CandidatoCapacidadTecnologia.php index 4b74498..f8b2c82 100644 --- a/www/protected/models/CandidatoCapacidadTecnologia.php +++ b/www/protected/models/CandidatoCapacidadTecnologia.php @@ -43,7 +43,6 @@ class CandidatoCapacidadTecnologia extends CActiveRecord return array( array('tecnologia_id', 'required'), array('capacidad_id, tecnologia_id, meses_tecnologia', 'numerical', 'integerOnly'=>true), - //array('id, capacidad_id, tecnologia_id, meses_tecnologia', 'safe'), // The following rule is used by search(). // Please remove those attributes that should not be searched. diff --git a/www/protected/models/CapacidadProfesional.bak.php b/www/protected/models/CapacidadProfesional.bak.php deleted file mode 100644 index 66940e4..0000000 --- a/www/protected/models/CapacidadProfesional.bak.php +++ /dev/null @@ -1,111 +0,0 @@ -true), - array('observaciones', 'safe'), - // The following rule is used by search(). - // Please remove those attributes that should not be searched. - array('id, candidato_id, id_perfil_tecnico, meses_perfil_tecnico, id_perfil_funcional, meses_perfil_funcional, observaciones', 'safe', 'on'=>'search'), - ); - } - - /** - * @return array relational rules. - */ - public function relations() - { - // NOTE: you may need to adjust the relation name and the related - // class name for the relations automatically generated below. - return array( - 'perfilFuncional' => array(self::BELONGS_TO, 'PerfilFuncional', 'perfil_funcional_id'), - 'candidato' => array(self::BELONGS_TO, 'Candidatos', 'candidato_id'), - 'perfilTecnico' => array(self::BELONGS_TO, 'PerfilesTecnicos', 'perfil_tecnico_id'), - 'tecnologias' => array(self::HAS_MANY, 'CapacidadProfesionalTecnologia', 'capacidad_id'), - ); - } - - /** - * @return array customized attribute labels (name=>label) - */ - public function attributeLabels() - { - return array( - 'id' => 'ID', - 'candidato_id' => 'Id Candidato', - 'id_perfil_tecnico' => 'Id Perfil Tecnico', - 'meses_perfil_tecnico' => 'Meses Perfil Tecnico', - 'id_perfil_funcional' => 'Id Perfil Funcional', - 'meses_perfil_funcional' => 'Meses Perfil Funcional', - 'observaciones' => 'Observaciones', - ); - } - - /** - * Retrieves a list of models based on the current search/filter conditions. - * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. - */ - public function search() - { - // Warning: Please modify the following code to remove attributes that - // should not be searched. - - $criteria=new CDbCriteria; - - $criteria->compare('id',$this->id); - $criteria->compare('candidato_id',$this->candidato_id); - $criteria->compare('id_perfil_tecnico',$this->id_perfil_tecnico); - $criteria->compare('meses_perfil_tecnico',$this->meses_perfil_tecnico); - $criteria->compare('id_perfil_funcional',$this->id_perfil_funcional); - $criteria->compare('meses_perfil_funcional',$this->meses_perfil_funcional); - $criteria->compare('observaciones',$this->observaciones,true); - - return new CActiveDataProvider($this, array( - 'criteria'=>$criteria, - )); - } -} \ No newline at end of file diff --git a/www/protected/models/CapacidadProfesionalTecnologia.bak.php b/www/protected/models/CapacidadProfesionalTecnologia.bak.php deleted file mode 100644 index 4742e9c..0000000 --- a/www/protected/models/CapacidadProfesionalTecnologia.bak.php +++ /dev/null @@ -1,98 +0,0 @@ -true), - // The following rule is used by search(). - // Please remove those attributes that should not be searched. - array('id, id_capacidad, id_tecnologia, meses_tecnologia', 'safe', 'on'=>'search'), - ); - } - - /** - * @return array relational rules. - */ - public function relations() - { - // NOTE: you may need to adjust the relation name and the related - // class name for the relations automatically generated below. - return array( - 'idTecnologia' => array(self::BELONGS_TO, 'Tecnologias', 'id_tecnologia'), - 'idCapacidad' => array(self::BELONGS_TO, 'CandidatosCapacidades', 'id_capacidad'), - ); - } - - /** - * @return array customized attribute labels (name=>label) - */ - public function attributeLabels() - { - return array( - 'id' => 'ID', - 'id_capacidad' => 'Id Capacidad', - 'id_tecnologia' => 'Id Tecnologia', - 'meses_tecnologia' => 'Meses Tecnologia', - ); - } - - /** - * Retrieves a list of models based on the current search/filter conditions. - * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. - */ - public function search() - { - // Warning: Please modify the following code to remove attributes that - // should not be searched. - - $criteria=new CDbCriteria; - - $criteria->compare('id',$this->id); - $criteria->compare('id_capacidad',$this->id_capacidad); - $criteria->compare('id_tecnologia',$this->id_tecnologia); - $criteria->compare('meses_tecnologia',$this->meses_tecnologia); - - return new CActiveDataProvider($this, array( - 'criteria'=>$criteria, - )); - } -} \ No newline at end of file diff --git a/www/protected/tests/fixtures/tbl_usuarios.php b/www/protected/tests/fixtures/tbl_usuarios.php index 0605f3a..2510326 100644 --- a/www/protected/tests/fixtures/tbl_usuarios.php +++ b/www/protected/tests/fixtures/tbl_usuarios.php @@ -1,20 +1,28 @@ array( + 'admin' => array( 'id' => '1', + 'email' => 'admin@notanaddress.com', + 'name' => 'Administrador', + 'username' => 'admin', + 'password' => MD5('admin'), + 'last_login_time' => NULL, + ), + 'user1' => array( + 'id' => '2', 'email' => 'test1@notanaddress.com', 'name' => 'Fulanito de Tal', 'username' => 'Test_User_One', - 'password' => 'MD5(`test1`)', + 'password' => MD5('test1'), 'last_login_time' => NULL, ), 'user2' => array( - 'id' => '2', + 'id' => '3', 'email' => 'test2@notanaddress.com', 'name' => 'Menganito de Tal', 'username' => 'Test_User_Two', - 'password' => 'MD5(`test2`)', - 'last_login_time' => NULL, + 'password' => MD5('test2'), + 'last_login_time' => NULL,tingetio ), ); ?> \ No newline at end of file diff --git a/www/protected/views/candidatoCapacidad/_form.php b/www/protected/views/candidatoCapacidad/_form.php index 4f292ef..f080dcc 100644 --- a/www/protected/views/candidatoCapacidad/_form.php +++ b/www/protected/views/candidatoCapacidad/_form.php @@ -80,22 +80,28 @@ Yii::app()->clientScript->registerScript('wysiwyg', $script, CClientScript::POS_ error($model,'perfil_tecnico_id', array('class'=>'errortext')); ?> -
+
labelEx($model,'meses_perfil_tecnico'); ?>
textField($model,'meses_perfil_tecnico',array('maxlength'=>255,'class'=>'sf')); ?> error($model,'meses_perfil_tecnico', array('class'=>'errortext')); ?>
-
-
- renderPartial('_tecnologias', array( +
+ renderPartial('_tecnologias', array( + 'model'=>$model, + 'tecnologia'=>$tecnologia, + 'tecnologiasValidas'=>$tecnologiasValidas, + )); ?> +
+
+ renderPartial('_funcionales', array( 'model'=>$model, - 'tecnologia'=>$tecnologia, - 'tecnologiasValidas'=>$tecnologiasValidas, + 'funcional'=>$funcional, + 'funcionalesValidas'=>$funcionalesValidas, )); ?> +
-
diff --git a/www/protected/views/candidatoCapacidad/_funcionales.php b/www/protected/views/candidatoCapacidad/_funcionales.php new file mode 100644 index 0000000..3ebbd66 --- /dev/null +++ b/www/protected/views/candidatoCapacidad/_funcionales.php @@ -0,0 +1,60 @@ +clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/plugins/jquery-ui-1.8.16.custom.min.js'); +?> + +array( + 'funcional_id'=>array( + 'type'=>'dropdownlist', + 'layout'=>'{input}', + 'class'=>'ff', + 'items'=>array(0 => '-') + CHtml::listData(PerfilFuncional::model()->findAll(), 'id', 'descripcion'), + ), + 'meses_funcional'=>array( + 'class'=>'sf', + ), + ), +); +?> + + + +
+ widget('ext.multimodelform.MultiModelForm',array( + 'id' => 'id_funcional', //the uniques widget id + 'addItemText' => '', // no quiero mostrar el enlace de añadir + 'removeText' => 'Eliminar', + 'removeConfirm' => '¿Desea eliminar esta capacidad funcional?', + 'tableHtmlOptions' => array( + 'class' => 'sTable2', + 'width' => '99%', + ), + 'tableView' => true, + 'formConfig' => $funcionalFormConfig, //the form configuration array + 'model' => $funcional, //instance of the form model + + //if submitted not empty from the controller, + //the form will be rendered with validation errors + 'validatedItems' => $funcionalesValidas, + + //array of member instances loaded from db + 'data' => $funcional->findAll('capacidad_id=:capacidad_id', array(':capacidad_id'=>$model->id)), + + 'removeHtmlOptions' => array( + 'class' => 'button plain', + ), + )); + ?> +
+ +
+
diff --git a/www/protected/views/candidatoCapacidad/_tecnologias.php b/www/protected/views/candidatoCapacidad/_tecnologias.php index ed5eae9..e65b0e9 100644 --- a/www/protected/views/candidatoCapacidad/_tecnologias.php +++ b/www/protected/views/candidatoCapacidad/_tecnologias.php @@ -18,46 +18,44 @@ $tecnologiaFormConfig = array( ); ?> -
- + -
- widget('ext.multimodelform.MultiModelForm',array( - 'id' => 'id_tecnologia', //the unique widget id - 'addItemText' => '', // no quiero mostrar el enlace de añadir - 'removeText' => 'Eliminar', - 'removeConfirm' => '¿Desea eliminar esta tecnología?', - 'tableHtmlOptions' => array( - 'class' => 'sTable2', - 'width' => '99%', - ), - 'tableView' => true, - 'formConfig' => $tecnologiaFormConfig, //the form configuration array - 'model' => $tecnologia, //instance of the form model +
+ widget('ext.multimodelform.MultiModelForm',array( + 'id' => 'id_tecnologia', //the unique widget id + 'addItemText' => '', // no quiero mostrar el enlace de añadir + 'removeText' => 'Eliminar', + 'removeConfirm' => '¿Desea eliminar esta tecnología?', + 'tableHtmlOptions' => array( + 'class' => 'sTable2', + 'width' => '99%', + ), + 'tableView' => true, + 'formConfig' => $tecnologiaFormConfig, //the form configuration array + 'model' => $tecnologia, //instance of the form model - //if submitted not empty from the controller, - //the form will be rendered with validation errors - 'validatedItems' => $tecnologiasValidas, + //if submitted not empty from the controller, + //the form will be rendered with validation errors + 'validatedItems' => $tecnologiasValidas, - //array of member instances loaded from db - 'data' => $tecnologia->findAll('capacidad_id=:capacidad_id', array(':capacidad_id'=>$model->id)), + //array of member instances loaded from db + 'data' => $tecnologia->findAll('capacidad_id=:capacidad_id', array(':capacidad_id'=>$model->id)), - 'removeHtmlOptions' => array( + 'removeHtmlOptions' => array( + 'class' => 'button plain', + ), + )); + ?> +
+ + ?>
+
+
diff --git a/www/protected/views/candidatoCapacidad/update.php b/www/protected/views/candidatoCapacidad/update.php index 82c3aec..809e3ed 100644 --- a/www/protected/views/candidatoCapacidad/update.php +++ b/www/protected/views/candidatoCapacidad/update.php @@ -13,5 +13,7 @@ $this->pageTitle=Yii::t('intranet', 'Modificar capacidad profesional'); 'model'=>$model, 'tecnologia'=>$tecnologia, 'tecnologiasValidas'=>$tecnologiasValidas, + 'funcional'=>$funcional, + 'funcionalesValidas'=>$funcionalesValidas, )); ?>