array('index','view','create','update','delete','admin'),
'users'=>array('@'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
/**
* Displays a particular model.
* @param integer $id the ID of the model to be displayed
*/
public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id),
));
}
/**
* Crea una nueva capacidad asociado al candidato indicado.
* @param integer $cid el ID del candidato
*/
public function actionCreate($cid)
{
Yii::import('ext.multimodelform.MultiModelForm');
$model=new CandidatoCapacidad;
$model->candidato_id = $cid;
$tecnologia = new CandidatoCapacidadTecnologia();
$tecnologiasValidas = array();
$funcional = new CandidatoCapacidadFuncional();
$funcionalesValidas = array();
$candidato = Candidato::model()->findByPk($cid);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['CandidatoCapacidad']))
{
$model->attributes=$_POST['CandidatoCapacidad'];
$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;
}
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.'));
}
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 (!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 funcionales.'));
$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.'));
}
}
$this->render('create',array(
'model'=>$model,
'candidato'=>$candidato,
'tecnologia'=>$tecnologia,
'tecnologiasValidas'=>$tecnologiasValidas,
'funcional'=>$funcional,
'funcionalesValidas'=>$funcionalesValidas,
));
}
/**
* Updates a particular model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id the ID of the model to be updated
*/
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();
$funcional = new CandidatoCapacidadFuncional();
$funcionalesValidas = array();
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['CandidatoCapacidad']))
{
$model->attributes=$_POST['CandidatoCapacidad'];
$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;
}
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.'));
}
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 (!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 funcionales.'));
$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,
'funcional'=>$funcional,
'funcionalesValidas'=>$funcionalesValidas,
));
}
/**
* Deletes a particular model.
* If deletion is successful, the browser will be redirected to the 'admin' page.
* @param integer $id the ID of the model to be deleted
*/
public function actionDelete($id)
{
if(Yii::app()->request->isPostRequest)
{
// we only allow deletion via POST request
$this->loadModel($id)->delete();
Yii::app()->user->setFlash('success', Yii::t('intranet', 'Capacidad eliminada correctamente.'));
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
else
throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}
/**
* Lists all models.
*/
public function actionIndex($cid)
{
$this->layout = '//layouts/candidato';
$candidato = Candidato::model()->findByPk($cid);
$dataProvider = new CActiveDataProvider('CandidatoCapacidad', array(
'criteria'=>array(
'condition' => 'candidato_id='.$cid,
),
));
$this->render('index',array(
'dataProvider'=>$dataProvider,
'candidato'=>$candidato,
));
}
/**
* Manages all models.
*/
public function actionAdmin()
{
$model=new CandidatoCapacidad('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['CandidatoCapacidad']))
$model->attributes=$_GET['CandidatoCapacidad'];
$this->render('admin',array(
'model'=>$model,
));
}
/**
* Returns the data model based on the primary key given in the GET variable.
* If the data model is not found, an HTTP exception will be raised.
* @param integer the ID of the model to be loaded
*/
public function loadModel($id)
{
$model=CandidatoCapacidad::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
/**
* Calcula el valor para la columna 'Capacidad técnica' del grid
* @param $data datos de la fila actual
* @param $row índice de la fila actual
*/
protected function gridDataColumnTecnologias($data, $row)
{
$lista = array();
foreach ($data->tecnologias as $tecnologia) {
$perfil = $tecnologia->tecnologia->descripcion;
$meses = '(' . $tecnologia->meses_tecnologia . ' ' . Yii::t('intranet', 'meses') . ')';
$lista[] = $perfil . (($meses != '( '.Yii::t('intranet', 'meses').')') ? ' '. $meses : '');
}
$value = implode('
', $lista);
return ($value == NULL) ? CHtml::tag("span", array("class"=>"nodata"), Yii::t('intranet', 'Sin tecnologías')) : $value;
}
/**
* Calcula el valor para la columna 'Capacidad técnica' del grid
* @param $data datos de la fila actual
* @param $row índice de la fila actual
*/
protected function gridDataColumnFuncionales($data, $row)
{
$lista = array();
foreach ($data->capacidadesFuncionales as $funcionalidad) {
$perfil = $funcionalidad->perfilFuncional->descripcion;
$meses = '(' . $funcionalidad->meses_funcional . ' ' . Yii::t('intranet', 'meses') . ')';
$lista[] = $perfil . (($meses != '( '. Yii::t('intranet', 'meses') .')') ? ' '. $meses : '');
}
$value = implode('
', $lista);
return ($value == NULL) ? CHtml::tag("span", array("class"=>"nodata"), Yii::t('intranet', 'Sin capacidades funcionales')) : $value;
}
/**
* Performs the AJAX validation.
* @param CModel the model to be validated
*/
protected function performAjaxValidation($model)
{
if(isset($_POST['ajax']) && $_POST['ajax']==='candidato-capacidad-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
}
?>