comments entity

This commit is contained in:
2023-05-17 01:14:54 +03:00
parent b32b35540b
commit 4ae43ff2da
6 changed files with 135 additions and 6 deletions

View File

@ -12,6 +12,7 @@ class CommentController extends ApiController
return [
'get-entity-type-list' => ['get'],
'create' => ['post'],
'update' => ['put', 'patch'],
];
}
@ -126,11 +127,122 @@ class CommentController extends ApiController
$model->load($request, '');
if (!$model->save()){
if (!$model->save()) {
return $model->errors;
}
return $model;
}
/**
*
* @OA\Put(path="/comment/update",
* summary="Редактировать комментария",
* description="Метод для редактирования комментария",
* security={
* {"bearerAuth": {}}
* },
* tags={"Comment"},
*
* @OA\RequestBody(
* @OA\MediaType(
* mediaType="application/x-www-form-urlencoded",
* @OA\Schema(
* required={"comment_id", "text"},
* @OA\Property(
* property="comment_id",
* type="integer",
* description="Идентификатор комментария",
* ),
* @OA\Property(
* property="text",
* type="string",
* description="Текст комментария",
* ),
* @OA\Property(
* property="status",
* type="integer",
* description="статус",
* ),
* ),
* ),
* ),
* @OA\Response(
* response=200,
* description="Возвращает объект Комментария",
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(ref="#/components/schemas/Comment"),
* ),
* ),
* )
*
* @return Comment
* @throws BadRequestHttpException
* @throws \yii\base\InvalidConfigException
*/
public function actionUpdate(): Comment
{
$user_id = \Yii::$app->user->id;
if (!$user_id) {
throw new BadRequestHttpException(json_encode(['User not found']));
}
$comment_id = \Yii::$app->request->getBodyParam('comment_id');
$model = Comment::findOne($comment_id);
if (!$model) {
throw new BadRequestHttpException(json_encode(['Comment not found']));
}
$put = array_diff(\Yii::$app->request->getBodyParams(), [null, '']);
$model->load($put, '');
if(!$model->validate()){
throw new BadRequestHttpException($model->errors);
}
$model->save();
return $model;
}
/**
*
* @OA\Get(path="/comment/get-by-entity",
* summary="Получить комментарии по идентификатору сущности",
* description="Метод для получения комментариев по идентификатору сущности.",
* security={
* {"bearerAuth": {}}
* },
* tags={"Comment"},
* @OA\Parameter(
* name="entity_id",
* in="query",
* required=true,
* @OA\Schema(
* type="integer",
* default=null
* )
* ),
*
* @OA\Response(
* response=200,
* description="Возвращает массив объектов Комментариев",
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(ref="#/components/schemas/CommentExample"),
* ),
* ),
* )
*
* @param int $entity_id
* @return array|\yii\db\ActiveRecord[]
*/
public function actionGetByEntity(int $entity_id): array
{
$model = Comment::find()->where(['entity_id' => $entity_id, 'status' => Comment::STATUS_ACTIVE])->all();
return $model;
}
}