src/Controller/ProjetsController.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Entity\Projets;
  5. use App\Entity\Logements;
  6. use App\Entity\Locataires;
  7. use App\Form\LocatairesType;
  8. use App\Entity\AutresContacts;
  9. use App\Form\AutresContactsType;
  10. use App\Entity\LocataireConjoint;
  11. use App\Form\LocataireConjointType;
  12. use App\Repository\ProjetsRepository;
  13. use App\Repository\LocatairesRepository;
  14. use Doctrine\ORM\EntityManagerInterface;
  15. use App\Repository\AutresContactsRepository;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use App\Repository\LocataireConjointRepository;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  21. class ProjetsController extends AbstractController
  22. {
  23.   #[Route('/projets'name'app_projets')]
  24.   public function index(EntityManagerInterface $entityManagerProjetsRepository $projet): Response
  25.   {
  26.     // Utilisez l'instance EntityManagerInterface pour interagir avec la base de données
  27.     $projet $entityManager->getRepository(Projets::class)->findAll();
  28.     $user $entityManager->getRepository(User::class)->findAll();
  29.     // On retourne un tableau de tous les "noms de projets" dans le template.
  30.     return $this->render('projets/projets.html.twig', [
  31.       "projets" => $projet,
  32.       "user" => $user,
  33.      
  34.     ]);
  35.   }
  36. // --------------------------------------------------------------------------------------
  37.   #[Route('/projets/{id}'name'app_projets_detail'methods:['GET','HEAD'])]
  38.   public function display_projet($id nullRequest $requestEntityManagerInterface $entityManagerProjets $projetLogements $logementLocataires $locataireAutresContacts $autresContactsLocataireConjoint $locataireConjoint): Response
  39.   {
  40.     // Utilisez l'instance EntityManagerInterface pour interagir avec la base de données et des tables ci dessous
  41.     $projet $entityManager->getRepository(Projets::class)->find($id);
  42.     $logement $entityManager->getRepository(Logements::class)->find($id);
  43.     $locataire $entityManager->getRepository(Locataires::class)->find($id);
  44.     $locataireConjoint $entityManager->getRepository(LocataireConjoint::class)->find($id);
  45.     $autresContacts $entityManager->getRepository(AutresContacts::class)->find($id);
  46.     // on recupére les logements et les locataires du projet courant
  47.     $logement $projet->getLogements();
  48. // *******************************************************************************************
  49. // ****requetage pour les compteurs  *********************************************************
  50. // *******************************************************************************************
  51. // ******** recuperation de tous les compteurs de la Table Locataires ************************
  52. $queryBuilder $entityManager->createQueryBuilder();
  53. $projet $entityManager->getRepository(Projets::class)->find($id);
  54. $queryBuilder
  55.  ->select ('SUM(l.ayantDroit) AS ayantDroit',
  56.            'SUM(l.demandeMutation) AS demandeMutation',
  57.            'SUM(l.refusTravaux) AS refusTravaux'
  58.           )
  59. ->from('App\Entity\Locataires''l')
  60. ->join('l.logements''lg')
  61. ->where('lg.projets = :projets_id')
  62. ->setParameter('projets_id'$projet)
  63. ->groupBy('lg.projets');
  64. $resultatsLoc $queryBuilder->getQuery()->getResult();
  65.  
  66. // ******** recuperation de tous les compteurs de la Table Logements ************************
  67. $queryBuilder $entityManager->createQueryBuilder('lg');
  68. $projet $entityManager->getRepository(Projets::class)->find($id);
  69. $queryBuilder
  70.  ->select('SUM(lg.logementVide) AS logementVide',
  71.           'SUM(lg.logementTempo) AS logementTempo'
  72.          )
  73. ->from('App\Entity\Logements''lg')
  74. ->join('lg.projets''projets')
  75. ->where('projets.id = :projets_id')
  76. ->setParameter('projets_id'$projet)
  77. ->groupBy('projets.id');
  78. $resultatsLog $queryBuilder->getQuery()->getResult();
  79. // *****************************************************************************************
  80. // *****************************************************************************************
  81. // *******************************************************************************************
  82. // **** DECLARATION DES VARIABLES DE LA PAGES  ***********************************************
  83. // *******************************************************************************************
  84. include __DIR__.'/variablesDur.php';
  85. // *******************************************************************************************
  86. // ****requetage pour bouton SWITCH  *********************************************************
  87. // *******************************************************************************************
  88. // $locataire = new Locataires();
  89. // $form = $this ->createForm(LocatairesType::class, $locataire);
  90. // $form->handleRequest($request);
  91. // if ($form->isSubmitted() && $form->isValid()) {
  92. //     $data = $form->getData();
  93. //     // Récupérez votre entité à partir de la base de données
  94. //     $entity = $entityManager->getRepository(Locataires::class)->find($id);
  95. //     // Mettez à jour la valeur de 'tutelleCuratelle' en fonction de la position du switch
  96. //     $entity->setTutelleCuratelle($data['tutelleCuratelle']);
  97. //     // Enregistrez les changements dans la base de données
  98. //     $entityManager->flush();
  99.     // Redirigez l'utilisateur vers une autre page
  100.     // return $this->redirectToRoute('projets/projet_detail.html.twig');
  101. // }
  102. // On retourne dans le template.
  103. return $this->render('projets/projet_detail.html.twig', [ 
  104.   // On retourne un tableau de tous les "noms de projets" dans le template.
  105.     "projets" => $projet,
  106.     "logements" => $logement,
  107.     "locataires" => $locataire,
  108.     "locataireConjoint" => $locataireConjoint,
  109.     "AutresContacts" => $autresContacts,
  110.   // déclaratif des variables centralisés sur "VariablesDur.php
  111.     "tutelleCuratelle" => $tutelleCuratelle,
  112.     "carteInvalidite" => $carteInvalidite,
  113.     "ayantDroit" => $ayantDroit,
  114.     "demandeMutation" => $demandeMutation,
  115.     "refusTravaux" => $refusTravaux,
  116.   // ***return resultats pour le requetage des compteurs ***************
  117.     "resultatsLoc" => $resultatsLoc,
  118.     "resultatsLog" => $resultatsLog,
  119.   ]);
  120. // --------------------------------------------------------------------------------
  121. // CRUD LOCATAIRES  ---------------------------------------------------------------
  122. // --------------------------------------------------------------------------------
  123. /* AFFICHER ***************************************************/
  124. #[Route('projets/{id}'name'app_locataire_afficher')]
  125. public function showLocataire(Locataires $locataire): Response
  126. {
  127.     return $this->render("projets/showlocataire.html.twig",[
  128.             "locataire" => $locataire,
  129.         ]);
  130. }
  131. // AJOUTER UN LOCATAIRE EN BDD *************************************************/
  132.     #[Route('projets/{id}'name'app_locataire_ajouter')]
  133.     public function addLocataire(Request $request,EntityManagerInterface $managerLocatairesRepository $locatairesRepository): Response
  134.     {
  135.         $locataire = new Locataires();
  136.         $form $this ->createForm(LocatairesType::class, $locataire);
  137.         $form->handleRequest($request);
  138.         if ($form->isSubmitted() && $form->isValid()) {
  139.           // $locataire = $form->getData();
  140.           $locatairesRepository->save($locatairetrue);
  141.           
  142.           // on prepare et on envoye en BDD
  143.            $manager->persist($locataire);
  144.            $manager->flush(); 
  145.           // message de succés
  146.           $this->addFlash('Success'"Votre nouveau locataire " $locataire->getNom() . " a bien été ajouté");
  147.           return $this->redirectToRoute("app_locataire_afficher");
  148.         }
  149.         return $this->render('projets/showlocataire.html.twig', [
  150.              'form' => $form->createView()
  151.         ]);
  152.     }
  153.     // --------------------------------------------------------------------------------
  154.  /* MODIFIER ***************************************************/
  155.     #[Route('projets/{id}'name'app_locataire_modifier')]
  156.     public function updateLocataire(int $id,Request $request,EntityManagerInterface $manager,Locataires $locataireLocatairesRepository $locatairesRepository): Response
  157.     {
  158.       // récupérez l'objet correspondant à son l'ID 
  159.      $locataire $manager->getRepository(Locataires::class)->find($id);
  160.      if (!$locataire) {
  161.       throw $this->createNotFoundException('Le locataire avec l\'ID '.$id.' n\'existe pas.');
  162.      }
  163.       $form $this ->createForm(LocataireType::class, $locataire);
  164.       // traitez le formulaire soumis
  165.       $form->handleRequest($request);
  166.       
  167.       if ($form->isSubmitted() && $form->isValid()) {
  168.         $locataire $form->getData();
  169.         $locatairesRepository->save($locatairetrue);
  170.         
  171.         // on prepare et on envoye en BDD
  172.         $this->$manager->persist($locataire);
  173.         $this->$manager->flush(); 
  174.         // redirigez l'utilisateur vers une page de confirmation de la modification réussie // message succés !
  175.         $this->addFlash('Success'"Votre locataire " $locataire->getNom() . " " $locataire->getPrenom() . " a bien été modifié(e)");
  176.         return $this->redirectToRoute("app_locataire_afficher");
  177.       }
  178.       return $this->render('projets/editLocataire.html.twig', [
  179.            'formLocataire' => $form->createView(),
  180.            'locataire' => $locataire,
  181.      
  182.       ]);
  183.     }
  184.     // --------------------------------------------------------------------------------
  185. // SUPPRIMER UN LOCATAIRE EN BDD  ************************************************
  186.     #[Route('/{id}'name'app_locataire_supprimer')]
  187.    
  188.     public function DeleteLocataire(Request $request,Locataires $locataireEntityManagerInterface $managerLocatairesRepository $locatairesRepository): Response
  189.     {
  190.       // $manager->remove($locataire);
  191.       // $manager->flush();
  192.       if ($this->isCsrfTokenValid('delete'.$locataire->getId(), $request->request->get('_token'))) {
  193.         $locatairesRepository->remove($locatairetrue);
  194.       }
  195.       $nomLocataire $locataire->getNom();
  196.       $prenomLocataire $locataire->getPrenom();
  197.       
  198.         $this->addFlash('success'"Votre locataire " $nomLocataire " " $prenomLocataire ." a bien été supprimé(e)");
  199.         return $this->redirectToRoute("app_locataire_afficher");
  200.     }
  201. // *****************************************************************************************************************************************
  202. // --------------------------------------------------------------------------------
  203. // CRUD LOCATAIRES CONJOINT  ------------------------------------------------------
  204. // --------------------------------------------------------------------------------
  205. /* AFFICHER ***************************************************/
  206. #[Route('/{id}'name'app_locatairesConjoint_afficher')]
  207. public function showLocatairesConjoint(LocataireConjoint $locataireConjoint): Response
  208. {
  209.     
  210.     return $this->render("projets/showlocataireConjoint.html.twig",[
  211.             "locataireConjoint" => $locataireConjoint,
  212.         ]);
  213. }
  214. // AJOUTER UN LOCATAIRE EN BDD *************************************************/
  215.     #[Route('projet_detail/{id}'name'app_locataireConjoint_ajouter')]
  216.     public function addLocataireConjoint(Request $request,EntityManagerInterface $managerLocataireConjointRepository $locataireConjointRepository): Response
  217.     {
  218.         $locataireConjoint = new LocataireConjoint();
  219.         $form $this ->createForm(LocataireConjointType::class, $locataireConjoint);
  220.         $form->handleRequest($request);
  221.         if ($form->isSubmitted() && $form->isValid()) {
  222.           $locataireConjointRepository->save($locataireConjointtrue);
  223.           // message de succés
  224.           $this->addFlash('Success'"Votre nouveau locataire conjoint " $locataireConjoint->getNom() . " " $locataireConjoint->getPrenom() . " a bien été ajouté");
  225.           return $this->redirectToRoute("app_locataireConjoint_afficher", [], Response::HTTP_SEE_OTHER);
  226.         }
  227.         return $this->render('projets/showLocataireConjoint.html.twig', [
  228.              'form' => $form->createView()
  229.         ]);
  230.     }
  231.     // --------------------------------------------------------------------------------
  232.  /* MODIFIER ***************************************************/
  233.     #[Route('/{id}'name'app_locataireConjoint_modifier')]
  234.     public function updateLocataireConjoint(int $id,Request $request,EntityManagerInterface $manager,LocataireConjoint $locataireConjointLocataireConjointRepository $locataireConjointRepository): Response
  235.     {
  236.       // récupérez l'objet correspondant à son l'ID 
  237.      $locataireConjoint $this->$manager->getRepository(LocataireConjoint::class)->find($id);
  238.       $form $this ->createForm(LocataireConjointType::class, $locataireConjoint);
  239.       // pré-remplissez le formulaire avec les valeurs actuelles du nom et du prénom du locataire
  240.       $form->get('nom')->setData($locataireConjoint->getNom());
  241.       $form->get('prenom')->setData($locataireConjoint->getPrenom());
  242.       $form->get('email')->setData($locataireConjoint->getEmail());
  243.       $form->get('numeroMobile')->setData($locataireConjoint->getNumeroFixe());
  244.       $form->get('numeroFixe')->setData($locataireConjoint->getNumeroFixe());
  245.       $form->get('age')->setData($locataireConjoint->getAge());
  246.       $form->get('metier')->setData($locataireConjoint->getMetier());
  247.      
  248.        // traitez le formulaire soumis
  249.       $form->handleRequest($request);
  250.       if ($form->isSubmitted() && $form->isValid()) {
  251.         $locataireConjoint $form->getData();
  252.         $locataireConjointRepository->save($locataireConjointtrue);
  253.         
  254.         // on prepare et on envoye en BDD
  255.         $manager->persist($locataireConjoint);
  256.         $manager->flush(); 
  257.         // redirigez l'utilisateur vers une page de confirmation de la modification réussie // message succés !
  258.         $this->addFlash('Success'"Votre locataire " $locataireConjoint->getNom() . " " $locataireConjoint->getPrenom() . " a bien été modifié(e)");
  259.         return $this->redirectToRoute("app_locataire_afficher", [], Response::HTTP_SEE_OTHER);
  260.       }
  261.       return $this->render('projets/showlocataire.html.twig', [
  262.            'form' => $form->createView(),
  263.            'locataireConjoint' => $locataireConjoint,
  264.         
  265.       ]);
  266.     }
  267.     // --------------------------------------------------------------------------------
  268. // SUPPRIMER UN LOCATAIRE EN BDD  ************************************************
  269.     #[Route('/{id}'name'app_locataireConjoint_supprimer')]
  270.    
  271.     public function DeleteLocataireConjoint(Request $request,LocataireConjoint $locataireConjointEntityManagerInterface $managerLocataireConjointRepository $locataireConjointRepository): Response
  272.     {
  273.        $manager->remove($locataireConjoint);
  274.        $manager->flush();
  275.       if ($this->isCsrfTokenValid('deleteConjoint'.$locataireConjoint->getId(), $request->request->get('_token'))) {
  276.         $locataireConjointRepository->remove($locataireConjointtrue);
  277.       }
  278.       $nomLocataireConjoint $locataireConjoint->getNom();
  279.       $prenomLocataireConjoint $locataireConjoint->getPrenom();
  280.       
  281.         $this->addFlash('success'"Votre locataire " $nomLocataireConjoint $prenomLocataireConjoint ." a bien été supprimé(e)");
  282.         return $this->redirectToRoute("app_locataireConjoint_afficher", [], Response::HTTP_SEE_OTHER);
  283.     }
  284. // *****************************************************************************************************************************************
  285. // --------------------------------------------------------------------------------
  286. // CRUD AUTRES CONTACTS  ------------------------------------------------------
  287. // --------------------------------------------------------------------------------
  288. /* AFFICHER ***************************************************/
  289. #[Route('/{id}'name'app_autresContacts_afficher')]
  290. public function showLocatairesAutresContacts(AutresContacts $AutresContacts): Response
  291. {
  292.     return $this->render("projets/showAutresContacts.html.twig",[
  293.             "AutresContacts" => $AutresContacts,
  294.         ]);
  295. }
  296. // AJOUTER UN LOCATAIRE EN BDD *************************************************/
  297.     #[Route('projet_detail/{id}'name'app_autresContacts_ajouter')]
  298.     public function addAutresContacts(Request $request,EntityManagerInterface $managerAutresContactsRepository $autresContactsRepository): Response
  299.     {
  300.         $autresContacts = new AutresContacts();
  301.         $form $this ->createForm(AutresContactsType::class, $autresContacts);
  302.         $form->handleRequest($request);
  303.         if ($form->isSubmitted() && $form->isValid()) {
  304.           $autresContactsRepository->save($autresContactstrue);
  305.           // message de succés
  306.           $this->addFlash('Success'"Votre nouveau autre contact " $autresContacts->getNom() . " " $autresContacts->getPrenom() . " a bien été ajouté");
  307.           return $this->redirectToRoute("app_autresContacts_afficher", [], Response::HTTP_SEE_OTHER);
  308.         }
  309.         return $this->render('projets/showAutresContacts.html.twig', [
  310.              'form' => $form->createView()
  311.         ]);
  312.     }
  313.     // --------------------------------------------------------------------------------
  314.  /* MODIFIER ***************************************************/
  315.     #[Route('/{id}'name'app_autresContacts_modifier')]
  316.     public function updateAutresContacts(int $id,Request $request,EntityManagerInterface $manager,AutresContacts $autresContactsAutresContactsRepository $AutresContactsRepository): Response
  317.     {
  318.       // récupérez l'objet correspondant à son l'ID 
  319.       $autresContacts $this->$manager->getRepository(AutresContacts::class)->find($id);
  320.       $form $this ->createForm(AutresContactsType::class, $autresContacts);
  321.       // pré-remplissez le formulaire avec les valeurs actuelles du nom et du prénom du locataire
  322.       $form->get('nom')->setData($autresContacts->getNom());
  323.       $form->get('prenom')->setData($autresContacts->getPrenom());
  324.       $form->get('email')->setData($autresContacts->getEmail());
  325.       $form->get('numeroMobile')->setData($autresContacts->getNumeroFixe());
  326.       $form->get('numeroFixe')->setData($autresContacts->getNumeroFixe());
  327.       $form->get('lienFamilliale')->setData($autresContacts->getLienFamilliale());
  328.        // traitez le formulaire soumis
  329.       $form->handleRequest($request);
  330.       if ($form->isSubmitted() && $form->isValid()) {
  331.         $autresContacts $form->getData();
  332.         $AutresContactsRepository->save($autresContactstrue);
  333.         
  334.         // on prepare et on envoye en BDD
  335.         $manager->persist($autresContacts);
  336.         $manager->flush(); 
  337.         // redirigez l'utilisateur vers une page de confirmation de la modification réussie // message succés !
  338.         $this->addFlash('Success'"Votre autre Contact " $autresContacts->getNom() . " " $autresContacts->getPrenom() . " a bien été modifié(e)");
  339.         return $this->redirectToRoute("app_autresContacts_afficher", [], Response::HTTP_SEE_OTHER);
  340.       }
  341.       return $this->render('projets/showlocataire.html.twig', [
  342.            'form' => $form->createView(),
  343.            'AutresContacts' => $autresContacts,
  344.           
  345.       ]);
  346.     }
  347.     // --------------------------------------------------------------------------------
  348. // SUPPRIMER UN LOCATAIRE EN BDD  ************************************************
  349.     #[Route('/{id}'name'app_autresContacts_supprimer')]
  350.    
  351.     public function DeleteAutresContacts(Request $request,AutresContacts $autresContactsEntityManagerInterface $managerAutresContactsRepository $AutresContactsRepository): Response
  352.     {
  353.       if ($this->isCsrfTokenValid('deleteAutresContacts'.$autresContacts->getId(), $request->request->get('_token'))) {
  354.         $AutresContactsRepository->remove($autresContactstrue);
  355.       }
  356.       $nomAutresContacts $autresContacts->getNom();
  357.       $prenomAutresContacts $autresContacts->getPrenom();
  358.       
  359.         $this->addFlash('success'"Votre locataire " $nomAutresContacts $prenomAutresContacts ." a bien été supprimé(e)");
  360.         return $this->redirectToRoute("app_autresContacts_afficher", [], Response::HTTP_SEE_OTHER);
  361.     }
  362.     
  363. }