src/Controller/DefaultController.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\KontactForm;
  4. use App\Service\EmailService;
  5. use Maris\CmsBundle\Helper\PostMetaHelper;
  6. use Maris\CmsBundle\Repository\ModuleRepository;
  7. use Maris\CmsBundle\Repository\PostMetaRepository;
  8. use Maris\CmsBundle\Repository\PostRepository;
  9. use Maris\CmsBundle\Service\FileService;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class DefaultController extends AbstractController
  15. {
  16.     private $pageHeaders;
  17.     public function __construct(
  18.         private PostRepository                  $post,
  19.         private PostMetaRepository              $postMeta,
  20.         private PostMetaHelper                  $postMetaHelper,
  21.         private FileService                     $fileService,
  22.         private ModuleRepository                $module,
  23.         private EmailService                    $emailService
  24.     )
  25.     {
  26.         $this->post $post;
  27.         $this->postMeta $postMeta;
  28.         $this->postMetaHelper $postMetaHelper;
  29.         $this->fileService $fileService;
  30.         $this->module $module;
  31.         $pagehead = array('pagetitle' => '','description' => '','keywords' =>'');
  32.         $ph $this->postMeta->findBy(['post'=>'1']);
  33.         foreach ($ph as $p$pagehead[$p->getFieldName()] = $p->getContent();
  34.         $banerPhoto $this -> fileService -> getFileByPostIdAndFieldName('1''banerPicture');
  35.         $pagehead['banerPicture'] = current($banerPhoto);
  36.         $this->pageHeaders $pagehead;
  37.     }
  38.     #[Route('/'name'index')]
  39.     public function index(Request $request)
  40.     {
  41.         $trescModule $this -> module -> find(['id' => '2']);
  42.         $pageElements $this -> post -> findBy(['module' => $trescModule'status' => 'A'],['position' => 'ASC']);
  43.         $ret = array();
  44.         foreach ($pageElements as $pe) {
  45.             $tmp['post'] = $pe;
  46.             $tmp['meta'] = $this -> postMetaHelper -> parsePost($pe);
  47.             $mp $this -> fileService -> getFileByPostAndFieldName($tmp['post'], 'mainPhoto'true);
  48.             $tmp['meta']['mainPhoto'] = !empty($tmp) ? current($mp) : '';
  49.             $tmp['components'] = '';
  50.             switch ($tmp['meta']['viewType']) {
  51.                 case 'Treść lewa strona':
  52.                     $tmp['twig'] = 'partial/contentLeft.html.twig';
  53.                     break;
  54.                 case 'Treść prawa strona':
  55.                     $tmp['twig'] = 'partial/contentRight.html.twig';
  56.                     break;
  57.                 case 'Usługi':
  58.                     $tmp['twig'] = 'partial/services.html.twig';
  59.                     $tmp['components'] = $this->getServices();
  60.                     break;
  61.                 case 'Galeria':
  62.                     $tmp['twig'] = 'partial/galery.html.twig';
  63.                     break;
  64.                 case 'Opinie Klientów':
  65.                     $tmp['twig'] = 'partial/customersReviews.html.twig';
  66.                     $tmp['components'] = $this->getCustomersReviews();
  67.                     break;
  68.                 case 'Formularz Kontaktowy':
  69.                     $tmp['twig'] = 'partial/contactForm.html.twig';
  70.                     break;
  71.                 case 'Treść':
  72.                     $tmp['twig'] = 'partial/defaultContent.html.twig';
  73.                     break;
  74.                 default:
  75.                     $tmp['twig'] = 'partial/defaultContent.html.twig';
  76.             }
  77.             $ret[] = $tmp;
  78.             unset($tmp);
  79.         }
  80.         //formularz
  81.         $form $this -> createForm(KontactForm::class, null, [
  82.             'csrf_protection' => true,
  83.         ]);
  84.         $form->handleRequest($request);
  85.         if ($form->isSubmitted() && $form->isValid()) {
  86.             $formData $form->getData();
  87.             $this -> emailService->sendThankYouFormEmail($formData);
  88.             $this -> emailService->sendContactFormEmail($formData'biuro@drzewoekspert.pl');
  89.             if (!empty($form->get('website')->getData())) {
  90.                 throw new \Exception('Spam wykryty');
  91.             }
  92.             return $this->redirectToRoute('confirmSendMail');
  93.         }
  94.         return $this->render('site/index.html.twig',[
  95.             'pageElements' => $ret,
  96.             'pageheader'=>$this->pageHeaders,
  97.             'form' => $form->createView(),
  98.             'menuBottom' => $pageElements
  99.         ]);
  100.     }
  101.     #[Route('/MailSend'name'confirmSendMail')]
  102.     public function confirmSendMail()
  103.     {
  104.         return $this->render('site/confirmSendMail.html.twig',[
  105.             'pageheader'=>$this->pageHeaders
  106.         ]);
  107.     }
  108.     private function getServices(): array
  109.     {
  110.         $servicesModule $this->module->find(['id' => '3']);
  111.         $elem $this -> post -> findBy(['module' => $servicesModule'status' => 'A'],['position' => 'ASC']);
  112.         $ret = array();
  113.         foreach($elem as $e) {
  114.             $tmp['post'] = $e;
  115.             $tmp['meta'] = $this -> postMetaHelper -> parsePost($e);
  116.             $mp $this -> fileService -> getFileByPostAndFieldName($tmp['post'], 'mainPhoto'true);
  117.             $tmp['meta']['mainPhoto'] = !empty($tmp) ? current($mp) : '';
  118.             $ret[]= $tmp;
  119.             unset($tmp);
  120.         }
  121.         return $ret;
  122.     }
  123.     private function getCustomersReviews(): array
  124.     {
  125.         $customersModule $this->module->find(['id' => '4']);
  126.         $elem $this -> post -> findBy(['module' => $customersModule'status' => 'A'],['position' => 'ASC']);
  127.         $ret = array();
  128.         foreach($elem as $e) {
  129.             $tmp['post'] = $e;
  130.             $tmp['meta'] = $this -> postMetaHelper -> parsePost($e);
  131.             $ret[]= $tmp;
  132.             unset($tmp);
  133.         }
  134.         return $ret;
  135.     }
  136. }