src/MessageHandler/Query/Beauty/Offer/GetMastersWithFilterHandler.php line 28

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\MessageHandler\Query\Beauty\Offer;
  4. use Slivki\Message\Query\Beauty\Offer\GetMastersWithFilterQuery;
  5. use Slivki\Paginator\Beauty\Master\MasterPaginatorInterface;
  6. use Slivki\Response\Beauty\Offer\Factory\MasterResponseFactory;
  7. use Slivki\Response\PaginateResponse;
  8. use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
  9. use function array_map;
  10. final class GetMastersWithFilterHandler implements MessageHandlerInterface
  11. {
  12.     private MasterPaginatorInterface $masterPaginator;
  13.     private MasterResponseFactory $responseFactory;
  14.     public function __construct(MasterPaginatorInterface $masterPaginatorMasterResponseFactory $responseFactory)
  15.     {
  16.         $this->masterPaginator $masterPaginator;
  17.         $this->responseFactory $responseFactory;
  18.     }
  19.     public function __invoke(GetMastersWithFilterQuery $query): PaginateResponse
  20.     {
  21.         $pagination $this->masterPaginator->findAllMasterForOfferQueryByFilter($query);
  22.         return new PaginateResponse(
  23.             array_map(
  24.                 [$this->responseFactory'create'],
  25.                 (array) $pagination->getItems(),
  26.             ),
  27.             $pagination->getTotalItemCount(),
  28.         );
  29.     }
  30. }