Merge branch 'Marvin'
This commit is contained in:
18
src/Controller/LieuController.php
Normal file
18
src/Controller/LieuController.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class LieuController extends AbstractController
|
||||
{
|
||||
#[Route('/lieu', name: 'app_lieu')]
|
||||
public function index(): Response
|
||||
{
|
||||
return $this->render('lieu/index.html.twig', [
|
||||
'controller_name' => 'LieuController',
|
||||
]);
|
||||
}
|
||||
}
|
||||
42
src/Controller/SortieController.php
Normal file
42
src/Controller/SortieController.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\Sortie;
|
||||
use App\Form\SortieType;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
#[Route('/sortie', name: 'sortie_')]
|
||||
class SortieController extends AbstractController
|
||||
{
|
||||
#[Route('/creates', name: 'create', methods: ['GET', 'POST'])]
|
||||
public function create(Request $request, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
$sortie = new Sortie();
|
||||
|
||||
// Créer le formulaire
|
||||
$form = $this->createForm(SortieType::class, $sortie);
|
||||
|
||||
// Traiter la requête
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
// Sauvegarder dans la base de données
|
||||
$entityManager->persist($sortie);
|
||||
$entityManager->flush();
|
||||
|
||||
// Rediriger après soumission
|
||||
$this->addFlash('success', 'Sortie créée avec succès !');
|
||||
return $this->redirectToRoute('sortie_create');
|
||||
}
|
||||
|
||||
// Afficher le formulaire
|
||||
return $this->render('sortie/create.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
28
src/Controller/VilleController.php
Normal file
28
src/Controller/VilleController.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\Ville;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class VilleController extends AbstractController
|
||||
{
|
||||
#[Route('/get-lieux/{id}', name: 'get_lieux')]
|
||||
public function getLieux(Ville $ville): JsonResponse
|
||||
{
|
||||
$lieux = $ville->getLieux();
|
||||
|
||||
$data = [];
|
||||
foreach ($lieux as $lieu) {
|
||||
$data[] = [
|
||||
'id' => $lieu->getIdLieu(),
|
||||
'nom' => $lieu->getNom(),
|
||||
];
|
||||
}
|
||||
|
||||
return new JsonResponse($data);
|
||||
}
|
||||
}
|
||||
17
src/DataFixtures/AppFixtures.php
Normal file
17
src/DataFixtures/AppFixtures.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\DataFixtures;
|
||||
|
||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||
use Doctrine\Persistence\ObjectManager;
|
||||
|
||||
class AppFixtures extends Fixture
|
||||
{
|
||||
public function load(ObjectManager $manager): void
|
||||
{
|
||||
// $product = new Product();
|
||||
// $manager->persist($product);
|
||||
|
||||
$manager->flush();
|
||||
}
|
||||
}
|
||||
31
src/DataFixtures/EtatFixtures.php
Normal file
31
src/DataFixtures/EtatFixtures.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\DataFixtures;
|
||||
|
||||
use App\Entity\Etat;
|
||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||
use Doctrine\Persistence\ObjectManager;
|
||||
use Symfony\Component\Uid\Uuid;
|
||||
|
||||
class EtatFixtures extends Fixture
|
||||
{
|
||||
public function load(ObjectManager $manager): void
|
||||
{
|
||||
$etats = [
|
||||
'Créée',
|
||||
'Ouverte',
|
||||
'Clôturée',
|
||||
'En cours',
|
||||
'Terminée',
|
||||
'Annulée',
|
||||
];
|
||||
|
||||
foreach ($etats as $libelle) {
|
||||
$etat = new Etat();
|
||||
$etat->setLibelle($libelle);
|
||||
$manager->persist($etat);
|
||||
}
|
||||
|
||||
$manager->flush(); // Enregistrement en base de données
|
||||
}
|
||||
}
|
||||
45
src/DataFixtures/LieuFixtures.php
Normal file
45
src/DataFixtures/LieuFixtures.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\DataFixtures;
|
||||
|
||||
use App\Entity\Lieu;
|
||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
||||
use Doctrine\Persistence\ObjectManager;
|
||||
use Faker\Factory;
|
||||
|
||||
class LieuFixtures extends Fixture implements DependentFixtureInterface
|
||||
{
|
||||
public function load(ObjectManager $manager): void
|
||||
{
|
||||
$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'),
|
||||
$this->getReference('ville_Marseille'),
|
||||
];
|
||||
|
||||
foreach ($villes as $ville) {
|
||||
for ($i = 0; $i < 5; $i++) { // Génère 5 lieux par ville
|
||||
$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
|
||||
$manager->persist($lieu);
|
||||
}
|
||||
}
|
||||
|
||||
$manager->flush();
|
||||
}
|
||||
|
||||
public function getDependencies(): array
|
||||
{
|
||||
return [
|
||||
VilleFixtures::class, // Assure que VilleFixtures est chargée en premier
|
||||
];
|
||||
}
|
||||
}
|
||||
32
src/DataFixtures/VilleFixtures.php
Normal file
32
src/DataFixtures/VilleFixtures.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\DataFixtures;
|
||||
|
||||
use App\Entity\Ville;
|
||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||
use Doctrine\Persistence\ObjectManager;
|
||||
|
||||
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'],
|
||||
['nom' => 'Marseille', 'codePostal' => '13000'],
|
||||
];
|
||||
|
||||
foreach ($villes as $villeData) {
|
||||
$ville = new Ville();
|
||||
$ville->setNom($villeData['nom']);
|
||||
$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);
|
||||
}
|
||||
|
||||
$manager->flush();
|
||||
}
|
||||
}
|
||||
76
src/Form/SortieType.php
Normal file
76
src/Form/SortieType.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
namespace App\Form;
|
||||
|
||||
use App\Entity\Etat;
|
||||
use App\Entity\Lieu;
|
||||
use App\Entity\Participant;
|
||||
use App\Entity\Site;
|
||||
use App\Entity\Sortie;
|
||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\DateType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
class SortieType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
{
|
||||
$builder
|
||||
->add('nom', TextType::class, [
|
||||
'label' => 'Nom de la sortie',
|
||||
])
|
||||
->add('dateHeureDebut', DateTimeType::class, [
|
||||
'label' => 'Date et heure de début',
|
||||
'widget' => 'single_text', // Permet d'utiliser un champ HTML5
|
||||
'html5' => true,
|
||||
])
|
||||
->add('duree', IntegerType::class, [
|
||||
'label' => 'Durée (en minutes)',
|
||||
])
|
||||
->add('dateLimiteInscription', DateType::class, [
|
||||
'label' => "Date limite d'inscription",
|
||||
'widget' => 'single_text',
|
||||
'html5' => true,
|
||||
])
|
||||
->add('nbInscriptionsMax', IntegerType::class, [
|
||||
'label' => 'Nombre maximum de participants',
|
||||
])
|
||||
->add('infosSortie', TextareaType::class, [
|
||||
'label' => 'Informations complémentaires',
|
||||
'required' => false,
|
||||
])
|
||||
->add('site', EntityType::class, [
|
||||
'class' => Site::class,
|
||||
'choice_label' => 'nom', // Utilise le nom du site comme libellé
|
||||
'label' => 'Site organisateur',
|
||||
])
|
||||
->add('participant', EntityType::class, [
|
||||
'class' => Participant::class,
|
||||
'choice_label' => 'nom', // Utilise le nom du participant
|
||||
'label' => 'Organisateur',
|
||||
])
|
||||
->add('lieu', EntityType::class, [
|
||||
'class' => Lieu::class,
|
||||
'choice_label' => 'nom', // Utilise le nom du lieu
|
||||
'label' => 'Lieu de la sortie',
|
||||
])
|
||||
->add('etat', EntityType::class, [
|
||||
'class' => Etat::class,
|
||||
'choice_label' => 'libelle', // Utilise le nom de l'état
|
||||
'label' => 'État de la sortie',
|
||||
]);
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
{
|
||||
$resolver->setDefaults([
|
||||
'data_class' => Sortie::class,
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user