src/Controller/HuVignette/HuVignetteController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller\HuVignette;
  3. use App\Controller\BaseController;
  4. use App\Entity\Addressing\Country;
  5. use App\Manager\BitbagStatic\BlockManager;
  6. use App\Entity\HuVignette\Category;
  7. use App\Entity\HuVignette\Price;
  8. use App\Entity\System\ProductStatus;
  9. use App\Manager\Cart\CartManager;
  10. use App\Manager\CountryManager;
  11. use App\Manager\HuVignette\HuVignetteManager;
  12. use App\Manager\Partner\PartnerManager;
  13. use App\Model\ShopUserModel;
  14. use App\Service\HuVignetteService;
  15. use App\Service\StaticPagesBitbagService;
  16. use App\Validator\HuVignetteFormValidator;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. class HuVignetteController extends BaseController
  20. {
  21.     public function indexAction(Request $request)
  22.     {
  23.         $invalidCategory 'B2';
  24.         $render '@templates/Front/HuVignette/hu-vignette.html.twig';
  25.         if ($this->isMobile) {
  26.             $render '@templates/Mobile/HuVignette/hu-vignette.html.twig';
  27.         }
  28.         $request->getSession()->remove('iframeSourceLink');
  29.         return $this->render($render,
  30.             [
  31.                 'categories' => $this->getDoctrine()->getRepository(Category::class)->findAllCategoriesWithout($invalidCategory),
  32.                 'countries' => CountryManager::getActiveCountriesForHuVignette($this->getEntityManager()),
  33.                 'isAdmin' => ShopUserModel::checkIfUserIsAdmin($this->getUser(), $this->getDoctrine()->getManager()),
  34.                 'accordionBlocksAboutHuVignette' => StaticPagesBitbagService::getAllFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_ACCORDION_TEXT_HU_VIGNETTE_CODE_PATTERN),
  35.                 'huVignetteKeywordsForSeo' => StaticPagesBitbagService::getFirstFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_SEO_META_HU_VIGNETTE_KEYWORD_CODE_PATTERN),
  36.                 'huVignetteDescriptionForSeo' => StaticPagesBitbagService::getFirstFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_SEO_META_HU_VIGNETTE_DESCRIPTION_CODE_PATTERN),
  37.                 'isOneYearHuVignetteAvailableThisYear' => new \DateTime <= new \DateTime(HuVignetteManager::LAST_DATE_FOR_ONE_YEAR_HU_VIGNETTE_AVAILABILITY '-' date('Y'))
  38.             ]);
  39.     }
  40.     public function getAvailabilitiesByCategory(Request $request)
  41.     {
  42.         $id $request->get('id');
  43.         $availabilities null;
  44.         if ($id != null) {
  45.             $availabilities $this->getDoctrine()->getRepository(Price::class)->getAvailabilityForCategoryId($id);
  46.             $serializer $this->container->get('serializer');
  47.             $availabilities $serializer->serialize($availabilities'json');
  48.         }
  49.         return new Response($availabilities);
  50.     }
  51.     public function formSubmitAction(Request $request)
  52.     {
  53.         $session $request->getSession();
  54.         $validator = new HuVignetteFormValidator($this->getEntityManager(), $this->getSerializer());
  55.         $errors null;
  56.         if ($validator->checkForm($request)) {
  57.             $errors json_encode(array('success' => 1));
  58.         } else {
  59.             if ($session->has('huVignetteErrors')) {
  60.                 $errors $session->get('huVignetteErrors');
  61.             }
  62.         }
  63.         $session->set('previousUrl''hu-vignette');
  64.         return new Response($errors);
  65.     }
  66.     public function checkVignetteAtApi(Request $request)
  67.     {
  68.         $errors null;
  69.         $session $request->getSession();
  70.         $order CartManager::getCartData($session'huVignetteGlobalOrder');
  71.         $validRegistrationNumber true;
  72.         if ($order) {
  73.             $validRegistrationNumber HuVignetteService::checkHuVignetteValidation($order$request$this->getEntityManager());
  74.         }
  75.         $paymentProcessorIsValid CartManager::paymentProcessorCartCheckerByProduct($request->getSession(), CartManager::HU_VIGNETTES_PRODUCT_NAME$this->getEntityManager());
  76.         if ($validRegistrationNumber && $paymentProcessorIsValid) {
  77.             HuVignetteService::checkHuVignette($request);
  78.             if ($request->request->has('huVignetteSubmitForm')
  79.                 && $request->request->get('huVignetteSubmitForm') == 1) {
  80.                 $errors json_encode(array('success' => true));
  81.             } elseif ($request->request->has('specialErrors')) {
  82.                 $vignetteApiError = (array) $request->request->get('specialErrors');
  83.                 $apiStatusCode $request->request->get('apiStatusCode');
  84.                 $errors json_encode(array('vignetteApiError' => $vignetteApiError'apiStatusCode' => $apiStatusCode));
  85.             }
  86.         } elseif (!$paymentProcessorIsValid) {
  87.             $vignetteApiError = array('payment_processor_missmatch' => 'Modalitatea de plata pentru produsul actual nu este compatibila cu cea a produselor din cos, va rugam eliminati produsele din cos sau renuntati la acest produs pentru a merge mai departe');
  88.             $apiStatusCode 400;
  89.             $errors json_encode(array('vignetteApiError' => $vignetteApiError'apiStatusCode' => $apiStatusCode));
  90.         } else {
  91.             $vignetteApiError = array('alreadyInCart' => 'Already in cart');
  92.             $apiStatusCode 400;
  93.             $errors json_encode(array('vignetteApiError' => $vignetteApiError'apiStatusCode' => $apiStatusCode));
  94.         }
  95.         return new Response($errors);
  96.     }
  97.     public function removeHuVignetteFromCart(Request $request)
  98.     {
  99.         $selectedItem $request->get('guid');
  100.         $removeSmsAlert $request->get('smsAlert');
  101.         $huVignettes CartManager::getCartData($request->getSession(), 'huVignetteGlobalOrder');
  102.         $response 'success';
  103.         if ($huVignettes) {
  104.             foreach ($huVignettes as $key => $huVignette) {
  105.                 if ($selectedItem == $huVignette->guid) {
  106.                     if (isset($removeSmsAlert) && $removeSmsAlert == true) {
  107.                         if ($huVignette->vignette_alert == 1) {
  108.                             $huVignette->vignette_alert 0;
  109.                         } else {
  110.                             $response 'alertNotSet';
  111.                         }
  112.                     } else {
  113.                         unset($huVignettes[$key]);
  114.                     }
  115.                 }
  116.             }
  117.         }
  118.         $huVignettes array_values($huVignettes);
  119.         CartManager::setToCart($request->getSession(), 'huVignetteGlobalOrder'$huVignettes);
  120.         return new Response(json_encode($response));
  121.     }
  122.     public function huVignetteIframe(Request $request)
  123.     {
  124.         $invalidCategory 'B2';
  125.         $partnerService $this->getContainer()->get('app.service.partner.partner');
  126.         $partnerService->verifyToken($requestPartnerManager::CAN_ISSUE_HU_VIGNETTE_INDEX);
  127.         $token['partnerPublicToken'] = $request->getSession()->get(PartnerManager::SESSION_PARTNER_PUBLIC_TOKEN_NAME);
  128.         $request->getSession()->set('iframeSourceLink'$this->generateUrl('app_shop_ro_vignette_iframe'$token));
  129.         PartnerManager::checkQRCodeFlow($request);
  130.         $render '@templates/Front/HuVignette/iframe.html.twig';
  131.         if ($this->isMobile) {
  132.             $render '@templates/Mobile/HuVignette/iframe.html.twig';
  133.         }
  134.         return $this->render($render,
  135.             [
  136.                 'categories' => $this->getDoctrine()->getRepository(Category::class)->findAllCategoriesWithout($invalidCategory),
  137.                 'countries' => CountryManager::getActiveCountriesForHuVignette($this->getEntityManager()),
  138.                 'isAdmin' => ShopUserModel::checkIfUserIsAdmin($this->getUser(), $this->getDoctrine()->getManager()),
  139.                 'accordionBlocksAboutHuVignette' => StaticPagesBitbagService::getAllFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_ACCORDION_TEXT_HU_VIGNETTE_CODE_PATTERN),
  140.                 'huVignetteKeywordsForSeo' => StaticPagesBitbagService::getFirstFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_SEO_META_HU_VIGNETTE_KEYWORD_CODE_PATTERN),
  141.                 'huVignetteDescriptionForSeo' => StaticPagesBitbagService::getFirstFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_SEO_META_HU_VIGNETTE_DESCRIPTION_CODE_PATTERN),
  142.                 'isOneYearHuVignetteAvailableThisYear' => new \DateTime <= new \DateTime(HuVignetteManager::LAST_DATE_FOR_ONE_YEAR_HU_VIGNETTE_AVAILABILITY '-' date('Y')),
  143.                 'publicToken' => $request->get('partnerPublicToken')
  144.             ]);
  145.     }
  146. }