diff --git a/.env b/.env index 9fb8358..3c7998c 100644 --- a/.env +++ b/.env @@ -15,7 +15,7 @@ # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration ###> symfony/framework-bundle ### -APP_ENV=prod +APP_ENV=dev APP_SECRET=ba1ab1eaa1c6662c10564a7a82901198 ###< symfony/framework-bundle ### diff --git a/migrations/Version20241125095027.php b/migrations/Version20241125154648.php similarity index 70% rename from migrations/Version20241125095027.php rename to migrations/Version20241125154648.php index 1f100be..6f33eb4 100644 --- a/migrations/Version20241125095027.php +++ b/migrations/Version20241125154648.php @@ -10,7 +10,7 @@ use Doctrine\Migrations\AbstractMigration; /** * Auto-generated Migration: Please modify to your needs! */ -final class Version20241125095027 extends AbstractMigration +final class Version20241125154648 extends AbstractMigration { public function getDescription(): string { @@ -20,12 +20,12 @@ final class Version20241125095027 extends AbstractMigration public function up(Schema $schema): void { // this up() migration is auto-generated, please modify it to your needs - $this->addSql('ALTER TABLE lieu ADD ville VARCHAR(255) NOT NULL, ADD code_postal INT NOT NULL'); + $this->addSql('ALTER TABLE sortie ADD motif_annul LONGTEXT DEFAULT NULL'); } public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs - $this->addSql('ALTER TABLE lieu DROP ville, DROP code_postal'); + $this->addSql('ALTER TABLE sortie DROP motif_annul'); } } diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index 8c3264b..ede938e 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -38,7 +38,7 @@ class AdminController extends AbstractController { $token = $tokenStorage->getToken(); $userConnect = $token?->getUser(); - return $this->render('admin/index.html.twig', [ + return $this->render('admin/list.html.twig', [ 'profile' => $userConnect, 'controller_name' => 'AdminController', ]); diff --git a/src/Controller/LieuController.php b/src/Controller/LieuController.php index f347a78..7e1e129 100644 --- a/src/Controller/LieuController.php +++ b/src/Controller/LieuController.php @@ -17,7 +17,7 @@ class LieuController extends AbstractController #[Route('/lieu', name: 'app_lieu')] public function index(): Response { - return $this->render('lieu/index.html.twig', [ + return $this->render('lieu/list.html.twig', [ 'controller_name' => 'LieuController', ]); } diff --git a/src/Controller/MainController.php b/src/Controller/MainController.php index 7e6c8f4..b07e54d 100644 --- a/src/Controller/MainController.php +++ b/src/Controller/MainController.php @@ -22,22 +22,15 @@ class MainController extends AbstractController $token = $tokenStorage->getToken(); $userConnect = $token?->getUser(); - // Récupérer les paramètres de filtre - $search = $request->query->get('search', ''); - $siteId = $request->query->get('site', ''); - $startDate = $request->query->get('start_date', ''); - $endDate = $request->query->get('end_date', ''); - $organisateur = $request->query->get('organisateur', false); - $inscrit = $request->query->get('inscrit', false); - $nonInscrit = $request->query->get('non_inscrit', false); - $passees = $request->query->get('passees', false); + $sorties = $sortieRepository->findForDashboard(); + $sortiesParticipation = $sortieRepository->findUserParticipation($userConnect); + $sortiesOrganisation = $sortieRepository->findUserOrganisation($userConnect); - $sorties = $sortieRepository->findWithFilters($search, $siteId, $startDate, $endDate, $organisateur, $inscrit, $nonInscrit, $passees, $userConnect); - - return $this->render('main/index.html.twig', [ + return $this->render('main/dashboard.html.twig', [ 'profile' => $userConnect, 'sorties' => $sorties, - 'sites' => $sortieRepository->findAllSites(), + 'sortiesParticipation' => $sortiesParticipation, + 'sortiesOrganisation' => $sortiesOrganisation, ]); } diff --git a/src/Controller/PasswordResetController.php b/src/Controller/PasswordResetController.php index 7151314..bb8f78b 100644 --- a/src/Controller/PasswordResetController.php +++ b/src/Controller/PasswordResetController.php @@ -116,6 +116,6 @@ class PasswordResetController extends AbstractController return $this->redirectToRoute('app_login'); } - return $this->render('password_reset/index.html.twig', ['token' => $token]); + return $this->render('password_reset/list.html.twig', ['token' => $token]); } } diff --git a/src/Controller/SortieController.php b/src/Controller/SortieController.php index 287683b..974854a 100644 --- a/src/Controller/SortieController.php +++ b/src/Controller/SortieController.php @@ -7,6 +7,7 @@ use App\Form\SortieType; use App\Repository\EtatRepository; use App\Repository\LieuRepository; use App\Repository\ParticipantRepository; +use App\Repository\SortieRepository; use DateTime; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; @@ -18,6 +19,34 @@ use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInt #[Route('/sortie', name: 'sortie_')] class SortieController extends AbstractController { + #[Route('/liste', name: 'list', methods: ['GET'])] + public function index( + TokenStorageInterface $tokenStorage, + SortieRepository $sortieRepository, + Request $request + ): Response { + $token = $tokenStorage->getToken(); + $userConnect = $token?->getUser(); + + // Récupérer les paramètres de filtre + $search = $request->query->get('search', ''); + $siteId = $request->query->get('site', ''); + $startDate = $request->query->get('start_date', ''); + $endDate = $request->query->get('end_date', ''); + $organisateur = $request->query->get('organisateur', false); + $inscrit = $request->query->get('inscrit', false); + $nonInscrit = $request->query->get('non_inscrit', false); + $passees = $request->query->get('passees', false); + + $sorties = $sortieRepository->findWithFilters($search, $siteId, $startDate, $endDate, $organisateur, $inscrit, $nonInscrit, $passees, $userConnect); + + return $this->render('sortie/list.html.twig', [ + 'profile' => $userConnect, + 'sorties' => $sorties, + 'sites' => $sortieRepository->findAllSites(), + ]); + } + #[Route('/creates', name: 'create', methods: ['GET', 'POST'])] public function create( Request $request, diff --git a/src/Repository/SortieRepository.php b/src/Repository/SortieRepository.php index f1135c2..4996f0f 100644 --- a/src/Repository/SortieRepository.php +++ b/src/Repository/SortieRepository.php @@ -67,6 +67,35 @@ class SortieRepository extends ServiceEntityRepository return $qb->getQuery()->getResult(); } + public function findForDashboard() + { + return $this->createQueryBuilder('s') + ->orderBy('s.dateLimiteInscription', 'ASC') + ->andWhere('s.dateHeureDebut >= :lastMonth') + ->setParameter('lastMonth', (new \DateTime())->modify('-1 month')) + ->getQuery() + ->getResult(); + } + + public function findUserParticipation($userConnect) + { + return $this->createQueryBuilder('s') + ->leftJoin('s.participants', 'p') + ->where('p.idParticipant = :user') + ->setParameter('user', $userConnect->getIdParticipant()) + ->getQuery() + ->getResult(); + } + + public function findUserOrganisation($userConnect) + { + return $this->createQueryBuilder('s') + ->leftJoin('s.organisateur', 'o') + ->where('o.idParticipant = :user') + ->setParameter('user', $userConnect->getIdParticipant()) + ->getQuery() + ->getResult(); + } public function findAllSites() { return $this->getEntityManager() diff --git a/templates/admin/user.html.twig b/templates/admin/user.html.twig index 306a7a5..072ebaf 100644 --- a/templates/admin/user.html.twig +++ b/templates/admin/user.html.twig @@ -11,24 +11,7 @@

Gestion des utilisateurs

-
-
- - -
+
+
+ + +
@@ -195,6 +185,36 @@ + + {# Modale import CSV#} + +