src/Controller/HomeController.php line 189
<?phpnamespace App\Controller;use DateTimeImmutable;use App\Entity\Suggest;use App\Form\SuggestFormType;use App\Service\PasswordService;use Symfony\Component\Mime\Address;use App\Repository\ObjectiveRepository;use App\Service\EvaluationDatasService;use App\Repository\EvaluationRepository;use Doctrine\ORM\EntityManagerInterface;use App\Service\QuestionnaireDatasService;use Symfony\Bundle\SecurityBundle\Security;use Symfony\Bridge\Twig\Mime\TemplatedEmail;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\Mailer\MailerInterface;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\UX\Chartjs\Builder\ChartBuilderInterface;use Symfony\Component\Security\Http\Attribute\IsGranted;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;class HomeController extends AbstractController{private $security;private PasswordService $passwordService;public function __construct(Security $security, PasswordService $PasswordService){$this->security = $security;$this->passwordService = $PasswordService;}#[Route('/', name: 'app_home')]public function index(ChartBuilderInterface $chartBuilder, AuthenticationUtils $authenticationUtils): Response{// LOGIN// if ($this->getUser()) {// return $this->redirectToRoute('target_path');// }// get the login error if there is one$error = $authenticationUtils->getLastAuthenticationError();// last username entered by the user$lastUsername = $authenticationUtils->getLastUsername();// Redirection des personnes inactives vers la page de changement de mot de passe$user = $this->getUser();if ($user) {if ($user->getAccompanist() && $user->getAccompanist()->isActive() == 0 || $user->getCompanyMember() && $user->getCompanyMember()->isActive() == 0) {if (!$this->security->isGranted('ROLE_ADMIN')) {return $this->redirectToRoute('app_inactive');}} elseif ($user->isActive() == 0) {$case = $this->passwordService->checkCasePassword($user);return $this->redirectToRoute('app_edit_password', ["case" => $case]);} else {if ($this->security->isGranted('ROLE_COMPANY')) {$company = $user->getCompanyMember()->getCompany();if (count($company->getCompanyQuestionnaires()) > 0) {return $this->redirectToRoute('app_roadmap_index');} else if ($company->getCompanyLabelNR()) {return $this->redirectToRoute('app_label_nr');}} else {return $this->redirectToRoute('app_backoffice');}}}return $this->render('home/index.html.twig', ['controller_name' => 'HomeController','last_username' => $lastUsername,'error' => $error,// 'chart' => $chart]);}#[IsGranted('ROLE_USER')]#[Route('/suggestions/{confirmation}', name: 'app_suggest', defaults: ["confirmation" => null])]public function suggest($confirmation, MailerInterface $mailer, EntityManagerInterface $em, ChartBuilderInterface $chartBuilder, AuthenticationUtils $authenticationUtils, Request $request): Response{$user = $this->getUser();$suggest = new Suggest();$suggest->setUser($user);$suggest->setCreatedAt(new DateTimeImmutable());$form = $this->createForm(SuggestFormType::class, $suggest);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$em->persist($suggest);$em->flush();$email = (new TemplatedEmail())->from(new Address($this->getParameter('app.email_domain'), $this->getParameter('app.email_domain_name')))->to('contact@bilbea.fr')->subject('Nouvelle suggestion')->htmlTemplate('email/suggest.html.twig')->context(['user' => $user,'suggest' => $suggest,]);$mailer->send($email);return $this->redirectToRoute('app_suggest', ['confirmation' => "confirmation"]);}return $this->render('home/suggest.html.twig', ['controller_name' => 'HomeController','form' => $form->createView(),'confirmation' => $confirmation]);}#[IsGranted('ROLE_COMPANY')]#[Route('/profil', name: 'app_profile')]public function profile(ChartBuilderInterface $chartBuilder, EvaluationDatasService $evaluationDatasService, ObjectiveRepository $objectiveRepository, EvaluationRepository $evaluationRepository): Response{$user = $this->getUser();$company = $user->getCompanyMember()->getCompany();$activeCompanyQuestionnaires = $company->getCompanyQuestionnaires();$activeQuestionnaires = [];$currentEvaluations = [];foreach ($activeCompanyQuestionnaires as $key => $companyQuestionnaire) {$questionnaire = $companyQuestionnaire->getQuestionnaire();$lastEvaluations = $evaluationRepository->getLastEvaluationsByQuestionnaire($company, $questionnaire);foreach ($lastEvaluations as $key => $evaluation) {$currentEvaluations[] = $evaluation;}if (count($lastEvaluations) >= 1) {$lastEvaluation = $evaluationDatasService->getEvaluationDatas($lastEvaluations[0]);$questionnaire->setLastEvaluation($lastEvaluation);if (count($lastEvaluations) >= 1) {unset($lastEvaluations[0]);$questionnaire->setOtherEvaluations($lastEvaluations);}}$activeQuestionnaires[] = $questionnaire;}$company->setActiveQuestionnaires($activeQuestionnaires);return $this->render('home/profile.html.twig', ['controller_name' => 'HomeController','user' => $user,'company' => $company]);}#[Route('/inactif', name: 'app_inactive')]public function inactive(ChartBuilderInterface $chartBuilder, AuthenticationUtils $authenticationUtils): Response{// Redirection des personnes inactives vers la page de changement de mot de passeif ($this->getUser()) {$user = $this->getUser();if ($user->hasMembership() && $user->isAccountActive()) {return $this->redirectToRoute('app_home');}if ($this->security->isGranted('ROLE_ADMIN')) {return $this->redirectToRoute('app_home');}} else {return $this->redirectToRoute('app_home');}return $this->render('home/inactive.html.twig', ['controller_name' => 'HomeController',]);}#[Route('/mentions-legales', name: 'app_legal_notice')]public function legalNotice(ChartBuilderInterface $chartBuilder, AuthenticationUtils $authenticationUtils): Response{return $this->render('home/legal_notice.html.twig', ['controller_name' => 'HomeController',]);}#[Route('/politique-de-confidentialite', name: 'app_privacy_policy')]public function privacyPolicy(ChartBuilderInterface $chartBuilder, AuthenticationUtils $authenticationUtils): Response{return $this->render('home/privacy_policy.html.twig', ['controller_name' => 'HomeController',]);}#[Route('/declaration-ecoconception', name: 'app_ecoconception')]public function ecoconception(ChartBuilderInterface $chartBuilder, AuthenticationUtils $authenticationUtils): Response{return $this->render('home/declaration-ecoconception.html.twig', ['controller_name' => 'HomeController',]);}}