forme création sortie

This commit is contained in:
marvin
2024-11-20 15:48:32 +01:00
parent e6954b6ce3
commit f25295ae5c
5 changed files with 74 additions and 17 deletions

View File

@@ -4,8 +4,9 @@ namespace App\Controller;
use App\Entity\Sortie;
use App\Form\SortieType;
use App\Repository\EtatRepository;
use App\Repository\LieuRepository;
use App\Repository\VilleRepository;
use App\Repository\ParticipantRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
@@ -17,29 +18,75 @@ use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInt
class SortieController extends AbstractController
{
#[Route('/creates', name: 'create', methods: ['GET', 'POST'])]
public function create(Request $request, EntityManagerInterface $entityManager, TokenStorageInterface $tokenStorage): Response
{
public function create(
Request $request,
EntityManagerInterface $entityManager,
TokenStorageInterface $tokenStorage,
LieuRepository $lieuRepository,
ParticipantRepository $participantRepository,
EtatRepository $etatRepository // Ajout du repository pour les états
): Response {
$sortie = new Sortie();
// Créez le formulaire sans options spéciales
// Récupérer l'utilisateur connecté
$token = $tokenStorage->getToken();
$userConnect = $token?->getUser();
if (!$userConnect) {
$this->addFlash('error', 'Vous devez être connecté pour créer une sortie.');
return $this->redirectToRoute('app_login');
}
// Créer le formulaire
$form = $this->createForm(SortieType::class, $sortie);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// Sauvegarde dans la base de données
// Récupérer l'ID du lieu depuis le formulaire
$lieuId = $form->get('lieu')->getData();
$lieu = $lieuRepository->find($lieuId);
if (!$lieu) {
$this->addFlash('error', 'Le lieu sélectionné est invalide.');
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) {
$this->addFlash('error', 'Impossible de déterminer le site de l\'utilisateur.');
return $this->redirectToRoute('sortie_create');
}
$sortie->setSite($participant->getSite());
$sortie->setParticipant($participant);
// 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);
// Sauvegarder la sortie
$entityManager->persist($sortie);
$entityManager->flush();
$this->addFlash('success', 'La sortie a été créée avec succès.');
return $this->redirectToRoute('sortie_create');
return $this->redirectToRoute('home');
}
$token = $tokenStorage->getToken();
$userConnect = $token?->getUser();
return $this->render('sortie/create.html.twig', [
'profile' => $userConnect,
'form' => $form->createView(),
]);
}
}