/**
  * 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));
 }