src/Controller/MobileApi/V2/Beauty/Offer/GetWorkExampleOfMasterAction.php line 16

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\Controller\MobileApi\V2\Beauty\Offer;
  4. use Nelmio\ApiDocBundle\Annotation\Model;
  5. use OpenApi\Annotations as OA;
  6. use Slivki\Dto\WorkExample\WorkExampleWithAddressesDto;
  7. use Slivki\Message\Query\Beauty\Offer\GetWorkExampleOfMasterQuery;
  8. use Slivki\Messenger\Query\QueryBusInterface;
  9. use Slivki\Request\PageAndPerPageRequest;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. final class GetWorkExampleOfMasterAction
  13. {
  14.     private QueryBusInterface $queryBus;
  15.     public function __construct(QueryBusInterface $queryBus)
  16.     {
  17.         $this->queryBus $queryBus;
  18.     }
  19.     /**
  20.      * @Route("/mobile/api/v2/beauty/master/{masterId}/work-examples", methods={"GET"}, name="mobile_api_v2_beauty_master_work_examples_get")
  21.      * @OA\Tag(name="Beauty"),
  22.      * @OA\Response(
  23.      *     response=200,
  24.      *     description="Примеры работ для мастера",
  25.      *     @OA\JsonContent(
  26.      *         type="array",
  27.      *         @OA\Items(
  28.      *             @OA\Property(
  29.      *                 property="items",
  30.      *                 type="array",
  31.      *                 description="Примеры работ",
  32.      *                 @OA\Items(ref=@Model(type=WorkExampleWithAddressesDto::class)),
  33.      *             ),
  34.      *             @OA\Property(
  35.      *                 property="total",
  36.      *                 description="Общее количество примеров работ",
  37.      *                 example=185,
  38.      *             ),
  39.      *         ),
  40.      *     ),
  41.      * ),
  42.      * @OA\Parameter(
  43.      *     name="page",
  44.      *     in="query",
  45.      *     description="The page number to retrieve",
  46.      *     @OA\Schema(type="integer", example=2, default=1, nullable=true),
  47.      * ),
  48.      * @OA\Parameter(
  49.      *     name="perPage",
  50.      *     in="query",
  51.      *     description="The number of results per page",
  52.      *     @OA\Schema(type="integer", example=24, default=24, nullable=true),
  53.      * )
  54.      */
  55.     public function __invoke(PageAndPerPageRequest $requestint $masterId): JsonResponse
  56.     {
  57.         return new JsonResponse(
  58.             $this->queryBus->handle(
  59.                 new GetWorkExampleOfMasterQuery(
  60.                     $masterId,
  61.                     $request->getPage(),
  62.                     $request->getPerPage(),
  63.                 ),
  64.             ),
  65.         );
  66.     }
  67. }