des trucs

This commit is contained in:
mepiphana2023
2024-11-27 13:16:54 +01:00
parent f607b64239
commit 5a69867774
11 changed files with 447 additions and 125 deletions

View File

@@ -13,8 +13,35 @@ use Symfony\Component\HttpFoundation\Request;
class MainController extends AbstractController
{
#[Route('/', name: 'home')]
public function index(
public function home(SortieRepository $sortieRepository, TokenStorageInterface $tokenStorage,): Response
{
// Récupérer les 5 dernières sorties
$latestSorties = $sortieRepository->findBy([], ['dateHeureDebut' => 'DESC'], 5);
$token = $tokenStorage->getToken();
$userConnect = $token?->getUser();
$dateLimit = new \DateTime();
$dateLimit->modify('-30 days'); // Date limite = il y a 30 jours
$pastEvents = $sortieRepository->createQueryBuilder('s')
->where('s.dateHeureDebut < :now')
->andWhere('s.dateHeureDebut >= :dateLimit')
->setParameter('now', new \DateTime())
->setParameter('dateLimit', $dateLimit)
->orderBy('s.dateHeureDebut', 'DESC')
->getQuery()
->getResult();
return $this->render('main/home.html.twig', [
'lastSorties' => $latestSorties,
'profile' => $userConnect,
'pastEvents' => $pastEvents,
]);
}
#[Route('/dashboard', name: 'dashboard')]
public function dashboard(
TokenStorageInterface $tokenStorage,
SortieRepository $sortieRepository,
Request $request

View File

@@ -11,16 +11,19 @@ use App\Repository\ParticipantRepository;
use App\Repository\SortieRepository;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use OpenAI\Factory;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use OpenAI\Client;
#[Route('/sortie', name: 'sortie_')]
class SortieController extends AbstractController
{
#[Route('/liste', name: 'list', methods: ['GET'])]
#[Route('/sortie/liste', name: 'list', methods: ['GET'])]
public function index(
TokenStorageInterface $tokenStorage,
SortieRepository $sortieRepository,
@@ -39,6 +42,7 @@ class SortieController extends AbstractController
$nonInscrit = $request->query->get('non_inscrit', false);
$passees = $request->query->get('passees', false);
// Recherche par nom de sortie
$sorties = $sortieRepository->findWithFilters($search, $siteId, $startDate, $endDate, $organisateur, $inscrit, $nonInscrit, $passees, $userConnect);
return $this->render('sortie/list.html.twig', [
@@ -48,6 +52,7 @@ class SortieController extends AbstractController
]);
}
#[Route('/creates', name: 'create', methods: ['GET', 'POST'])]
public function create(
Request $request,
@@ -83,8 +88,14 @@ class SortieController extends AbstractController
return $this->redirectToRoute('sortie_create');
}
// Gérer l'image (upload)
$imageFile = $form->get('imageFile')->getData();
if ($imageFile) {
$sortie->setImageFile($imageFile);
}
// Définir les relations et l'état initial
$etat = $etatRepository->findOneBy(['libelle' => 'Ouverte']);
$etat = $etatRepository->findOneBy(['libelle' => 'Créée']);
if (!$etat) {
$this->addFlash('error', 'Erreur interne : état introuvable.');
return $this->redirectToRoute('sortie_create');
@@ -105,6 +116,7 @@ class SortieController extends AbstractController
return $this->render('sortie/create.html.twig', [
'profile' => $userConnect,
'form' => $form->createView(),
'sortie' => $sortie,
]);
}
@@ -267,4 +279,5 @@ class SortieController extends AbstractController
$this->addFlash('success', 'La sortie a été annulée avec succès.');
return $this->redirectToRoute('home');
}
}