add api/task/get-archive-task method
This commit is contained in:
parent
886ba1e656
commit
91607cc99b
@ -2,10 +2,8 @@
|
||||
|
||||
namespace backend\modules\task\models;
|
||||
|
||||
use backend\modules\project\models\ProjectUser;
|
||||
use yii\base\Model;
|
||||
use yii\data\ActiveDataProvider;
|
||||
use backend\modules\task\models\ProjectTask;
|
||||
|
||||
/**
|
||||
* TaskSearch represents the model behind the search form of `backend\modules\task\models\Task`.
|
||||
|
@ -38,8 +38,9 @@ use yii\helpers\ArrayHelper;
|
||||
*/
|
||||
class ProjectTask extends ActiveRecord
|
||||
{
|
||||
const STATUS_ACTIVE = 1;
|
||||
const STATUS_DISABLE = 0;
|
||||
const STATUS_ACTIVE = 1;
|
||||
const STATUS_ARCHIVE = 2;
|
||||
|
||||
const PRIORITY_LOW = 0;
|
||||
const PRIORITY_MEDIUM = 1;
|
||||
@ -101,6 +102,7 @@ class ProjectTask extends ActiveRecord
|
||||
['execution_priority', 'in', 'range' => [self::PRIORITY_LOW, self::PRIORITY_MEDIUM, self::PRIORITY_HIGH]],
|
||||
['title', 'unique', 'targetAttribute' => ['title', 'project_id'], 'message' => 'Такая задача уже создана'],
|
||||
[['title'], 'string', 'max' => 255],
|
||||
['status', 'in', 'range' => [self::STATUS_DISABLE, self::STATUS_ACTIVE, self::STATUS_ARCHIVE]],
|
||||
[['description'], 'string', 'max' => 1500],
|
||||
[['project_id'], 'exist', 'skipOnError' => true, 'targetClass' => Project::className(), 'targetAttribute' => ['project_id' => 'id']],
|
||||
[['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'id']],
|
||||
|
@ -16,6 +16,9 @@ use yii\web\ServerErrorHttpException;
|
||||
|
||||
class TaskController extends ApiController
|
||||
{
|
||||
/**
|
||||
* @var TaskService
|
||||
*/
|
||||
private TaskService $taskService;
|
||||
|
||||
/**
|
||||
@ -166,15 +169,7 @@ class TaskController extends ApiController
|
||||
*/
|
||||
public function actionGetTaskList($project_id): array
|
||||
{
|
||||
$tasks = array();
|
||||
if ($project_id) {
|
||||
if (empty($project_id) or !is_numeric($project_id)) {
|
||||
throw new NotFoundHttpException('Incorrect project ID');
|
||||
}
|
||||
$tasks = $this->taskService->getTaskListByProject($project_id);
|
||||
} else {
|
||||
$tasks = $this->taskService->getTaskList($project_id);
|
||||
}
|
||||
|
||||
if (empty($tasks)) {
|
||||
throw new NotFoundHttpException('The project does not exist or there are no tasks for it');
|
||||
@ -182,6 +177,59 @@ class TaskController extends ApiController
|
||||
return $tasks;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @OA\Get(path="/task/get-archive-task",
|
||||
* summary="Получить список архивных задач по проекту",
|
||||
* description="Метод для получения архивных задач по проекту",
|
||||
* security={
|
||||
* {"bearerAuth": {}}
|
||||
* },
|
||||
* tags={"TaskManager"},
|
||||
* @OA\Parameter(
|
||||
* name="project_id",
|
||||
* in="query",
|
||||
* required=true,
|
||||
* @OA\Schema(
|
||||
* type="integer",
|
||||
* )
|
||||
* ),
|
||||
* @OA\Parameter(
|
||||
* name="user_id",
|
||||
* in="query",
|
||||
* required=false,
|
||||
* @OA\Schema(
|
||||
* type="integer",
|
||||
* )
|
||||
* ),
|
||||
* @OA\Parameter(
|
||||
* name="expand",
|
||||
* in="query",
|
||||
* example="column,timers,mark",
|
||||
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля <b>column</b>, <b>timers</b> и <b>mark</b>",
|
||||
* @OA\Schema(
|
||||
* type="string",
|
||||
* )
|
||||
* ),
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="Возвращает массив объектов Задач",
|
||||
* @OA\MediaType(
|
||||
* mediaType="application/json",
|
||||
* @OA\Schema(ref="#/components/schemas/ProjectTaskExample"),
|
||||
* ),
|
||||
* ),
|
||||
* )
|
||||
*
|
||||
* @param $project_id
|
||||
* @param null $user_id
|
||||
* @return array
|
||||
*/
|
||||
public function actionGetArchiveTask($project_id, $user_id = null): array
|
||||
{
|
||||
return $this->taskService->getArchiveTask($project_id, $user_id);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @OA\Get(path="/task/get-user-tasks",
|
||||
@ -224,15 +272,7 @@ class TaskController extends ApiController
|
||||
*/
|
||||
public function actionGetUserTasks($user_id): array
|
||||
{
|
||||
$tasks = array();
|
||||
if ($user_id) {
|
||||
if (empty($user_id) or !is_numeric($user_id)) {
|
||||
throw new NotFoundHttpException('Incorrect project ID');
|
||||
}
|
||||
$tasks = $this->taskService->getTaskListByUser($user_id);
|
||||
} else {
|
||||
$tasks = $this->taskService->getTaskList($user_id);
|
||||
}
|
||||
|
||||
if (empty($tasks)) {
|
||||
throw new NotFoundHttpException('The project does not exist or there are no tasks for it');
|
||||
|
@ -80,7 +80,7 @@ namespace frontend\modules\api\models\project;
|
||||
* property="status",
|
||||
* type="int",
|
||||
* example="1",
|
||||
* description="Статус задачи"
|
||||
* description="Статус задачи(0 - disable, 1 - active, 2 - archive)"
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="comment_count",
|
||||
|
@ -30,7 +30,7 @@ class TaskService
|
||||
return ProjectTask::findOne($task_id);
|
||||
}
|
||||
|
||||
public function getTaskList($task_id): array
|
||||
public function getTaskList($status = null): array
|
||||
{
|
||||
return ProjectTask::find()->asArray()->all();
|
||||
}
|
||||
@ -40,6 +40,16 @@ class TaskService
|
||||
return ProjectTask::find()->where(['project_id' => $project_id])->orderBy('priority DESC')->all();
|
||||
}
|
||||
|
||||
public function getArchiveTask($project_id, $user_id): array
|
||||
{
|
||||
$query = ProjectTask::find()->where(['project_id' => $project_id])->andWhere(['status' => ProjectTask::STATUS_ARCHIVE]);
|
||||
|
||||
if ($user_id) {
|
||||
$query->andWhere(['user_id' => $user_id]);
|
||||
}
|
||||
return $query->orderBy('priority DESC')->all();
|
||||
}
|
||||
|
||||
public function getTaskListByUser($user_id): array
|
||||
{
|
||||
$taskIdList = ProjectTaskUser::find()->where(['user_id' => $user_id])->select('task_id')->column();
|
||||
|
Loading…
Reference in New Issue
Block a user