src/Controller/HomeController.php line 28

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 Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Doctrine\Persistence\ManagerRegistry;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. class HomeController extends AbstractController
  14. {
  15.     /**
  16.      * @Route("/", name="app_home")
  17.      */
  18.     public function index(): Response
  19.     {
  20.         return $this->redirectToRoute('app_site');
  21.     }
  22.     /**
  23.      * @Route("/site", name="app_site")
  24.      */
  25.     public function site(): Response
  26.     {
  27.         return $this->render('home/index.html.twig', [
  28.             'controller_name' => 'HomeController',
  29.         ]);
  30.     }
  31.     /**
  32.      * @Route("/requetes", name="app_requetes")
  33.      */
  34.     public function requetes(ManagerRegistry $doctrine): Response
  35.     {
  36.         $electric_meters $doctrine->getRepository(ElectricMeter::class)->findAll();
  37.         $gas_meters $doctrine->getRepository(GasMeter::class)->findAll();
  38.         $entreprises $doctrine->getRepository(Entreprise::class)->findAll();
  39.         // prepare entities to display in datatables
  40.         $electric_meters_array = [];
  41.         foreach ($electric_meters as $electric_meter) {
  42.             $entreprise $doctrine->getRepository(Entreprise::class)->find($electric_meter->getEntrepriseId());
  43.             $electric_meters_array[] = [
  44.                 $entreprise $entreprise->getRaisonSociale() : '',
  45.                 $electric_meter->getAdresseCompteur(),
  46.                 $electric_meter->getPDL(),
  47.                 $electric_meter->getDateDebut()? $electric_meter->getDateDebut()->format('d/m/Y') : '',
  48.                 $electric_meter->getDateFin()? $electric_meter->getDateFin()->format('d/m/Y') : '',
  49.                 $electric_meter->getProfil(),
  50.                 $electric_meter->getCAR(),
  51.                 $electric_meter->getFournisseur1(),
  52.                 $electric_meter->getPrix1(),
  53.                 $electric_meter->getFournisseur2(),
  54.                 $electric_meter->getPrix2(),
  55.                 $electric_meter->getDateTransfert()? $electric_meter->getDateTransfert()->format('d/m/Y') : '',
  56.                 '',
  57.             ];
  58.         }
  59.         $gas_meters_array = [];
  60.         foreach ($gas_meters as $gas_meter) {
  61.             $entreprise $doctrine->getRepository(Entreprise::class)->find($gas_meter->getEntrepriseId());
  62.             $gas_meters_array[] = [
  63.                 $entreprise $entreprise->getRaisonSociale() : '',
  64.                 $gas_meter->getAdresseCompteur(),
  65.                 $gas_meter->getPDL(),
  66.                 $gas_meter->getDateDebut()? $gas_meter->getDateDebut()->format('d/m/Y') : '',
  67.                 $gas_meter->getDateFin()? $gas_meter->getDateFin()->format('d/m/Y') : '',
  68.                 $gas_meter->getProfil(),
  69.                 $gas_meter->getCAR(),
  70.                 $gas_meter->getFournisseur1(),
  71.                 $gas_meter->getPrix1(),
  72.                 $gas_meter->getFournisseur2(),
  73.                 $gas_meter->getPrix2(),
  74.                 $gas_meter->getDateTransfert()? $gas_meter->getDateTransfert()->format('d/m/Y') : '',
  75.                 '',
  76.             ];
  77.         }
  78.         $entreprises_array = [];
  79.         foreach ($entreprises as $entreprise) {
  80.             $entreprises_array[] = [
  81.                 $entreprise->getRaisonSociale(),
  82.                 $entreprise->getAdresse(),
  83.                 $entreprise->getSiret(),
  84.                 $entreprise->getNaf(),
  85.                 $entreprise->getCodeInsee(),
  86.                 $entreprise->getStatut(),
  87.                 '',
  88.             ];
  89.         }
  90.         return $this->render('requetes.html.twig', [
  91.             'electric_meters' => $electric_meters_array,
  92.             'gas_meters' => $gas_meters_array,
  93.             'entreprises' => $entreprises_array,
  94.         ]);
  95.     }
  96.     /**
  97.      * @Route("/requetes2", name="app_requetes2")
  98.      */
  99.     public function requetes2(ManagerRegistry $doctrine,Request $request): JsonResponse
  100.     {
  101.         $filters $request->request->all();
  102.         // prepare filters for each entities
  103.         $electric_meter_filters = [];
  104.         $gas_meter_filters = [];
  105.         $entreprise_filters = [];
  106.         foreach ($filters as $key => $value) {
  107.             if (strpos($key'Electric')) {
  108.                 $electric_meter_filters[str_replace(['Electric','Filter'], ''$key)] = $value;
  109.             } elseif (strpos($key'Gaz')) {
  110.                 $gas_meter_filters[str_replace(['Gaz','Filter'], ''$key)] = $value;
  111.             } elseif (strpos($key'Entreprise')) {
  112.                 $entreprise_filters[str_replace(['Entreprise','Filter'], ''$key)] = $value;
  113.             }
  114.         }
  115.         // prepare entities to display in datatables (searching using filtersn like %value%) using SQL WHERE
  116.         // Fetch the repository for each entity type
  117.         $electricMeterRepository $doctrine->getRepository(ElectricMeter::class);
  118.         $gasMeterRepository $doctrine->getRepository(GasMeter::class);
  119.         $entrepriseRepository $doctrine->getRepository(Entreprise::class);
  120.         //convert filters date to datetime
  121.         if(isset($electric_meter_filters['date_debut']) && $electric_meter_filters['date_debut'] !== '') {
  122.             $electric_meter_filters['date_debut'] = new \DateTime($electric_meter_filters['date_debut']);
  123.         }
  124.         if(isset($electric_meter_filters['date_fin']) && $electric_meter_filters['date_fin'] !== '') {
  125.             $electric_meter_filters['date_fin'] = new \DateTime($electric_meter_filters['date_fin']);
  126.         }
  127.         if(isset($gas_meter_filters['date_debut']) && $gas_meter_filters['date_debut'] !== '') {
  128.             $gas_meter_filters['date_debut'] = new \DateTime($gas_meter_filters['date_debut']);
  129.         }
  130.         if(isset($gas_meter_filters['date_fin']) && $gas_meter_filters['date_fin'] !== '') {
  131.             $gas_meter_filters['date_fin'] = new \DateTime($gas_meter_filters['date_fin']);
  132.         }
  133.         // Build the query for the doctrine paginator
  134.         $electric_meters $electricMeterRepository->createQueryBuilder('e');
  135.         if(isset($electric_meter_filters['adresse_compteur']) && $electric_meter_filters['adresse_compteur'] !== '') {
  136.             $electric_meters->andWhere('e.adresse_compteur LIKE :adresse_compteur')
  137.                 ->setParameter('adresse_compteur''%'.$electric_meter_filters['adresse_compteur'].'%');
  138.         }
  139.         if(isset($electric_meter_filters['PDL']) && $electric_meter_filters['PDL'] !== '') {
  140.             $electric_meters->andWhere('e.PDL LIKE :PDL')
  141.                 ->setParameter('PDL''%'.$electric_meter_filters['PDL'].'%');
  142.         }
  143.         if(isset($electric_meter_filters['date_debut']) && $electric_meter_filters['date_debut'] !== '') {
  144.             $electric_meters->andWhere('e.date_debut IS NULL OR (e.date_debut IS NOT NULL AND e.date_debut >= :date_debut)')
  145.                 ->andWhere('e.date_fin IS NULL OR (e.date_fin IS NOT NULL AND e.date_fin >= :date_debut)')
  146.                 ->setParameter('date_debut'$electric_meter_filters['date_debut']);
  147.         }
  148.         if(isset($electric_meter_filters['date_fin']) && $electric_meter_filters['date_fin'] !== '') {
  149.             $electric_meters->andWhere('e.date_fin IS NULL OR (e.date_fin IS NOT NULL AND e.date_fin <= :date_fin)')
  150.                 ->andWhere('e.date_debut IS NULL OR (e.date_debut IS NOT NULL AND e.date_debut <= :date_fin)')
  151.                 ->setParameter('date_fin'$electric_meter_filters['date_fin']);
  152.         }
  153.         $electric_meters $electric_meters->getQuery()->getResult();
  154.         $gas_meters $gasMeterRepository->createQueryBuilder('g');
  155.         if(isset($gas_meter_filters['titre']) && $gas_meter_filters['titre'] !== '') {
  156.             $gas_meters->andWhere('g.titre LIKE :titre')
  157.                 ->setParameter('titre''%'.$gas_meter_filters['titre'].'%');
  158.         }
  159.         if(isset($gas_meter_filters['adresse_compteur']) && $gas_meter_filters['adresse_compteur'] !== '') {
  160.             $gas_meters->andWhere('g.adresse_compteur LIKE :adresse_compteur')
  161.                 ->setParameter('adresse_compteur''%'.$gas_meter_filters['adresse_compteur'].'%');
  162.         }
  163.         if(isset($gas_meter_filters['PDL']) && $gas_meter_filters['PDL'] !== '') {
  164.             $gas_meters->andWhere('g.PDL LIKE :PDL')
  165.                 ->setParameter('PDL''%'.$gas_meter_filters['PDL'].'%');
  166.         }
  167.         if(isset($gas_meter_filters['date_debut']) && $gas_meter_filters['date_debut'] !== '') {
  168.             $gas_meters->andWhere('g.date_debut IS NULL OR (g.date_debut IS NOT NULL AND g.date_debut >= :date_debut)')
  169.                 ->andWhere('g.date_fin IS NULL OR (g.date_fin IS NOT NULL AND g.date_fin >= :date_debut)')
  170.                 ->setParameter('date_debut'$gas_meter_filters['date_debut']);
  171.         }
  172.         if(isset($gas_meter_filters['date_fin']) && $gas_meter_filters['date_fin'] !== '') {
  173.             $gas_meters->andWhere('g.date_fin IS NULL OR (g.date_fin IS NOT NULL AND g.date_fin <= :date_fin)')
  174.                 ->andWhere('g.date_debut IS NULL OR (g.date_debut IS NOT NULL AND g.date_debut <= :date_fin)')
  175.                 ->setParameter('date_fin'$gas_meter_filters['date_fin']);
  176.         }
  177.         $gas_meters $gas_meters->getQuery()->getResult();
  178.         $entreprises $entrepriseRepository->createQueryBuilder('e');
  179.         if(isset($entreprise_filters['RaisonSociale']) && $entreprise_filters['RaisonSociale'] !== '') {
  180.             $entreprises->andWhere('e.RaisonSociale LIKE :RaisonSociale')
  181.                 ->setParameter('RaisonSociale''%'.$entreprise_filters['RaisonSociale'].'%');
  182.         }
  183.         if(isset($entreprise_filters['Adresse']) && $entreprise_filters['Adresse'] !== '') {
  184.             $entreprises->andWhere('e.Adresse LIKE :Adresse')
  185.                 ->setParameter('Adresse''%'.$entreprise_filters['Adresse'].'%');
  186.         }
  187.         if(isset($entreprise_filters['Siret']) && $entreprise_filters['Siret'] !== '') {
  188.             $entreprises->andWhere('e.Siret LIKE :Siret')
  189.                 ->setParameter('Siret''%'.$entreprise_filters['Siret'].'%');
  190.         }
  191.         if(isset($entreprise_filters['Naf']) && $entreprise_filters['Naf'] !== '') {
  192.             $entreprises->andWhere('e.Naf LIKE :Naf')
  193.                 ->setParameter('Naf''%'.$entreprise_filters['Naf'].'%');
  194.         }
  195.         if(isset($entreprise_filters['Code_Insee']) && $entreprise_filters['Code_Insee'] !== '') {
  196.             $entreprises->andWhere('e.Code_Insee LIKE :Code_Insee')
  197.                 ->setParameter('Code_Insee''%'.$entreprise_filters['Code_Insee'].'%');
  198.         }
  199.         if(isset($entreprise_filters['Statut']) && $entreprise_filters['Statut'] !== '') {
  200.             $entreprises->andWhere('e.Statut LIKE :Statut')
  201.                 ->setParameter('Statut''%'.$entreprise_filters['Statut'].'%');
  202.         }
  203.         $entreprises $entreprises->getQuery()->getResult();
  204.         $electric_meters_array = [];
  205.         foreach ($electric_meters as $electric_meter) {
  206.             $entreprise $doctrine->getRepository(Entreprise::class)->find($electric_meter->getEntrepriseId());
  207.             $electric_meters_array[] = [
  208.                 $entreprise $entreprise->getRaisonSociale() : '',
  209.                 $electric_meter->getAdresseCompteur(),
  210.                 $electric_meter->getPDL(),
  211.                 $electric_meter->getDateDebut()? $electric_meter->getDateDebut()->format('d/m/Y') : '',
  212.                 $electric_meter->getDateFin()? $electric_meter->getDateFin()->format('d/m/Y') : '',
  213.                 $electric_meter->getProfil(),
  214.                 $electric_meter->getCAR(),
  215.                 $electric_meter->getFournisseur1(),
  216.                 $electric_meter->getPrix1(),
  217.                 $electric_meter->getFournisseur2(),
  218.                 $electric_meter->getPrix2(),
  219.                 $electric_meter->getDateTransfert()? $electric_meter->getDateTransfert()->format('d/m/Y') : '',
  220.                 '',
  221.             ];
  222.         }
  223.         $gas_meters_array = [];
  224.         foreach ($gas_meters as $gas_meter) {
  225.             $entreprise $doctrine->getRepository(Entreprise::class)->find($gas_meter->getEntrepriseId());
  226.             $gas_meters_array[] = [
  227.                 $entreprise $entreprise->getRaisonSociale() : '',
  228.                 $gas_meter->getAdresseCompteur(),
  229.                 $gas_meter->getPDL(),
  230.                 $gas_meter->getDateDebut()? $gas_meter->getDateDebut()->format('d/m/Y') : '',
  231.                 $gas_meter->getDateFin()? $gas_meter->getDateFin()->format('d/m/Y') : '',
  232.                 $gas_meter->getProfil(),
  233.                 $gas_meter->getCAR(),
  234.                 $gas_meter->getFournisseur1(),
  235.                 $gas_meter->getPrix1(),
  236.                 $gas_meter->getFournisseur2(),
  237.                 $gas_meter->getPrix2(),
  238.                 $gas_meter->getDateTransfert()? $gas_meter->getDateTransfert()->format('d/m/Y') : '',
  239.                 '',
  240.             ];
  241.         }
  242.         $entreprises_array = [];
  243.         foreach ($entreprises as $entreprise) {
  244.             $entreprises_array[] = [
  245.                 $entreprise->getRaisonSociale(),
  246.                 $entreprise->getAdresse(),
  247.                 $entreprise->getSiret(),
  248.                 $entreprise->getNaf(),
  249.                 $entreprise->getCodeInsee(),
  250.                 $entreprise->getStatut(),
  251.                 '',
  252.             ];
  253.         }
  254.         return new JsonResponse([
  255.             'electric_meters' => $electric_meters_array,
  256.             'gas_meters' => $gas_meters_array,
  257.             'entreprises' => $entreprises_array,
  258.             'filters' => $filters,
  259.             'electric_meter_filters' => $electric_meter_filters,
  260.             'gas_meter_filters' => $gas_meter_filters,
  261.             'entreprise_filters' => $entreprise_filters,
  262.         ]);
  263.     }
  264. }