src/Controller/ElectricMeterController.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Entreprise;
  4. use App\Entity\ElectricMeter;
  5. use App\Form\ElectricMeterType;
  6. use App\Repository\ElectricMeterRepository;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  14. use PhpOffice\PhpSpreadsheet\IOFactory;
  15. use Dompdf\Dompdf;
  16. class ElectricMeterController extends AbstractController
  17. {
  18.     /**
  19.      * @Route("/entreprise/electric_meter/add/{id}", name="app_electric_meter_add")
  20.      */
  21.     public function add(int $idRequest $requestEntityManagerInterface $entityManager): Response
  22.     {
  23.         $electric_meters = new ElectricMeter();
  24.         $form $this->createForm(ElectricMeterType::class, $electric_meters);
  25.         $form->handleRequest($request);
  26.         if ($form->isSubmitted() && $form->isValid()) {
  27.             $entityManager->persist($electric_meters);
  28.             $entityManager->flush();
  29.             return $this->redirectToRoute('app_entreprise_details',['id' => $id]);
  30.         }
  31.         return $this->render('entreprise/electric_meter/add.html.twig', [
  32.             'electric_meterForm' => $form->createView(),
  33.             'entreprise_id' => $id
  34.         ]);
  35.     }
  36.     /**
  37.      * @Route("/entreprise/electric_meter/edit/{id}", name="app_electric_meter_edit")
  38.      */
  39.     public function edit(int $idRequest $requestEntityManagerInterface $entityManagerManagerRegistry $doctrine): Response
  40.     {
  41.         $electric_meters = new ElectricMeter();
  42.         $form $this->createForm(ElectricMeterType::class, $electric_meters);
  43.         $form->handleRequest($request);
  44.         $electric_meter $doctrine->getRepository(ElectricMeter::class)->findOneBy(['id' => $id]);
  45.         $electric_meter_entity = [ 
  46.             'adresse_compteur' => $electric_meter->getAdresseCompteur(),
  47.             'PDL' => $electric_meter->getPDL(),
  48.             'date_debut' => $electric_meter->getDateDebut() ? date_format($electric_meter->getDateDebut(),"Y-m-d") : "",
  49.             'date_fin' => $electric_meter->getDateFin() ? date_format($electric_meter->getDateFin(),"Y-m-d") : "",
  50.             'PS' => $electric_meter->getPS(),
  51.             'Profil' => $electric_meter->getProfil(),
  52.             'CAR' => $electric_meter->getCAR(),
  53.             'Fournisseur1' => $electric_meter->getFournisseur1(),
  54.             'Prix1' => $electric_meter->getPrix1(),
  55.             'Fournisseur2' => $electric_meter->getFournisseur2(),
  56.             'Prix2' => $electric_meter->getPrix2(),
  57.             'date_transfert' => $electric_meter->getDateTransfert() ? date_format($electric_meter->getDateTransfert(),"Y-m-d") : "",
  58.         ];
  59.         if ($form->isSubmitted() && $form->isValid()) {
  60.             $electric_meterEdit $form->getData();
  61.             $electric_meter->setAdresseCompteur($electric_meterEdit->getAdresseCompteur());
  62.             $electric_meter->setPDL($electric_meterEdit->getPDL());
  63.             $electric_meter->setDateDebut($electric_meterEdit->getDateDebut());
  64.             $electric_meter->setDateFin($electric_meterEdit->getDateFin());
  65.             $electric_meter->setPS($electric_meterEdit->getPS());
  66.             $electric_meter->setProfil($electric_meterEdit->getProfil());
  67.             $electric_meter->setCAR($electric_meterEdit->getCAR());
  68.             $electric_meter->setFournisseur1($electric_meterEdit->getFournisseur1());
  69.             $electric_meter->setPrix1($electric_meterEdit->getPrix1());
  70.             $electric_meter->setFournisseur2($electric_meterEdit->getFournisseur2());
  71.             $electric_meter->setPrix2($electric_meterEdit->getPrix2());
  72.             $electric_meter->setDateTransfert($electric_meterEdit->getDateTransfert());
  73.             $entityManager->persist($electric_meter);
  74.             $entityManager->flush();
  75.             return $this->redirectToRoute('app_entreprise_details',['id' => $electric_meter->getEntrepriseId()]);
  76.         }
  77.         return $this->render('entreprise/electric_meter/edit.html.twig', [
  78.             'electric_meterForm' => $form->createView(),
  79.             'electric_meter' => $electric_meter_entity,
  80.             'entreprise_id' => $electric_meter->getEntrepriseId()
  81.         ]);
  82.     }
  83.     /**
  84.      * @Route("/entreprise/electric_meter/suppr/{id}", name="app_electric_meter_suppr")
  85.      */
  86.     public function suppr(int $idRequest $requestEntityManagerInterface $entityManagerManagerRegistry $doctrine): Response
  87.     {
  88.         $electric_meter $doctrine->getRepository(ElectricMeter::class)->findOneBy(['id' => $id]);
  89.         $entreprise_id $electric_meter->getEntrepriseId();
  90.         $entityManager->remove($electric_meter);
  91.         $entityManager->flush();
  92.         return $this->redirectToRoute('app_entreprise_details',['id' => $entreprise_id]);
  93.     }
  94.     /**
  95.      * @Route("/entreprise/electric_meter/details/{id}", name="app_electric_meter_details")
  96.      */
  97.     public function details(int $idManagerRegistry $doctrine): Response
  98.     {
  99.         $electric_meter $doctrine->getRepository(ElectricMeter::class)->findOneBy(['id' => $id]);
  100.         $entreprise $doctrine->getRepository(Entreprise::class)->findOneBy(['id' => $electric_meter->getEntrepriseId()]);
  101.         $electric_meter_entity = [ 
  102.             'adresse_compteur' => $electric_meter->getAdresseCompteur(),
  103.             'PDL' => $electric_meter->getPDL(),
  104.             'date_debut' => $electric_meter->getDateDebut() ? date_format($electric_meter->getDateDebut(),"Y-m-d") : "",
  105.             'date_fin' => $electric_meter->getDateFin() ? date_format($electric_meter->getDateFin(),"Y-m-d") : "",
  106.             'PS' => $electric_meter->getPS(),
  107.             'Profil' => $electric_meter->getProfil(),
  108.             'CAR' => $electric_meter->getCAR(),
  109.             'Fournisseur1' => $electric_meter->getFournisseur1(),
  110.             'Prix1' => $electric_meter->getPrix1(),
  111.             'Fournisseur2' => $electric_meter->getFournisseur2(),
  112.             'Prix2' => $electric_meter->getPrix2(),
  113.             'date_transfert' => $electric_meter->getDateTransfert() ? date_format($electric_meter->getDateTransfert(),"Y-m-d") : "",
  114.             'entreprise' => $entreprise $entreprise->getRaisonSociale() : "",
  115.             'return_path' => $this->generateUrl('app_entreprise_details',['id' => $electric_meter->getEntrepriseId()])
  116.         
  117.         ];
  118.         return $this->render('entreprise/electric_meter/details.html.twig', [
  119.             'electric_meter' => $electric_meter_entity,
  120.         ]);
  121.     }
  122.     //app_electric_meter_check_pdl
  123.     /**
  124.      * @Route("/entreprise/electric_meter/check_pdl/{pdl}", name="app_electric_meter_check_pdl")
  125.      */
  126.     public function checkPDL($pdlManagerRegistry $doctrine): Response
  127.     {
  128.         $electric_meter $doctrine->getRepository(ElectricMeter::class)->findOneBy(['PDL' => $pdl]);
  129.         if($electric_meter){
  130.             return new Response("exist");
  131.         }
  132.         return new Response("available");
  133.     }
  134.     //electric_meter_pre_etude_c5_base
  135.     /**
  136.      * @Route("/entreprise/electric_meter/pre_etude_c5_base/{pdl}", name="app_electric_meter_pre_etude_c5_base")
  137.      */
  138.     public function preEtudeC5Base(string $pdl=nullManagerRegistry $doctrine): Response
  139.     {
  140.         $electric_meter $doctrine->getRepository(ElectricMeter::class)->findOneBy(['PDL' => $pdl]);
  141.         $entreprise $doctrine->getRepository(Entreprise::class)->findOneBy(['id' => $electric_meter->getEntrepriseId()]);
  142.         $templatePath $this->getParameter('kernel.project_dir') . '/assets/templates/ETUDE_C5_Base.xlsx';
  143.         $spreadsheet IOFactory::load($templatePath);
  144.         $sheet $spreadsheet->getActiveSheet();
  145.         $sheet->setCellValue('B3'$entreprise->getRaisonSociale());
  146.         $sheet->setCellValue('C6'$entreprise->getSIRET());
  147.         $sheet->setCellValue('C7'$electric_meter->getPDL());
  148.         $sheet->setCellValue('C8'$electric_meter->getPS());
  149.         $sheet->setCellValue('G6'$entreprise->getNaf());
  150.         $sheet->setCellValue('G9'$electric_meter->getDateFin() ? date_format($electric_meter->getDateFin(),"d/m/Y") : "");
  151.         $address $electric_meter->getAdresseCompteur();
  152.         preg_match('/\b\d{5}\b/'$address$matches);
  153.         $postal_code $matches[0];
  154.         $postal_code_position strpos($address$postal_code);
  155.         $city trim(substr($address$postal_code_position strlen($postal_code)));
  156.         $address_with_no_postal_code_and_city trim(substr($address0$postal_code_position));
  157.         $sheet->setCellValue('C12'$address_with_no_postal_code_and_city);
  158.         $sheet->setCellValue('C13'$postal_code ' ' $city);
  159.         $sheet->setCellValue('B16'$electric_meter->getCAR());
  160.         // Générer la réponse pour le téléchargement du fichier
  161.         $response = new Response();
  162.         $writer IOFactory::createWriter($spreadsheet'Xlsx');
  163.         ob_start();
  164.         $writer->save('php://output');
  165.         $excelData ob_get_contents();
  166.         ob_end_clean();
  167.         // Définir les en-têtes pour le téléchargement
  168.         $RaisonSociale str_replace(' ''_'$entreprise->getRaisonSociale());
  169.         $response->headers->set('Content-Type''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  170.         //last 4 digits of PDL
  171.         $pdl_last_4_digits substr($electric_meter->getPDL(), -4);
  172.         $response->headers->set('Content-Disposition''attachment;filename="Etude_C5_'.$pdl_last_4_digits.'_'.$RaisonSociale.'.xlsx"');
  173.         $response->headers->set('Cache-Control''max-age=0');
  174.         // Envoyer le contenu généré en tant que réponse
  175.         $response->setContent($excelData);
  176.         return $response;
  177.     }
  178.     //electric_meter_pre_etude_c5_hp_hc
  179.     /**
  180.      * @Route("/entreprise/electric_meter/pre_etude_c5_hp_hc/{pdl}", name="app_electric_meter_pre_etude_c5_hp_hc")
  181.      */
  182.     public function preEtudeC5HPHC(string $pdl=nullManagerRegistry $doctrine): Response
  183.     {
  184.         $electric_meter $doctrine->getRepository(ElectricMeter::class)->findOneBy(['PDL' => $pdl]);
  185.         $entreprise $doctrine->getRepository(Entreprise::class)->findOneBy(['id' => $electric_meter->getEntrepriseId()]);
  186.         $templatePath $this->getParameter('kernel.project_dir') . '/assets/templates/ETUDE_C5_HP_HC.xlsx';
  187.         $spreadsheet IOFactory::load($templatePath);
  188.         $sheet $spreadsheet->getActiveSheet();
  189.         $sheet->setCellValue('B3'$entreprise->getRaisonSociale());
  190.         $sheet->setCellValue('C6'$entreprise->getSIRET());
  191.         $sheet->setCellValue('C7'$electric_meter->getPDL());
  192.         $sheet->setCellValue('C8'$electric_meter->getPS());
  193.         $sheet->setCellValue('F6'$entreprise->getNaf());
  194.         $sheet->setCellValue('F9'$electric_meter->getDateFin() ? date_format($electric_meter->getDateFin(),"d/m/Y") : "");
  195.         $address $electric_meter->getAdresseCompteur();
  196.         preg_match('/\b\d{5}\b/'$address$matches);
  197.         $postal_code $matches[0];
  198.         $postal_code_position strpos($address$postal_code);
  199.         $city trim(substr($address$postal_code_position strlen($postal_code)));
  200.         $address_with_no_postal_code_and_city trim(substr($address0$postal_code_position));
  201.         $sheet->setCellValue('C12'$address_with_no_postal_code_and_city);
  202.         $sheet->setCellValue('C13'$postal_code ' ' $city);
  203.         // Générer la réponse pour le téléchargement du fichier
  204.         $response = new Response();
  205.         $writer IOFactory::createWriter($spreadsheet'Xlsx');
  206.         ob_start();
  207.         $writer->save('php://output');
  208.         $excelData ob_get_contents();
  209.         ob_end_clean();
  210.         // Définir les en-têtes pour le téléchargement
  211.         $RaisonSociale str_replace(' ''_'$entreprise->getRaisonSociale());
  212.         $response->headers->set('Content-Type''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  213.         //last 4 digits of PDL
  214.         $pdl_last_4_digits substr($electric_meter->getPDL(), -4);
  215.         $response->headers->set('Content-Disposition''attachment;filename="Etude_C5_'.$pdl_last_4_digits.'_'.$RaisonSociale.'.xlsx"');
  216.         $response->headers->set('Cache-Control''max-age=0');
  217.         // Envoyer le contenu généré en tant que réponse
  218.         $response->setContent($excelData);
  219.         return $response;
  220.     }
  221. }