project task fix
This commit is contained in:
parent
50b9722e82
commit
525dbda657
@ -19,6 +19,7 @@ use yii\helpers\ArrayHelper;
|
|||||||
* @property string $updated_at
|
* @property string $updated_at
|
||||||
* @property int $column_id
|
* @property int $column_id
|
||||||
* @property int $user_id
|
* @property int $user_id
|
||||||
|
* @property int $executor_id
|
||||||
* @property string $description
|
* @property string $description
|
||||||
*
|
*
|
||||||
* @property Project $project
|
* @property Project $project
|
||||||
@ -30,6 +31,7 @@ class ProjectTask extends ActiveRecord
|
|||||||
{
|
{
|
||||||
const STATUS_ACTIVE = 1;
|
const STATUS_ACTIVE = 1;
|
||||||
const STATUS_DISABLE = 0;
|
const STATUS_DISABLE = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
@ -57,13 +59,14 @@ class ProjectTask extends ActiveRecord
|
|||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
[['project_id', 'status', 'title', 'description',], 'required'],
|
[['project_id', 'status', 'title', 'description',], 'required'],
|
||||||
[['project_id', 'status', 'column_id', 'user_id'], 'integer'],
|
[['project_id', 'status', 'column_id', 'user_id', 'executor_id'], 'integer'],
|
||||||
[['created_at', 'updated_at'], 'safe'],
|
[['created_at', 'updated_at'], 'safe'],
|
||||||
['title', 'unique', 'targetAttribute' => ['title', 'project_id'], 'message' => 'Такая задача уже создана'],
|
['title', 'unique', 'targetAttribute' => ['title', 'project_id'], 'message' => 'Такая задача уже создана'],
|
||||||
[['title'], 'string', 'max' => 255],
|
[['title'], 'string', 'max' => 255],
|
||||||
[['description'], 'string', 'max' => 500],
|
[['description'], 'string', 'max' => 500],
|
||||||
[['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']],
|
||||||
|
[['executor_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['executor_id' => 'id']],
|
||||||
[['column_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProjectColumn::className(), 'targetAttribute' => ['column_id' => 'id']],
|
[['column_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProjectColumn::className(), 'targetAttribute' => ['column_id' => 'id']],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -83,6 +86,7 @@ class ProjectTask extends ActiveRecord
|
|||||||
'description' => 'Описание',
|
'description' => 'Описание',
|
||||||
'user_id' => 'Создатель задачи',
|
'user_id' => 'Создатель задачи',
|
||||||
'column_id' => 'Колонка',
|
'column_id' => 'Колонка',
|
||||||
|
'executor_id' => 'Исполнитель',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,6 +105,23 @@ class ProjectTask extends ActiveRecord
|
|||||||
'status',
|
'status',
|
||||||
'column_id',
|
'column_id',
|
||||||
'user_id',
|
'user_id',
|
||||||
|
'user' => function () {
|
||||||
|
return [
|
||||||
|
"fio" => $this->user->userCard->fio ?? $this->user->username,
|
||||||
|
"avatar" => $this->user->userCard->photo ?? '',
|
||||||
|
];
|
||||||
|
},
|
||||||
|
'executor_id',
|
||||||
|
'executor' => function () {
|
||||||
|
if ($this->executor){
|
||||||
|
return [
|
||||||
|
"fio" => $this->executor->userCard->fio ?? $this->executor->username,
|
||||||
|
"avatar" => $this->executor->userCard->photo ?? '',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
},
|
||||||
'taskUsers',
|
'taskUsers',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -127,7 +148,7 @@ class ProjectTask extends ActiveRecord
|
|||||||
/**
|
/**
|
||||||
* @return ActiveQuery
|
* @return ActiveQuery
|
||||||
*/
|
*/
|
||||||
public function getProject()
|
public function getProject(): ActiveQuery
|
||||||
{
|
{
|
||||||
return $this->hasOne(Project::className(), ['id' => 'project_id']);
|
return $this->hasOne(Project::className(), ['id' => 'project_id']);
|
||||||
}
|
}
|
||||||
@ -135,11 +156,19 @@ class ProjectTask extends ActiveRecord
|
|||||||
/**
|
/**
|
||||||
* @return ActiveQuery
|
* @return ActiveQuery
|
||||||
*/
|
*/
|
||||||
public function getUser()
|
public function getUser(): ActiveQuery
|
||||||
{
|
{
|
||||||
return $this->hasOne(User::className(), ['id' => 'user_id']);
|
return $this->hasOne(User::className(), ['id' => 'user_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return ActiveQuery
|
||||||
|
*/
|
||||||
|
public function getExecutor(): ActiveQuery
|
||||||
|
{
|
||||||
|
return $this->hasOne(User::class, ['id' => 'executor_id']);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return ActiveQuery
|
* @return ActiveQuery
|
||||||
*/
|
*/
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use yii\db\Migration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class m230426_221513_add_executor_id_to_project_task_table
|
||||||
|
*/
|
||||||
|
class m230426_221513_add_executor_id_to_project_task_table extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function safeUp()
|
||||||
|
{
|
||||||
|
$this->addColumn('project_task', 'executor_id', $this->integer(11));
|
||||||
|
$this->addForeignKey('fk_project_task_user_executor', 'project_task', 'executor_id', 'user', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function safeDown()
|
||||||
|
{
|
||||||
|
$this->dropForeignKey('fk_project_task_user_executor', 'project_task');
|
||||||
|
$this->dropColumn('project_task', 'executor_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Use up()/down() to run migration code without a transaction.
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
echo "m230426_221513_add_executor_id_to_project_task_table cannot be reverted.\n";
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
@ -34,7 +34,7 @@ class ProjectController extends ApiController
|
|||||||
'status-list' => ['GET', 'OPTIONS'],
|
'status-list' => ['GET', 'OPTIONS'],
|
||||||
'project-task-category-list' => ['GET', 'OPTIONS'],
|
'project-task-category-list' => ['GET', 'OPTIONS'],
|
||||||
'create' => ['POST', 'OPTIONS'],
|
'create' => ['POST', 'OPTIONS'],
|
||||||
'update' => ['POST', 'OPTIONS']
|
'update' => ['PUT', 'OPTIONS']
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
@ -254,6 +254,58 @@ class ProjectController extends ApiController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
*
|
||||||
|
* @OA\PUT(path="/project/update",
|
||||||
|
* summary="Редактировать проект",
|
||||||
|
* description="Метод для редактирования проекта",
|
||||||
|
* security={
|
||||||
|
* {"bearerAuth": {}}
|
||||||
|
* },
|
||||||
|
* tags={"TaskManager"},
|
||||||
|
*
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* @OA\MediaType(
|
||||||
|
* mediaType="application/x-www-form-urlencoded",
|
||||||
|
* @OA\Schema(
|
||||||
|
* required={"project_id"},
|
||||||
|
* @OA\Property(
|
||||||
|
* property="project_id",
|
||||||
|
* type="integer",
|
||||||
|
* description="Идентификатор проекта",
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="name",
|
||||||
|
* type="string",
|
||||||
|
* description="Название проекта",
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="description",
|
||||||
|
* type="string",
|
||||||
|
* description="Описание проекта",
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="status",
|
||||||
|
* type="integer",
|
||||||
|
* description="статус",
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="company_id",
|
||||||
|
* type="integer",
|
||||||
|
* description="Компания к которой относится проект",
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="Возвращает объект Проекта",
|
||||||
|
* @OA\MediaType(
|
||||||
|
* mediaType="application/json",
|
||||||
|
* @OA\Schema(ref="#/components/schemas/Project"),
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* )
|
||||||
|
*
|
||||||
* @throws \Throwable
|
* @throws \Throwable
|
||||||
* @throws \yii\base\InvalidConfigException
|
* @throws \yii\base\InvalidConfigException
|
||||||
* @throws \yii\db\StaleObjectException
|
* @throws \yii\db\StaleObjectException
|
||||||
@ -261,12 +313,17 @@ class ProjectController extends ApiController
|
|||||||
*/
|
*/
|
||||||
public function actionUpdate()
|
public function actionUpdate()
|
||||||
{
|
{
|
||||||
$project = Project::findOne(Yii::$app->request->post('project_id'));
|
$request = Yii::$app->request->getBodyParams();
|
||||||
|
if (!isset($request['project_id']) || $request['project_id'] == null){
|
||||||
|
throw new BadRequestHttpException(json_encode(['The project ID not found']));
|
||||||
|
}
|
||||||
|
$project = Project::findOne($request['project_id']);
|
||||||
if(empty($project)) {
|
if(empty($project)) {
|
||||||
throw new NotFoundHttpException('The project not found');
|
throw new NotFoundHttpException('The project not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
$project->load(Yii::$app->request->getBodyParams(), '');
|
$put = array_diff($request, [null, '']);
|
||||||
|
$project->load($put, '');
|
||||||
if (!$project->update()) {
|
if (!$project->update()) {
|
||||||
return $project->errors;
|
return $project->errors;
|
||||||
}
|
}
|
||||||
|
@ -34,9 +34,25 @@ namespace frontend\modules\api\models;
|
|||||||
* property="user_id",
|
* property="user_id",
|
||||||
* type="int",
|
* type="int",
|
||||||
* example="19",
|
* example="19",
|
||||||
|
* description="Идентификатор пользователя создавшего задачу"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="user",
|
||||||
|
* ref="#/components/schemas/ProjectTaskUsersShortExample",
|
||||||
* description="Пользователь создавший задачу"
|
* description="Пользователь создавший задачу"
|
||||||
* ),
|
* ),
|
||||||
* @OA\Property(
|
* @OA\Property(
|
||||||
|
* property="executor_id",
|
||||||
|
* type="int",
|
||||||
|
* example="2",
|
||||||
|
* description="Идентификатор исполнителя задачи"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="executor",
|
||||||
|
* ref="#/components/schemas/ProjectTaskUsersShortExample",
|
||||||
|
* description="Исполнитель задачи"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
* property="description",
|
* property="description",
|
||||||
* type="string",
|
* type="string",
|
||||||
* example="Описание задачи",
|
* example="Описание задачи",
|
||||||
@ -97,6 +113,20 @@ namespace frontend\modules\api\models;
|
|||||||
* ),
|
* ),
|
||||||
*)
|
*)
|
||||||
*
|
*
|
||||||
|
* @OA\Schema(
|
||||||
|
* schema="ProjectTaskUsersShortExample",
|
||||||
|
* @OA\Property(
|
||||||
|
* property="fio",
|
||||||
|
* type="string",
|
||||||
|
* example="Сапронов Антон Викторович"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="avatar",
|
||||||
|
* type="string",
|
||||||
|
* example="/profileava/m8.png"
|
||||||
|
* ),
|
||||||
|
*)
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
class ProjectTask extends \common\models\ProjectTask
|
class ProjectTask extends \common\models\ProjectTask
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user