src/MessageHandler/Query/Partner/Order/GetPartnerOnlineLiveHandler.php line 49

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\MessageHandler\Query\Partner\Order;
  4. use DateTimeImmutable;
  5. use League\Period\Period;
  6. use Slivki\Dao\Director\DirectorDaoInterface;
  7. use Slivki\Dao\Partner\History\PartnerHistoryDaoInterface;
  8. use Slivki\Message\Query\Partner\Order\GetPartnerOnlineOrderLiveQuery;
  9. use Slivki\Response\Partner\Order\GetPartnerOnlineLiveResponse;
  10. use Slivki\Services\Partner\PartnerUserService;
  11. use Slivki\Services\UserGetter;
  12. use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
  13. final class GetPartnerOnlineLiveHandler implements MessageHandlerInterface
  14. {
  15.     private PartnerHistoryDaoInterface $partnerHistoryDao;
  16.     private PartnerUserService $partnerUserService;
  17.     private UserGetter $userGetter;
  18.     private DirectorDaoInterface $directorDao;
  19.     public function __construct(
  20.         PartnerHistoryDaoInterface $partnerHistoryDao,
  21.         PartnerUserService $partnerUserService,
  22.         UserGetter $userGetter,
  23.         DirectorDaoInterface $directorDao
  24.     ) {
  25.         $this->partnerHistoryDao $partnerHistoryDao;
  26.         $this->partnerUserService $partnerUserService;
  27.         $this->userGetter $userGetter;
  28.         $this->directorDao $directorDao;
  29.     }
  30.     public function __invoke(GetPartnerOnlineOrderLiveQuery $query): GetPartnerOnlineLiveResponse
  31.     {
  32.         $user $this->userGetter->get();
  33.         $directorUser $this->partnerUserService->getDirectorUserByLoggedUser($user);
  34.         $period = new Period(
  35.             new DateTimeImmutable('-24 hours'),
  36.             new DateTimeImmutable('now'),
  37.             Period::INCLUDE_ALL,
  38.         );
  39.         $orders $this->partnerHistoryDao->getOnlineOrderHistory($period$this->directorDao->getDirectorIdByEmail($directorUser->getEmail()));
  40.         return new GetPartnerOnlineLiveResponse($orders->getOnlineOrders());
  41.     }
  42. }