This commit is contained in:
marvin
2024-11-22 14:22:29 +01:00
parent cdfce3a639
commit 36db7da07d
11 changed files with 5 additions and 53 deletions

View File

@@ -73,7 +73,6 @@ class LieuController extends AbstractController
return new JsonResponse(['error' => 'Ville non trouvée'], Response::HTTP_NOT_FOUND);
}
// Utilisez l'API Nominatim pour récupérer les bounds
$params = [
'q' => $ville->getNom(),
'format' => 'json',

View File

@@ -28,7 +28,6 @@ class SortieController extends AbstractController
): Response {
$sortie = new Sortie();
// Récupérer l'utilisateur connecté
$token = $tokenStorage->getToken();
$userConnect = $token?->getUser();
@@ -37,12 +36,10 @@ class SortieController extends AbstractController
return $this->redirectToRoute('app_login');
}
// Créer le formulaire
$form = $this->createForm(SortieType::class, $sortie);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// Récupérer l'ID du lieu depuis le formulaire
$lieuId = $form->get('lieu')->getData();
$lieu = $lieuRepository->find($lieuId);
@@ -51,10 +48,8 @@ class SortieController extends AbstractController
return $this->redirectToRoute('sortie_create');
}
// Associer le lieu à la sortie
$sortie->setLieu($lieu);
// Associer le site à partir de l'utilisateur connecté
$participant = $participantRepository->find($userConnect->getIdParticipant());
if (!$participant) {
@@ -64,20 +59,16 @@ class SortieController extends AbstractController
$sortie->setSite($participant->getSite());
// Récupérer l'état "en création" avec l'ID donné
$etat = $etatRepository->find('019349ba-38ca-7a39-93c3-62f046671525');
if (!$etat) {
$this->addFlash('error', 'État non trouvé.');
return $this->redirectToRoute('sortie_create');
}
// Associer l'état à la sortie
$sortie->setEtat($etat);
// Associer l'organisateur à la sortie
$sortie->setOrganisateur($participant);
// Sauvegarder la sortie
$entityManager->persist($sortie);
$entityManager->flush();
@@ -95,7 +86,6 @@ class SortieController extends AbstractController
#[Route('/view/{id}', name: 'view', methods: ['GET'])]
public function view(string $id, EntityManagerInterface $entityManager, TokenStorageInterface $tokenStorage): Response
{
// Récupérer l'utilisateur connecté
$token = $tokenStorage->getToken();
$userConnect = $token?->getUser();
@@ -106,7 +96,6 @@ class SortieController extends AbstractController
return $this->redirectToRoute('home');
}
// Récupérer le profil de l'utilisateur connecté
$profile = $this->getUser();
return $this->render('sortie/view.html.twig', [
@@ -118,7 +107,6 @@ class SortieController extends AbstractController
#[Route('/inscription/{id}', name: 'inscription', methods: ['POST'])]
public function inscription(string $id, EntityManagerInterface $entityManager, TokenStorageInterface $tokenStorage): Response
{
// Récupérer l'utilisateur connecté
$token = $tokenStorage->getToken();
$userConnect = $token?->getUser();
@@ -127,7 +115,6 @@ class SortieController extends AbstractController
return $this->redirectToRoute('app_login');
}
// Récupérer la sortie
$sortie = $entityManager->getRepository(Sortie::class)->find($id);
if (!$sortie) {
@@ -135,25 +122,21 @@ class SortieController extends AbstractController
return $this->redirectToRoute('home');
}
// Vérifier que la sortie est "Ouverte"
if ($sortie->getEtat()->getLibelle() !== 'Ouverte') {
$this->addFlash('error', 'Vous ne pouvez pas vous inscrire à cette sortie car elle n\'est pas ouverte.');
return $this->redirectToRoute('sortie_view', ['id' => $id]);
}
// Vérifier si l'utilisateur est déjà inscrit
if ($sortie->getParticipants()->contains($userConnect)) {
$this->addFlash('error', 'Vous êtes déjà inscrit à cette sortie.');
return $this->redirectToRoute('sortie_view', ['id' => $id]);
}
// Vérifier le nombre maximum d'inscriptions
if ($sortie->getParticipants()->count() >= $sortie->getNbInscriptionsMax()) {
$this->addFlash('error', 'Le nombre maximum d\'inscriptions a été atteint pour cette sortie.');
return $this->redirectToRoute('sortie_view', ['id' => $id]);
}
// Ajouter l'utilisateur à la liste des participants
$sortie->addParticipant($userConnect);
$entityManager->flush();
@@ -170,7 +153,6 @@ class SortieController extends AbstractController
TokenStorageInterface $tokenStorage,
LieuRepository $lieuRepository
): Response {
// Récupérer la sortie
$sortie = $entityManager->getRepository(Sortie::class)->find($id);
if (!$sortie) {
@@ -178,7 +160,6 @@ class SortieController extends AbstractController
return $this->redirectToRoute('home');
}
// Vérifier si l'utilisateur est l'organisateur
$token = $tokenStorage->getToken();
$userConnect = $token?->getUser();
@@ -187,12 +168,10 @@ class SortieController extends AbstractController
return $this->redirectToRoute('home');
}
// Créer le formulaire
$form = $this->createForm(SortieType::class, $sortie);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// Mettre à jour le lieu si modifié
$lieuId = $form->get('lieu')->getData();
$lieu = $lieuRepository->find($lieuId);
@@ -200,7 +179,6 @@ class SortieController extends AbstractController
$sortie->setLieu($lieu);
}
// Sauvegarder les modifications
$entityManager->flush();
$this->addFlash('success', 'La sortie a été mise à jour avec succès.');

View File

@@ -16,14 +16,12 @@ class VilleController extends AbstractController
#[Route('/get-lieux/{id}', name: 'get_lieux', methods: ['GET'])]
public function getLieux(string $id, VilleRepository $villeRepository, LieuRepository $lieuRepository): JsonResponse
{
// Trouve la ville correspondant à l'ID (GUID)
$ville = $villeRepository->find($id);
if (!$ville) {
return new JsonResponse(['error' => 'Ville non trouvée'], Response::HTTP_NOT_FOUND);
}
// Trouve tous les lieux associés à la ville
$lieux = $lieuRepository->findBy(['ville' => $ville]);
$response = [];

View File

@@ -26,6 +26,6 @@ class EtatFixtures extends Fixture
$manager->persist($etat);
}
$manager->flush(); // Enregistrement en base de données
$manager->flush();
}
}

