<?php
namespace AppBundle\Controller\Site;
use AppBundle\Entity\Customer\AgentContactForm;
use AppBundle\Entity\Customer\ContactForm;
use AppBundle\Entity\Customer\ContactRequest;
use AppBundle\Entity\Customer\ContactRequestTime;
use AppBundle\Entity\System\BannerClick;
use AppBundle\Form\Customer\AgentContactFormType;
use AppBundle\Form\Customer\ContactFormType;
use AppBundle\Form\Customer\ContactRequestType;
use AppBundle\Utils\ContactFormService;
use AppBundle\Utils\MailerService;
use DateTime;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller
{
/**
* @Route("/", name="default_homepage")
* @return Response
*/
public function indexAction()
{
return $this->render('Site/Default/index/index.html.twig');
}
/**
* @Route("/o-nas", name="default_aboutUs")
* @return Response
*/
public function aboutUsAction()
{
return $this->render('Site/Default/about-us.html.twig');
}
/**
* @Route("/jak-kupic", name="default_howToBuy")
* @return Response
*/
public function howToBuyAction()
{
return $this->render('Site/Default/how-to.html.twig');
}
/**
* @Route("/zglos-szkode", name="default_reportDamage")
* @return Response
*/
public function reportDamageAction()
{
$em = $this->getDoctrine()->getManager();
$tus = $em->getRepository('AppBundle:Tu\Tu')->findBy(['inPartners' => 1, 'deleted' => 0]);
return $this->render('Site/Default/report-damage.html.twig', array('tus' => $tus));
}
/**
* @Route("/owu", name="default_owu")
* @return Response
*/
public function owuAction()
{
$em = $this->getDoctrine()->getManager();
$tus = $em->getRepository('AppBundle:Tu\Tu')->findAll();
return $this->render('Site/Default/owu.html.twig', array('tus' => $tus));
}
/**
* @Route("/regulamin", name="default_regulations")
* @return Response
*/
public function regulationsAction()
{
return $this->render('Site/Default/regulations.html.twig');
}
/**
* @Route("/klauzula-rodo", name="default_rodo")
* @return Response
*/
public function rodoAction()
{
return $this->render('Site/Default/rodo.html.twig');
}
/**
* @Route("/partnerzy", name="default_partners")
* @return Response
*/
public function partnersAction()
{
$em = $this->getDoctrine()->getManager();
$tus = $em->getRepository('AppBundle:Tu\Tu')->findBy(['inPartners' => 1, 'deleted' => 0]);
return $this->render('Site/Default/partners.html.twig', array('tus' => $tus));
}
/**
* @Route("/bezpieczenstwo", name="default_security")
* @return Response
*/
public function securityAction()
{
return $this->render('Site/Default/security.html.twig');
}
/**
* @Route("/reklama", name="default_advertising")
* @return Response
*/
public function advertisingAction()
{
return $this->render('Site/Default/advertising.html.twig');
}
/**
* @Route("/kontakt", name="default_contact")
* @param Request $request
* @param ContactFormService $contactFormService
* @return RedirectResponse|Response
*/
public function contactAction(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/Default/contact.html.twig',[
'form' => $form->createView()
]);
}
/**
* @Route("/wspolpraca", name="default_partnership")
* @param Request $request
* @param ContactFormService $contactFormService
* @param MailerService $mailerService
* @return RedirectResponse|Response
*/
public function partnershipAction(Request $request, ContactFormService $contactFormService, MailerService $mailerService)
{
$formData = new AgentContactForm();
$form = $this->createForm(AgentContactFormType::class, $formData, ['method' => 'POST', 'attr' => ['id' => 'appbundle_customer_contactform']]);
$form->handleRequest($request);
if ($form->isSubmitted()) {
$recaptchaResponse = $request->request->get('g-recaptcha-response');
$request->request->remove('g-recaptcha-response');
$captcha_success = $contactFormService->verifyCaptcha($recaptchaResponse);
if ($captcha_success->success==false) {
$form->addError(new FormError('Formularz wygasł, wyślij go ponownie'));
}
if($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($formData);
$em->flush();
$this->addFlash(
'success',
'Dziękujemy za złożenie zapytania. Odpowiemy na nie w ciągu najbliższych 24 godzin.'
);
$mailerService->sendCommonSystemMessage('agent@wygodnie.pl', MailerService::AGENT_CONTACT_MAIL, ['formData' => $formData]);
return $this->redirect($request->getUri());
}
}
return $this->render('Site/Default/partnership.html.twig',[
'form' => $form->createView()
]);
}
/**
* @Route("/contact-request", name="default_contact_request")
* @param Request $request
* @return JsonResponse|RedirectResponse
*/
public function contactRequest(Request $request)
{
$contactRequest = new ContactRequest();
$contactRequest->setContactRequestDate(new DateTime());
$form = $this->createForm(ContactRequestType::class, $contactRequest);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$contactRequest = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($contactRequest);
$em->flush();
return new JsonResponse('<p><i class="fa fa-check-circle" aria-hidden="true"></i>Twoje zamówienie rozmowy'
. ' telefonicznej zostało pomyślnie wysłane. Nasz pracownik oddzwoni do Ciebie w preferowanym terminie.</p>'
. '<p><b>Dziękujemy</b>, Zespół Wygodnie.pl.</p>');
}
return $this->redirectToRoute('default_homepage');
}
/**
* @Route("/partnerzy/allianz", name="default_partners_allianz")
*/
public function partnersAllianzAction()
{
return $this->render('Site/Default/partners/allianz.html.twig');
}
/**
* @Route("/partnerzy/aviva", name="default_partners_aviva")
*/
public function partnersAvivaAction()
{
return $this->render('Site/Default/partners/aviva.html.twig');
}
/**
* @Route("/partnerzy/axa", name="default_partners_axa")
*/
public function partnersAxaAction()
{
return $this->render('Site/Default/partners/axa.html.twig');
}
/**
* @Route("/partnerzy/europa", name="default_partners_europa")
*/
public function partnersEuropaAction()
{
return $this->render('Site/Default/partners/europa.html.twig');
}
/**
* @Route("/partnerzy/hestia", name="default_partners_hestia")
*/
public function partnersHestiaAction()
{
return $this->render('Site/Default/partners/hestia.html.twig');
}
/**
* @Route("/partnerzy/generali", name="default_partners_generali")
*/
public function partnersGeneraliAction()
{
return $this->render('Site/Default/partners/generali.html.twig');
}
/**
* @Route("/partnerzy/signal", name="default_partners_signal")
*/
public function partnerSignalAction()
{
return $this->render('Site/Default/partners/signal.html.twig');
}
/**
* @Route("/partnerzy/uniqa", name="default_partners_uniqa")
*/
public function partnersUniqaAction()
{
return $this->render('Site/Default/partners/uniqa.html.twig');
}
/**
* @Route("/partnerzy/warta", name="default_partners_warta")
*/
public function partnersWartaAction()
{
return $this->render('Site/Default/partners/warta.html.twig');
}
/**
* @Route("/partnerzy/pzu", name="default_partners_pzu")
*/
public function partnersPzuAction()
{
return $this->render('Site/Default/partners/pzu.html.twig');
}
/**
* @Route("/ranking-ubezpieczen-mieszkania", name="default_flat_insurance_rank")
*/
public function flatInsuranceRankAction()
{
return $this->render('Site/Default/flat-insurance-rank.html.twig');
}
/**
* @Route("/banner-redirect", name="default_banner_redirect")
*/
public function bannerRedirectAction(Request $request)
{
$href = $request->query->get('href', '');
$href_enc = $request->query->get('href_enc', '');
if ($href == '' && $href_enc != '') {
$href = base64_decode($href_enc);
}
$banner = $request->query->get('banner', '');
$bc = new BannerClick();
$bc->setBanner($banner);
$em = $this->getDoctrine()->getManager();
$em->persist($bc);
$em->flush();
return $this->redirect($href);
}
}