<?php
namespace AppBundle\Controller\Site;
use AppBundle\Entity\Customer\ContactRequestTime;
use AppBundle\Entity\Customer\GeneraliContactForm;
use AppBundle\Entity\Policy\Proposal;
use AppBundle\Form\Customer\GeneraliContactFormType;
use AppBundle\Utils\ContactFormService;
use AppBundle\Utils\PolicyBuilder\PolicyService;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class CalculatorController extends Controller
{
/**
* @Route("/wczytaj-kalkulacje")
* @Route("/wczytaj-kalkulacje/{token}", requirements={"token"=".+"})
*/
public function loadCalculationAction()
{
return $this->render('Site/Calculator/load-calculation.html.twig');
}
/**
* @Route("/odnowienie-ubezpieczenia")
* @Route("/odnowienie-ubezpieczenia/{token}", requirements={"token"=".+"})
*/
public function renewInsuranceAction()
{
return $this->render('Site/Calculator/renew-insurance.html.twig');
}
/**
* @Route("/proposal-calculation/{id}")
*/
public function downloadCalculationAction(Proposal $proposal, PolicyService $policyService)
{
$path = $policyService->getCalculationPath($proposal);
if(file_exists($path)) {
return $this->file($path);
}
throw $this->createNotFoundException('Brak kalkulacji dla wniosku');
}
/**
* @Route("/form/index")
*/
public function oldRenewalsAction()
{
return $this->render('Site/Calculator/old-renewals.html.twig');
}
/**
* @Route("/ubezpieczenie-turystyczne/kalkulator", name="calculator_tourist_individual")
* @Route("/ubezpieczenie-turystyczne/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function touristIndividualAction()
{
return $this->render('Site/Calculator/tourist-individual.html.twig');
}
/**
* @Route("/ubezpieczenie-turystyczne-grupowe/kalkulator", name="calculator_tourist_group")
* @Route("/ubezpieczenie-turystyczne-grupowe/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function touristGroupAction()
{
return $this->render('Site/Calculator/tourist-group.html.twig');
}
/**
* @Route("/ubezpieczenie-dla-narciarzy/kalkulator", name="calculator_ski")
* @Route("/ubezpieczenie-dla-narciarzy/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function skiAction()
{
return $this->render('Site/Calculator/ski-individual.html.twig');
}
/**
* @Route("/ubezpieczenie-mieszkania/kalkulator", name="calculator_flat")
* @Route("/ubezpieczenie-mieszkania/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function flatAction()
{
return $this->render('Site/Calculator/flat.html.twig');
}
/**
* @Route("/ubezpieczenie-mieszkania-pod-kredyt/kalkulator", name="calculator_flat_credit")
*/
public function flatCreditAction()
{
return $this->redirectToRoute('calculator_flat', [], 301);
}
/**
* @Route("/ubezpieczenie-domu/kalkulator", name="calculator_house")
* @Route("/ubezpieczenie-domu/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function houseAction()
{
return $this->render('Site/Calculator/house.html.twig');
}
/**
* @Route("/ubezpieczenie-domu-pod-kredyt/kalkulator", name="calculator_house_credit")
* @Route("/ubezpieczenie-dom-pod-kredyt/kalkulator")
*/
public function houseCreditAction()
{
return $this->redirectToRoute('calculator_house', [], 301);
}
/**
* @Route("/ubezpieczenie-oc/kalkulator", name="calculator_mtpl")
* @Route("/ubezpieczenie-oc/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function mtplAction()
{
return $this->render('Site/Calculator/mtpl.html.twig');
}
/**
* @Route("/ubezpieczenie-oc-ac/kalkulator", name="calculator_mtpl_ac")
* @Route("/ubezpieczenie-oc-ac/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function mtplAcAction()
{
return $this->render('Site/Calculator/mtpl-ac.html.twig');
}
/**
* @Route("/ubezpieczenie-oc-ciezarowe/kalkulator", name="calculator_mtpl_truck")
* @Route("/ubezpieczenie-oc-ciezarowe/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function mtplTruckAction()
{
return $this->render('Site/Calculator/mtpl-truck.html.twig');
}
/**
* @Route("ubezpieczenie-na-zycie/kalkulator", name="calculator_life")
* @param Request $request
* @param ContactFormService $contactFormService
* @return RedirectResponse|Response
*/
public function lifeAction(Request $request)
{
$googleConfig = $this->getParameter('google');
$googleCapatchaSecret = $googleConfig['captchaSecret'];
$contactForm = new GeneraliContactForm();
$form = $this->createForm(GeneraliContactFormType::class, $contactForm, ['method' => 'POST']);
$form->handleRequest($request);
if ($form->isSubmitted()) {
$recaptchaResponse = $request->request->get('g-recaptcha-response');
$request->request->remove('g-recaptcha-response');
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = [
'secret' => $googleCapatchaSecret,
'response' => $recaptchaResponse
];
$options = [
'http' => [
'method' => 'POST',
'content' => http_build_query($data),
'header' => 'Content-Type: application/x-www-form-urlencoded'
]
];
$context = stream_context_create($options);
$verify = file_get_contents($url, false, $context);
$captcha_success=json_decode($verify);
if ($captcha_success->success==false) {
$form->addError(new FormError('Formularz wygasł, wyślij go ponownie'));
}
if($form->isValid()) {
$contactRequest = $contactForm->getContactRequest();
$contactRequest->setRequestDateTime($this->getDoctrine()->getRepository(ContactRequestTime::class)->findAll());
$em = $this->getDoctrine()->getManager();
$em->persist($contactForm);
$em->flush();
$this->addFlash(
'success',
'Dziękujemy za zainteresowanie ofertą. Skontaktujemy się najszybciej jak to będzie możliwe.'
);
return $this->redirect($request->getUri());
}
}
return $this->render('Site/Calculator/life.html.twig', [
'form' => $form->createView()
]);
}
/**
* @Route("ubezpieczenie-zdrowotne/kalkulator", name="calculator_health")
* @Route("ubezpieczenie-zdrowotne-rodzinne/kalkulator")
* @param Request $request
* @param ContactFormService $contactFormService
* @return RedirectResponse|Response
*/
public function healthAction(Request $request, ContactFormService $contactFormService)
{
$result = $contactFormService->handleFormSubmition($request);
/** @var FormInterface $form */
$form = $result['form'];
$isValid = $result['valid'];
if($isValid) {
$this->addFlash(
'success',
'Dziękujemy za złożenie zapytania. Odpowiemy na nie w ciągu najbliższych 24 godzin.'
);
return $this->redirect($request->getUri());
}
return $this->render('Site/Calculator/health.html.twig', [
'form' => $form->createView()
]);
}
/**
* @Route("ubezpieczenie-rowerowe/kalkulator", name="calculator_bike")
* @Route("ubezpieczenie-rowerowe/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function bikeAction()
{
return $this->render('Site/Calculator/bike.html.twig');
}
/**
* @Route("ubezpieczenie-motocykla/kalkulator", name="calculator_motorbike")
* @Route("ubezpieczenie-motocykla/kalkulator/{subpage}", requirements={"subpage"=".+"})
*/
public function motorbikeAction()
{
return $this->render('Site/Calculator/motorbike.html.twig');
}
/**
* @Route("ubezpieczenie-mediplan/kalkulator", name="calculator_medi-plan")
* @Route("/ubezpieczenie-mediplan/kalkulator/{subpage}", requirements={"subpage"=".+"})
* @param Request $request
* @param ContactFormService $contactFormService
* @return RedirectResponse|Response
*/
public function mediPlanAction(Request $request, ContactFormService $contactFormService)
{
$result = $contactFormService->handleFormSubmition($request);
/** @var FormInterface $form */
$form = $result['form'];
$isValid = $result['valid'];
if($isValid) {
$this->addFlash(
'success',
'Dziękujemy za złożenie zapytania. Odpowiemy na nie w ciągu najbliższych 24 godzin.'
);
return $this->redirect($request->getUri());
}
return $this->render('Site/Calculator/medi-plan.html.twig', [
'form' => $form->createView()
]);
}
}