guild/frontend/modules/api/models/Project.php

147 lines
3.2 KiB
PHP
Raw Normal View History

2023-01-24 17:32:46 +03:00
<?php
namespace frontend\modules\api\models;
use yii\db\ActiveQuery;
use yii\helpers\Url;
use yii\web\Link;
use yii\web\Linkable;
2023-04-19 01:22:57 +03:00
/**
*
* @OA\Schema(
* schema="Project",
* @OA\Property(
* property="id",
* type="int",
2023-04-25 01:32:15 +03:00
* example=95,
2023-04-19 01:22:57 +03:00
* description="Идентификатор проекта"
* ),
* @OA\Property(
* property="name",
* type="string",
* example="PHP",
* description="Название проекта"
* ),
* @OA\Property(
* property="status",
* type="int",
* example="10",
* description="Статус проекта"
* ),
* @OA\Property(
* property="hh_id",
* type="int",
* example="234",
* description="Идентификатор проекта на hh.ru"
* ),
* @OA\Property(
2023-04-20 02:07:19 +03:00
* property="owner_id",
* type="int",
* example="19",
* description="Идентификатор владельца проекта"
* ),
* @OA\Property(
2023-04-19 01:22:57 +03:00
* property="company",
* ref="#/components/schemas/Company",
* ),
2023-04-25 01:32:15 +03:00
* @OA\Property(
* property="columns",
* ref="#/components/schemas/ProjectColumnExample",
* ),
2023-05-11 01:18:40 +03:00
* @OA\Property(
* property="projectUsers",
* ref="#/components/schemas/ProjectUsersExample",
* ),
2023-04-19 01:22:57 +03:00
*)
*
* @OA\Schema(
* schema="ProjectExample",
* type="array",
* @OA\Items(
* type="object",
* @OA\Property(
* property="id",
* type="integer",
* example="1"
* ),
* @OA\Property(
* property="name",
* type="string",
* example="OhDesign - backend"
* ),
* @OA\Property(
* property="status",
* type="integer",
* example="10"
* ),
* @OA\Property(
* property="hh_id",
* type="integer",
* example="345343434"
* ),
* @OA\Property(
2023-04-20 02:07:19 +03:00
* property="owner_id",
* type="integer",
* example="19"
* ),
* @OA\Property(
2023-04-19 01:22:57 +03:00
* property="company",
* ref="#/components/schemas/Company",
* ),
2023-05-11 01:18:40 +03:00
* @OA\Property(
* property="projectUsers",
* ref="#/components/schemas/ProjectUsers",
* ),
2023-04-19 01:22:57 +03:00
* ),
*)
*
*/
class Project extends \common\models\Project
2023-01-24 17:32:46 +03:00
{
2023-05-04 00:16:30 +03:00
const STATUS_OTHER = 19;
const STATUS_CLOSE = 10;
2023-01-24 17:32:46 +03:00
public function fields(): array
{
return [
'id',
'name',
2023-04-19 01:22:57 +03:00
//'budget',
2023-01-24 17:32:46 +03:00
'status',
'hh_id' => function() {
return $this->hh;
},
2023-04-20 02:07:19 +03:00
'owner_id',
2023-01-24 17:32:46 +03:00
'company' => function() {
return $this->company;
2023-04-25 01:32:15 +03:00
},
2023-05-11 01:18:40 +03:00
'projectUsers',
2023-01-24 17:32:46 +03:00
];
}
public function extraFields(): array
{
2023-04-25 01:32:15 +03:00
return ['columns',];
2023-01-24 17:32:46 +03:00
}
2023-05-11 01:18:40 +03:00
/**
* @return ActiveQuery
*/
public function getProjectUsers()
{
return $this->hasMany(ProjectUser::class, ['project_id' => 'id']);
}
2023-01-24 17:32:46 +03:00
public function getLinks(): array
{
return [
Link::REL_SELF => Url::to(['index', 'project_id' => $this->id], true),
];
}
public function getCompany(): ActiveQuery
{
return $this->hasOne(Company::className(), ['id' => 'company_id']);
}
}