'yii\rest\Serializer', 'collectionEnvelope' => 'projects', ]; public function behaviors(): array { return ArrayHelper::merge(parent::behaviors(), [ 'verbs' => [ 'class' => \yii\filters\VerbFilter::class, 'actions' => [ 'get-project' => ['GET', 'OPTIONS'], 'project-list' => ['GET', 'OPTIONS'], 'status-list' => ['GET', 'OPTIONS'], 'project-task-category-list' => ['GET', 'OPTIONS'], 'create' => ['POST', 'OPTIONS'], 'update' => ['POST', 'OPTIONS'] ], ] ]); } public function actionGetProject($project_id): ?Project { return Project::findOne($project_id); } public function actionProjectList($card_id = null): ActiveDataProvider { if (!empty($card_id)) { $projectIdList = ProjectUser::find()->where(['card_id' => $card_id])->select('project_id')->column(); $query = Project::find()->where([ 'IN', 'id', $projectIdList]); } else { $query = Project::find(); } return new ActiveDataProvider([ 'query' => $query, ]); } public function actionStatusList(): array { return Status::find() ->joinWith('useStatuses') ->where(['`use_status`.`use`' => UseStatus::USE_PROJECT])->all(); } public function actionProjectTaskCategoryList($project_id): array { return ProjectTaskCategory::find()->where(['project_id' => $project_id])->all(); } public function actionCreateProjectTaskCategory() { $projectTaskCategory = new ProjectTaskCategory(); $projectTaskCategory->attributes = \yii::$app->request->post(); if($projectTaskCategory->validate()) { $projectTaskCategory->save(false); return $projectTaskCategory; } return $projectTaskCategory->errors; } public function actionUpdateProjectTaskCategory() { $projectTaskCategory = ProjectTaskCategory::find() ->where(['project_id' => Yii::$app->request->post('project_id')]) ->andWhere(['title' => Yii::$app->request->post('title')]) ->one(); if(empty($projectTaskCategory)) { throw new NotFoundHttpException('The project not found'); } $projectTaskCategory->title = Yii::$app->request->post('new_title'); if (!$projectTaskCategory->update() && $projectTaskCategory->hasErrors()) { return $projectTaskCategory->errors; } return $projectTaskCategory; } public function actionCreate() { $project = new Project(); $project->attributes = \yii::$app->request->post(); if($project->validate()) { $project->save(false); return $project; } return $project->errors; } /** * @throws \Throwable * @throws \yii\base\InvalidConfigException * @throws \yii\db\StaleObjectException * @throws NotFoundHttpException */ public function actionUpdate() { $project = Project::findOne(Yii::$app->request->post('project_id')); if(empty($project)) { throw new NotFoundHttpException('The project not found'); } $project->load(Yii::$app->request->getBodyParams(), ''); if (!$project->update()) { return $project->errors; } return $project; } }