View File

@@ -14,7 +14,6 @@ class LieuFixtures extends Fixture implements DependentFixtureInterface
{
$faker = Factory::create();
// Exemple : Références pour des villes déjà créées dans VilleFixtures
$villes = [
$this->getReference('ville_Paris'),
$this->getReference('ville_Lyon'),
@@ -22,13 +21,13 @@ class LieuFixtures extends Fixture implements DependentFixtureInterface
];
foreach ($villes as $ville) {
for ($i = 0; $i < 5; $i++) { // Génère 5 lieux par ville
for ($i = 0; $i < 5; $i++) {
$lieu = new Lieu();
$lieu->setNom($faker->streetName());
$lieu->setRue($faker->streetAddress());
$lieu->setLatitude($faker->latitude());
$lieu->setLongitude($faker->longitude());
$lieu->setVille($ville); // Associe le lieu à une ville
$lieu->setVille($ville);
$manager->persist($lieu);
}
}
@@ -39,7 +38,7 @@ class LieuFixtures extends Fixture implements DependentFixtureInterface
public function getDependencies(): array
{
return [
VilleFixtures::class, // Assure que VilleFixtures est chargée en premier
VilleFixtures::class,
];
}
}

View File

@@ -10,7 +10,6 @@ class VilleFixtures extends Fixture
{
public function load(ObjectManager $manager): void
{
// Tableau associatif contenant les noms des villes et leurs codes postaux
$villes = [
['nom' => 'Paris', 'codePostal' => '75000'],
['nom' => 'Lyon', 'codePostal' => '69000'],
@@ -23,7 +22,6 @@ class VilleFixtures extends Fixture
$ville->setCodePostal($villeData['codePostal']); // Définit le code postal
$manager->persist($ville);
// Ajoute une référence pour les fixtures de lieux
$this->addReference('ville_' . $villeData['nom'], $ville);
}

View File

@@ -57,7 +57,7 @@ class SortieType extends AbstractType
->add('ville', EntityType::class, [
'class' => Ville::class,
'choice_label' => 'nom',
'mapped' => false, // Non lié à l'entité Sortie
'mapped' => false,
'label' => 'Ville',
'placeholder' => 'Sélectionnez une ville',
'attr' => ['id' => 'ville-select'],