From: vladfo Date: Mon, 23 Sep 2024 13:20:15 +0000 (+0300) Subject: Обновление метода actionCreate X-Git-Tag: 1.5~5^2~4 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=f063a7e12625c3a0b20664d65448836905fce4da;p=erp24_rep%2Fyii-erp24%2F.git Обновление метода actionCreate --- diff --git a/erp24/controllers/crud/TaskController.php b/erp24/controllers/crud/TaskController.php index 543b4263..430a3da0 100644 --- a/erp24/controllers/crud/TaskController.php +++ b/erp24/controllers/crud/TaskController.php @@ -111,171 +111,24 @@ class TaskController extends Controller * @return string|\yii\web\Response */ public function actionCreate() - { - if (Yii::$app->request->isAjax) { - $val = Yii::$app->request->post("value"); - $alias = TaskEntity::findOne($val)->alias; - return json_encode(TaskService::getEntitiesByAlias($alias), JSON_UNESCAPED_UNICODE); - } - - if ($this->request->isPost) { - - $model = $this->findModel($this->request->post("Task")['id']); - - if ($model->load($this->request->post())) { - - $taskUsers = Yii::$app->request->post('taskUsers'); - TaskUsers::deleteAll(['task_id' => $model->id]); - if ($taskUsers) { - foreach ($taskUsers as $taskUser) { - $taskUserRecord = new TaskUsers(); - $taskUserRecord->admin_id = $taskUser; - $taskUserRecord->task_id = $model->id; - $taskUserRecord->save(false); - } - } - - $taskViewers = Yii::$app->request->post('taskViewers'); - TaskViewers::deleteAll(['task_id' => $model->id]); - if ($taskViewers) { - foreach ($taskViewers as $taskViewer) { - $taskViewerRecord = new TaskViewers(); - $taskViewerRecord->admin_id = $taskViewer; - $taskViewerRecord->task_id = $model->id; - $taskViewerRecord->save(false); - } - } - - $model->created_at = date("Y-m-d H:i:s"); - $model->group_id = 1; - $model->is_completed = 0; - $model->result = ''; - //$model->updated_by = 1; - $model->created_by = $_SESSION['admin_id']; - //$model->closed_by = 1; - $model->save(false); - - $model->files = UploadedFile::getInstances($model, 'files'); - if ($model->files) { - foreach ($model->files as $file) { - FileService::saveUploadedFile($file, "task", $model->id); - } - } - - TaskService::informStatusChange($model->id); - - return $this->redirect(['view', 'id' => $model->id]); - } - } else { - $model = new Task(); - $model->loadDefaultValues(); - $model->data_start = date("Y-m-d H:i:s"); - $model->duration = "30:m"; - $model->name = ''; - $model->description = ''; - $model->task_type_id = 0; - $model->deadline = date("Y-m-d H:i:s", strtotime("+1 day", strtotime($model->data_start))); - $model->save(false); - } - - $taskEntity = TaskEntity::find()->all(); - $tasksType = TasksType::find()->all(); - $taskStatus = TaskStatus::find()->all(); - $taskAlertLevels = TaskAlertLevel::find()->all(); - - $entities = []; // TaskService::getEntitiesByAlias(EntityType::findOne($model->entity_type)->alias); - - return $this->render('create', compact('model', 'entities', 'taskEntity', 'tasksType', 'taskStatus', 'taskAlertLevels')); - } - - - public function actionCreateAjax() { $model = new Task(); - // Если это AJAX-запрос на загрузку формы + // Если запрос AJAX и не POST, рендерим форму if (Yii::$app->request->isAjax && !Yii::$app->request->isPost) { - $taskEntity = TaskEntity::find()->all(); - $tasksType = TasksType::find()->all(); - $taskStatus = TaskStatus::find()->all(); - $taskAlertLevels = TaskAlertLevel::find()->all(); - $entities = []; // TaskService::getEntitiesByAlias(EntityType::findOne($model->entity_type)->alias); - $canUpdateAll = true; - $canUpdateStatusAndDuration = true; - - $model->loadDefaultValues(); - $model->data_start = date("Y-m-d H:i:s"); - $model->duration = "30:m"; - $model->name = ''; - $model->description = ''; - $model->task_type_id = 0; - $model->deadline = date("Y-m-d H:i:s", strtotime("+1 day", strtotime($model->data_start))); - $model->data_end = date("Y-m-d H:i:s", strtotime("+1 day", strtotime($model->data_start))); - $model->group_id = 1; - - - // Возвращаем HTML формы для рендеринга в модальном окне - return $this->renderAjax('_form', compact('model', 'entities', 'taskEntity', 'tasksType', 'taskStatus', 'taskAlertLevels', 'canUpdateAll', 'canUpdateStatusAndDuration')); + return $this->renderCreateForm($model, true); // Отдельный метод для рендеринга формы } - // Если это POST-запрос для сохранения данных + // Если POST-запрос if ($this->request->isPost) { - - + // Загрузка и сохранение данных модели if ($model->load($this->request->post()) && $model->save()) { - //var_dump($model->id); - // Обработка taskUsers - $taskUsers = Yii::$app->request->post('taskUsers'); - TaskUsers::deleteAll(['task_id' => $model->id]); - if ($taskUsers) { - foreach ($taskUsers as $taskUser) { - $taskUserRecord = new TaskUsers(); - $taskUserRecord->admin_id = $taskUser; - $taskUserRecord->task_id = $model->id; - $taskUserRecord->save(false); - } - } - - // Обработка taskViewers - $taskViewers = Yii::$app->request->post('taskViewers'); - TaskViewers::deleteAll(['task_id' => $model->id]); - if ($taskViewers) { - foreach ($taskViewers as $taskViewer) { - $taskViewerRecord = new TaskViewers(); - $taskViewerRecord->admin_id = $taskViewer; - $taskViewerRecord->task_id = $model->id; - $taskViewerRecord->save(false); - } - } + $this->saveTaskUsersAndViewers($model); // Метод для сохранения пользователей и зрителей задачи - - - - try { - - - // Обновляем и сохраняем данные модели - $model->created_at = date("Y-m-d H:i:s"); - $model->group_id = 1; - $model->is_completed = 0; - $model->result = ''; - $model->created_by = $_SESSION['admin_id']; - - - $model->save(false); - - } catch (Exception $e) { - // Обработка исключений - echo 'Ошибка: ', $e->getMessage(); - } + $this->updateTaskModelData($model); // Метод для обновления дополнительных данных модели // Сохранение файлов - $model->files = UploadedFile::getInstances($model, 'files'); - if ($model->files) { - foreach ($model->files as $file) { - FileService::saveUploadedFile($file, "task", $model->id); - } - } + $this->saveTaskFiles($model); // Уведомляем о смене статуса задачи TaskService::informStatusChange($model->id); @@ -289,14 +142,94 @@ class TaskController extends Controller return $this->redirect(['view', 'id' => $model->id]); } - // Если форма содержит ошибки валидации, возвращаем их + // Если форма содержит ошибки валидации и это AJAX, возвращаем их if (Yii::$app->request->isAjax) { return $this->renderAjax('_form', compact('model')); } } // Если запрос не AJAX и не POST, просто отрендерим страницу создания - return $this->render('create', compact('model')); + return $this->renderCreateForm($model, false); // Отдельный метод для рендеринга формы + } + +// Метод для рендеринга формы + private function renderCreateForm($model, $isAjax = false) + { + $taskEntity = TaskEntity::find()->all(); + $tasksType = TasksType::find()->all(); + $taskStatus = TaskStatus::find()->all(); + $taskAlertLevels = TaskAlertLevel::find()->all(); + $entities = []; // TaskService::getEntitiesByAlias(EntityType::findOne($model->entity_type)->alias); + $canUpdateAll = true; + $canUpdateStatusAndDuration = true; + + $model->loadDefaultValues(); + $model->data_start = date("Y-m-d H:i:s"); + $model->duration = "30:m"; + $model->name = ''; + $model->description = ''; + $model->task_type_id = 0; + $model->deadline = date("Y-m-d H:i:s", strtotime("+1 day", strtotime($model->data_start))); + $model->data_end = date("Y-m-d H:i:s", strtotime("+1 day", strtotime($model->data_start))); + $model->group_id = 1; + if ($isAjax) { + return $this->renderAjax('_form', compact('model', 'entities', 'taskEntity', 'tasksType', 'taskStatus', 'taskAlertLevels', 'canUpdateAll', 'canUpdateStatusAndDuration')); + } + + return $this->render('create', compact('model', 'entities', 'taskEntity', 'tasksType', 'taskStatus', 'taskAlertLevels')); + } + +// Метод для сохранения пользователей задачи и наблюдателей + private function saveTaskUsersAndViewers($model) + { + $taskUsers = Yii::$app->request->post('taskUsers'); + TaskUsers::deleteAll(['task_id' => $model->id]); + if ($taskUsers) { + foreach ($taskUsers as $taskUser) { + $taskUserRecord = new TaskUsers(); + $taskUserRecord->admin_id = $taskUser; + $taskUserRecord->task_id = $model->id; + $taskUserRecord->save(false); + } + } + + $taskViewers = Yii::$app->request->post('taskViewers'); + TaskViewers::deleteAll(['task_id' => $model->id]); + if ($taskViewers) { + foreach ($taskViewers as $taskViewer) { + $taskViewerRecord = new TaskViewers(); + $taskViewerRecord->admin_id = $taskViewer; + $taskViewerRecord->task_id = $model->id; + $taskViewerRecord->save(false); + } + } + } + +// Метод для обновления дополнительных данных модели задачи + private function updateTaskModelData($model) + { + try { + $model->created_at = date("Y-m-d H:i:s"); + $model->group_id = 1; + $model->is_completed = 0; + $model->result = ''; + $model->created_by = $_SESSION['admin_id']; + $model->save(false); + } catch (Exception $e) { + // Обработка исключений + echo 'Ошибка: ', $e->getMessage(); + } + } + +// Метод для сохранения файлов задачи + private function saveTaskFiles($model) + { + $model->files = UploadedFile::getInstances($model, 'files'); + if ($model->files) { + foreach ($model->files as $file) { + FileService::saveUploadedFile($file, "task", $model->id); + } + } } /** diff --git a/erp24/views/task/four-columns.php b/erp24/views/task/four-columns.php index 4580fa11..2dd87d02 100755 --- a/erp24/views/task/four-columns.php +++ b/erp24/views/task/four-columns.php @@ -513,7 +513,7 @@ JS;