diff --git a/www/protected/controllers/CandidatoCapacidadController.php b/www/protected/controllers/CandidatoCapacidadController.php index e5a1d19..113534f 100644 --- a/www/protected/controllers/CandidatoCapacidadController.php +++ b/www/protected/controllers/CandidatoCapacidadController.php @@ -55,6 +55,9 @@ class CandidatoCapacidadController extends Controller { $model=new CandidatoCapacidad; $model->candidato_id = $cid; + + $tecnologia = new CandidatoCapacidadTecnologia(); + $tecnologiasValidas = array(); $candidato = Candidato::model()->findByPk($cid); @@ -73,6 +76,8 @@ class CandidatoCapacidadController extends Controller $this->render('create',array( 'model'=>$model, 'candidato'=>$candidato, + 'tecnologia'=>$tecnologia, + 'tecnologiasValidas'=>$tecnologiasValidas, )); } @@ -83,24 +88,53 @@ class CandidatoCapacidadController extends Controller */ public function actionUpdate($id) { + Yii::import('ext.multimodelform.MultiModelForm'); + $model=$this->loadModel($id); $candidato = Candidato::model()->findByPk($model->candidato_id); + $tecnologia = new CandidatoCapacidadTecnologia(); + $tecnologiasValidas = array(); + // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if(isset($_POST['CandidatoCapacidad'])) { $model->attributes=$_POST['CandidatoCapacidad']; - if($model->save()) { - Yii::app()->user->setFlash('success', Yii::t('intranet', 'Capacidad actualizada correctamente.')); - $this->redirect(array('index', 'cid'=>$candidato->id)); + + $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 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.')); } } $this->render('update',array( 'model'=>$model, 'candidato'=>$candidato, + 'tecnologia'=>$tecnologia, + 'tecnologiasValidas'=>$tecnologiasValidas, )); } diff --git a/www/protected/models/CandidatoCapacidadTecnologia.php b/www/protected/models/CandidatoCapacidadTecnologia.php index aa7386c..4b74498 100644 --- a/www/protected/models/CandidatoCapacidadTecnologia.php +++ b/www/protected/models/CandidatoCapacidadTecnologia.php @@ -41,11 +41,13 @@ class CandidatoCapacidadTecnologia extends CActiveRecord // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( - array('capacidad_id, tecnologia_id', 'required'), - array('capacidad_id, tecnologia_id, meses_tecnologia', 'numerical', 'integerOnly'=>true), - // The following rule is used by search(). - // Please remove those attributes that should not be searched. - array('id, capacidad_id, tecnologia_id, meses_tecnologia', 'safe', 'on'=>'search'), + 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. + array('id, capacidad_id, tecnologia_id, meses_tecnologia', 'safe', 'on'=>'search'), ); } diff --git a/www/protected/views/candidato/create.php b/www/protected/views/candidato/create.php index e9f560c..5fb2b44 100644 --- a/www/protected/views/candidato/create.php +++ b/www/protected/views/candidato/create.php @@ -14,10 +14,10 @@ $this->pageTitle=Yii::t('intranet', 'Nuevo candidato'); ?> renderPartial('_form', array( - 'model'=>$model, - 'idioma'=>$idioma, - 'titulacion'=>$titulacion, - 'idiomasValidos'=>$idiomasValidos, - 'titulacionesValidas'=>$titulacionesValidas, + 'model'=>$model, + 'idioma'=>$idioma, + 'titulacion'=>$titulacion, + 'idiomasValidos'=>$idiomasValidos, + 'titulacionesValidas'=>$titulacionesValidas, )); ?> \ No newline at end of file diff --git a/www/protected/views/candidatoCapacidad/_form.php b/www/protected/views/candidatoCapacidad/_form.php index 4939ddd..4f292ef 100644 --- a/www/protected/views/candidatoCapacidad/_form.php +++ b/www/protected/views/candidatoCapacidad/_form.php @@ -42,7 +42,7 @@ Yii::app()->clientScript->registerScript('wysiwyg', $script, CClientScript::POS_
- + +