From 4b56b11831385968e68e4d2b8a030137f8348328 Mon Sep 17 00:00:00 2001 From: Kavalar Date: Mon, 9 Oct 2023 23:57:01 +0300 Subject: [PATCH] task priority, task expand --- common/models/ProjectTask.php | 18 ++++++++++++- common/services/TaskService.php | 4 +-- .../api/controllers/TaskController.php | 27 +++++++++++++++++++ frontend/modules/api/models/Project.php | 3 +++ 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/common/models/ProjectTask.php b/common/models/ProjectTask.php index 85b35c9..ca54fec 100644 --- a/common/models/ProjectTask.php +++ b/common/models/ProjectTask.php @@ -102,7 +102,9 @@ class ProjectTask extends ActiveRecord return [ 'id', 'project_id', - //'project.name', + 'project_name' => function () { + return $this->project->name ?? null; + }, 'title', 'created_at', 'updated_at', @@ -133,7 +135,21 @@ class ProjectTask extends ActiveRecord return Comment::find()->where(['entity_id' => $this->id, 'entity_type' => 2, 'status' => Comment::STATUS_ACTIVE])->count(); }, 'taskUsers', + ]; + } + + /** + * @return string[] + */ + public function extraFields(): array + { + return [ 'timers', + 'column' => function () { + return [ + 'column_title' => $this->column->title ?? null + ]; + } ]; } diff --git a/common/services/TaskService.php b/common/services/TaskService.php index 6ad8d1e..e9fc814 100644 --- a/common/services/TaskService.php +++ b/common/services/TaskService.php @@ -29,13 +29,13 @@ class TaskService public static function getTaskListByProject($project_id): array { - return ProjectTask::find()->where(['project_id' => $project_id])->all(); + return ProjectTask::find()->where(['project_id' => $project_id])->orderBy('priority DESC')->all(); } public static function getTaskListByUser($user_id): array { $taskIdList = ProjectTaskUser::find()->where(['user_id' => $user_id])->select('task_id')->column(); - return ProjectTask::find()->where([ 'IN', 'id', $taskIdList])->orWhere(['user_id' => $user_id])->all(); + return ProjectTask::find()->where([ 'IN', 'id', $taskIdList])->orWhere(['user_id' => $user_id])->orderBy('priority DESC')->all(); } public static function updateTask($task_params): ?ProjectTask diff --git a/frontend/modules/api/controllers/TaskController.php b/frontend/modules/api/controllers/TaskController.php index 8147870..3c7ca1e 100644 --- a/frontend/modules/api/controllers/TaskController.php +++ b/frontend/modules/api/controllers/TaskController.php @@ -137,6 +137,15 @@ class TaskController extends ApiController * type="integer", * ) * ), + * @OA\Parameter( + * name="expand", + * in="query", + * example="column,timers", + * description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля column, timers", + * @OA\Schema( + * type="string", + * ) + * ), * @OA\Response( * response=200, * description="Возвращает массив объектов Задач", @@ -184,6 +193,15 @@ class TaskController extends ApiController * type="integer", * ) * ), + * @OA\Parameter( + * name="expand", + * in="query", + * example="column,timers", + * description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля column, timers", + * @OA\Schema( + * type="string", + * ) + * ), * @OA\Response( * response=200, * description="Возвращает массив объектов Задач", @@ -233,6 +251,15 @@ class TaskController extends ApiController * type="integer", * ) * ), + * @OA\Parameter( + * name="expand", + * in="query", + * example="column,timers", + * description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля column, timers", + * @OA\Schema( + * type="string", + * ) + * ), * @OA\Response( * response=200, * description="Возвращает объект Задачи", diff --git a/frontend/modules/api/models/Project.php b/frontend/modules/api/models/Project.php index e05be0c..7b28818 100644 --- a/frontend/modules/api/models/Project.php +++ b/frontend/modules/api/models/Project.php @@ -119,6 +119,9 @@ class Project extends \common\models\Project ]; } + /** + * @return string[] + */ public function extraFields(): array { return ['columns',];