<?php
namespace EADPlataforma\Controller\Website;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use EADPlataforma\Entity\Page;
use EADPlataforma\Entity\Course;
use EADPlataforma\Entity\User;
use EADPlataforma\Enum\PageEnum;
use EADPlataforma\Enum\UserEnum;
use EADPlataforma\Enum\CourseEnum;
use EADPlataforma\Enum\ErrorEnum;
/**
* @Route(
* schemes = {"http|https"}
* )
* @Cache(
* maxage = "0",
* smaxage = "0",
* expires = "now",
* public = false
* )
*/
class InstitutionalController extends AbstractWebsiteController {
/**
* @Route(
* path = "/page/{slug}",
* name = "pageDetail",
* methods = {"GET"}
* )
* @Route(
* path = "/pagina/{slug}",
* name = "pageDetailOld",
* methods = {"GET"}
* )
*/
public function getPageBySlug(Request $request) {
if(!$this->configuration->isModuleActive("pages_module")){
return $this->redirectToRoute('notFound');
}
$pageRepository = $this->em->getRepository(Page::class);
$page = $pageRepository->findOneBy([
"slug" => $request->get('slug'),
"deleted" => PageEnum::ITEM_NO_DELETED
]);
if(!$page){
return $this->redirectToRoute('notFound');
}
$this->data['pageTitle'] = $page->getTitle();
$this->data['pageContent'] = htmlspecialchars_decode($page->getContent(), ENT_QUOTES);
return $this->renderEAD('institutional/institutional.html.twig');
}
/**
* @Route(
* path = "/about",
* name = "about",
* methods = {"GET"}
* )
* @Route(
* path = "/sobre",
* name = "aboutOld",
* methods = {"GET"}
* )
*/
public function aboutPage(Request $request) {
return $this->renderEAD('institutional/about.html.twig');
}
/**
* @Route(
* path = "/contact",
* name = "contact",
* methods = {"GET"}
* )
* @Route(
* path = "/contato",
* name = "contactOld",
* methods = {"GET"}
* )
*/
public function contactPage(Request $request) {
if(empty($this->client->getEmail())){
return $this->redirectToRoute('notFound');
}
$this->data['formName'] = "formContact";
$this->data['keyCaptcha'] = $this->createCaptchaKey($request);
return $this->renderEAD('institutional/contact.html.twig');
}
/**
* @Route(
* path = "/contact/send",
* name = "contactPost",
* methods = {"POST"}
* )
*/
public function contactPost(Request $request) {
$isValid = $this->isValidCaptcha($request);
if(!$isValid){
return $this->eadResponse([], ErrorEnum::CAPTCHA_INVALID);
}
$this->requestUtil->setRequest($request)->setData();
if(empty($this->client->getEmail())){
return $this->eadResponse([], ErrorEnum::ACTION_INVALID);
}
$name = trim((string)$this->requestUtil->getField('name'));
$email = trim((string)$this->requestUtil->getField('email'));
$subject = trim((string)$this->requestUtil->getField('subject'));
$message = trim((string)$this->requestUtil->getField('message'));
$fieldEmpty = [];
if(empty($name)){
$fieldEmpty[] = "name";
}
if(empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)){
$fieldEmpty[] = "email";
}
if(empty($subject)){
$fieldEmpty[] = "subject";
}
if(empty($message)){
$fieldEmpty[] = "message";
}
if(!empty($fieldEmpty)){
return $this->eadResponse($fieldEmpty, ErrorEnum::FIELD_EMPTY);
}
$emailService = $this->generalService->getService('EmailService');
$emailService->setFromName($name);
$emailService->setReplyEmail($email);
$emailService->setReplyName($name);
$emailService->setToEmail($this->client->getEmail());
$emailService->setToName($this->client->getBrand());
$emailService->setSubject($subject);
$emailService->setData([
"userName" => $name,
"email" => $email,
"message" => $message,
]);
$emailService->setTemplateBody("contact");
$emailService->send();
$pixelService = $this->generalService->getService('Marketing\\PixelService');
$pixelService->sendConversion('Contact');
return $this->eadResponse([ "message" => "E-mail send" ]);
}
/**
* @Route(
* path = "/teachers",
* name = "teachers",
* methods = {"GET"}
* )
* @Route(
* path = "/professores",
* name = "teachersOld",
* methods = {"GET"}
* )
*/
public function teachersPage(Request $request) {
$this->data['teachers'] = $this->em->getRepository(User::class)->getUserTeacherSpotlight();
return $this->renderEAD('teacher/teachers.html.twig');
}
/**
* @Route(
* path = "/teacher/{username}",
* name = "teacherProfile",
* methods = {"GET"}
* )
* @Route(
* path = "/professor/{username}",
* name = "teacherProfileOld",
* methods = {"GET"}
* )
*/
public function teacherProfilePage(Request $request) {
$username = $request->get('username');
$userTeacher = $this->em->getRepository(User::class)->findOneBy([
"username" => $username,
"status" => UserEnum::ACTIVE,
"deleted" => UserEnum::ITEM_NO_DELETED,
]);
if(!$userTeacher){
return $this->redirectToRoute('notFound');
}
if($userTeacher->getId() == 1 || $userTeacher->getType() == UserEnum::STUDENT){
return $this->redirectToRoute('notFound');
}
$this->data['userTeacher'] = $userTeacher;
return $this->renderEAD('teacher/teacher-profile.html.twig');
}
/**
* @Route(
* path = "/partner",
* name = "partner",
* methods = {"GET"}
* )
*/
public function partnerPage(Request $request) {
return $this->renderEAD('institutional/teacher-profile.html.twig');
}
/**
* @Route(
* path = "/terms",
* name = "terms",
* methods = {"GET"}
* )
* @Route(
* path = "/termos",
* name = "termsOld",
* methods = {"GET"}
* )
*/
public function termsPage(Request $request) {
$this->data['pageTitle'] = 'Termos de Uso';
$this->data['pageContent'] = htmlspecialchars_decode($this->configuration->get('contract'), ENT_QUOTES);
return $this->renderEAD('institutional/terms-privacy.html.twig');
}
/**
* @Route(
* path = "/privacy",
* name = "privacy",
* methods = {"GET"}
* )
* @Route(
* path = "/privacidade",
* name = "privacyOld",
* methods = {"GET"}
* )
*/
public function privacyPage(Request $request) {
$this->data['pageTitle'] = 'Privacidade';
$this->data['pageContent'] = htmlspecialchars_decode($this->configuration->get('privacy_policy'), ENT_QUOTES);
return $this->renderEAD('institutional/terms-privacy.html.twig');
}
}