Add marks to project and task request responses

This commit is contained in:
iIronside 2023-10-12 11:34:47 +03:00
parent f9e22f2d2e
commit 16309e5e4f
7 changed files with 111 additions and 71 deletions

View File

@ -24,6 +24,8 @@ use yii\helpers\ArrayHelper;
* @property FieldsValue[] $fieldsValues
* @property Company $company
* @property ProjectUser[] $projectUsers
* @property Mark[] $mark
* @property MarkEntity[] $markEntity
*/
class Project extends \yii\db\ActiveRecord
{
@ -135,6 +137,24 @@ class Project extends \yii\db\ActiveRecord
return $this->hasMany(ProjectUser::class, ['project_id' => 'id']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getMark()
{
return $this->hasMany(Mark::class, ['id' => 'mark_id'])
->via('markEntity');
}
/**
* @return \yii\db\ActiveQuery
*/
public function getMarkEntity()
{
return $this->hasMany(MarkEntity::class, ['entity_id' => 'id'])
->where(['entity_type' => Entity::ENTITY_TYPE_PROJECT]);
}
/**
* @return array
*/

View File

@ -25,8 +25,11 @@ use yii\helpers\ArrayHelper;
* @property string $dead_line
*
* @property Project $project
* @property User $user
* @property UserCard $card
* @property UserCard $cardIdCreator
* @property Mark[] $mark
* @property MarkEntity[] $markEntity
* @property ProjectTaskUser[] $taskUsers
*/
class ProjectTask extends ActiveRecord
@ -94,65 +97,6 @@ class ProjectTask extends ActiveRecord
];
}
/**
* @return string[]
*/
public function fields(): array
{
return [
'id',
'project_id',
'project_name' => function () {
return $this->project->name ?? null;
},
'title',
'created_at',
'updated_at',
'dead_line',
'description',
'status',
'column_id',
'user_id',
'user' => function () {
return [
"fio" => $this->user->userCard->fio ?? $this->user->username,
"avatar" => $this->user->userCard->photo ?? '',
];
},
'executor_id',
'priority',
'executor' => function () {
if ($this->executor) {
return [
"fio" => $this->executor->userCard->fio ?? $this->executor->username,
"avatar" => $this->executor->userCard->photo ?? '',
];
}
return null;
},
'comment_count' => function () {
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
];
}
];
}
/**
* @return string[]
*/
@ -217,6 +161,24 @@ class ProjectTask extends ActiveRecord
return $this->hasMany(Timer::class, ['entity_id' => 'id'])->where(['status' => Timer::STATUS_ACTIVE]);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getMark()
{
return $this->hasMany(Mark::class, ['id' => 'mark_id'])
->via('markEntity');
}
/**
* @return \yii\db\ActiveQuery
*/
public function getMarkEntity()
{
return $this->hasMany(MarkEntity::class, ['entity_id' => 'id'])
->where(['entity_type' => Entity::ENTITY_TYPE_TASK]);
}
public static function usersByTaskArr($task_id): array
{
return ArrayHelper::map(

View File

@ -2,10 +2,8 @@
namespace common\services;
use common\classes\Debug;
use common\models\ProjectTask;
use common\models\ProjectTaskUser;
use common\models\ProjectUser;
use frontend\modules\api\models\ProjectTask;
class TaskService
{

View File

@ -66,8 +66,9 @@ class ProjectController extends ApiController
* @OA\Parameter(
* name="expand",
* in="query",
* example="column,mark",
* required=false,
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поле <b>columns</b>",
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поле <b>columns</b> и <b>mark</b>",
* @OA\Schema(
* type="string",
* )
@ -114,8 +115,9 @@ class ProjectController extends ApiController
* @OA\Parameter(
* name="expand",
* in="query",
* example="column,mark",
* required=false,
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поле <b>columns</b>",
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поле <b>columns</b> и <b>mark</b>",
* @OA\Schema(
* type="string",
* )

View File

@ -140,8 +140,8 @@ class TaskController extends ApiController
* @OA\Parameter(
* name="expand",
* in="query",
* example="column,timers",
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля <b>column</b>, <b>timers</b>",
* example="column,timers,mark",
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля <b>column</b>, <b>timers</b> и <b>mark</b>",
* @OA\Schema(
* type="string",
* )
@ -196,8 +196,8 @@ class TaskController extends ApiController
* @OA\Parameter(
* name="expand",
* in="query",
* example="column,timers",
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля <b>column</b>, <b>timers</b>",
* example="column,timers,mark",
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля <b>column</b>, <b>timers</b> и <b>mark</b>",
* @OA\Schema(
* type="string",
* )
@ -254,8 +254,8 @@ class TaskController extends ApiController
* @OA\Parameter(
* name="expand",
* in="query",
* example="column,timers",
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля <b>column</b>, <b>timers</b>",
* example="column,timers,mark",
* description="В этом параметре по необходимости передаются поля, которые нужно добавить в ответ сервера, сейчас доступно только поля <b>column</b>, <b>timers</b> и <b>mark</b>",
* @OA\Schema(
* type="string",
* )

View File

@ -124,7 +124,7 @@ class Project extends \common\models\Project
*/
public function extraFields(): array
{
return ['columns',];
return ['columns', 'mark'];
}
/**

View File

@ -152,5 +152,63 @@ namespace frontend\modules\api\models;
*/
class ProjectTask extends \common\models\ProjectTask
{
/**
* @return string[]
*/
public function fields(): array
{
return [
'id',
'project_id',
'project_name' => function () {
return $this->project->name ?? null;
},
'title',
'created_at',
'updated_at',
'dead_line',
'description',
'status',
'column_id',
'user_id',
'user' => function () {
return [
"fio" => $this->user->userCard->fio ?? $this->user->id,
"avatar" => $this->user->userCard->photo ?? '',
];
},
'executor_id',
'priority',
'executor' => function () {
if ($this->executor) {
return [
"fio" => $this->executor->userCard->fio ?? $this->executor->username,
"avatar" => $this->executor->userCard->photo ?? '',
];
}
return null;
},
'comment_count' => function () {
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
];
},
'mark'
];
}
}