src/Controller/HomeController.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\GasMeter;
  4. use App\Entity\ElectricMeter;
  5. use App\Entity\Entreprise;
  6. use App\Entity\Rappel;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Doctrine\Persistence\ManagerRegistry;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. class HomeController extends AbstractController
  15. {
  16.     /**
  17.      * @Route("/", name="app_home")
  18.      */
  19.     public function index(): Response
  20.     {
  21.         return $this->redirectToRoute('app_site');
  22.     }
  23.     /**
  24.      * @Route("/site", name="app_site")
  25.      */
  26.     public function site(ManagerRegistry $doctrineRequest $request): Response
  27.     {
  28.         // Récupérer le nombre de jours depuis la requête, par défaut 7 jours
  29.         $nbJours $request->query->get('nbJours'7);
  30.         
  31.         // Calculer la date limite
  32.         $dateLimite = new \DateTime();
  33.         $dateLimite->modify('+' $nbJours ' days');
  34.         // Récupérer les rappels non complétés à venir dans les X prochains jours
  35.         $rappels $doctrine->getRepository(Rappel::class)
  36.             ->createQueryBuilder('r')
  37.             ->where('r.completer = :completer')
  38.             ->andWhere('r.echeance >= :now')
  39.             ->andWhere('r.echeance <= :dateLimite')
  40.             ->setParameter('completer'false)
  41.             ->setParameter('now', new \DateTime())
  42.             ->setParameter('dateLimite'$dateLimite)
  43.             ->orderBy('r.echeance''ASC')
  44.             ->getQuery()
  45.             ->getResult();
  46.         // Récupérer les entreprises liées aux rappels
  47.         $entreprises = [];
  48.         foreach ($rappels as $rappel) {
  49.             if ($rappel->getEntrepriseId()) {
  50.                 $entreprise $doctrine->getRepository(Entreprise::class)->find($rappel->getEntrepriseId());
  51.                 if ($entreprise) {
  52.                     $entreprises[$rappel->getId()] = $entreprise->getRaisonSociale();
  53.                 }
  54.             }
  55.         }
  56.         return $this->render('home/index.html.twig', [
  57.             'controller_name' => 'HomeController',
  58.             'rappels' => $rappels,
  59.             'entreprises' => $entreprises,
  60.             'nbJours' => $nbJours
  61.         ]);
  62.     }
  63.     /**
  64.      * @Route("/rappel/complete/{id}", name="app_rappel_complete", methods={"POST"})
  65.      */
  66.     public function completeRappel(Rappel $rappelEntityManagerInterface $entityManager): JsonResponse
  67.     {
  68.         $rappel->setCompleter(true);
  69.         $entityManager->flush();
  70.         return new JsonResponse(['success' => true]);
  71.     }
  72.     /**
  73.      * @Route("/requetes", name="app_requetes")
  74.      */
  75.     public function requetes(ManagerRegistry $doctrine): Response
  76.     {
  77.         $electric_meters $doctrine->getRepository(ElectricMeter::class)->findAll();
  78.         $gas_meters $doctrine->getRepository(GasMeter::class)->findAll();
  79.         $entreprises $doctrine->getRepository(Entreprise::class)->findAll();
  80.         // prepare entities to display in datatables
  81.         $electric_meters_array = [];
  82.         foreach ($electric_meters as $electric_meter) {
  83.             $entreprise $doctrine->getRepository(Entreprise::class)->find($electric_meter->getEntrepriseId());
  84.             $electric_meters_array[] = [
  85.                 $entreprise $entreprise->getRaisonSociale() : '',
  86.                 $electric_meter->getAdresseCompteur(),
  87.                 $electric_meter->getPDL(),
  88.                 $electric_meter->getDateDebut()? $electric_meter->getDateDebut()->format('d/m/Y') : '',
  89.                 $electric_meter->getDateFin()? $electric_meter->getDateFin()->format('d/m/Y') : '',
  90.                 $electric_meter->getProfil(),
  91.                 $electric_meter->getCAR(),
  92.                 $electric_meter->getFournisseur(),
  93.                 $electric_meter->getPrix(),
  94.                 '',
  95.             ];
  96.         }
  97.         $gas_meters_array = [];
  98.         foreach ($gas_meters as $gas_meter) {
  99.             $entreprise $doctrine->getRepository(Entreprise::class)->find($gas_meter->getEntrepriseId());
  100.             $gas_meters_array[] = [
  101.                 $entreprise $entreprise->getRaisonSociale() : '',
  102.                 $gas_meter->getAdresseCompteur(),
  103.                 $gas_meter->getPDL(),
  104.                 $gas_meter->getDateDebut()? $gas_meter->getDateDebut()->format('d/m/Y') : '',
  105.                 $gas_meter->getDateFin()? $gas_meter->getDateFin()->format('d/m/Y') : '',
  106.                 $gas_meter->getProfil(),
  107.                 $gas_meter->getCAR(),
  108.                 $gas_meter->getFournisseur(),
  109.                 $gas_meter->getPrix(),
  110.                 '',
  111.             ];
  112.         }
  113.         $entreprises_array = [];
  114.         foreach ($entreprises as $entreprise) {
  115.             $entreprises_array[] = [
  116.                 $entreprise->getRaisonSociale(),
  117.                 $entreprise->getAdresse(),
  118.                 $entreprise->getSiret(),
  119.                 $entreprise->getNaf(),
  120.                 $entreprise->getCodeInsee(),
  121.                 $entreprise->getStatut(),
  122.                 '',
  123.             ];
  124.         }
  125.         return $this->render('requetes.html.twig', [
  126.             'electric_meters' => $electric_meters_array,
  127.             'gas_meters' => $gas_meters_array,
  128.             'entreprises' => $entreprises_array,
  129.         ]);
  130.     }
  131.     /**
  132.      * @Route("/requetes2", name="app_requetes2")
  133.      */
  134.     public function requetes2(ManagerRegistry $doctrine,Request $request): JsonResponse
  135.     {
  136.         $filters $request->request->all();
  137.         // prepare filters for each entities
  138.         $electric_meter_filters = [];
  139.         $gas_meter_filters = [];
  140.         $entreprise_filters = [];
  141.         foreach ($filters as $key => $value) {
  142.             if (strpos($key'Electric')) {
  143.                 $electric_meter_filters[str_replace(['Electric','Filter'], ''$key)] = $value;
  144.             } elseif (strpos($key'Gaz')) {
  145.                 $gas_meter_filters[str_replace(['Gaz','Filter'], ''$key)] = $value;
  146.             } elseif (strpos($key'Entreprise')) {
  147.                 $entreprise_filters[str_replace(['Entreprise','Filter'], ''$key)] = $value;
  148.             }
  149.         }
  150.         // prepare entities to display in datatables (searching using filtersn like %value%) using SQL WHERE
  151.         // Fetch the repository for each entity type
  152.         $electricMeterRepository $doctrine->getRepository(ElectricMeter::class);
  153.         $gasMeterRepository $doctrine->getRepository(GasMeter::class);
  154.         $entrepriseRepository $doctrine->getRepository(Entreprise::class);
  155.         //convert filters date to datetime
  156.         if(isset($electric_meter_filters['date_debut']) && $electric_meter_filters['date_debut'] !== '') {
  157.             $electric_meter_filters['date_debut'] = new \DateTime($electric_meter_filters['date_debut']);
  158.         }
  159.         if(isset($electric_meter_filters['date_fin']) && $electric_meter_filters['date_fin'] !== '') {
  160.             $electric_meter_filters['date_fin'] = new \DateTime($electric_meter_filters['date_fin']);
  161.         }
  162.         if(isset($gas_meter_filters['date_debut']) && $gas_meter_filters['date_debut'] !== '') {
  163.             $gas_meter_filters['date_debut'] = new \DateTime($gas_meter_filters['date_debut']);
  164.         }
  165.         if(isset($gas_meter_filters['date_fin']) && $gas_meter_filters['date_fin'] !== '') {
  166.             $gas_meter_filters['date_fin'] = new \DateTime($gas_meter_filters['date_fin']);
  167.         }
  168.         // Build the query for the doctrine paginator
  169.         $electric_meters $electricMeterRepository->createQueryBuilder('e');
  170.         if(isset($electric_meter_filters['adresse_compteur']) && $electric_meter_filters['adresse_compteur'] !== '') {
  171.             $electric_meters->andWhere('e.adresse_compteur LIKE :adresse_compteur')
  172.                 ->setParameter('adresse_compteur''%'.$electric_meter_filters['adresse_compteur'].'%');
  173.         }
  174.         if(isset($electric_meter_filters['PDL']) && $electric_meter_filters['PDL'] !== '') {
  175.             $electric_meters->andWhere('e.PDL LIKE :PDL')
  176.                 ->setParameter('PDL''%'.$electric_meter_filters['PDL'].'%');
  177.         }
  178.         if(isset($electric_meter_filters['date_debut']) && $electric_meter_filters['date_debut'] !== '') {
  179.             $electric_meters->andWhere('e.date_debut IS NULL OR (e.date_debut IS NOT NULL AND e.date_debut >= :date_debut)')
  180.                 ->andWhere('e.date_fin IS NULL OR (e.date_fin IS NOT NULL AND e.date_fin >= :date_debut)')
  181.                 ->setParameter('date_debut'$electric_meter_filters['date_debut']);
  182.         }
  183.         if(isset($electric_meter_filters['date_fin']) && $electric_meter_filters['date_fin'] !== '') {
  184.             $electric_meters->andWhere('e.date_fin IS NULL OR (e.date_fin IS NOT NULL AND e.date_fin <= :date_fin)')
  185.                 ->andWhere('e.date_debut IS NULL OR (e.date_debut IS NOT NULL AND e.date_debut <= :date_fin)')
  186.                 ->setParameter('date_fin'$electric_meter_filters['date_fin']);
  187.         }
  188.         $electric_meters $electric_meters->getQuery()->getResult();
  189.         $gas_meters $gasMeterRepository->createQueryBuilder('g');
  190.         if(isset($gas_meter_filters['titre']) && $gas_meter_filters['titre'] !== '') {
  191.             $gas_meters->andWhere('g.titre LIKE :titre')
  192.                 ->setParameter('titre''%'.$gas_meter_filters['titre'].'%');
  193.         }
  194.         if(isset($gas_meter_filters['adresse_compteur']) && $gas_meter_filters['adresse_compteur'] !== '') {
  195.             $gas_meters->andWhere('g.adresse_compteur LIKE :adresse_compteur')
  196.                 ->setParameter('adresse_compteur''%'.$gas_meter_filters['adresse_compteur'].'%');
  197.         }
  198.         if(isset($gas_meter_filters['PDL']) && $gas_meter_filters['PDL'] !== '') {
  199.             $gas_meters->andWhere('g.PDL LIKE :PDL')
  200.                 ->setParameter('PDL''%'.$gas_meter_filters['PDL'].'%');
  201.         }
  202.         if(isset($gas_meter_filters['date_debut']) && $gas_meter_filters['date_debut'] !== '') {
  203.             $gas_meters->andWhere('g.date_debut IS NULL OR (g.date_debut IS NOT NULL AND g.date_debut >= :date_debut)')
  204.                 ->andWhere('g.date_fin IS NULL OR (g.date_fin IS NOT NULL AND g.date_fin >= :date_debut)')
  205.                 ->setParameter('date_debut'$gas_meter_filters['date_debut']);
  206.         }
  207.         if(isset($gas_meter_filters['date_fin']) && $gas_meter_filters['date_fin'] !== '') {
  208.             $gas_meters->andWhere('g.date_fin IS NULL OR (g.date_fin IS NOT NULL AND g.date_fin <= :date_fin)')
  209.                 ->andWhere('g.date_debut IS NULL OR (g.date_debut IS NOT NULL AND g.date_debut <= :date_fin)')
  210.                 ->setParameter('date_fin'$gas_meter_filters['date_fin']);
  211.         }
  212.         $gas_meters $gas_meters->getQuery()->getResult();
  213.         $entreprises $entrepriseRepository->createQueryBuilder('e');
  214.         if(isset($entreprise_filters['RaisonSociale']) && $entreprise_filters['RaisonSociale'] !== '') {
  215.             $entreprises->andWhere('e.RaisonSociale LIKE :RaisonSociale')
  216.                 ->setParameter('RaisonSociale''%'.$entreprise_filters['RaisonSociale'].'%');
  217.         }
  218.         if(isset($entreprise_filters['Adresse']) && $entreprise_filters['Adresse'] !== '') {
  219.             $entreprises->andWhere('e.Adresse LIKE :Adresse')
  220.                 ->setParameter('Adresse''%'.$entreprise_filters['Adresse'].'%');
  221.         }
  222.         if(isset($entreprise_filters['Siret']) && $entreprise_filters['Siret'] !== '') {
  223.             $entreprises->andWhere('e.Siret LIKE :Siret')
  224.                 ->setParameter('Siret''%'.$entreprise_filters['Siret'].'%');
  225.         }
  226.         if(isset($entreprise_filters['Naf']) && $entreprise_filters['Naf'] !== '') {
  227.             $entreprises->andWhere('e.Naf LIKE :Naf')
  228.                 ->setParameter('Naf''%'.$entreprise_filters['Naf'].'%');
  229.         }
  230.         if(isset($entreprise_filters['Code_Insee']) && $entreprise_filters['Code_Insee'] !== '') {
  231.             $entreprises->andWhere('e.Code_Insee LIKE :Code_Insee')
  232.                 ->setParameter('Code_Insee''%'.$entreprise_filters['Code_Insee'].'%');
  233.         }
  234.         if(isset($entreprise_filters['Statut']) && $entreprise_filters['Statut'] !== '') {
  235.             $entreprises->andWhere('e.Statut LIKE :Statut')
  236.                 ->setParameter('Statut''%'.$entreprise_filters['Statut'].'%');
  237.         }
  238.         $entreprises $entreprises->getQuery()->getResult();
  239.         $electric_meters_array = [];
  240.         foreach ($electric_meters as $electric_meter) {
  241.             $entreprise $doctrine->getRepository(Entreprise::class)->find($electric_meter->getEntrepriseId());
  242.             $electric_meters_array[] = [
  243.                 $entreprise $entreprise->getRaisonSociale() : '',
  244.                 $electric_meter->getAdresseCompteur(),
  245.                 $electric_meter->getPDL(),
  246.                 $electric_meter->getDateDebut()? $electric_meter->getDateDebut()->format('d/m/Y') : '',
  247.                 $electric_meter->getDateFin()? $electric_meter->getDateFin()->format('d/m/Y') : '',
  248.                 $electric_meter->getProfil(),
  249.                 $electric_meter->getCAR(),
  250.                 $electric_meter->getFournisseur(),
  251.                 $electric_meter->getPrix(),
  252.                 '',
  253.             ];
  254.         }
  255.         $gas_meters_array = [];
  256.         foreach ($gas_meters as $gas_meter) {
  257.             $entreprise $doctrine->getRepository(Entreprise::class)->find($gas_meter->getEntrepriseId());
  258.             $gas_meters_array[] = [
  259.                 $entreprise $entreprise->getRaisonSociale() : '',
  260.                 $gas_meter->getAdresseCompteur(),
  261.                 $gas_meter->getPDL(),
  262.                 $gas_meter->getDateDebut()? $gas_meter->getDateDebut()->format('d/m/Y') : '',
  263.                 $gas_meter->getDateFin()? $gas_meter->getDateFin()->format('d/m/Y') : '',
  264.                 $gas_meter->getProfil(),
  265.                 $gas_meter->getCAR(),
  266.                 $gas_meter->getFournisseur(),
  267.                 $gas_meter->getPrix(),
  268.                 '',
  269.             ];
  270.         }
  271.         $entreprises_array = [];
  272.         foreach ($entreprises as $entreprise) {
  273.             $entreprises_array[] = [
  274.                 $entreprise->getRaisonSociale(),
  275.                 $entreprise->getAdresse(),
  276.                 $entreprise->getSiret(),
  277.                 $entreprise->getNaf(),
  278.                 $entreprise->getCodeInsee(),
  279.                 $entreprise->getStatut(),
  280.                 '',
  281.             ];
  282.         }
  283.         return new JsonResponse([
  284.             'electric_meters' => $electric_meters_array,
  285.             'gas_meters' => $gas_meters_array,
  286.             'entreprises' => $entreprises_array,
  287.             'filters' => $filters,
  288.             'electric_meter_filters' => $electric_meter_filters,
  289.             'gas_meter_filters' => $gas_meter_filters,
  290.             'entreprise_filters' => $entreprise_filters,
  291.         ]);
  292.     }
  293. }