/** * Updates an existing Comunicado model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); $modelsContactos = $model->comunicadosContactos; $vista = \common\models\Refactor::TipoComunicadobyVista($model->tipocomunicado_id); if ($model->load(Yii::$app->request->post())) { // Lista todos los contactos $oldIDs = ArrayHelper::map($modelsContactos, 'ccontactos_id', 'ccontactos_id'); $modelsContactos = Model::createMultipleccontacto(ComunicadosContactos::classname(), $modelsContactos); Model::loadMultiple($modelsContactos, Yii::$app->request->post()); $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsContactos, 'ccontactos_id', 'ccontactos_id'))); // validate all models $valid = $model->validate(); // Debido a que el campo dependenciaid no se captura ( y es un campo obligatorio) $valid = Model::validateMultiple($modelsContactos, ['nombre', 'cargo', 'telefono', 'correo']) && $valid; // Modificando los contactos if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { if ($flag = $model->save(false)) { if (!empty($deletedIDs)) { ComunicadosContactos::deleteAll(['ccontactos_id' => $deletedIDs]); } foreach ($modelsContactos as $modelContacto) { $modelContacto->dependenciaid = $model->dependencia_id; if (!($flag = $modelContacto->save(false))) { $transaction->rollBack(); break; } } } if ($flag) { $transaction->commit(); return $this->redirect([\common\models\Refactor::TipoComunicadobyVista($model->tipocomunicado_id), 'id' => $model->tipocomunicado_id]); } } catch (Exception $e) { $transaction->rollBack(); } } } else { if ($vista == 'gobierno-federal') { return $this->render('update-gob', ['model' => $model, 'modelsContactos' => empty($modelsContactos) ? [new ComunicadosContactos()] : $modelsContactos]); } elseif ($vista == 'embajadas') { return $this->render('update-embajada', ['model' => $model, 'modelsContactos' => empty($modelsContactos) ? [new ComunicadosContactos()] : $modelsContactos]); } elseif ($vista == 'gdf') { return $this->render('update-gdf', ['model' => $model, 'modelsContactos' => empty($modelsContactos) ? [new ComunicadosContactos()] : $modelsContactos]); } elseif ($vista == 'estatales') { return $this->render('update-estatales', ['model' => $model, 'modelsContactos' => empty($modelsContactos) ? [new ComunicadosContactos()] : $modelsContactos]); } elseif ($vista == 'partidos-politicos') { return $this->render('update-ppoliticos', ['model' => $model, 'modelsContactos' => empty($modelsContactos) ? [new ComunicadosContactos()] : $modelsContactos]); } elseif ($vista == 'delegaciones') { return $this->render('update-delegacion', ['model' => $model, 'modelsContactos' => empty($modelsContactos) ? [new ComunicadosContactos()] : $modelsContactos]); } } }
/** * Borra a un contacto y redirecciona a la vista correcta * If deletion is successful, the browser will be redirected to the 'index' page. * @param integer $id * @return mixed */ public function actionDelete($id) { $model = $this->findModel($id); $vista = \common\models\Refactor::TipoCuentabyVista($model->cuenta->tipocuenta_id); // Eliminando las cuentas que estaba manejando el usuario $transaction = \Yii::$app->db->beginTransaction(); try { // Elimina el contacto de todas las cuentas CuentasManager::deleteAll('contactos_id = :contacto', [':contacto' => $id]); $this->findModel($id)->delete(); $transaction->commit(); return $this->redirect([$vista]); } catch (Exception $e) { $transaction->rollBack(); } }
/** * Borra la cuenta asociada y sus contactos, los contactos que estan asociados a otras cuentas, NO se eliminan, se reasignan * @param integer $id * @return mixed */ public function actionDelete($id) { $model = $this->findModel($id); $vista = \common\models\Refactor::TipoCuentabyVista($model->tipocuenta_id); //$cuenta = $model->cuentasid; $transaction = \Yii::$app->db->beginTransaction(); try { $contactos = Contactos::findAll(['cuenta_id' => $model->cuentasid]); foreach ($contactos as $contacto) { $cuentaManager = CuentasManager::findOne(['contactos_id' => $contacto->contactosid]); if ($cuentaManager != null) { Contactos::updateAll(['cuenta_id' => $cuentaManager->cuenta_id], 'contactosid = ' . $cuentaManager->contactos_id); CuentasManager::deleteAll('cuentamanager_id =' . $cuentaManager->cuentamanager_id); } } Contactos::deleteAll('cuenta_id = ' . $model->cuentasid); Cuentas::deleteAll('cuentasid =' . $model->cuentasid); $transaction->commit(); \Yii::$app->getSession()->setFlash('error', 'Se borro la cuenta: ' . $model->cuenta . ' ( ' . $model->subcuenta . ' ) junto con los contactos que estan ligados solamente a ella'); } catch (\Exception $e) { $transaction->rollBack(); throw $e; } return $this->redirect(Yii::$app->request->referrer); }