diff --git a/frontend/modules/api/controllers/ProjectController.php b/frontend/modules/api/controllers/ProjectController.php index 73192e6..a4c424d 100644 --- a/frontend/modules/api/controllers/ProjectController.php +++ b/frontend/modules/api/controllers/ProjectController.php @@ -43,10 +43,45 @@ class ProjectController extends ApiController return Project::findOne($project_id); } - public function actionProjectList($card_id = null): ActiveDataProvider + /** + * + * @OA\Get(path="/project/project-list", + * summary="Список проектов", + * description="Метод для получения списка проетов, если не передан параметр user_id, то возвращаются проеты текущего пользователя.", + * security={ + * {"bearerAuth": {}} + * }, + * tags={"TaskManager"}, + * @OA\Parameter( + * name="user_id", + * in="query", + * required=false, + * @OA\Schema( + * type="integer", + * default=null + * ) + * ), + + * @OA\Response( + * response=200, + * description="Возвращает массив объектов проекта", + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema(ref="#/components/schemas/ProjectExample"), + * ), + * ), + * ) + * + * @param $user_id + * @return ActiveDataProvider + */ + public function actionProjectList($user_id = null): ActiveDataProvider { - if (!empty($card_id)) { - $projectIdList = ProjectUser::find()->where(['card_id' => $card_id])->select('project_id')->column(); + if (!$user_id){ + $user_id = Yii::$app->user->id; + } + if (!empty($user_id)) { + $projectIdList = ProjectUser::find()->where(['user_id' => $user_id])->select('project_id')->column(); $query = Project::find()->where([ 'IN', 'id', $projectIdList]); } else { $query = Project::find(); diff --git a/frontend/modules/api/models/Company.php b/frontend/modules/api/models/Company.php index c844201..a3ea7ff 100644 --- a/frontend/modules/api/models/Company.php +++ b/frontend/modules/api/models/Company.php @@ -2,6 +2,52 @@ namespace frontend\modules\api\models; +/** + * + * @OA\Schema( + * schema="Company", + * @OA\Property( + * property="id", + * type="int", + * example=1, + * description="Идентификатор компании" + * ), + * @OA\Property( + * property="name", + * type="string", + * example="OhDesign", + * description="Название компании" + * ), + * @OA\Property( + * property="description", + * type="string", + * example="Компания разрабатывает сайт для дизайнеров", + * description="Описание компании" + * ), + *) + * + * @OA\Schema( + * schema="CompanyExample", + * type="array", + * example={{"id": 1, "name": "GoDesigner", "description": "Сайт для дизайнеров"}, {"id": 2, "name": "PR Holding", "description": "Сайт для маркетологов"}}, + * @OA\Items( + * type="object", + * @OA\Property( + * property="id", + * type="integer", + * ), + * @OA\Property( + * property="name", + * type="string", + * ), + * @OA\Property( + * property="description", + * type="string", + * ), + * ), + *) + * + */ class Company extends \common\models\Company { public function fields() diff --git a/frontend/modules/api/models/Project.php b/frontend/modules/api/models/Project.php index 2818114..e1a5a74 100644 --- a/frontend/modules/api/models/Project.php +++ b/frontend/modules/api/models/Project.php @@ -7,14 +7,81 @@ use yii\helpers\Url; use yii\web\Link; use yii\web\Linkable; -class Project extends \common\models\Project implements Linkable +/** + * + * @OA\Schema( + * schema="Project", + * @OA\Property( + * property="id", + * type="int", + * example=1, + * 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="company", + * ref="#/components/schemas/Company", + * ), + *) + * + * @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="company", + * ref="#/components/schemas/Company", + * ), + * ), + *) + * + */ +class Project extends \common\models\Project { public function fields(): array { return [ 'id', 'name', - 'budget', + //'budget', 'status', 'hh_id' => function() { return $this->hh;