conflict resolved
This commit is contained in:
@@ -25,6 +25,10 @@ use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
|
||||
|
||||
class AdminController extends AbstractController
|
||||
{
|
||||
private ParticipantRepository $participantRepository;
|
||||
public function __construct(ParticipantRepository $participantRepository){
|
||||
$this->participantRepository = $participantRepository;
|
||||
}
|
||||
#[Route('/admin', name: 'app_admin')]
|
||||
public function index(TokenStorageInterface $tokenStorage): Response
|
||||
{
|
||||
@@ -38,13 +42,14 @@ class AdminController extends AbstractController
|
||||
|
||||
//Gestion des utilisateurs
|
||||
#[Route('/admin/user', name: 'app_adminUser')]
|
||||
public function adminUser(ParticipantRepository $participantRepository, TokenStorageInterface $tokenStorage): Response
|
||||
public function adminUser(TokenStorageInterface $tokenStorage): Response
|
||||
{
|
||||
$token = $tokenStorage->getToken();
|
||||
$userConnect = $token?->getUser();
|
||||
$participants = $this->participantRepository->findAll();
|
||||
return $this->render('admin/user.html.twig', [
|
||||
'profile' => $userConnect,
|
||||
'participants' => $participantRepository->findAll(),
|
||||
'participants' => $participants,
|
||||
'controller_name' => 'AdminController',
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -4,39 +4,89 @@ 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;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
||||
|
||||
#[Route('/sortie', name: 'sortie_')]
|
||||
class SortieController extends AbstractController
|
||||
{
|
||||
#[Route('/creates', name: 'create', methods: ['GET', 'POST'])]
|
||||
public function create(Request $request, EntityManagerInterface $entityManager): 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');
|
||||
}
|
||||
|
||||
return $this->render('sortie/create.html.twig', [
|
||||
'profile' => $userConnect,
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -18,13 +18,13 @@ class Sortie
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $nom = null;
|
||||
|
||||
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
|
||||
#[ORM\Column(type: Types::DATETIME_IMMUTABLE, nullable: true)]
|
||||
private ?\DateTimeInterface $dateHeureDebut = null;
|
||||
|
||||
#[ORM\Column(nullable: true)]
|
||||
private ?int $duree = null;
|
||||
|
||||
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
|
||||
#[ORM\Column(type: Types::DATETIME_IMMUTABLE, nullable: true)]
|
||||
private ?\DateTimeInterface $dateLimiteInscription = null;
|
||||
|
||||
#[ORM\Column(nullable: true)]
|
||||
|
||||
@@ -64,8 +64,8 @@ class SortieType extends AbstractType
|
||||
'class' => Lieu::class,
|
||||
'choice_label' => 'nom',
|
||||
'label' => 'Lieu',
|
||||
'placeholder' => 'Sélectionnez une ville d\'abord',
|
||||
'choices' => [],
|
||||
'placeholder' => 'Sélectionnez un lieu',
|
||||
'required' => true,
|
||||
'attr' => ['id' => 'lieu-select'],
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Repository;
|
||||
|
||||
use App\Entity\Participant;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\ORM\Tools\Pagination\Paginator;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
|
||||
|
||||
@@ -33,6 +34,16 @@ class ParticipantRepository extends ServiceEntityRepository
|
||||
return $newProfile;
|
||||
}
|
||||
|
||||
public function getAll(): Paginator
|
||||
{
|
||||
$qb = $this->createQueryBuilder('p')
|
||||
->addSelect('site')
|
||||
->leftJoin('p.site', 'site')
|
||||
->getQuery();
|
||||
return new Paginator($qb);
|
||||
}
|
||||
|
||||
|
||||
// /**
|
||||
// * @return Participant[] Returns an array of Participant objects
|
||||
// */
|
||||
|
||||
Reference in New Issue
Block a user