src/Controller/DefaultController.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\ContactFormType;
  4. use App\Form\OrderFormType;
  5. use Exception;
  6. use Pimcore\Controller\FrontendController;
  7. use Pimcore\Log\ApplicationLogger;
  8. use Pimcore\Mail;
  9. use Pimcore\Model\DataObject;
  10. use Pimcore\Model\DataObject\ContactRequest;
  11. use Pimcore\Model\WebsiteSetting;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Contracts\Translation\TranslatorInterface;
  16. class DefaultController extends FrontendController
  17. {
  18.     /**
  19.      * @param Request $request
  20.      * @return Response
  21.      */
  22.     public function defaultAction(Request $request): Response
  23.     {
  24.         return $this->render('default/default.html.twig');
  25.     }
  26.     /**
  27.      * @Template
  28.      * @param Request $request
  29.      * @param ApplicationLogger $logger
  30.      * @param TranslatorInterface $translator
  31.      * @return Response
  32.      * @throws Exception
  33.      */
  34.     public function contentAction(Request $requestApplicationLogger $loggerTranslatorInterface $translator): Response
  35.     {
  36.         $device \Pimcore\Tool\DeviceDetector::getInstance();
  37.         $device->getDevice(); // returns "phone", "tablet" or "desktop"
  38.         $searchCX $_ENV['GOOGLE_SEARCH_CX'];
  39.         $contactForm $this->contactForm($request$logger$translator);
  40.         $success false;
  41.         if ($contactForm == 'submitted') {
  42.             $success true;
  43.         }
  44.         $orderForm $this->orderForm($request$logger$translator);
  45.         $success2 false;
  46.         if ($orderForm == 'submitted') {
  47.             $success2 true;
  48.         }
  49.         return $this->render('default/content.html.twig', [
  50.             'isDesktop'   => $device->isDesktop(),
  51.             'isTablet'    => $device->isTablet(),
  52.             'isPhone'     => $device->isPhone(),
  53.             'deviceType'  => $device->getDevice(),
  54.             'searchCX'    => $searchCX,
  55.             'contactForm' => $contactForm,
  56.             'orderForm'   => $orderForm,
  57.             'success'     => $success,
  58.             'success2'    => $success2,
  59.         ]);
  60.     }
  61.     /**
  62.      * @throws Exception
  63.      */
  64.     public function contactForm(Request $requestApplicationLogger $loggerTranslatorInterface $translator): \Symfony\Component\Form\FormView|string
  65.     {
  66.         // build form
  67.         $form $this->createForm(ContactFormType::class);
  68.         // get form request
  69.         $form->handleRequest($request);
  70.         // set parameter for folder
  71.         $today date("d_m_Y_H_i_s");
  72.         $month date('m');
  73.         $year date('Y');
  74.         // create Folder
  75.         $parentFolder DataObject\Service::createFolderByPath('/Kontaktanfragen/' $year "/" $month);
  76.         if ($form->isSubmitted() && $form->isValid()) {
  77.             // get form fields
  78.             $data $form->getData();
  79.             // spam
  80.             if ($data['hidden'] !== NULL || $data['filled'] !== 'jsfilled') {
  81.                 $logger->debug('Contact mail spam');
  82.             } else {
  83.                 $params = [
  84.                     'headtitle' => $translator->trans('email.contact.headtitle'),
  85.                     'preheader' => $translator->trans('email.contact.preheader'),
  86.                     'name' => $data['name'],
  87.                     'lastname' => $data['lastname'],
  88.                     /*'company' => $data['company'],*/
  89.                     'email'   => $data['email'],
  90.                     'tel'     => $data['tel'],
  91.                     'products'     => nl2br($data['products']),
  92.                     'contactMethod'     => $data['contactMethod'],
  93.                     'newsletter'     => $data['newsletter'],
  94.                     'message' => nl2br($data['message'])
  95.                 ];
  96.                 $contactRequest = new ContactRequest();
  97.                 $contactRequest->setParent($parentFolder);
  98.                 $contactRequest->setKey($data['name'] . '-' $data['lastname'] . '_' $today);
  99.                 $contactRequest->setName($data['name']);
  100.                 $contactRequest->setLastname($data['lastname']);
  101.                 $contactRequest->setEmail($data['email']);
  102.                 $contactRequest->setTel($data['tel']);
  103.                 $contactRequest->setProducts($data['products']);
  104.                 $contactRequest->setContactMethod($data['contactMethod']);
  105.                 $contactRequest->setNewsletter($data['newsletter']);
  106.                 $contactRequest->setMessage($data['message']);
  107.                 $contactRequest->setPublished(true);
  108.                 $contactRequest->save();
  109.                 // send mail
  110.                 try {
  111.                     // $pageName = WebsiteSetting::getByName('pageName', null, $request->getLocale());
  112.                     // send E-Mail to website Admin
  113.                     // $adminEmail = "info@swiss-hexagon.ch";
  114.                     // get params from WebsiteConfig
  115.                     $mailDocPathAdmin    WebsiteSetting::getByName('mailContactAdmin'null$request->getLocale());
  116.                     $mailDocPathCustomer WebsiteSetting::getByName('mailContactClient'null$request->getLocale());
  117.                     $mailDocAdmin    $mailDocPathAdmin->getData();
  118.                     $mailDocCustomer $mailDocPathCustomer->getData();
  119.                     // send E-Mail to Admin
  120.                     $mailAdmin = new Mail();
  121.                     // $mailAdmin->setIgnoreDebugMode(true);
  122.                     $mailAdmin->addReplyTo($data['email'], $data['name'] . " " $data['lastname']);
  123.                     $mailAdmin->setDocument($mailDocAdmin);
  124.                     $mailAdmin->setParams($params);
  125.                     $mailAdmin->send();
  126.                     // send E-Mail to Customer / User
  127.                     $mailCustomer = new \Pimcore\Mail();
  128.                     $mailCustomer->setIgnoreDebugMode(true);
  129.                     $mailCustomer->to($data['email']);
  130.                     // $mailCustomer->addReplyTo($adminEmail, $pageName->getData());
  131.                     $mailCustomer->setDocument($mailDocCustomer);
  132.                     $mailCustomer->setParams($params);
  133.                     $mailCustomer->send();
  134.                 } catch (Exception $e) {
  135.                     $logger->debug('Contact mail failed: ' $e);
  136.                 }
  137.             } return 'submitted';
  138.         } else {
  139.             return $form->createView();
  140.         }
  141.     }
  142.     public function orderForm(Request $requestApplicationLogger $loggerTranslatorInterface $translator): \Symfony\Component\Form\FormView|string
  143.     {
  144.         // build form
  145.         $form $this->createForm(OrderFormType::class);
  146.         // get form request
  147.         $form->handleRequest($request);
  148.         // set parameter for folder
  149.         $today date("d_m_Y_H_i_s");
  150.         $month date('m');
  151.         $year date('Y');
  152.         // create Folder
  153.         $parentFolder DataObject\Service::createFolderByPath('/Bestellanfragen/' $year "/" $month);
  154.         if ($form->isSubmitted() && $form->isValid()) {
  155.             // get form fields
  156.             $data $form->getData();
  157.             // spam
  158.             if ($data['hidden'] !== NULL || $data['filled'] !== 'jsfilled') {
  159.                 $logger->debug('Order mail spam');
  160.             } else {
  161.                 $params = [
  162.                     'headtitle' => $translator->trans('email.order.headtitle'),
  163.                     'preheader' => $translator->trans('email.order.preheader'),
  164.                     'name' => $data['name'],
  165.                     'lastname' => $data['lastname'],
  166.                     'email'   => $data['email'],
  167.                     'tel'     => $data['tel'],
  168.                     'street'     => $data['street'],
  169.                     'streetnr'     => $data['streetnr'],
  170.                     'postal'     => $data['postal'],
  171.                     'city'     => $data['city'],
  172.                     'street2'     => $data['street2'],
  173.                     'streetnr2'     => $data['streetnr2'],
  174.                     'postal2'     => $data['postal2'],
  175.                     'city2'     => $data['city2'],
  176.                     'product'     => $data['product'],
  177.                     
  178.                     'termsconditions'     => $data['termsconditions'],
  179.                     'privacypolicy'     => $data['privacypolicy'],
  180.                     'newsletter'     => $data['newsletter'],
  181.                     'message' => nl2br($data['message'])
  182.                 ];
  183.                 $contactRequest = new ContactRequest();
  184.                 $contactRequest->setParent($parentFolder);
  185.                 $contactRequest->setKey($data['name'] . '_' $today);
  186.                 $contactRequest->setName($data['name']);
  187.                 $contactRequest->setLastname($data['lastname']);
  188.                 $contactRequest->setEmail($data['email']);
  189.                 $contactRequest->setTel($data['tel']);
  190.                 $contactRequest->setStreet($data['street']);
  191.                 $contactRequest->setStreetnr($data['streetnr']);
  192.                 $contactRequest->setPostal($data['postal']);
  193.                 $contactRequest->setCity($data['city']);
  194.                 $contactRequest->setStreet2($data['street2']);
  195.                 $contactRequest->setStreetnr2($data['streetnr2']);
  196.                 $contactRequest->setPostal2($data['postal2']);
  197.                 $contactRequest->setCity2($data['city2']);
  198.                 
  199.                 $contactRequest->setProduct($data['product']);
  200.                 $contactRequest->setTermsConditions($data['termsconditions']);
  201.                 $contactRequest->setPrivacyPolicy($data['privacypolicy']);
  202.                 $contactRequest->setNewsletter($data['newsletter']);
  203.                 $contactRequest->setMessage($data['Message']);
  204.                 $contactRequest->setPublished(true);
  205.                 $contactRequest->save();
  206.                 // send mail
  207.                 try {
  208.                     $pageName WebsiteSetting::getByName('pageName'null$request->getLocale());
  209.                     // send E-Mail to website Admin
  210.                     $adminEmail "info@swiss-hexagon.ch";
  211.                     if (WebsiteSetting::getByName('ContactFormAdminMail')) {
  212.                         $adminEmail WebsiteSetting::getByName('ContactFormAdminMail',null$request->getLocale());
  213.                     }
  214.                     // get params from WebsiteConfig
  215.                     $mailDocPathAdmin    WebsiteSetting::getByName('mailContactDocAdmin'null$request->getLocale());
  216.                     $mailDocPathCustomer WebsiteSetting::getByName('mailContactDocCustomer'null$request->getLocale());
  217.                     $mailDocAdmin    $mailDocPathAdmin->getData();
  218.                     $mailDocCustomer $mailDocPathCustomer->getData();
  219.                     // send E-Mail to Admin
  220.                     $mailAdmin = new Mail();
  221.                     $mailAdmin->setIgnoreDebugMode(true);
  222.                     $mailAdmin->to($adminEmail);
  223.                     $mailAdmin->addReplyTo($data['email'], $data['name'] . " " $data['lastname']);
  224.                     $mailAdmin->setDocument($mailDocAdmin);
  225.                     $mailAdmin->setParams($params);
  226.                     $mailAdmin->send();
  227.                     // send E-Mail to Customer / User
  228.                     $mailCustomer = new \Pimcore\Mail();
  229.                     $mailCustomer->setIgnoreDebugMode(true);
  230.                     $mailCustomer->to($data['email']);
  231.                     $mailCustomer->addReplyTo($adminEmail$pageName->getData());
  232.                     $mailCustomer->setDocument($mailDocCustomer);
  233.                     $mailCustomer->setParams($params);
  234.                     $mailCustomer->send();
  235.                 } catch (Exception $e) {
  236.                     $logger->debug('Contact mail failed: ' $e);
  237.                 }
  238.             } return 'submitted';
  239.         } else {
  240.             return $form->createView();
  241.         }
  242.     }
  243. }