/** * 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::app()->request->getParam('id'); $model = $this->loadModel($id); $this->menu_activo = 'empresa'; $local = new Localidad(); $int = new JefeProyecto(); $ext = new JefeProyecto(); $user = new UsuarioAutoComplete(); $tar = new TareaAutoComplete(); $conf = new Configuracion(); $internos = array(); $externos = array(); $internos[0] = $int; $externos[0] = $ext; $localidades[0] = $local; $usuarios[0] = $user; $tareas[0] = $tar; if (isset($_POST['Proyecto'])) { $model->attributes = $_POST['Proyecto']; $error = false; if (isset($_POST['interno'])) { foreach ($_POST['interno']['JefeProyecto'] as $index => $interno) { if (!empty($interno['id'])) { $int = JefeProyecto::model()->findByPk($interno['id']); } else { $int = new JefeProyecto(); $int->proyecto_id = $model->id; $int->tipo_jefe_proyecto_id = 1; } $int->attributes = $interno; $int->validate(); $internos[$index] = $int; if (count($int->getErrors()) > 0) { $error = true; } } } if (isset($_POST['externo'])) { foreach ($_POST['externo']['JefeProyecto'] as $index => $externo) { if (!empty($externo['id'])) { $ext = JefeProyecto::model()->findByPk($externo['id']); } else { $ext = new JefeProyecto(); $ext->proyecto_id = $model->id; $ext->tipo_jefe_proyecto_id = 2; } $ext->attributes = $externo; $ext->validate(); $externos[$index] = $ext; if (count($ext->getErrors()) > 0) { $error = true; } } } if (isset($_POST['Localidad'])) { foreach ($_POST['Localidad'] as $index => $localidad) { if (!empty($localidad['id'])) { $local = Localidad::model()->findByPk($localidad['id']); } else { $local = new Localidad(); $local->proyecto_id = $model->id; } $local->attributes = $localidad; $local->validate(); $localidades[$index] = $local; if (count($local->getErrors()) > 0) { $error = true; } } } if (isset($_POST['Usuario'])) { foreach ($_POST['Usuario'] as $index => $usuario) { if (!empty($usuario['id'])) { $user = UsuarioAutoComplete::model()->findByPk($usuario['id']); } else { $user = new UsuarioAutoComplete(); } $user->attributes = $usuario; $user->validate(); $usuarios[$index] = $user; if (count($user->getErrors()) > 0) { $error = true; } } } if (isset($_POST['Tarea'])) { foreach ($_POST['Tarea'] as $index => $tarea) { if (!empty($tarea['id'])) { $tar = TareaAutoComplete::model()->findByPk($tarea['id']); } else { $tar = new TareaAutoComplete(); } $tar->attributes = $tarea; $tar->validate(); $tareas[$index] = $tar; if (count($tar->getErrors()) > 0) { $error = true; } } } if ($model->validate() && $error == false) { if ($model->update()) { $conf = Configuracion::model()->findByAttributes(array('proyecto_id' => $model->id)); if (isset($conf)) { $conf->unidades_red = isset($_POST['Configuracion']['unidades_red']) ? $_POST['Configuracion']['unidades_red'] : 0; $conf->foto = isset($_POST['Configuracion']['foto']) ? $_POST['Configuracion']['foto'] : 0; $conf->configuracion_red = isset($_POST['Configuracion']['configuracion_red']) ? $_POST['Configuracion']['configuracion_red'] : 0; $conf->migracion = isset($_POST['Configuracion']['migracion']) ? $_POST['Configuracion']['migracion'] : 0; $conf->proyecto_id = $model->id; $conf->update(); } $ids = array(); foreach ($internos as $interno) { $interno->save(); $ids[] = $interno->id; } $criteria = new CDbCriteria(); $criteria->params = array(':id' => $model->id); $criteria->condition = 'proyecto_id =:id AND tipo_jefe_proyecto_id = 1'; $criteria->addNotInCondition('id', $ids); JefeProyecto::model()->deleteAll($criteria); $ids2 = array(); foreach ($externos as $externo) { $externo->save(); $ids2[] = $externo->id; } $criteria = new CDbCriteria(); $criteria->params = array(':id' => $model->id); $criteria->condition = 'proyecto_id =:id AND tipo_jefe_proyecto_id = 2'; $criteria->addNotInCondition('id', $ids2); JefeProyecto::model()->deleteAll($criteria); $ids3 = array(); foreach ($localidades as $localidad) { $localidad->save(); $ids3[] = $localidad->id; } $criteria = new CDbCriteria(); $criteria->params = array(':id' => $model->id); $criteria->condition = 'proyecto_id =:id'; $criteria->addNotInCondition('id', $ids3); Localidad::model()->deleteAll($criteria); $ids4 = array(); foreach ($usuarios as $usuario) { $user = ProyectoHasUsuario::model()->findByAttributes(array('proyecto_id' => $model->id, 'usuario_id' => $usuario['id'])); if (!$user) { $user = new ProyectoHasUsuario(); $user->proyecto_id = $model->id; $user->usuario_id = $usuario['id']; $user->save(); } $ids4[] = $usuario['id']; } $criteria = new CDbCriteria(); $criteria->params = array(':id' => $model->id); $criteria->condition = 'proyecto_id =:id'; $criteria->addNotInCondition('usuario_id', $ids4); ProyectoHasUsuario::model()->deleteAll($criteria); $ids5 = array(); foreach ($tareas as $tarea) { $tar = ProyectoHasTarea::model()->findByAttributes(array('proyecto_id' => $model->id, 'tarea_id' => $tarea['id'])); if (!$tar) { $tar = new ProyectoHasTarea(); $tar->proyecto_id = $model->id; $tar->tarea_id = $tarea['id']; $tar->save(); } $ids5[] = $tarea['id']; } $criteria = new CDbCriteria(); $criteria->params = array(':id' => $model->id); $criteria->condition = 'proyecto_id =:id'; $criteria->addNotInCondition('tarea_id', $ids5); ProyectoHasTarea::model()->deleteAll($criteria); $this->redirect(array('empresa/proyectos', 'id' => $model->empresa_id)); } } } else { $local = Localidad::model()->findAllByAttributes(array('proyecto_id' => $model->id)); $int = JefeProyecto::model()->findAllByAttributes(array('proyecto_id' => $model->id, 'tipo_jefe_proyecto_id' => 1)); $ext = JefeProyecto::model()->findAllByAttributes(array('proyecto_id' => $model->id, 'tipo_jefe_proyecto_id' => 2)); $user = ProyectoHasUsuario::model()->findAllByAttributes(array('proyecto_id' => $model->id)); $tare = ProyectoHasTarea::model()->findAllByAttributes(array('proyecto_id' => $model->id)); $conf = Configuracion::model()->findByAttributes(array('proyecto_id' => $model->id)); $u = array(); foreach ($user as $index => $us) { $u[$index] = UsuarioAutoComplete::model()->findByPk($us->usuario_id); } $t = array(); foreach ($tare as $index => $tar) { $t[$index] = TareaAutoComplete::model()->findByPk($tar->tarea_id); } $internos = $int; $externos = $ext; $localidades = $local; $usuarios = $u; $tareas = $t; } $this->render('update', array('model' => $model, 'localidades' => $localidades, 'internos' => $internos, 'externos' => $externos, 'usuarios' => $usuarios, 'listUsuarios' => $this->listUsuarios(), 'listTareas' => $this->listTareas(), 'tareas' => $tareas, 'id' => $id, 'configuracion' => $conf)); }