src/Controller/Api/OnlineOrder/Vendor/GetOfferDailyStatisticAction.php line 14

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\Controller\Api\OnlineOrder\Vendor;
  4. use League\Period\Period;
  5. use Slivki\Message\Query\Admin\Stat\GetOfferDailyStatisticQuery;
  6. use Slivki\Messenger\Query\QueryBusInterface;
  7. use Slivki\Request\Statistic\Admin\GetOfferDailyStatisticRequest;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. final class GetOfferDailyStatisticAction
  11. {
  12.     private QueryBusInterface $queryBus;
  13.     public function __construct(QueryBusInterface $queryBus)
  14.     {
  15.         $this->queryBus $queryBus;
  16.     }
  17.     /**
  18.      * @Route(
  19.      *     "/api/online-order/vendor/stat/daily/{offerId}",
  20.      *     requirements={"offerId"="\d+"},
  21.      *     name="api_online_order_stat_daily_vendor_get",
  22.      *     methods={"GET"}
  23.      *  )
  24.      */
  25.     public function __invoke(int $offerIdGetOfferDailyStatisticRequest $request): JsonResponse
  26.     {
  27.         $dateFrom null !== $request->getDateFrom()
  28.             ? \DateTimeImmutable::createFromFormat('!d.m.Y'$request->getDateFrom())
  29.             : new \DateTimeImmutable('today');
  30.         $dateTo null !== $request->getDateTo()
  31.             ? \DateTimeImmutable::createFromFormat('!d.m.Y'$request->getDateTo())->setTime(23,59,59)
  32.             : (new \DateTimeImmutable('today'))->setTime(23,59,59);
  33.         return new JsonResponse(
  34.             $this->queryBus->handle(new GetOfferDailyStatisticQuery(
  35.                 $offerId,
  36.                 new Period($dateFrom$dateTo),
  37.             )),
  38.         );
  39.     }
  40. }