src/Controller/ContactController.php line 93

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use AccountBundle\Services\AccountService;
  4. use App\Form\ContactFormType;
  5. use App\Form\KlantenkaartFormType;
  6. use App\Form\NieuwsbriefFormType;
  7. use App\Form\CadeaubonFormType;
  8. use App\Services\GeneralSendMailService;
  9. use App\Services\MailService;
  10. use App\Services\CheckwebsitesettingService;
  11. use App\Services\ReCaptchaService;
  12. use App\Services\MailchimpService;
  13. use App\Services\MollieService;
  14. use Pimcore\Controller\FrontendController;
  15. use Pimcore\Mail;
  16. use Pimcore\Config\Config;
  17. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Pimcore\Translation\Translator;
  21. use Pimcore\Model\DataObject;
  22. use Symfony\Component\Mailer\Transport;
  23. use Symfony\Component\Mailer\Mailer;
  24. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. use MultilingualBundle\Service\DocumentLookupService;
  27. class ContactController extends BaseController
  28. {
  29.     protected $recaptcha;
  30.     protected $recaptchaVersion;
  31.     protected $recaptchaPublicKey;
  32.     protected $checkwebsitesettingService;
  33.     protected $inotherlang;
  34.     protected $translator;
  35.     protected $sendmail;
  36.     protected $currentLanguage;
  37.     protected $userdata;
  38.     protected $params;
  39.     protected $mailChimp;
  40.     protected $mollie;
  41.     public function __construct(CheckwebsitesettingService $checkwebsitesettingServiceDocumentLookupService $inotherlangTranslator $translatorReCaptchaService $recaptchaGeneralSendMailService $sendmailAccountService $userdataParameterBagInterface $paramsMailchimpService $mailChimpMollieService $mollie){
  42.         $this->checkwebsitesettingService $checkwebsitesettingService;
  43.         $this->inotherlang $inotherlang;
  44.         $this->translator $translator;
  45.         $this->recaptcha $recaptcha;
  46.         $this->recaptchaVersion $recaptcha->getVersion();
  47.         $this->recaptchaPublicKey $recaptcha->getPublicKey();
  48.         $this->sendmail $sendmail;
  49.         $this->userdata $userdata;
  50.         $this->params $params;
  51.         $this->mailChimp $mailChimp;
  52.         $this->mollie $mollie;
  53.     }
  54.     ////////////////////// General forms
  55.     ///
  56.     /**
  57.      *
  58.      * @param Request $request
  59.      * @param Translator $translator
  60.      *
  61.      * @return Response
  62.      *
  63.      * @throws \Exception
  64.      */
  65.     public function defaultAction(Request $request)
  66.     {
  67.         $formName ContactFormType::class;
  68.         $emailTemplate 'email_contact';           // Email template contact
  69.         $emailTemplateConfirm 'email_customer';   // Email template contact confirm
  70.         ///////// EDIT VARIABLES ABOVE
  71.         $this->currentLanguage $request->getLocale();
  72.         return $this->_defaultForm($request$formName$this->recaptchaVersion$emailTemplate$emailTemplateConfirm);
  73.     }
  74.     public function klantenkaartAction(Request $request)
  75.     {
  76.         $formName KlantenkaartFormType::class;
  77.         $emailTemplate 'email_contact_klanten';           // Email template klantenkaart
  78.         $emailTemplateConfirm 'email_customer_klanten';   // Email template klantenkaart confirm
  79.         ///////// EDIT VARIABLES ABOVE
  80.         $this->currentLanguage $request->getLocale();
  81.         return $this->_klantenkaartForm($request$formName$this->recaptchaVersion$emailTemplate$emailTemplateConfirm);
  82.     }
  83.     public function mailchimpAction(Request $request)
  84.     {
  85.         $formName NieuwsbriefFormType::class;
  86.         $emailTemplate 'email_contact_nieuwsbrief';           // Email template mailchimp
  87.         $emailTemplateConfirm 'email_customer_nieuwsbrief';   // Email template mailchimp confirm
  88.         ///////// EDIT VARIABLES ABOVE
  89.         $this->currentLanguage $request->getLocale();
  90.         return $this->_mailchimpForm($request$formName$this->recaptchaVersion$emailTemplate$emailTemplateConfirm);
  91.     }
  92.     public function cadeaubonAction(Request $request)
  93.     {
  94.         $formName CadeaubonFormType::class;
  95.         ///////// EDIT VARIABLES ABOVE
  96.         $this->currentLanguage $request->getLocale();
  97.         return $this->_cadeaubonForm($request$formName$this->recaptchaVersion);
  98.     }
  99.     ///////////////////////// End general forms
  100.     protected function _defaultForm(Request $request$formName$recaptcha NULL$emailTemplate NULL$emailTemplateConfirm NULL)
  101.     {
  102.         $success false;
  103.         // initialize form and handle request data
  104.         if($formName){
  105.             $form $this->createForm($formName);
  106.             $form->handleRequest($request);
  107.         }
  108.         // handle form
  109.         if ($form->isSubmitted()) {
  110.             if ($form->isValid()) {
  111.                 $params $request->request->all();
  112.                 $message "Bedankt voor uw bericht. We nemen zo snel mogelijk contact met u op!";
  113.                 if($recaptcha){
  114.                     if($this->recaptcha->captchaverify($params)){
  115.                         $success true;
  116.                         $data $form->getData();
  117.                         $this->sendmail->_sendMailDefaultForm($data"$emailTemplate""$emailTemplateConfirm""$message");
  118.                     }else{
  119.                         $message "Captcha code is niet correct!";
  120.                         $this->addFlash("warning"$message);
  121.                     }
  122.                 }else{
  123.                     $success true;
  124.                     $data $form->getData();
  125.                     $this->sendmail->_sendMailDefaultForm($data"$emailTemplate""$emailTemplateConfirm""$message");
  126.                 }
  127.             }
  128.         }
  129.         return $this->render('contact/default.html.twig', [
  130.             'form' => $form->createView(),
  131.             'recaptcha' => $this->recaptchaVersion,
  132.             'recaptchaPublic' => $this->recaptchaPublicKey,
  133.             'success' => $success,
  134.             'userObject' => $this->userdata->getUserData($request)
  135. //            'error' => $error,
  136. //            'hideBreadcrumbs' => true
  137.         ]);
  138.     }
  139.     protected function _klantenkaartForm(Request $request$formName$recaptcha NULL$emailTemplate NULL$emailTemplateConfirm NULL)
  140.     {
  141.         $success false;
  142.         // initialize form and handle request data
  143.         if($formName){
  144.             $form $this->createForm($formName);
  145.             $form->handleRequest($request);
  146.         }
  147.         // handle form
  148.         if ($form->isSubmitted()) {
  149.             if ($form->isValid()) {
  150.                 $params $request->request->all();
  151.                 $message "Bedankt voor uw bericht. We nemen zo snel mogelijk contact met u op!";
  152.                 // Klantenkaart moet worden aangevinkt door Holvoet zelf
  153.                 if($recaptcha){
  154.                     if($this->recaptcha->captchaverify($params)){
  155.                         $success true;
  156.                         $data $form->getData();
  157.                         $this->_saveKlantenKaart($request$data);
  158.                         $this->sendmail->_sendMailDefaultForm($data"$emailTemplate""$emailTemplateConfirm""$message");
  159.                     }else{
  160.                         $message "Captcha code is niet correct!";
  161.                         $this->addFlash("warning"$message);
  162.                     }
  163.                 }else{
  164.                     $success true;
  165.                     $data $form->getData();
  166.                     $this->_saveKlantenKaart($request$data);
  167.                     $this->sendmail->_sendMailDefaultForm($data"$emailTemplate""$emailTemplateConfirm""$message");
  168.                 }
  169.             }
  170.         }
  171.         return $this->render('contact/klantenkaart.html.twig', [
  172.             'form' => $form->createView(),
  173.             'recaptcha' => $this->recaptchaVersion,
  174.             'recaptchaPublic' => $this->recaptchaPublicKey,
  175.             'success' => $success,
  176.             'userObject' => $this->userdata->getUserData($request)
  177. //            'error' => $error,
  178. //            'hideBreadcrumbs' => true
  179.         ]);
  180.     }
  181.     protected function _saveKlantenKaart($request$data)
  182.     {
  183.         /** @var \Pimcore\Model\DataObject\UserPortal $objectUser */
  184.         $session $request->getSession();
  185.         // if User is logged in
  186.         // Check if user is already logged in
  187.         if($session->get('userLogged')) {
  188.             // Save userObject klantenkaart
  189.             $userObj $session->get('userLogged');
  190.             if (!empty($userObj)) {
  191.                 $userId $userObj->getId();
  192.                 $objectUser DataObject\UserPortal::getById($userId);
  193.                 $objectUser->setNaam($data['lastname']);
  194.                 $objectUser->setVoornaam($data['firstname']);
  195.                 $objectUser->setTel($data['phone']);
  196.                 $objectUser->setAdres_straat($data['street']);
  197.                 $objectUser->setAdres_nr($data['streetnr']);
  198.                 $objectUser->setAdres_postcode($data['postcode']);
  199.                 $objectUser->setAdres_stad($data['city']);
  200.                 $objectUser->save();
  201.                 // Reset session
  202.                 $session $request->getSession()->set('userLogged'$objectUser);
  203.             }
  204.         }
  205.     }
  206.     protected function _mailchimpForm(Request $request$formName$recaptcha NULL$emailTemplate NULL$emailTemplateConfirm NULL)
  207.     {
  208.         $success false;
  209.         // initialize form and handle request data
  210.         if($formName){
  211.             $form $this->createForm($formName);
  212.             $form->handleRequest($request);
  213.         }
  214.         // handle form
  215.         if ($form->isSubmitted()) {
  216.             if ($form->isValid()) {
  217.                 $params $request->request->all();
  218.                 $message "Bedankt voor uw bericht. We nemen zo snel mogelijk contact met u op!";
  219.                 // register to mailchimp
  220.                 // Save userObject
  221.                 // Reset session
  222.                 if($recaptcha){
  223.                     if($this->recaptcha->captchaverify($params)){
  224.                         $success true;
  225.                         $data $form->getData();
  226.                         $this->_saveToMailchimp($request$data);
  227.                         $this->sendmail->_sendMailDefaultForm($data"$emailTemplate""$emailTemplateConfirm""$message");
  228.                     }else{
  229.                         $message "Captcha code is niet correct!";
  230.                         $this->addFlash("warning"$message);
  231.                     }
  232.                 }else{
  233.                     $success true;
  234.                     $data $form->getData();
  235.                     $this->_saveToMailchimp($request$data);
  236.                     $this->sendmail->_sendMailDefaultForm($data"$emailTemplate""$emailTemplateConfirm""$message");
  237.                 }
  238.             }
  239.         }
  240.         return $this->render('contact/mailchimp.html.twig', [
  241.             'form' => $form->createView(),
  242.             'recaptcha' => $this->recaptchaVersion,
  243.             'recaptchaPublic' => $this->recaptchaPublicKey,
  244.             'success' => $success,
  245.             'userObject' => $this->userdata->getUserData($request)
  246. //            'error' => $error,
  247. //            'hideBreadcrumbs' => true
  248.         ]);
  249.     }
  250.     protected function _saveToMailchimp($request$data)
  251.     {
  252.         $session $request->getSession();
  253.         $data['marketing'] = [
  254.             $data['reqone'],
  255.             $data['reqtwo']
  256.         ];
  257.         $resultSend $this->mailChimp->sendToMailChimp($data);
  258.         if($resultSend){
  259.             $message "MailChimp: Bedankt voor uw bericht. Je bent ingeschreven!";
  260.             $message $this->translator->trans($message);
  261.             $session->getFlashBag()->add('success'$message);
  262.         }
  263.         /** @var \Pimcore\Model\DataObject\UserPortal $objectUser */
  264.         // if User is logged in
  265.         // Check if user is already logged in
  266.         if($session->get('userLogged')) {
  267.             // Save userObject klantenkaart
  268.             $userObj $session->get('userLogged');
  269.             if (!empty($userObj)) {
  270.                 $userId $userObj->getId();
  271.                 $objectUser DataObject\UserPortal::getById($userId);
  272.                 $objectUser->setNaam($data['lastname']);
  273.                 $objectUser->setVoornaam($data['firstname']);
  274.                 $objectUser->setNewsletter(true);
  275.                 $objectUser->save();
  276.                 // Reset session
  277.                 $session $request->getSession()->set('userLogged'$objectUser);
  278.             }
  279.         }
  280.     }
  281.     protected function _cadeaubonForm(Request $request$formName$recaptcha NULL$emailTemplate NULL$emailTemplateConfirm NULL)
  282.     {
  283.         $success false;
  284.         // initialize form and handle request data
  285.         if($formName){
  286.             $form $this->createForm($formName);
  287.             $form->handleRequest($request);
  288.         }
  289.         // handle form
  290.         if ($form->isSubmitted()) {
  291.             if ($form->isValid()) {
  292.                 $params $request->request->all();
  293.                 if($params['cadeaubon_form']['amount'] > 0){
  294.                     $message "Bedankt voor uw bericht. We maken een cadeaubon op.";
  295.                     // register to mailchimp
  296.                     // Save userObject
  297.                     // Reset session
  298.                     if($recaptcha){
  299.                         if($this->recaptcha->captchaverify($params)){
  300.                             $success true;
  301.                             $data $form->getData();
  302.                             $paymentLink $this->_sendToMollie($request$data);
  303.                             header("Location: " $paymentLinktrue303);
  304.                             die();
  305. //                            $this->sendmail->_sendMailDefaultForm($data, "$emailTemplate", "$emailTemplateConfirm", "$message");
  306.                         }else{
  307.                             $message "Captcha code is niet correct!";
  308.                             $this->addFlash("warning"$message);
  309.                         }
  310.                     }else{
  311.                         $success true;
  312.                         $data $form->getData();
  313.                         $paymentLink $this->_sendToMollie($request$data);
  314.                         header("Location: " $paymentLinktrue303);
  315.                         die();
  316. //                        $this->sendmail->_sendMailDefaultForm($data, "$emailTemplate", "$emailTemplateConfirm", "$message");
  317.                     }
  318.                 }else{
  319.                     $message "Bedrag van cadeaubon is te laag!";
  320.                     $this->addFlash("warning"$message);
  321.                 }
  322.             }
  323.         }
  324.         return $this->render('contact/cadeaubon.html.twig', [
  325.             'form' => $form->createView(),
  326.             'recaptcha' => $this->recaptchaVersion,
  327.             'recaptchaPublic' => $this->recaptchaPublicKey,
  328.             'success' => $success,
  329.             'userObject' => $this->userdata->getUserData($request)
  330. //            'error' => $error,
  331. //            'hideBreadcrumbs' => true
  332.         ]);
  333.     }
  334.     protected function _sendToMollie($request$data)
  335.     {
  336.         // Create payment Object
  337.         $paymentObject $this->mollie->createPaymentForCadeaubon($data);
  338.         // Send to Mollie to pay
  339.         $paymentLink $this->mollie->sendPayment($request$paymentObject);
  340.         return $paymentLink;
  341.         // Return if it has been payed
  342.     }
  343. }