src/MessageHandler/Query/Beauty/Offer/GetWorkExampleOfMasterHandler.php line 38

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\MessageHandler\Query\Beauty\Offer;
  4. use Slivki\Dto\WorkExample\WorkExampleWithAddressesDto;
  5. use Slivki\Entity\WorkExample;
  6. use Slivki\Factory\Dto\WorkExample\WorkExampleWithAddressesDtoFactory;
  7. use Slivki\Message\Query\Beauty\Offer\GetWorkExampleOfMasterQuery;
  8. use Slivki\Paginator\WorkExample\WorkExamplePaginatorInterface;
  9. use Slivki\Response\PaginateResponse;
  10. use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
  11. use function array_map;
  12. final class GetWorkExampleOfMasterHandler implements MessageHandlerInterface
  13. {
  14.     private WorkExampleWithAddressesDtoFactory $workExampleWithAddressesDtoFactory;
  15.     private WorkExamplePaginatorInterface $workExamplePaginator;
  16.     public function __construct(
  17.         WorkExampleWithAddressesDtoFactory $workExampleWithAddressesDtoFactory,
  18.         WorkExamplePaginatorInterface $workExamplePaginator
  19.     ) {
  20.         $this->workExampleWithAddressesDtoFactory $workExampleWithAddressesDtoFactory;
  21.         $this->workExamplePaginator $workExamplePaginator;
  22.     }
  23.     public function __invoke(GetWorkExampleOfMasterQuery $query): PaginateResponse
  24.     {
  25.         $pagination $this->workExamplePaginator->findByMaster($query);
  26.         return new PaginateResponse(
  27.             array_map(
  28.                 fn (WorkExample $workExample): WorkExampleWithAddressesDto => $this->workExampleWithAddressesDtoFactory->create(
  29.                     $workExample,
  30.                     null,
  31.                 ),
  32.                 $pagination->getItems(),
  33.             ),
  34.             $pagination->getTotalItemCount(),
  35.         );
  36.     }
  37. }