src/Controller/DeathInsurance/DeathInsuranceController.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Controller\DeathInsurance;
  3. use App\Controller\BaseController;
  4. use App\Entity\Customer\TrackerActivity;
  5. use App\Entity\DeathInsurance\IssueData;
  6. use App\Entity\Order\Order;
  7. use App\Entity\Taxonomy\Taxon;
  8. use App\Manager\BitbagStatic\BlockManager;
  9. use App\Manager\DeathInsurance\DeathInsuranceManager;
  10. use App\Manager\Partner\PartnerManager;
  11. use App\Service\CustomerService;
  12. use App\Service\DeathInsurance\AdminGridService;
  13. use App\Service\StaticPagesBitbagService;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. class DeathInsuranceController extends BaseController
  18. {
  19.     public function indexAction(Request $request): Response
  20.     {
  21.         $customer CustomerService::retrieveCustomerFromShopUser($this->getUser());
  22.         $request->getSession()->remove('iframeSourceLink');
  23.         $trackerActivityService $this->getContainer()->get('app.service.customer.tracker_activity');
  24.         $trackerActivityService->startTracking($customerTrackerActivity::FROM_DIRECT_URLTrackerActivity::TYPE_DEATH_INSURANCE_ACTIVITY);
  25.         $render '@templates/DeathInsurance/death-insurance.html.twig';
  26.         return $this->render($render, [
  27.             'issueDataList' => $this->getEntityManager()->getRepository(IssueData::class)->findAllAsArray(),
  28.             'accordionBlocksFaq' => StaticPagesBitbagService::getAllFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_ACCORDION_TEXT_DEATH_INSURANCE_CODE_PATTERN),
  29.             'keywordsForSeo' => StaticPagesBitbagService::getFirstFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_SEO_META_DEATH_INSURANCE_KEYWORD_CODE_PATTERN),
  30.             'descriptionForSeo' => StaticPagesBitbagService::getFirstFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_SEO_META_DEATH_INSURANCE_DESCRIPTION_CODE_PATTERN)
  31.         ]);
  32.     }
  33.     /**
  34.      * @param Request $request
  35.      * @return Response
  36.      */
  37.     public function removeFromCart(Request $request): Response
  38.     {
  39.         $deathInsuranceService $this->getContainer()->get('app.service.death_insurance.death_insurance');
  40.         $result $deathInsuranceService->removeDeathInsuranceFromCartSessionByCnp($request->get('cnp'));
  41.         return new Response(json_encode(array('result' => $result)));
  42.     }
  43.     public function checkAlreadyActive(Request $request): Response
  44.     {
  45.         $deathInsuranceService $this->getContainer()->get('app.service.road_assistance.road_assistance');
  46.         return new Response(json_encode(array('isActive' => $deathInsuranceService->isAlreadyActiveForCnpAndValidFrom($request->request->all()))));
  47.     }
  48.     public function retrieveIssueData(Request $request): JsonResponse
  49.     {
  50.         /** @var AdminGridService $adminGridService */
  51.         $adminGridService $this->getContainer()->get('app.service.death_insurance_issue_data.admin_grid');
  52.         return new JsonResponse($adminGridService->retrieveDeathInsuranceIssueGridData());
  53.     }
  54.     public function submitData(Request $request) : Response
  55.     {
  56.         $customer CustomerService::retrieveCustomerFromShopUser($this->getUser());
  57.         $deathInsuranceService $this->getContainer()->get('app.service.death_insurance.death_insurance');
  58.         $deathInsuranceTrackerActivityService $this->getContainer()->get('app.service.death_insurance.tracker_activity');
  59.         if (DeathInsuranceManager::isDeathInsuranceIframe($request)) {
  60.             $deathInsuranceService->removeDeathInsuranceFromCartSessionByCnp($request->get('cnp'));
  61.         }
  62.         $deathInsuranceResponse $deathInsuranceService->storeNewDeathInsuranceInCart();
  63.         $deathInsuranceTrackerActivityService->setDeathInsuranceSubmittedToCart($customer$deathInsuranceResponse);
  64.         return new Response(json_encode($deathInsuranceResponse));
  65.     }
  66.     /**
  67.      * @param Request $request
  68.      * @return Response
  69.      */
  70.     public function storePolicy(Request $request) : Response
  71.     {
  72.         $response = ['isStored' => false];
  73.         $localFilePath $this->getContainer()->getParameter('kernel.project_dir') . '/var/storage/nn_insurance/policy_production/';
  74.         $deathInsuranceService $this->getContainer()->get('app.service.death_insurance.death_insurance');
  75.         if (!is_dir($localFilePath)) {
  76.             // Third parameter 'true' makes the directory recursive, creating parent directories as needed
  77.             mkdir($localFilePath0777true);
  78.         }
  79.         $data json_decode($request->getContent(), true);
  80.         $urlPolicy $data['urlPolicy'];
  81.         $filename $data['fileName'];
  82.         if ($filename && $urlPolicy) {
  83.             $stored $deathInsuranceService->storeDeathInsurancePolicyOnServer($localFilePath$filename$urlPolicy);
  84.             $response = ['isStored' => $stored];
  85.         }
  86.         return new Response(json_encode($response));
  87.     }
  88.     public function showPolicyForPartner(Request $request): Response
  89.     {
  90.         $id $request->get('order_id');
  91.         $id base64_decode($id);
  92.         $order $this->getDoctrine()->getRepository(Order::class)->find($id);
  93.         if ($order->hasDeathInsurance()) {
  94.             $deathInsurance $order->getDeathInsurance();
  95.             foreach ($deathInsurance as $deathInsuranceItem) {
  96.                 if ($deathInsuranceItem && $deathInsuranceItem->getPolicyNumber()) {
  97.                     $fileName 'Polita de asigurare ' $deathInsuranceItem->getPolicyNumber() . '.pdf';
  98.                     $filePath $this->getContainer()->getParameter('kernel.project_dir') . '/var/storage/nn_insurance/_policy/' $fileName;
  99.                     if ($filePath && file_exists($filePath)) {
  100.                         header('Content-Type: application/pdf');
  101.                         $pdfContent file_get_contents($filePath);
  102.                         echo $pdfContent;
  103.                     } else {
  104.                         return new Response('File not found'404);
  105.                     }
  106.                 }
  107.             }
  108.         }
  109.         return new Response('error');
  110.     }
  111.     public function deathInsuranceIframe(Request $request): Response
  112.     {
  113.         $partnerService $this->getContainer()->get('app.service.partner.partner');
  114.         $partnerService->verifyToken($requestPartnerManager::CAN_ISSUE_DEATH_INSURANCE_INDEX);
  115.         $token['partnerPublicToken'] = $request->get(PartnerManager::SESSION_PARTNER_PUBLIC_TOKEN_NAME);
  116.         $request->getSession()->set('iframeSourceLink'$this->generateUrl('app_shop_death_insurance_iframe'$token));
  117.         PartnerManager::checkQRCodeFlow($request);
  118.         return $this->render('@templates/DeathInsurance/iframe.html.twig', [
  119.             'issueDataList' => $this->getEntityManager()->getRepository(IssueData::class)->findAllAsArray(),
  120.             'publicToken' => $token['partnerPublicToken'] ?? null,
  121.         ]);
  122.     }
  123. }