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;
|
namespace backend\modules\task\models;
|
||||||
|
|
||||||
use backend\modules\project\models\ProjectUser;
|
|
||||||
use yii\base\Model;
|
use yii\base\Model;
|
||||||
use yii\data\ActiveDataProvider;
|
use yii\data\ActiveDataProvider;
|
||||||
use backend\modules\task\models\ProjectTask;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TaskSearch represents the model behind the search form of `backend\modules\task\models\Task`.
|
* 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
|
class ProjectTask extends ActiveRecord
|
||||||
{
|
{
|
||||||
const STATUS_ACTIVE = 1;
|
|
||||||
const STATUS_DISABLE = 0;
|
const STATUS_DISABLE = 0;
|
||||||
|
const STATUS_ACTIVE = 1;
|
||||||
|
const STATUS_ARCHIVE = 2;
|
||||||
|
|
||||||
const PRIORITY_LOW = 0;
|
const PRIORITY_LOW = 0;
|
||||||
const PRIORITY_MEDIUM = 1;
|
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]],
|
['execution_priority', 'in', 'range' => [self::PRIORITY_LOW, self::PRIORITY_MEDIUM, self::PRIORITY_HIGH]],
|
||||||
['title', 'unique', 'targetAttribute' => ['title', 'project_id'], 'message' => 'Такая задача уже создана'],
|
['title', 'unique', 'targetAttribute' => ['title', 'project_id'], 'message' => 'Такая задача уже создана'],
|
||||||
[['title'], 'string', 'max' => 255],
|
[['title'], 'string', 'max' => 255],
|
||||||
|
['status', 'in', 'range' => [self::STATUS_DISABLE, self::STATUS_ACTIVE, self::STATUS_ARCHIVE]],
|
||||||
[['description'], 'string', 'max' => 1500],
|
[['description'], 'string', 'max' => 1500],
|
||||||
[['project_id'], 'exist', 'skipOnError' => true, 'targetClass' => Project::className(), 'targetAttribute' => ['project_id' => 'id']],
|
[['project_id'], 'exist', 'skipOnError' => true, 'targetClass' => Project::className(), 'targetAttribute' => ['project_id' => 'id']],
|
||||||
[['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['user_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
|
class TaskController extends ApiController
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var TaskService
|
||||||
|
*/
|
||||||
private TaskService $taskService;
|
private TaskService $taskService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -166,15 +169,7 @@ class TaskController extends ApiController
|
|||||||
*/
|
*/
|
||||||
public function actionGetTaskList($project_id): array
|
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);
|
$tasks = $this->taskService->getTaskListByProject($project_id);
|
||||||
} else {
|
|
||||||
$tasks = $this->taskService->getTaskList($project_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($tasks)) {
|
if (empty($tasks)) {
|
||||||
throw new NotFoundHttpException('The project does not exist or there are no tasks for it');
|
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;
|
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",
|
* @OA\Get(path="/task/get-user-tasks",
|
||||||
@ -224,15 +272,7 @@ class TaskController extends ApiController
|
|||||||
*/
|
*/
|
||||||
public function actionGetUserTasks($user_id): array
|
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);
|
$tasks = $this->taskService->getTaskListByUser($user_id);
|
||||||
} else {
|
|
||||||
$tasks = $this->taskService->getTaskList($user_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($tasks)) {
|
if (empty($tasks)) {
|
||||||
throw new NotFoundHttpException('The project does not exist or there are no tasks for it');
|
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",
|
* property="status",
|
||||||
* type="int",
|
* type="int",
|
||||||
* example="1",
|
* example="1",
|
||||||
* description="Статус задачи"
|
* description="Статус задачи(0 - disable, 1 - active, 2 - archive)"
|
||||||
* ),
|
* ),
|
||||||
* @OA\Property(
|
* @OA\Property(
|
||||||
* property="comment_count",
|
* property="comment_count",
|
||||||
|
@ -30,7 +30,7 @@ class TaskService
|
|||||||
return ProjectTask::findOne($task_id);
|
return ProjectTask::findOne($task_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTaskList($task_id): array
|
public function getTaskList($status = null): array
|
||||||
{
|
{
|
||||||
return ProjectTask::find()->asArray()->all();
|
return ProjectTask::find()->asArray()->all();
|
||||||
}
|
}
|
||||||
@ -40,6 +40,16 @@ class TaskService
|
|||||||
return ProjectTask::find()->where(['project_id' => $project_id])->orderBy('priority DESC')->all();
|
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
|
public function getTaskListByUser($user_id): array
|
||||||
{
|
{
|
||||||
$taskIdList = ProjectTaskUser::find()->where(['user_id' => $user_id])->select('task_id')->column();
|
$taskIdList = ProjectTaskUser::find()->where(['user_id' => $user_id])->select('task_id')->column();
|
||||||
|
Loading…
Reference in New Issue
Block a user