File "ArticleToProjectController.php"
Full Path: /var/www/html/back/app/Http/Controllers/Api/V1/ArticleToProjectController.php
File size: 2.67 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Api\V1;
use App\Attributes\OpenApiResponse;
use App\Domain\ArticleToProject\Requests\CreateArticleToProjectRequest;
use App\Domain\ArticleToProject\Requests\UpdateArticleToProjectRequest;
use App\Domain\ArticleToProject\Services\ArticleToProjectService;
use App\Http\Controllers\Api\ApiController;
use App\Http\Resources\ArticleToProjectResource;
use App\Responses\ResponseDto;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Knuckles\Scribe\Attributes\Group;
/**
* Управление связками статьи и проекта
*/
class ArticleToProjectController extends ApiController
{
public function __construct(
protected ArticleToProjectService $service
)
{
}
public function allProjects(int $id,Request $request)
{
return new ResponseDto(
data: $this->service->allProjects($id, $request)
);
}
public function index(int $id, $projectId, Request $request)
{
$articleType = $request->query('article_type');
return new ResponseDto(
data: ArticleToProjectResource::collection($this->service->index($projectId, $articleType))
);
}
/**
* Создание связки статьи и проекта
*/
#[Group('articles')]
#[OpenApiResponse(ResponseDto::class)]
public function store(int $id, Request $request): ResponseDto
{
return new ResponseDto(
status: $this->service->create($request->all())
);
}
/**
* Обновление связки статьи и проекта
*/
// #[Group('articles')]
// #[OpenApiResponse(ResponseDto::class)]
public function update($id, $articleId, Request $request)
{
$projectId = $request->query('projectId');
$amountLimit = $request->query('amount_limit');
Log::info('id' . json_encode($id));
Log::info('aa' . json_encode($articleId));
Log::info('pp' . json_encode($projectId));
Log::info('amountLimit' . json_encode($amountLimit));
return new ResponseDto(
status: $this->service->update($articleId, $projectId, $amountLimit)
);
}
/**
* Удаление связки статьи и проекта
*/
#[Group('articles')]
#[OpenApiResponse(ResponseDto::class)]
public function destroy(int $id, $articleId, Request $request): ResponseDto
{
$projectId = $request->query('projectId');
$newArticleId = $request->query('newArticleId');
return new ResponseDto(
status: $this->service->delete($articleId, $projectId, $newArticleId)
);
}
}