src/Controller/Frontend/BaseController.php line 171

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Frontend;
  3. use App\Entity\Gos\OrderPart;
  4. use App\Entity\Gos\Orders;
  5. use App\Entity\Gos\PortalSettings;
  6. use App\Utils\Encryption;
  7. use App\Utils\PortalSettingsService;
  8. use App\Utils\SB;
  9. use App\Utils\Uniqskills\ProductFeed;
  10. use App\Utils\Uniqskills\UserAccess;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpKernel\KernelInterface;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  16. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  17. use Symfony\Component\HttpFoundation\RedirectResponse;
  18. use Symfony\Component\HttpFoundation\JsonResponse;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use Symfony\Component\HttpFoundation\Cookie;
  22. use Symfony\Component\Filesystem\Filesystem;
  23. class BaseController extends AbstractController
  24. {
  25.     private $em;
  26.     private $productFeedUtil;
  27.     private $encriptionUtil;
  28.     private $userAccessUtil;
  29.     private $sbUtil;
  30.     public function __construct(
  31.         EntityManagerInterface  $_em,
  32.         ProductFeed             $_productFeed,
  33.         Encryption              $_encr,
  34.         UserAccess              $_ua,
  35.         SB                      $_sbUtil
  36.     )
  37.     {
  38.         $this->em               $_em;
  39.         $this->productFeedUtil  $_productFeed;
  40.         $this->encriptionUtil   $_encr;
  41.         $this->userAccessUtil   $_ua;
  42.         $this->sbUtil           $_sbUtil;
  43.     }
  44.     /**
  45.      * @Route("/repair-rec/{wf}", name="fmMyTest")
  46.      */
  47.     public function base($wf null): Response
  48.     {
  49.         if ($wf)
  50.         {
  51.             $this->sbUtil->updateOrderTransactionResultStatus($wf'2');
  52.         }
  53.         return new Response();
  54.     }
  55.     /**
  56.      * @Route("xml/course-list.xml", name="fmSalesManagoCourseList", defaults={"_format"="xml"} )
  57.      */
  58.     public function showCourseListAction(Request $requestProductFeed $productFeedService): Response
  59.     {
  60.         $link         $this->generateUrl($request->get('_route'), [], true);
  61.         $productList  $productFeedService->generateXMLProductFeed(
  62.             $link,
  63.             $request->attributes->get('_locale')
  64.         );
  65.         return new Response($productList->asXML());
  66.     }
  67.     /**
  68.      * @Route("xml/country/{country}/{add}/course-list.xml", name="fmSalesManagoCourseCountryListWpar", defaults={"_format"="xml"} )
  69.      * @Route("xml/country/{country}/course-list.xml", name="fmSalesManagoCourseCountryList", defaults={"_format"="xml"} )
  70.      */
  71.     public function showCourseCountryList(Request $requestProductFeed $productFeedService$country 'pl'$add " "): Response
  72.     {
  73.         $link        $this->generateUrl($request->get('_route'), array(), true);
  74.         $productList $productFeedService->generateXMLProductFeed(
  75.             $link,
  76.             $request->attributes->get('_locale'),
  77.             $country,
  78.             $add
  79.         );
  80.         return new Response($productList->asXML());
  81.     }
  82.     /**
  83.      * @Route("xml/gmc/{country}/course-list.xml", name="fmGMCCourseList", defaults={"_format"="xml"})
  84.      */
  85.     public function showCourseForGMC(Request $requestProductFeed $productFeedService$country): Response
  86.     {
  87.         $link        $this->generateUrl($request->get('_route'), ['country' => $country], true);
  88.         $productList $productFeedService->generateXMLProductFeed(
  89.             $link,
  90.             $request->attributes->get('_locale'),
  91.             $country,
  92.             null,
  93.             true
  94.         );
  95.         return new Response($productList->asXML());
  96.     }
  97.     /**
  98.      * @Route("/set/portalsetting/hash", name="fmBaseSetFormSettingHash")
  99.      */
  100.     public function setFormSettingHash(Request $requestPortalSettingsService $portalSettingsService): Response
  101.     {
  102.         $response   = new Response('error');
  103.         $hash       $request->request->get('hash');
  104.         if (!empty($hash))
  105.         {
  106.             $request->getSession()->set('formSettingHash'$hash);
  107.             $response->setContent('ok');
  108.             $response->headers->setCookie(
  109.                 $portalSettingsService->createGosPortalSettingsCookie($hash)
  110.             );
  111.             $response->sendHeaders();
  112.             return $response;
  113.         }
  114.         return $response;
  115.     }
  116.     /**
  117.      * @Route("/api/safari_cookies_fix/", name="fmBaseSafariCoockiesFix")
  118.      * @Template()
  119.      */
  120.     public function safariCookiesFix(Request $request): array
  121.     {
  122.         $referer  $request->query->get('referer');
  123.         $response = new Response('ok');
  124.         $response->headers->setCookie(
  125.             new Cookie(
  126.                 'gos_safari_cookie',
  127.                 1strtotime('now + 1 year'),
  128.                 '/',
  129.                 null,
  130.                 false,
  131.                 false
  132.             )
  133.         );
  134.         $response->sendHeaders();
  135.         return ['referer' => $referer];
  136.     }
  137.     /**
  138.      * @Route("/ajax/touch-point-url", name="fmBaseTouchPointUrl", methods={"POST"})
  139.      */
  140.     public function setTouchPointUrlAction(Request $request): JsonResponse
  141.     {
  142.         $url $request->request->get('url');
  143.         return $this->json(['url' => $url]);
  144.     }
  145.     /**
  146.      * @Route("/robots.txt", name="fmBaseRobots")
  147.      */
  148.     public function robots(Request $requestKernelInterface $kernel): Response
  149.     {
  150.         if ($request->getSession()->get('portalSettingsHash') === $_ENV['US_PORTAL_SETTINGS'])
  151.         {
  152.             if ($this->getParameter('us_portal_settings') === $_ENV['PL_US_PORTAL_SETTINGS'])
  153.             {
  154.                 return $this->redirectToRoute('fmUniqskillsHomePage');
  155.             }
  156.             $portalHash $_ENV['US_PORTAL_SETTINGS'];
  157.             $fileName 'uk-robots.txt';
  158.         }
  159.         else
  160.         {
  161.             $portalHash $_ENV['EF_PORTAL_SETTINGS'];
  162.             $fileName 'robots.txt';
  163.         }
  164.         $robotsFilePath $kernel->getProjectDir() . '/public/robots/'.$fileName;
  165.         /** @var PortalSettings $portalSettings */
  166.         $portalSettings $this->em->getRepository(PortalSettings::class)
  167.             ->findOneByHash($portalHash);
  168.         if (
  169.             !is_null($portalSettings)
  170.             &&
  171.             !empty($portalSettings->getRobotsTxt())
  172.         )
  173.         {
  174.             $response = new Response($portalSettings->getRobotsTxt());
  175.             $response->headers->set('Content-Type''text/plain');
  176.             $response->send();
  177.         }
  178.         return new BinaryFileResponse($robotsFilePath);
  179.     }
  180.     /**
  181.      * @Route("/redirect", name="tryToRedirect")
  182.      * redirecting user to order/success/(WF) page if cookie with (WF) is found (and order isn't paid)
  183.      * if cookie not found/order paid -> redirect to courses
  184.      */
  185.     public function redirectChecker(Request $request): RedirectResponse
  186.     {
  187.         $cookies $request->cookies;
  188.         if ($cookies->has('FM_ORDER_ID'))
  189.             $fm $cookies->get('FM_ORDER_ID');
  190.         else
  191.             $fm '';
  192.         $wf $this->getWfByFm($fm);
  193.         if ($this->isOrderPaid($wf) || $wf == '')
  194.         {
  195.             if ($request->getLocale() == 'pl')
  196.                 return $this->redirectToRoute('fmUniqskillsFrontendPlCourseCatalogue');
  197.             else
  198.                 return $this->redirectToRoute('fmUniqskillsFrontendCourseCatalogue');
  199.         }
  200.         else
  201.         {
  202.             /** @var $order Orders */
  203.             $order  $this->em->getRepository(Orders::class)->findOneByOrdTran($fm);
  204.             $cc     $order->getCountry()->getLanguage()->getCode();
  205.             return $this->redirectToRoute('fmUniqskillsCartSuccess', [
  206.                 'ordTran' => $wf,
  207.                 '_locale' => $cc
  208.             ]);
  209.         }
  210.     }
  211.     private function isOrderPaid($_wf): int
  212.     {
  213.         return $this->userAccessUtil->checkOrderIsPaid($_wf);
  214.     }
  215.     private function getWfByFm($_fm)
  216.     {
  217.         $wf false;
  218.         $order $this->em->getRepository(Orders::class)->findOneBy(['ordTran' => $_fm]);
  219.         /** @var OrderPart $orderPart */
  220.         foreach ($order->getOrderPart() as $orderPart)
  221.         {
  222.             $wf $orderPart->getOrdTran();
  223.             if ($wf)
  224.             {
  225.                 break;
  226.             }
  227.         }
  228.         return $wf;
  229.     }
  230. }