]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Обновление метода actionCreate
authorvladfo <fvv2011@gmail.com>
Mon, 23 Sep 2024 13:20:15 +0000 (16:20 +0300)
committervladfo <fvv2011@gmail.com>
Mon, 23 Sep 2024 13:20:15 +0000 (16:20 +0300)
erp24/controllers/crud/TaskController.php
erp24/views/task/four-columns.php

index 543b42634cf1b117a4f99e5b43b82f3a56ac5ab6..430a3da055043b1da42793c397218d544bcf3677 100644 (file)
@@ -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);
+            }
+        }
     }
 
     /**
index 4580fa111ca6d1d274bb6d667b259c5dbbcf4b59..2dd87d027225289d98b989b179381234c6a5af10 100755 (executable)
@@ -513,7 +513,7 @@ JS;
 
 </div>
 <script type="text/javascript">
-    var createTaskUrl = '<?= \yii\helpers\Url::to(['/crud/task/create-ajax']) ?>';
+    var createTaskUrl = '<?= \yii\helpers\Url::to(['/crud/task/create']) ?>';
 </script>
 
 <!-- Блок для модального окна -->