<?php namespace frontend\modules\api\models\project; use frontend\modules\api\models\company\Company; use yii\db\ActiveQuery; use yii\helpers\Url; use yii\web\Link; /** * * @OA\Schema( * schema="Project", * @OA\Property( * property="id", * type="int", * example=95, * 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( * property="owner_id", * type="int", * example="19", * description="Идентификатор владельца проекта" * ), * @OA\Property( * property="company", * ref="#/components/schemas/Company", * ), * @OA\Property( * property="columns", * ref="#/components/schemas/ProjectColumnExample", * ), * @OA\Property( * property="projectUsers", * ref="#/components/schemas/ProjectUsersExample", * ), *) * * @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( * property="owner_id", * type="integer", * example="19" * ), * @OA\Property( * property="company", * ref="#/components/schemas/Company", * ), * @OA\Property( * property="projectUsers", * ref="#/components/schemas/ProjectUsers", * ), * ), *) * */ class Project extends \common\models\Project { const STATUS_OTHER = 19; const STATUS_CLOSE = 10; public function fields(): array { return [ 'id', 'name', //'budget', 'status', 'hh_id' => function() { return $this->hh; }, 'owner_id', 'owner_info' => function(){ return [ "fio" => $this->owner->userCard->fio ?? ($this->user->id ?? ''), "avatar" => $this->owner->userCard->photo ?? '', ]; }, 'company' => function() { return $this->company; }, 'projectUsers', ]; } /** * @return string[] */ public function extraFields(): array { return ['columns', 'mark']; } /** * @return ActiveQuery */ public function getProjectUsers() { return $this->hasMany(ProjectUser::class, ['project_id' => 'id']); } 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']); } }