src/AppBundle/Controller/Site/CalculatorController.php line 155

Open in your IDE?
  1. <?php
  2. namespace AppBundle\Controller\Site;
  3. use AppBundle\Entity\Customer\ContactRequestTime;
  4. use AppBundle\Entity\Customer\GeneraliContactForm;
  5. use AppBundle\Entity\Policy\Proposal;
  6. use AppBundle\Form\Customer\GeneraliContactFormType;
  7. use AppBundle\Utils\ContactFormService;
  8. use AppBundle\Utils\PolicyBuilder\PolicyService;
  9. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  11. use Symfony\Component\Form\FormError;
  12. use Symfony\Component\Form\FormInterface;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. class CalculatorController extends Controller
  17. {
  18.     /**
  19.      * @Route("/wczytaj-kalkulacje")
  20.      * @Route("/wczytaj-kalkulacje/{token}", requirements={"token"=".+"})
  21.      */
  22.     public function loadCalculationAction()
  23.     {
  24.         return $this->render('Site/Calculator/load-calculation.html.twig');
  25.     }
  26.     /**
  27.      * @Route("/odnowienie-ubezpieczenia")
  28.      * @Route("/odnowienie-ubezpieczenia/{token}", requirements={"token"=".+"})
  29.      */
  30.     public function renewInsuranceAction()
  31.     {
  32.         return $this->render('Site/Calculator/renew-insurance.html.twig');
  33.     }
  34.     /**
  35.      * @Route("/proposal-calculation/{id}")
  36.      */
  37.     public function downloadCalculationAction(Proposal $proposalPolicyService $policyService)
  38.     {
  39.         $path $policyService->getCalculationPath($proposal);
  40.         if(file_exists($path)) {
  41.             return $this->file($path);
  42.         }
  43.         throw $this->createNotFoundException('Brak kalkulacji dla wniosku');
  44.     }
  45.     /**
  46.      * @Route("/form/index")
  47.      */
  48.     public function oldRenewalsAction()
  49.     {
  50.         return $this->render('Site/Calculator/old-renewals.html.twig');
  51.     }
  52.     /**
  53.      * @Route("/ubezpieczenie-turystyczne/kalkulator", name="calculator_tourist_individual")
  54.      * @Route("/ubezpieczenie-turystyczne/kalkulator/{subpage}", requirements={"subpage"=".+"})
  55.      */
  56.     public function touristIndividualAction()
  57.     {
  58.        return $this->render('Site/Calculator/tourist-individual.html.twig');
  59.     }
  60.     /**
  61.      * @Route("/ubezpieczenie-turystyczne-grupowe/kalkulator", name="calculator_tourist_group")
  62.      * @Route("/ubezpieczenie-turystyczne-grupowe/kalkulator/{subpage}", requirements={"subpage"=".+"})
  63.      */
  64.     public function touristGroupAction()
  65.     {
  66.         return $this->render('Site/Calculator/tourist-group.html.twig');
  67.     }
  68.     /**
  69.      * @Route("/ubezpieczenie-dla-narciarzy/kalkulator", name="calculator_ski")
  70.      * @Route("/ubezpieczenie-dla-narciarzy/kalkulator/{subpage}", requirements={"subpage"=".+"})
  71.      */
  72.     public function skiAction()
  73.     {
  74.         return $this->render('Site/Calculator/ski-individual.html.twig');
  75.     }
  76.     /**
  77.      * @Route("/ubezpieczenie-mieszkania/kalkulator", name="calculator_flat")
  78.      * @Route("/ubezpieczenie-mieszkania/kalkulator/{subpage}", requirements={"subpage"=".+"})
  79.      */
  80.     public function flatAction()
  81.     {
  82.         return $this->render('Site/Calculator/flat.html.twig');
  83.     }
  84.     /**
  85.      * @Route("/ubezpieczenie-mieszkania-pod-kredyt/kalkulator", name="calculator_flat_credit")
  86.      */
  87.     public function flatCreditAction()
  88.     {
  89.         return $this->redirectToRoute('calculator_flat', [], 301);
  90.     }
  91.     /**
  92.      * @Route("/ubezpieczenie-domu/kalkulator", name="calculator_house")
  93.      * @Route("/ubezpieczenie-domu/kalkulator/{subpage}", requirements={"subpage"=".+"})
  94.      */
  95.     public function houseAction()
  96.     {
  97.         return $this->render('Site/Calculator/house.html.twig');
  98.     }
  99.     /**
  100.      * @Route("/ubezpieczenie-domu-pod-kredyt/kalkulator", name="calculator_house_credit")
  101.      * @Route("/ubezpieczenie-dom-pod-kredyt/kalkulator")
  102.      */
  103.     public function houseCreditAction()
  104.     {
  105.         return $this->redirectToRoute('calculator_house', [], 301);
  106.     }
  107.     /**
  108.      * @Route("/ubezpieczenie-oc/kalkulator", name="calculator_mtpl")
  109.      * @Route("/ubezpieczenie-oc/kalkulator/{subpage}", requirements={"subpage"=".+"})
  110.      */
  111.     public function mtplAction()
  112.     {
  113.         return $this->render('Site/Calculator/mtpl.html.twig');
  114.     }
  115.     /**
  116.      * @Route("/ubezpieczenie-oc-ac/kalkulator", name="calculator_mtpl_ac")
  117.      * @Route("/ubezpieczenie-oc-ac/kalkulator/{subpage}", requirements={"subpage"=".+"})
  118.      */
  119.     public function mtplAcAction()
  120.     {
  121.         return $this->render('Site/Calculator/mtpl-ac.html.twig');
  122.     }
  123.     /**
  124.      * @Route("/ubezpieczenie-oc-ciezarowe/kalkulator", name="calculator_mtpl_truck")
  125.      * @Route("/ubezpieczenie-oc-ciezarowe/kalkulator/{subpage}", requirements={"subpage"=".+"})
  126.      */
  127.     public function mtplTruckAction()
  128.     {
  129.         return $this->render('Site/Calculator/mtpl-truck.html.twig');
  130.     }
  131.     /**
  132.      * @Route("ubezpieczenie-na-zycie/kalkulator", name="calculator_life")
  133.      * @param Request $request
  134.      * @param ContactFormService $contactFormService
  135.      * @return RedirectResponse|Response
  136.      */
  137.     public function lifeAction(Request $request)
  138.     {
  139.         $googleConfig $this->getParameter('google');
  140.         $googleCapatchaSecret $googleConfig['captchaSecret'];
  141.         $contactForm = new GeneraliContactForm();
  142.         $form $this->createForm(GeneraliContactFormType::class, $contactForm, ['method' => 'POST']);
  143.         $form->handleRequest($request);
  144.         if ($form->isSubmitted()) {
  145.             $recaptchaResponse $request->request->get('g-recaptcha-response');
  146.             $request->request->remove('g-recaptcha-response');
  147.             $url 'https://www.google.com/recaptcha/api/siteverify';
  148.             $data = [
  149.                 'secret' => $googleCapatchaSecret,
  150.                 'response' => $recaptchaResponse
  151.             ];
  152.             $options = [
  153.                 'http' => [
  154.                     'method' => 'POST',
  155.                     'content' => http_build_query($data),
  156.                     'header' => 'Content-Type: application/x-www-form-urlencoded'
  157.                 ]
  158.             ];
  159.             $context  stream_context_create($options);
  160.             $verify file_get_contents($urlfalse$context);
  161.             $captcha_success=json_decode($verify);
  162.             if ($captcha_success->success==false) {
  163.                 $form->addError(new FormError('Formularz wygasł, wyślij go ponownie'));
  164.             }
  165.             if($form->isValid()) {
  166.                 $contactRequest $contactForm->getContactRequest();
  167.                 $contactRequest->setRequestDateTime($this->getDoctrine()->getRepository(ContactRequestTime::class)->findAll());
  168.                 $em $this->getDoctrine()->getManager();
  169.                 $em->persist($contactForm);
  170.                 $em->flush();
  171.                 $this->addFlash(
  172.                     'success',
  173.                     'Dziękujemy za zainteresowanie ofertą. Skontaktujemy się najszybciej jak to będzie możliwe.'
  174.                 );
  175.                 return $this->redirect($request->getUri());
  176.             }
  177.         }
  178.         return $this->render('Site/Calculator/life.html.twig', [
  179.             'form' => $form->createView()
  180.         ]);
  181.     }
  182.     /**
  183.      * @Route("ubezpieczenie-zdrowotne/kalkulator", name="calculator_health")
  184.      * @Route("ubezpieczenie-zdrowotne-rodzinne/kalkulator")
  185.      * @param Request $request
  186.      * @param ContactFormService $contactFormService
  187.      * @return RedirectResponse|Response
  188.      */
  189.     public function healthAction(Request $requestContactFormService $contactFormService)
  190.     {
  191.         $result $contactFormService->handleFormSubmition($request);
  192.         /** @var FormInterface $form */
  193.         $form $result['form'];
  194.         $isValid $result['valid'];
  195.         if($isValid) {
  196.             $this->addFlash(
  197.                 'success',
  198.                 'Dziękujemy za złożenie zapytania. Odpowiemy na nie w ciągu najbliższych 24 godzin.'
  199.             );
  200.             return $this->redirect($request->getUri());
  201.         }
  202.         return $this->render('Site/Calculator/health.html.twig', [
  203.             'form' => $form->createView()
  204.         ]);
  205.     }
  206.     /**
  207.      * @Route("ubezpieczenie-rowerowe/kalkulator", name="calculator_bike")
  208.      * @Route("ubezpieczenie-rowerowe/kalkulator/{subpage}", requirements={"subpage"=".+"})
  209.      */
  210.     public function bikeAction()
  211.     {
  212.         return $this->render('Site/Calculator/bike.html.twig');
  213.     }
  214.     /**
  215.      * @Route("ubezpieczenie-motocykla/kalkulator", name="calculator_motorbike")
  216.      * @Route("ubezpieczenie-motocykla/kalkulator/{subpage}", requirements={"subpage"=".+"})
  217.      */
  218.     public function motorbikeAction()
  219.     {
  220.         return $this->render('Site/Calculator/motorbike.html.twig');
  221.     }
  222.     /**
  223.      * @Route("ubezpieczenie-mediplan/kalkulator", name="calculator_medi-plan")
  224.      * @Route("/ubezpieczenie-mediplan/kalkulator/{subpage}", requirements={"subpage"=".+"})
  225.      * @param Request $request
  226.      * @param ContactFormService $contactFormService
  227.      * @return RedirectResponse|Response
  228.      */
  229.     public function mediPlanAction(Request $requestContactFormService $contactFormService)
  230.     {
  231.         $result $contactFormService->handleFormSubmition($request);
  232.         /** @var FormInterface $form */
  233.         $form $result['form'];
  234.         $isValid $result['valid'];
  235.         if($isValid) {
  236.             $this->addFlash(
  237.                 'success',
  238.                 'Dziękujemy za złożenie zapytania. Odpowiemy na nie w ciągu najbliższych 24 godzin.'
  239.             );
  240.             return $this->redirect($request->getUri());
  241.         }
  242.         return $this->render('Site/Calculator/medi-plan.html.twig', [
  243.             'form' => $form->createView()
  244.         ]);
  245.     }
  246. }