src/Controller/Api/Promotion/PromoApiController.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Api\Promotion;
  3. use App\Dto\Authorization\AuthorizationHeaderDto;
  4. use App\EventListener\Api\TokenInterceptor\MybizTokenAuthenticatorInterface;
  5. use App\Service\Authorization\MybizRequestJwtChecker;
  6. use App\Service\PromoSystem\PromoSystemProvider;
  7. use App\Traits\DateRequestTrait;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class PromoApiController extends AbstractController implements MybizTokenAuthenticatorInterface
  13. {
  14.     use DateRequestTrait;
  15.     /**
  16.      * @Route("/v1/promo/current-promotions", methods={"GET"}, name="api_promo_current_promotions", options={"expose": "true"})
  17.      */
  18.     public function productPurchaseLink(
  19.         Request                $request,
  20.         MybizRequestJwtChecker $mybizRequestJwtChecker,
  21.         PromoSystemProvider    $promoSystemProvider
  22.     ): Response
  23.     {
  24.         // On peut provenir ici avec un membre déjà existant, auquel cas on va utiliser son marché + savoir s'il a déjà commandé pour lui proposer un autre tarif
  25.         try {
  26.             $member $mybizRequestJwtChecker->checkJwt($request);
  27.         } catch (\Throwable $e) {
  28.             $member null;
  29.         }
  30.         $date $this->getDateFromRequest($request);
  31.         $authorizationHeaderDto AuthorizationHeaderDto::generateFromRequest($request);
  32.         try {
  33.             $promos $promoSystemProvider->getPromosToDisplay($authorizationHeaderDto->getName(), $date);
  34.             return $this->json($promos);
  35.         } catch (\Throwable $e) {
  36.             return $this->json([
  37.                 "error" => $e->getMessage()
  38.             ], Response::HTTP_BAD_REQUEST);
  39.         }
  40.     }
  41. }