src/Controller/DefaultController.php line 39

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