src/Controller/Website/InstitutionalController.php line 204

Open in your IDE?
  1. <?php
  2. namespace EADPlataforma\Controller\Website;
  3. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use EADPlataforma\Entity\Page;
  7. use EADPlataforma\Entity\Course;
  8. use EADPlataforma\Entity\User;
  9. use EADPlataforma\Enum\PageEnum;
  10. use EADPlataforma\Enum\UserEnum;
  11. use EADPlataforma\Enum\CourseEnum;
  12. use EADPlataforma\Enum\ErrorEnum;
  13. /**
  14.  * @Route(
  15.  *      schemes         = {"http|https"}
  16.  * )
  17.  * @Cache(
  18.  *      maxage          = "0",
  19.  *      smaxage         = "0",
  20.  *      expires         = "now",
  21.  *      public          = false
  22.  * )
  23.  */
  24. class InstitutionalController extends AbstractWebsiteController {
  25.     /**
  26.      * @Route(
  27.      *      path          = "/page/{slug}",
  28.      *      name          = "pageDetail",
  29.      *      methods       = {"GET"}
  30.      * )
  31.      * @Route(
  32.      *      path          = "/pagina/{slug}",
  33.      *      name          = "pageDetailOld",
  34.      *      methods       = {"GET"}
  35.      * )
  36.      */
  37.     public function getPageBySlug(Request $request) {
  38.         if(!$this->configuration->isModuleActive("pages_module")){
  39.             return $this->redirectToRoute('notFound');
  40.         }
  41.         $pageRepository $this->em->getRepository(Page::class);
  42.         $page $pageRepository->findOneBy([ 
  43.             "slug" => $request->get('slug'),
  44.             "deleted" => PageEnum::ITEM_NO_DELETED
  45.         ]);
  46.         if(!$page){
  47.             return $this->redirectToRoute('notFound');
  48.         }
  49.         $this->data['pageTitle'] = $page->getTitle();
  50.         $this->data['pageContent'] = htmlspecialchars_decode($page->getContent(), ENT_QUOTES);
  51.         
  52.         return $this->renderEAD('institutional/institutional.html.twig');
  53.     }
  54.     /**
  55.      * @Route(
  56.      *      path          = "/about",
  57.      *      name          = "about",
  58.      *      methods       = {"GET"}
  59.      * )
  60.      * @Route(
  61.      *      path          = "/sobre",
  62.      *      name          = "aboutOld",
  63.      *      methods       = {"GET"}
  64.      * )
  65.      */
  66.     public function aboutPage(Request $request) {
  67.         return $this->renderEAD('institutional/about.html.twig');
  68.     }
  69.     /**
  70.      * @Route(
  71.      *      path          = "/contact",
  72.      *      name          = "contact",
  73.      *      methods       = {"GET"}
  74.      * )
  75.      * @Route(
  76.      *      path          = "/contato",
  77.      *      name          = "contactOld",
  78.      *      methods       = {"GET"}
  79.      * )
  80.      */
  81.     public function contactPage(Request $request) {
  82.         if(empty($this->client->getEmail())){
  83.             return $this->redirectToRoute('notFound');
  84.         }
  85.         $this->data['formName'] = "formContact";
  86.         $this->data['keyCaptcha'] = $this->createCaptchaKey($request);
  87.         return $this->renderEAD('institutional/contact.html.twig');
  88.     }
  89.     /**
  90.      * @Route(
  91.      *      path          = "/contact/send",
  92.       *      name          = "contactPost",
  93.      *      methods       = {"POST"}
  94.      * )
  95.      */
  96.     public function contactPost(Request $request) {
  97.         $isValid $this->isValidCaptcha($request);
  98.         if(!$isValid){
  99.             return $this->eadResponse([], ErrorEnum::CAPTCHA_INVALID);
  100.         }
  101.         $this->requestUtil->setRequest($request)->setData();
  102.         if(empty($this->client->getEmail())){
  103.             return $this->eadResponse([], ErrorEnum::ACTION_INVALID);
  104.         }
  105.         $name trim((string)$this->requestUtil->getField('name'));
  106.         $email trim((string)$this->requestUtil->getField('email'));
  107.         $subject trim((string)$this->requestUtil->getField('subject'));
  108.         $message trim((string)$this->requestUtil->getField('message'));
  109.         $fieldEmpty = [];
  110.         if(empty($name)){
  111.             $fieldEmpty[] = "name";
  112.         }
  113.         if(empty($email) || !filter_var($emailFILTER_VALIDATE_EMAIL)){
  114.             $fieldEmpty[] = "email";
  115.         }
  116.         if(empty($subject)){
  117.             $fieldEmpty[] = "subject";
  118.         }
  119.         if(empty($message)){
  120.             $fieldEmpty[] = "message";
  121.         }
  122.         if(!empty($fieldEmpty)){
  123.             return $this->eadResponse($fieldEmptyErrorEnum::FIELD_EMPTY);
  124.         }
  125.         $emailService $this->generalService->getService('EmailService');
  126.         $emailService->setFromName($name);
  127.         $emailService->setReplyEmail($email);
  128.         $emailService->setReplyName($name);
  129.         $emailService->setToEmail($this->client->getEmail());
  130.         $emailService->setToName($this->client->getBrand());
  131.         $emailService->setSubject($subject);
  132.         $emailService->setData([
  133.             "userName" => $name,
  134.             "email"    => $email,
  135.             "message" => $message,
  136.         ]);
  137.         $emailService->setTemplateBody("contact");
  138.         $emailService->send();
  139.         $pixelService $this->generalService->getService('Marketing\\PixelService');
  140.         $pixelService->sendConversion('Contact');
  141.         return $this->eadResponse([ "message" => "E-mail send" ]);
  142.     }
  143.     /**
  144.      * @Route(
  145.      *      path          = "/teachers",
  146.      *      name          = "teachers",
  147.      *      methods       = {"GET"}
  148.      * )
  149.      * @Route(
  150.      *      path          = "/professores",
  151.      *      name          = "teachersOld",
  152.      *      methods       = {"GET"}
  153.      * )
  154.      */
  155.     public function teachersPage(Request $request) {
  156.         $this->data['teachers'] = $this->em->getRepository(User::class)->getUserTeacherSpotlight();
  157.         
  158.         return $this->renderEAD('teacher/teachers.html.twig');
  159.     }
  160.     /**
  161.      * @Route(
  162.      *      path          = "/teacher/{username}",
  163.      *      name          = "teacherProfile",
  164.      *      methods       = {"GET"}
  165.      * )
  166.      * @Route(
  167.      *      path          = "/professor/{username}",
  168.      *      name          = "teacherProfileOld",
  169.      *      methods       = {"GET"}
  170.      * )
  171.      */
  172.     public function teacherProfilePage(Request $request) {
  173.         $username $request->get('username');
  174.         $userTeacher $this->em->getRepository(User::class)->findOneBy([
  175.             "username" => $username,
  176.             "status" => UserEnum::ACTIVE,
  177.             "deleted" => UserEnum::ITEM_NO_DELETED,
  178.         ]);
  179.         if(!$userTeacher){
  180.             return $this->redirectToRoute('notFound');
  181.         }
  182.         
  183.         if($userTeacher->getId() == || $userTeacher->getType() == UserEnum::STUDENT){
  184.             return $this->redirectToRoute('notFound');
  185.         }
  186.         $this->data['userTeacher'] = $userTeacher;
  187.         return $this->renderEAD('teacher/teacher-profile.html.twig');
  188.     }
  189.     /**
  190.      * @Route(
  191.      *      path          = "/partner",
  192.      *      name          = "partner",
  193.      *      methods       = {"GET"}
  194.      * )
  195.      */
  196.     public function partnerPage(Request $request) {
  197.         
  198.         return $this->renderEAD('institutional/teacher-profile.html.twig');
  199.     }
  200.     /**
  201.      * @Route(
  202.      *      path          = "/terms",
  203.      *      name          = "terms",
  204.      *      methods       = {"GET"}
  205.      * )
  206.      * @Route(
  207.      *      path          = "/termos",
  208.      *      name          = "termsOld",
  209.      *      methods       = {"GET"}
  210.      * )
  211.      */
  212.     public function termsPage(Request $request) {        
  213.         $this->data['pageTitle'] = 'Termos de Uso';
  214.         $this->data['pageContent'] = htmlspecialchars_decode($this->configuration->get('contract'), ENT_QUOTES);
  215.         return $this->renderEAD('institutional/terms-privacy.html.twig');
  216.     }
  217.     /**
  218.      * @Route(
  219.      *      path          = "/privacy",
  220.      *      name          = "privacy",
  221.      *      methods       = {"GET"}
  222.      * )
  223.      * @Route(
  224.      *      path          = "/privacidade",
  225.      *      name          = "privacyOld",
  226.      *      methods       = {"GET"}
  227.      * )
  228.      */
  229.     public function privacyPage(Request $request) {
  230.         $this->data['pageTitle'] = 'Privacidade';
  231.         $this->data['pageContent'] = htmlspecialchars_decode($this->configuration->get('privacy_policy'), ENT_QUOTES);
  232.         return $this->renderEAD('institutional/terms-privacy.html.twig');
  233.     }
  234. }