src/Controller/Avis/ReclamationController.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Avis;
  3. use App\Entity\User;
  4. use App\Entity\Reclamations;
  5. use App\Service\UserSessionManager;
  6. use App\Repository\ReclamationRepository;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Security\Core\Security;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. class ReclamationController extends AbstractController
  14. {
  15.     private $security;
  16.     private $userSession;
  17.     public function __construct(UserSessionManager $userSession,Security $security// Injection de dépendance du service EmailService
  18.     {
  19.         $this->userSession $userSession;
  20.         $this->security $security;
  21.     }
  22.     public function index(): Response
  23.     {
  24.         return $this->render('home/reclamation/index.html.twig');
  25.     }
  26.     public function ajouterRec(Request $request): Response
  27.     {
  28.         $entityManager $this->getDoctrine()->getManager();
  29.         $userId=$this->userSession->getCurrentUser();    
  30.         // Obtenez l'entité User correspondant à l'ID statique
  31.         $user $this->getDoctrine()->getRepository(User::class)->find($userId);
  32.     
  33.         if (!$user) {
  34.             throw $this->createNotFoundException('Utilisateur non trouvé pour l\'ID '.$userId);
  35.         }
  36.     
  37.         // Récupérer les données de la requête
  38.         $type $request->request->get('type');
  39.         $description $request->request->get('description');
  40.         $status "pending";
  41.     
  42.         // Valider le type
  43.         $allowedTypes = ['cours''note''certificat''autre'];
  44.         if (!in_array($type$allowedTypes)) {
  45.             throw new \InvalidArgumentException('Le type doit être l\'un des suivants : cours, note, certificat, autre.');
  46.         }
  47.     
  48.         // Créer une nouvelle instance de l'entité Reclamation
  49.         $reclamation = new Reclamations();
  50.         $reclamation->setType($type);
  51.         $reclamation->setDescription($description);
  52.         $reclamation->setStatus($status);
  53.         $reclamation->setIdUser($user);
  54.         $reclamation->setDate(new \DateTime());
  55.     
  56.         // Persister et flusher l'entité Reclamation
  57.         $entityManager->persist($reclamation);
  58.         $entityManager->flush();
  59.     
  60.         // Rediriger vers la page de réclamation
  61.         return $this->redirectToRoute('home_avis_afficher_reclamation');
  62.     }
  63.     public function afficherRec(ReclamationRepository $repo): Response
  64.     {     
  65.         $user=$this->userSession->getCurrentUser();  
  66.         $userId=$user->getId();
  67.           // Récupérer toutes les réclamations depuis le repository
  68.         $reclamations $repo-> findReclamationByCurrentUserid($userId);
  69.         // Transmettre les réclamations au template Twig pour l'affichage
  70.         return $this->render('home/reclamation/afficher.html.twig', [
  71.             'reclamations' => $reclamations,
  72.         ]);
  73.         
  74.     }
  75. }