<?php
declare(strict_types=1);
namespace Slivki\Controller\MobileApi\V2\Beauty\Offer;
use Nelmio\ApiDocBundle\Annotation\Model;
use OpenApi\Annotations as OA;
use Slivki\Dto\WorkExample\WorkExampleWithAddressesDto;
use Slivki\Message\Query\Beauty\Offer\GetWorkExampleOfMasterQuery;
use Slivki\Messenger\Query\QueryBusInterface;
use Slivki\Request\PageAndPerPageRequest;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
final class GetWorkExampleOfMasterAction
{
private QueryBusInterface $queryBus;
public function __construct(QueryBusInterface $queryBus)
{
$this->queryBus = $queryBus;
}
/**
* @Route("/mobile/api/v2/beauty/master/{masterId}/work-examples", methods={"GET"}, name="mobile_api_v2_beauty_master_work_examples_get")
* @OA\Tag(name="Beauty"),
* @OA\Response(
* response=200,
* description="Примеры работ для мастера",
* @OA\JsonContent(
* type="array",
* @OA\Items(
* @OA\Property(
* property="items",
* type="array",
* description="Примеры работ",
* @OA\Items(ref=@Model(type=WorkExampleWithAddressesDto::class)),
* ),
* @OA\Property(
* property="total",
* description="Общее количество примеров работ",
* example=185,
* ),
* ),
* ),
* ),
* @OA\Parameter(
* name="page",
* in="query",
* description="The page number to retrieve",
* @OA\Schema(type="integer", example=2, default=1, nullable=true),
* ),
* @OA\Parameter(
* name="perPage",
* in="query",
* description="The number of results per page",
* @OA\Schema(type="integer", example=24, default=24, nullable=true),
* )
*/
public function __invoke(PageAndPerPageRequest $request, int $masterId): JsonResponse
{
return new JsonResponse(
$this->queryBus->handle(
new GetWorkExampleOfMasterQuery(
$masterId,
$request->getPage(),
$request->getPerPage(),
),
),
);
}
}