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