src/Controller/FactureController.php line 36

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Facture;
  4. use App\Entity\Camion;
  5. use App\Entity\FactureDocument;
  6. use App\Entity\User;
  7. use App\Entity\FactureMaintenance;
  8. use App\Entity\Remorque;
  9. use App\Entity\Maintenance;
  10. use App\Entity\Divers;
  11. use App\Form\FactureType;
  12. use App\Form\AnneeType;
  13. use App\Repository\FactureDocumentRepository;
  14. use App\Repository\FactureMaintenanceRepository;
  15. use App\Repository\FactureRepository;
  16. use App\Repository\MaintenanceRepository;
  17. use App\Repository\MaintenanceTypeRepository;
  18. use PhpParser\Node\Expr\AssignOp\Div;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\HttpFoundation\Response;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use Doctrine\Persistence\ManagerRegistry;
  24. use Symfony\Component\HttpFoundation\JsonResponse;
  25. use App\Repository\DocumentationRepository;
  26. use App\Service\FactureService;
  27. use App\Service\FunctionService;
  28. use App\Service\CarteCamionUserService;
  29. #[Route('/facture')]
  30. class FactureController extends AbstractController
  31. {
  32.     #[Route('/{vehicule}'name'app_facture_index'methods: ['GET'])]
  33.     public function index(FactureRepository $factureRepository,$vehicule,ManagerRegistry $doctrine,DocumentationRepository $documentationRepositoryMaintenanceTypeRepository $maintenanceTypeRepository,FactureDocumentRepository $factureDocumentRepository): Response
  34.     {
  35.         $em $doctrine->getManager();
  36.         /*
  37.                 $path = "../public/upload/facture/";
  38.                 if (file_exists( $path)) {
  39.                     $dossier = Opendir( $path); //Ouverture du dossier.
  40.                     while ($fichier = readdir($dossier)) //On affiche les fichiers les uns après les autres.
  41.                     {
  42.                         if (($fichier != '.') && ($fichier != '..') && ($fichier != '@eaDir'))
  43.                         {
  44.                             $exp = explode('.',$fichier);
  45.                             $idFact = $exp[0];
  46.                             $facture = $factureRepository->find($idFact);
  47.                             if(is_object($facture)) {
  48.                                 echo $fichier . " " . $facture->getId() . "<br />";
  49.                                 if (!file_exists("../public/upload/facture/" . $facture->getDate()->format('Y'))) {
  50.                                     mkdir("../public/upload/facture/" . $facture->getDate()->format('Y'), 0777, true);
  51.                                 }
  52.                                 if (!file_exists("../public/upload/facture/" . $facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m'))) {
  53.                                     mkdir("../public/upload/facture/" . $facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m'), 0777, true);
  54.                                 }
  55.                                 if (!file_exists("../public/upload/facture/" . $facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m') . '/' . $facture->getDate()->format('d'))) {
  56.                                     mkdir("../public/upload/facture/" . $facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m') . '/' . $facture->getDate()->format('d'), 0777, true);
  57.                                 }
  58.                                 if (!file_exists("../public/upload/facture/" . $facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m') . '/' . $facture->getDate()->format('d') . '/' . $facture->getId())) {
  59.                                     mkdir("../public/upload/facture/" . $facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m') . '/' . $facture->getDate()->format('d') . '/' . $facture->getId(), 0777, true);
  60.                                 }
  61.                                 //echo "../public/upload/facture/".$fichier.'<br />';
  62.                                 //echo "../public/upload/facture/".$facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m') . '/' . $facture->getDate()->format('d') . '/' . $facture->getId()."/".$facture->getNameFile()."<br />";
  63.                                 //var_dump(move_uploaded_file("upload/facture/".$fichier, "upload/facture/".$facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m') . '/' . $facture->getDate()->format('d') . '/' . $facture->getId()."/".$facture->getNameFile()));
  64.                                 var_dump(rename("upload/facture/" . $fichier, "upload/facture/" . $facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m') . '/' . $facture->getDate()->format('d') . '/' . $facture->getId() . "/" . $facture->getNameFile()));
  65.                                 //$file = $file->move("../public/upload/facture/",$facture->getDate()->format('Y') . '/' . $facture->getDate()->format('m') . '/' . $facture->getDate()->format('d') . '/' . $facture->getId()."/".$facture->getNameFile());
  66.                                 //break;
  67.                                 $factDoc = new FactureDocument();
  68.                                 $factDoc->setNameFile($facture->getNameFile());
  69.                                 $factDoc->setFacture($facture);
  70.                                 $factureDocumentRepository->save($factDoc, true);
  71.                                 $facture->setCreatedAt($facture->getDate());
  72.                                 $factureRepository->save($facture, true);
  73.                             }
  74.                         }
  75.                     }
  76.                 }*/
  77.         $listVehicule = array();
  78.         $listMaintenanceType = array();
  79.         $em $doctrine->getManager();
  80.         if($vehicule==1)
  81.         {
  82.             $camionRepo $em->getRepository(Camion::class);
  83.             $listVehicule $camionRepo->findAllCamion($this->getUser()->getSystemeClient())->getQuery()->getResult();
  84.             $listMaintenanceType $maintenanceTypeRepository->findBy(array('typeVehicule'=>1));
  85.         }
  86.         else if($vehicule == 2)
  87.         {
  88.             $remorqueRepo $em->getRepository(Remorque::class);
  89.             $listVehicule $remorqueRepo->findAllRemorque($this->getUser()->getSystemeClient())->getQuery()->getResult();
  90.             $listMaintenanceType $maintenanceTypeRepository->findBy(array('typeVehicule'=>2));
  91.         }
  92.         else if($vehicule == 3)
  93.         {
  94.             $camionRepo $em->getRepository(Camion::class);
  95.             $listVehicule $camionRepo->findAllVoiture($this->getUser()->getSystemeClient())->getQuery()->getResult();
  96.             $listMaintenanceType $maintenanceTypeRepository->findBy(array('typeVehicule'=>3));
  97.         }
  98.         else if($vehicule == 4)
  99.         {
  100.             $diversRepo $em->getRepository(Divers::class);
  101.             $listVehicule $diversRepo->findAllDivers($this->getUser()->getSystemeClient());
  102.         }
  103.         $listChauffeur $em->getRepository(User::class)->findAllChauffeur(1);
  104.         $docu $documentationRepository->find(22);
  105.         return $this->render('facture/index.html.twig', [
  106.             'docu' => $docu->getText(),
  107.             'listChauffeur'=>$listChauffeur,
  108.             'listVehicule'=>$listVehicule,
  109.             'vehicule' => $vehicule,
  110.             'listMaintenanceType' => $listMaintenanceType,
  111.         ]);
  112.     }
  113.     #[Route('/uploadFile'name'app_facture_upload_file'methods: ['POST'])]
  114.     public function uploadFileAction(Request $requestManagerRegistry $doctrineFactureRepository $factureRepositoryFactureDocumentRepository $factureDocumentRepositoryFactureService $factureService): Response
  115.     {
  116.         $em $doctrine->getManager();
  117.         $return = array("valide"=>0,'file'=>array('name'=>null),"idFacture"=>null);
  118.         $file $request->files->get('file');
  119.         $typeVehicule $request->request->get('typeVehicule');
  120.         $idVehicule $request->request->get('idVehicule');
  121.         $idFacture $request->request->get('idFacture');
  122.         if($file->isValid())
  123.         {
  124.             $listExt = array('pdf','txt','jpg','png','xls','csv','xlsx');
  125.             if(in_array($file->getClientOriginalExtension(),$listExt))
  126.             {
  127.                 $filename str_replace("%"""$file->getClientOriginalName());//supprime les % car il pse problème à l'affichage
  128.                 if(is_numeric($idFacture)) {//si facture existante
  129.                     $facture $factureRepository->find($idFacture);
  130.                 }
  131.                 else
  132.                 {//si pas de facture existante, on la créé
  133.                     $facture = new Facture();
  134.                     if ($typeVehicule == || $typeVehicule == 3) {
  135.                         $camionRepo $em->getRepository(Camion::class);
  136.                         $cam $camionRepo->find($idVehicule);
  137.                         $facture->setCamion($cam);
  138.                     } else if($typeVehicule == 2) {
  139.                         $remorqueRepo $em->getRepository(Remorque::class);
  140.                         $rem $remorqueRepo->find($idVehicule);
  141.                         $facture->setRemorque($rem);
  142.                     } else if($typeVehicule == 4) {
  143.                         $diversRepo $em->getRepository(Divers::class);
  144.                         $div $diversRepo->find($idVehicule);
  145.                         $facture->setDivers($div);
  146.                     }
  147.                     $facture->setNameFile($filename);
  148.                     $facture->setDate(new \DateTime());
  149.                     $facture->setCreatedAt(new \DateTime());
  150.                     $facture->setValide(0);
  151.                     $facture->setCourroie(0);
  152.                     $facture->setFiltreAir(0);
  153.                     $facture->setFiltreGO(0);
  154.                     $facture->setFiltreHuile(0);
  155.                     $facture->setVidange(0);
  156.                     $facture->setPrix(0);
  157.                     $facture->setHeureMoteur(0);
  158.                     $factureRepository->save($facturetrue);
  159.                 }
  160.                 $idFacture $facture->getId();
  161.                 $returnData $factureService->addFacture($file,$idFacture);
  162.                 $return['valide'] = $returnData['valide'];
  163.                 $return['idFacture'] = $returnData['idFacture'];
  164.                 //on test le nom et on rajoute un chiffre si besoin
  165.                 /*$exp = explode('.',$filename);
  166.                 $ext = end($exp);
  167.                 $fileNameSansExt = $exp[0];
  168.                 $filepath = "../public/upload/facture/" . $facture->getCreatedAt()->format('Y') . '/' . $facture->getCreatedAt()->format('m') . '/' . $facture->getCreatedAt()->format('d') . '/' . $facture->getId() . '/';
  169.                 if (file_exists($filepath . $filename)) {
  170.                     $i = 1;
  171.                     while (file_exists($filepath . $filename)) {
  172.                         $filename = $fileNameSansExt . $i . '.' . $ext;
  173.                         $i++;
  174.                     }
  175.                 }
  176.                 //on créé les dossiers si besoin
  177.                 if (!file_exists("../public/upload/facture/" . $facture->getCreatedAt()->format('Y'))) {
  178.                     mkdir("../public/upload/facture/" . $facture->getCreatedAt()->format('Y'), 0777, true);
  179.                 }
  180.                 if (!file_exists("../public/upload/facture/" . $facture->getCreatedAt()->format('Y') . '/' . $facture->getCreatedAt()->format('m'))) {
  181.                     mkdir("../public/upload/facture/" . $facture->getCreatedAt()->format('Y') . '/' . $facture->getCreatedAt()->format('m'), 0777, true);
  182.                 }
  183.                 if (!file_exists("../public/upload/facture/" . $facture->getCreatedAt()->format('Y') . '/' . $facture->getCreatedAt()->format('m') . '/' . $facture->getCreatedAt()->format('d'))) {
  184.                     mkdir("../public/upload/facture/" . $facture->getCreatedAt()->format('Y') . '/' . $facture->getCreatedAt()->format('m') . '/' . $facture->getCreatedAt()->format('d'), 0777, true);
  185.                 }
  186.                 if (!file_exists("../public/upload/facture/" . $facture->getCreatedAt()->format('Y') . '/' . $facture->getCreatedAt()->format('m') . '/' . $facture->getCreatedAt()->format('d') . '/' . $facture->getId())) {
  187.                     mkdir("../public/upload/facture/" . $facture->getCreatedAt()->format('Y') . '/' . $facture->getCreatedAt()->format('m') . '/' . $facture->getCreatedAt()->format('d') . '/' . $facture->getId(), 0777, true);
  188.                 }
  189.                 $file = $file->move("../public/upload/facture/".$facture->getCreatedAt()->format('Y') . '/' . $facture->getCreatedAt()->format('m') . '/' . $facture->getCreatedAt()->format('d') . '/' . $facture->getId().'/',$filename);
  190.                 $factDoc = new FactureDocument();
  191.                 $factDoc->setNameFile($filename);
  192.                 $factDoc->setFacture($facture);
  193.                 $factureDocumentRepository->save($factDoc, true);
  194.                 if(is_object($file))
  195.                 {
  196.                     $return['valide'] = 1;
  197.                     $return['idFacture'] = $facture->getId();
  198.                 }*/
  199.             }
  200.         }
  201.         return new JsonResponse($return);
  202.     }
  203.     #[Route('/uploadDataFacture'name'app_facture_upload_data_facture'methods: ['POST'])]
  204.     public function uploadDataFactureAction(Request $requestManagerRegistry $doctrineFactureRepository $factureRepositoryMaintenanceTypeRepository $maintenanceTypeRepositoryMaintenanceRepository $maintenanceRepositoryFactureMaintenanceRepository $factureMaintenanceRepositoryFactureService $factureService): Response
  205.     {
  206.         $em $doctrine->getManager();
  207.         $return = array("valide"=>0,"msg"=>"");
  208.         $idFacture $request->request->get('idFacture');
  209.         $typeVehicule $request->request->get('typeVehicule');
  210.         $idVehicule $request->request->get('idVehicule');
  211.         $fileFacture $request->files->get('fileFacture');
  212.         if($idFacture=='')
  213.         {
  214.             $facture = new Facture();
  215.             $facture->setNameFile("");
  216.             $facture->setDate(new \DateTime());
  217.             $facture->setValide(1);
  218.             $facture->setCreatedAt(new \DateTime());
  219.             $factureRepository->save($facturetrue);
  220.             $idFacture $facture->getId();
  221.         }
  222.         $textFacture $request->request->get('textFacture');
  223.         $vidangeFT $request->request->get('vidange');
  224.         $heureMoteur $request->request->get('heureMoteur');
  225.         $prix $request->request->get('prix');
  226.         if($vidangeFT=="true")
  227.         {
  228.             $vidange 1;
  229.         }
  230.         else
  231.         {
  232.             $vidange 0;
  233.         }
  234.         $filtrehuileFT $request->request->get('filtrehuile');
  235.         if($filtrehuileFT=="true")
  236.         {
  237.             $filtrehuile 1;
  238.         }
  239.         else
  240.         {
  241.             $filtrehuile 0;
  242.         }
  243.         $filtreairFT $request->request->get('filtreair');
  244.         if($filtreairFT=="true")
  245.         {
  246.             $filtreair 1;
  247.         }
  248.         else
  249.         {
  250.             $filtreair 0;
  251.         }
  252.         $filtregoFT $request->request->get('filtrego');
  253.         if($filtregoFT=="true")
  254.         {
  255.             $filtrego 1;
  256.         }
  257.         else
  258.         {
  259.             $filtrego 0;
  260.         }
  261.         $courroieFT $request->request->get('courroie');
  262.         if($courroieFT=="true")
  263.         {
  264.             $courroie 1;
  265.         }
  266.         else
  267.         {
  268.             $courroie 0;
  269.         }
  270.         $sinistre $request->request->get('sinistre');
  271.         $date $request->request->get('date');
  272.         $maintenanceType = array();
  273.         $data $request->request->all();
  274.         if(!empty($data['maintenanceType']))
  275.         {
  276.             $maintenanceType $data['maintenanceType'];
  277.         }
  278.         if($idFacture>0)
  279.         {
  280.             $factureRepo $em->getRepository(Facture::class);
  281.             $facture $factureRepo->find($idFacture);
  282.             if(is_object($facture))
  283.             {
  284.                 if($date!='' && $textFacture!='')
  285.                 {
  286.                     if($typeVehicule==|| $typeVehicule==3)
  287.                     {
  288.                         $camionRepo $em->getRepository(Camion::class);
  289.                         $cam $camionRepo->find($idVehicule);
  290.                         $facture->setCamion($cam);
  291.                     }
  292.                     else if($typeVehicule==2)
  293.                     {
  294.                         $remorqueRepo $em->getRepository(Remorque::class);
  295.                         $rem $remorqueRepo->find($idVehicule);
  296.                         $facture->setRemorque($rem);
  297.                     }
  298.                     else if($typeVehicule==4)
  299.                     {
  300.                         $diversRepo $em->getRepository(Divers::class);
  301.                         $div $diversRepo->find($idVehicule);
  302.                         $facture->setDivers($div);
  303.                     }
  304.                     $dateT = new \DateTime($date);
  305.                     /*if($fileFacture!=null)
  306.                     {
  307.                         if($fileFacture->isValid()) {
  308.                             $listExt = array('pdf', 'txt', 'jpg', 'png', 'xls', 'csv', 'xlsx');
  309.                             if (in_array($fileFacture->getClientOriginalExtension(), $listExt)) {
  310.                                 $filename = $fileFacture->getClientOriginalName();
  311.                                 $facture->setNameFile($filename);
  312.                                 $fileFacture->move("../public/upload/facture/",$facture->getId().".".$fileFacture->getClientOriginalExtension());
  313.                             }
  314.                             else
  315.                             {
  316.                                 $return['msg'] = "Le type de fichier n'est pas correct, seuls les fichiers pdf, txt, jpg, png, xls, csv ou xlsx sont pris en compte.";
  317.                             }
  318.                         }
  319.                         else
  320.                         {
  321.                             $return['msg'] = "Votre fichier n'est pas valide.";
  322.                         }
  323.                     }*/
  324.                     $facture->setText($textFacture);
  325.                     $facture->setDate($dateT);
  326.                     $facture->setVidange($vidange);
  327.                     $facture->setFiltreHuile($filtrehuile);
  328.                     $facture->setFiltreAir($filtreair);
  329.                     $facture->setFiltreGO($filtrego);
  330.                     $facture->setCourroie($courroie);
  331.                     $facture->setSinistre($sinistre);
  332.                     if($prix=='')
  333.                     {
  334.                         $facture->setPrix(0);
  335.                     }
  336.                     else
  337.                     {
  338.                         $facture->setPrix($prix);
  339.                     }
  340.                     if($heureMoteur=='')
  341.                     {
  342.                         $facture->setHeureMoteur(0);
  343.                     }
  344.                     else
  345.                     {
  346.                         $facture->setHeureMoteur($heureMoteur);
  347.                     }
  348.                     $facture->setValide(1);
  349.                     $factureRepository->save($facturetrue);
  350.                     if(!empty($maintenanceType))
  351.                     {//si c'est une maintenance on rajoute la date dans la maintenance
  352.                         foreach($maintenanceType as $idMT) {
  353.                             $maintenanceType $maintenanceTypeRepository->find($idMT);
  354.                             $maintenance = new Maintenance();
  355.                             $maintenance->setDate($dateT);
  356.                             $maintenance->setCommentaire($textFacture);
  357.                             $maintenance->setType($maintenanceType);
  358.                             $maintenance->setSystemeClient($this->getUser()->getSystemeClient());
  359.                             $maintenance->setActif(1);
  360.                             if ($facture->getRemorque() != null) {
  361.                                 $maintenance->setRemorque($facture->getRemorque());
  362.                                 $maintenance->setCamion(null);
  363.                             } else {
  364.                                 $maintenance->setRemorque(null);
  365.                                 $maintenance->setCamion($facture->getCamion());
  366.                             }
  367.                             $maintenanceRepository->save($maintenancetrue);
  368.                             $factureMaintenance = new FactureMaintenance();
  369.                             $factureMaintenance->setFacture($facture);
  370.                             $factureMaintenance->setMaintenanceType($maintenanceType);
  371.                             $factureMaintenanceRepository->save($factureMaintenancetrue);
  372.                         }
  373.                     }
  374.                     $return['valide'] = 1;
  375.                 }
  376.                 else
  377.                 {
  378.                     $return['msg'] = "Les données saisie ne semblent pas corrects";
  379.                 }
  380.                 if($fileFacture!=null)
  381.                 {
  382.                     if($fileFacture->isValid()) {
  383.                         $listExt = array('pdf''txt''jpg''png''xls''csv''xlsx');
  384.                         if (in_array($fileFacture->getClientOriginalExtension(), $listExt)) {
  385.                             $factureService->addFacture($fileFacture$idFacture);
  386.                         }
  387.                         else
  388.                         {
  389.                             $return['msg'] = "Le type de fichier n'est pas correct, seuls les fichiers pdf, txt, jpg, png, xls, csv ou xlsx sont pris en compte.";
  390.                         }
  391.                     }
  392.                     else
  393.                     {
  394.                         $return['msg'] = "Votre fichier n'est pas valide.";
  395.                     }
  396.                 }
  397.             }
  398.             else
  399.             {
  400.                 $return['msg'] = "Aucun document n'a été trouvé";
  401.             }
  402.         }
  403.         else
  404.         {
  405.             $return['msg'] = "Aucun document n'a été trouvé";
  406.         }
  407.         return new JsonResponse($return);
  408.     }
  409.     #[Route('/getListFacture/{idVehicule}/{typeVehicule}'name'app_facture_get_list'methods: ['GET'])]
  410.     public function getListFactureAction(Request $request$idVehicule$typeVehiculeManagerRegistry $doctrineFactureRepository $factureRepositoryFactureDocumentRepository $factureDocumentRepository): Response
  411.     {
  412.         $em $doctrine->getManager();
  413.         $return = array("valide"=>0,'listeFacture'=>array(),'nomVehicule'=>"",'listChauffeur'=>array());
  414.         $listChauffeur = array();
  415.         $listChauffeurBDD $em->getRepository(User::class)->findAllChauffeur(1);
  416.         if(!empty($listChauffeurBDD))
  417.         {
  418.             foreach($listChauffeurBDD as $chauff)
  419.             {
  420.                 $listChauffeur[] = array('id'=>$chauff->getId(),'nom'=>$chauff->getPrenom().' '.$chauff->getNom());
  421.             }
  422.         }
  423.         //suppression des lignes non terminées
  424.         $factureRepo $em->getRepository(Facture::class);
  425.         $listFac $factureRepo->findBy(array("valide"=>0));
  426.         if(!empty($listFac))
  427.         {
  428.             foreach($listFac as $fact)
  429.             {
  430.                 $listFactDoc $factureDocumentRepository->findBy(array('facture'=>$fact));
  431.                 if(!empty($listFactDoc))
  432.                 {
  433.                     foreach($listFactDoc as $factDoc)
  434.                     {
  435.                         if(file_exists("../public/upload/facture/".$fact->getCreatedAt()->format('Y') . '/' $fact->getCreatedAt()->format('m') . '/' $fact->getCreatedAt()->format('d') . '/' $fact->getId().'/'.$factDoc->getNameFile())) {
  436.                             unlink("../public/upload/facture/".$fact->getCreatedAt()->format('Y') . '/' $fact->getCreatedAt()->format('m') . '/' $fact->getCreatedAt()->format('d') . '/' $fact->getId().'/'.$factDoc->getNameFile());
  437.                             $factureDocumentRepository->remove($factDoctrue);
  438.                             $factureRepository->remove($facttrue);
  439.                         }
  440.                     }
  441.                 }
  442.             }
  443.         }
  444.         $listFacture = array();
  445.         if($typeVehicule==|| $typeVehicule==3)
  446.         {
  447.             $camionRepo $em->getRepository(Camion::class);
  448.             $cam $camionRepo->find($idVehicule);
  449.             $listFacture $factureRepo->findBy(array("camion"=>$cam),array('date'=>'DESC'));
  450.             $return['nomVehicule'] = $cam->getNom();
  451.         }
  452.         else if($typeVehicule==2)
  453.         {
  454.             $remorqueRepo $em->getRepository(Remorque::class);
  455.             $rem $remorqueRepo->find($idVehicule);
  456.             $listFacture $factureRepo->findBy(array("remorque"=>$rem),array('date'=>'DESC'));
  457.             $return['nomVehicule'] = $rem->getNumero().' / '.$rem->getNom().' / '.$rem->getMarque().' / '.$rem->getCat().' / '.$rem->getReferenceMoteur();
  458.         }
  459.         else if($typeVehicule==4)
  460.         {
  461.             $diversRepo $em->getRepository(Divers::class);
  462.             $divers $diversRepo->find($idVehicule);
  463.             $listFacture $factureRepo->findBy(array("divers"=>$divers),array('date'=>'DESC'));
  464.             $return['nomVehicule'] = $divers->getNom();
  465.         }
  466.         if(!empty($listFacture))
  467.         {
  468.             foreach($listFacture as $facture)
  469.             {
  470.                 $listFactDoc $factureDocumentRepository->findBy(array('facture'=>$facture));
  471.                 $listFile = array();
  472.                 if(!empty($listFactDoc))
  473.                 {
  474.                     foreach($listFactDoc as $factDoc)
  475.                     {
  476.                         $exp explode('.',$factDoc->getNameFile());
  477.                         $ext end($exp);
  478.                         $icon "<i class=\"fa-regular fa-file fa-2x btn btn-default\"></i>";
  479.                         if($ext=='pdf')
  480.                         {
  481.                             $icon "<i class=\"fa-solid fa-file-pdf fa-2x btn btn-danger\"></i>";
  482.                         }
  483.                         if($ext=='xls' || $ext=='xlsx')
  484.                         {
  485.                             $icon "<i class=\"fa-regular fa-file-excel fa-2x btn btn-success\"></i>";
  486.                         }
  487.                         if($ext=='csv')
  488.                         {
  489.                             $icon "<i class=\"fa-solid fa-file-csv fa-2x btn btn-success\" ></i>";
  490.                         }
  491.                         if($ext=='png' || $ext=='jpg')
  492.                         {
  493.                             $icon "<i class=\"fa-solid fa-image fa-2x btn btn-info\"></i>";
  494.                         }
  495.                         $listFile[] = array('name'=>$factDoc->getNameFile(), "icon"=>$icon,'ext'=>$ext,
  496.                             'id'=>$factDoc->getId(),
  497.                             'url'=>$facture->getCreatedAt()->format('Y') . '/' $facture->getCreatedAt()->format('m') . '/' $facture->getCreatedAt()->format('d') . '/' $facture->getId().'/'.$factDoc->getNameFile());
  498.                     }
  499.                 }
  500.                 $chauffeurNom "";
  501.                 $chauffeurId 0;
  502.                 if($facture->getSinistre()>0) {
  503.                     $chauffeur $em->getRepository(User::class)->find($facture->getSinistre());
  504.                     if (is_object($chauffeur)) {
  505.                         $chauffeurNom $chauffeur->getPrenom() . ' ' $chauffeur->getNom();
  506.                         $chauffeurId $chauffeur->getId();
  507.                     }
  508.                 }
  509.                 $return['listeFacture'][] = array('id'=>$facture->getId(),'file'=>$listFile,'text'=>$facture->getText(),'date'=>$facture->getDate()->format("d/m/Y"),
  510.                     'dateUS'=>$facture->getDate()->format("Y-m-d"),'vidange'=>$facture->getVidange(),
  511.                     'filtreHuile'=>$facture->getFiltreHuile(),'filtreAir'=>$facture->getFiltreAir(),
  512.                     'filtreGO'=>$facture->getFiltreGO(),'courroie'=>$facture->getCourroie(),
  513.                     'sinistre'=>$chauffeurId,'sinistreNom'=>$chauffeurNom,
  514.                     'prix'=>$facture->getPrix(),'heureMoteur'=>$facture->getHeureMoteur()
  515.                 );
  516.                 $return['listChauffeur'] = $listChauffeur;
  517.                 $return['valide'] = 1;
  518.             }
  519.         }
  520.         return new JsonResponse($return);
  521.     }
  522.     #[Route('/getDateImmatByTypeVehicule/{idVehicule}/{typeVehicule}'name'app_facture_get_date_immat_by_type_vehicule'methods: ['GET'])]
  523.     public function getDateImmatByTypeVehicule(Request $request$idVehicule$typeVehiculeManagerRegistry $doctrineFactureRepository $factureRepository): Response
  524.     {
  525.         $em $doctrine->getManager();
  526.         $return = array("valide"=>0,'dateImmat'=>"",'dateImmatUS'=>"");
  527.         if($typeVehicule==|| $typeVehicule==3)
  528.         {
  529.             $camionRepo $em->getRepository(Camion::class);
  530.             $cam $camionRepo->find($idVehicule);
  531.             if($cam->getDateImmat()!=null)
  532.             {
  533.                 $return['valide'] = 1;
  534.                 $return['dateImmat'] = $cam->getDateImmat()->format('d/m/Y');
  535.                 $return['dateImmatUS'] = $cam->getDateImmat()->format('Y-m-d');
  536.             }
  537.         }
  538.         else if($typeVehicule==2)
  539.         {
  540.             $remorqueRepo $em->getRepository(Remorque::class);
  541.             $rem $remorqueRepo->find($idVehicule);
  542.             if($rem->getDateImmat()!=null)
  543.             {
  544.                 $return['valide'] = 1;
  545.                 $return['dateImmat'] = $rem->getDateImmat()->format('d/m/Y');
  546.                 $return['dateImmatUS'] = $rem->getDateImmat()->format('Y-m-d');
  547.             }
  548.         }
  549.         else if($typeVehicule==4)
  550.         {
  551.             $return['valide'] = 1;
  552.         }
  553.         return new JsonResponse($return);
  554.     }
  555.     #[Route('/cout/annuelParChauffeur/'name'app_facture_cout_annuel_par_chauffeur'methods: ['GET''POST'])]
  556.     public function coutAnnuelParChauffeur(Request $request,ManagerRegistry $doctrineDocumentationRepository $documentationRepository,FunctionService $functionServiceCarteCamionUserService $carteCamionUserService): Response
  557.     {
  558.         $form $this->createForm(AnneeType::class);
  559.         $form->handleRequest($request);
  560.         $em $doctrine->getManager();
  561.         $listMois $functionService->getListMoisString();
  562.         $tri "chauffeur";
  563.         $data = array();
  564.         $affChauffeur null;
  565.         $listCoutRem = array();
  566.         $listCoutVoit = array();
  567.         $listCoutChauffeur = array();
  568.         $listChauffeur $em->getRepository(User::class)->findAllChauffeur($this->getUser()->getSystemeClient());
  569.         $annee date('Y');
  570.         if ($form->isSubmitted() && $form->isValid()) {
  571.             $mois_annee $request->request->all();
  572.             $annee $mois_annee['annee']['annee'];
  573.             $affChauffeur $mois_annee['affChauffeur'];
  574.             $tri $mois_annee['tri'];
  575.             $factureRepository $em->getRepository(Facture::class);
  576.             $list $factureRepository->findSinistreByYear($annee);
  577.             if(!empty($listChauffeur))
  578.             {//on rempli à vide la liste des chauffeurs
  579.                 foreach($listChauffeur as $chauffeur)
  580.                 {
  581.                     $listCoutChauffeur[$chauffeur->getId()]['chauffeur'] = $chauffeur->getPrenom().' '.$chauffeur->getNom();
  582.                     $listCoutChauffeur[$chauffeur->getId()]['matricule'] = $chauffeur->getMatricule();
  583.                     $listCoutChauffeur[$chauffeur->getId()]['cout'] = 0;
  584.                 }
  585.             }
  586.             if(!empty($list))
  587.             {//on boucle sur la liste des factures avec sinistre
  588.                 foreach($list as $facture)
  589.                 {
  590.                     if(isset($listCoutChauffeur[$facture->getSinistre()]))
  591.                     {//et on ajoute les prix à chaque chauffeur
  592.                         $listCoutChauffeur[$facture->getSinistre()]['cout'] += $facture->getPrix();
  593.                     }
  594.                 }
  595.                 if($tri=='chauffeur')
  596.                 {
  597.                     $listCoutChauffeur $functionService->array_msort($listCoutChauffeur, array($tri => SORT_ASC));
  598.                 }
  599.                 else
  600.                 {
  601.                     $listCoutChauffeur $functionService->array_msort($listCoutChauffeur, array($tri => SORT_DESC));
  602.                 }
  603.             }
  604.         }
  605.         $docu $documentationRepository->find(53);
  606.         return $this->render('facture/coutAnnuelParChauffeur.html.twig', [
  607.             'listMois' => $listMois,
  608.             'docu' => $docu->getText(),
  609.             'form' => $form,
  610.             'data' => $data,
  611.             'annee' => $annee,
  612.             'listChauffeur' => $listChauffeur,
  613.             'listCoutRem' => $listCoutRem,
  614.             'listCoutVoit' => $listCoutVoit,
  615.             'listCoutChauffeur' => $listCoutChauffeur,
  616.             'tri' => $tri,
  617.             'affChauffeur' => $affChauffeur,
  618.         ]);
  619.     }
  620.     #[Route('/new'name'app_facture_new'methods: ['GET''POST'])]
  621.     public function new(Request $requestFactureRepository $factureRepository): Response
  622.     {
  623.         $facture = new Facture();
  624.         $form $this->createForm(FactureType::class, $facture);
  625.         $form->handleRequest($request);
  626.         if ($form->isSubmitted() && $form->isValid()) {
  627.             $facture->setCreatedAt(new \DateTime());
  628.             $factureRepository->save($facturetrue);
  629.             return $this->redirectToRoute('app_facture_index', [], Response::HTTP_SEE_OTHER);
  630.         }
  631.         return $this->renderForm('facture/new.html.twig', [
  632.             'facture' => $facture,
  633.             'form' => $form,
  634.         ]);
  635.     }
  636.     #[Route('/{id}/edit'name'app_facture_edit'methods: ['GET''POST'])]
  637.     public function edit(Request $requestFacture $factureFactureRepository $factureRepository): Response
  638.     {
  639.         $form $this->createForm(FactureType::class, $facture);
  640.         $form->handleRequest($request);
  641.         if ($form->isSubmitted() && $form->isValid()) {
  642.             $factureRepository->save($facturetrue);
  643.             return $this->redirectToRoute('app_facture_index', [], Response::HTTP_SEE_OTHER);
  644.         }
  645.         return $this->renderForm('facture/edit.html.twig', [
  646.             'facture' => $facture,
  647.             'form' => $form,
  648.         ]);
  649.     }
  650.     #[Route('/{id}'name'app_facture_delete'methods: ['POST'])]
  651.     public function delete(Request $requestFacture $factureFactureRepository $factureRepository): Response
  652.     {
  653.         if ($this->isCsrfTokenValid('delete'.$facture->getId(), $request->request->get('_token'))) {
  654.             $factureRepository->remove($facturetrue);
  655.         }
  656.         return $this->redirectToRoute('app_facture_index', [], Response::HTTP_SEE_OTHER);
  657.     }
  658.     #[Route('/delete/{id}'name'app_facture_delete_facture'methods: ['POST'])]
  659.     public function deleteFacture(Request $requestFacture $factureFactureRepository $factureRepositoryManagerRegistry $doctrineFactureDocumentRepository $factureDocumentRepository): Response
  660.     {
  661.         $return = array("valide"=>0);
  662.         $listDocFacture $factureDocumentRepository->findBy(array('facture'=>$facture));
  663.         if(!empty($listDocFacture))
  664.         {
  665.             foreach($listDocFacture as $doc)
  666.             {
  667.                 if(file_exists("../public/upload/facture/"$facture->getCreatedAt()->format('Y') . '/' $facture->getCreatedAt()->format('m') . '/' $facture->getCreatedAt()->format('d') . '/' $facture->getId() .'/'.$doc->getNameFile())) {
  668.                     unlink("../public/upload/facture/".$facture->getCreatedAt()->format('Y') . '/' $facture->getCreatedAt()->format('m') . '/' $facture->getCreatedAt()->format('d') . '/' $facture->getId() .'/'.$doc->getNameFile());
  669.                     $factureDocumentRepository->remove($doctrue);
  670.                 }
  671.             }
  672.         }
  673.         $factureRepository->remove($facturetrue);
  674.         $return['valide'] = 1;
  675.         return new JsonResponse($return);
  676.     }
  677.     #[Route('/deleteFactureDoc/{factureDoc}'name'app_facture_delete_facture_doc'methods: ['GET'])]
  678.     public function deleteFactureDoc(Request $requestFactureDocument $factureDocFactureRepository $factureRepositoryManagerRegistry $doctrineFactureDocumentRepository $factureDocumentRepository): Response
  679.     {
  680.         $return = array("valide"=>0);
  681.         $facture $factureDoc->getFacture();
  682.         if(is_object($facture)) {
  683.             $url $facture->getCreatedAt()->format('Y') . '/' $facture->getCreatedAt()->format('m') . '/' $facture->getCreatedAt()->format('d') . '/' $facture->getId() . '/' $factureDoc->getNameFile();
  684.             if ($url != '') {
  685.                 if (file_exists("../public/upload/facture/" $url)) {
  686.                     unlink("../public/upload/facture/" $url);
  687.                     $factureDocumentRepository->remove($factureDoctrue);
  688.                     $return['valide'] = 1;
  689.                 }
  690.             }
  691.         }
  692.         return new JsonResponse($return);
  693.     }
  694. }