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 $request, ApplicationLogger $logger, TranslatorInterface $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 $request, ApplicationLogger $logger, TranslatorInterface $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 $request, ApplicationLogger $logger, TranslatorInterface $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. 'termsconditions' => $data['termsconditions'],
  178. 'privacypolicy' => $data['privacypolicy'],
  179. 'newsletter' => $data['newsletter'],
  180. 'message' => nl2br($data['message'])
  181. ];
  182. $contactRequest = new ContactRequest();
  183. $contactRequest->setParent($parentFolder);
  184. $contactRequest->setKey($data['name'] . '_' . $today);
  185. $contactRequest->setName($data['name']);
  186. $contactRequest->setLastname($data['lastname']);
  187. $contactRequest->setEmail($data['email']);
  188. $contactRequest->setTel($data['tel']);
  189. $contactRequest->setStreet($data['street']);
  190. $contactRequest->setStreetnr($data['streetnr']);
  191. $contactRequest->setPostal($data['postal']);
  192. $contactRequest->setCity($data['city']);
  193. $contactRequest->setStreet2($data['street2']);
  194. $contactRequest->setStreetnr2($data['streetnr2']);
  195. $contactRequest->setPostal2($data['postal2']);
  196. $contactRequest->setCity2($data['city2']);
  197. $contactRequest->setProduct($data['product']);
  198. $contactRequest->setTermsConditions($data['termsconditions']);
  199. $contactRequest->setPrivacyPolicy($data['privacypolicy']);
  200. $contactRequest->setNewsletter($data['newsletter']);
  201. $contactRequest->setMessage($data['Message']);
  202. $contactRequest->setPublished(true);
  203. $contactRequest->save();
  204. // send mail
  205. try {
  206. $pageName = WebsiteSetting::getByName('pageName', null, $request->getLocale());
  207. // send E-Mail to website Admin
  208. $adminEmail = "info@swiss-hexagon.ch";
  209. if (WebsiteSetting::getByName('ContactFormAdminMail')) {
  210. $adminEmail = WebsiteSetting::getByName('ContactFormAdminMail',null, $request->getLocale());
  211. }
  212. // get params from WebsiteConfig
  213. $mailDocPathAdmin = WebsiteSetting::getByName('mailContactDocAdmin', null, $request->getLocale());
  214. $mailDocPathCustomer = WebsiteSetting::getByName('mailContactDocCustomer', null, $request->getLocale());
  215. $mailDocAdmin = $mailDocPathAdmin->getData();
  216. $mailDocCustomer = $mailDocPathCustomer->getData();
  217. // send E-Mail to Admin
  218. $mailAdmin = new Mail();
  219. $mailAdmin->setIgnoreDebugMode(true);
  220. $mailAdmin->to($adminEmail);
  221. $mailAdmin->addReplyTo($data['email'], $data['name'] . " " . $data['lastname']);
  222. $mailAdmin->setDocument($mailDocAdmin);
  223. $mailAdmin->setParams($params);
  224. $mailAdmin->send();
  225. // send E-Mail to Customer / User
  226. $mailCustomer = new \Pimcore\Mail();
  227. $mailCustomer->setIgnoreDebugMode(true);
  228. $mailCustomer->to($data['email']);
  229. $mailCustomer->addReplyTo($adminEmail, $pageName->getData());
  230. $mailCustomer->setDocument($mailDocCustomer);
  231. $mailCustomer->setParams($params);
  232. $mailCustomer->send();
  233. } catch (Exception $e) {
  234. $logger->debug('Contact mail failed: ' . $e);
  235. }
  236. } return 'submitted';
  237. } else {
  238. return $form->createView();
  239. }
  240. }
  241. }