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