src/Controller/Front/HomeController.php line 24
<?phpdeclare(strict_types=1);namespace App\Controller\Front;use App\Entity\Activite;use App\Entity\Calendrier;use App\Entity\Checklist;use App\Entity\Document;use App\Entity\Utilisateur;use App\Form\DocumentFilterType;use App\Form\DocumentType;use Doctrine\ORM\EntityManagerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Bundle\SecurityBundle\Security;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;class HomeController extends AbstractController{#[Route('/', name: 'homepage_redirect')]public function homepageRedirect(EntityManagerInterface $em, Security $security): Response{/** @var Utilisateur $utilisateur */$utilisateur = $this->getUser();$client = $utilisateur->getClient();if ($security->isGranted('ROLE_ADMIN')) {return $this->redirectToRoute('admin');}if (null === $client) {throw $this->createAccessDeniedException('Vous ne pouvez pas accéder à cette page.');}$activite = $em->getRepository(Activite::class)->findOneBy(['client' => $client]);if (null === $activite) {throw $this->createNotFoundException('Aucune activité pour ce client.');}return $this->redirectToRoute('homepage', ['activiteSlug' => $activite->getSlug(), 'annee' => (int) date('Y')]);}#[Route('/{activiteSlug}/{annee}/{page}', name: 'homepage', requirements: ['page' => '\d+'])]public function index(Request $request, EntityManagerInterface $em, string $activiteSlug, string $annee, int $page = 1): Response{/** @var Utilisateur $utilisateur */$utilisateur = $this->getUser();$client = $utilisateur->getClient();$activite = $em->getRepository(Activite::class)->findOneBy(['slug' => $activiteSlug, 'client' => $client]);$activiteCount = $em->getRepository(Activite::class)->count(['client' => $client]);$allActivites = [];if ($activiteCount > 1) {$allActivites = $em->getRepository(Activite::class)->findBy(['client' => $client]);}$annees = range(2020, (int) date('Y'));if (null === $activite) {throw $this->createNotFoundException('Cette activité n\'existe pas');}// filtres et pagination$filterForm = $this->createForm(DocumentFilterType::class, null, ['action' => $this->generateUrl('homepage', ['activiteSlug' => $activite->getSlug(),'annee' => $annee,]),'activite' => $activite,'method' => 'GET',]);$filterForm->handleRequest($request);$filters = [];if ($filterForm->isSubmitted() && $filterForm->isValid()) {/** @var array<string> $filters */$filters = $filterForm->getData();}$documents = $em->getRepository(Document::class)->getHomepageQueryBuilder($activite, $filters, (int) $annee);$form = $this->createForm(DocumentType::class, null, ['action' => $this->generateUrl('activite_annee_documents_upload', ['activiteSlug' => $activite->getSlug(),'annee' => $annee,]),'activite' => $activite,]);return $this->render('home/indexV2.html.twig', ['activite' => $activite,'activiteCount' => $activiteCount,'documents' => $documents,'form' => $form,'filterForm' => $filterForm,'filters' => $filters,'annees' => $annees,'allActivites' => $allActivites,]);}public function calendrier(EntityManagerInterface $em): Response{$calendriers = $em->getRepository(Calendrier::class)->findBy(['actif' => true], ['ordre' => 'ASC']);return $this->render('partials/_calendrier.html.twig', ['calendriers' => $calendriers,]);}public function checklist(EntityManagerInterface $em): Response{$checklists = $em->getRepository(Checklist::class)->findBy(['actif' => true], ['ordre' => 'ASC']);return $this->render('partials/_checklist.html.twig', ['checklists' => $checklists,]);}public function annees(int $anneeCourante, string $activiteSlug): Response{$annees = range(2020, (int) date('Y'));return $this->render('partials/_annees.html.twig', ['annees' => $annees,'anneeCourante' => $anneeCourante,'activiteSlug' => $activiteSlug,]);}}