src/Controller/ElectricMeterController.php line 52

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