src/Controller/AccueilController.php line 192

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\AbsenceProposition;
  4. use App\Entity\CartePaiement;
  5. use App\Entity\ConsommationCamion;
  6. use App\Entity\InfoChauffeur;
  7. use App\Entity\LavageVehicule;
  8. use App\Entity\MessageAccueil;
  9. use App\Entity\PaletteMouvement;
  10. use App\Entity\PeageAutorouteFacturation;
  11. use App\Entity\PeageAutorouteJustificatif;
  12. use App\Entity\Camion;
  13. use App\Entity\User;
  14. use App\Entity\TourneeReel;
  15. use App\Repository\LavageVehiculeRepository;
  16. use App\Repository\PaletteMouvementRepository;
  17. use App\Repository\RemorqueRepository;
  18. use App\Repository\UserRepository;
  19. use App\Service\PanneService;
  20. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  21. use Symfony\Component\HttpFoundation\Response;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use App\Repository\ImportationRepository;
  24. use App\Repository\CamionRepository;
  25. use Doctrine\Persistence\ManagerRegistry;
  26. use App\Service\CarteCamionUserService;
  27. use App\Service\MaintenanceService;
  28. use App\Service\APISamsaraService;
  29. use App\Service\APIDashDocService;
  30. use App\Service\APIAddSecureService;
  31. class AccueilController extends AbstractController
  32. {
  33.     #[Route('/accueil'name'app_accueil')]
  34.     public function index(ImportationRepository $importationRepository,CamionRepository $camionRepositoryManagerRegistry $doctrine,CarteCamionUserService $carteCamionUserService,MaintenanceService $maintenanceServicePaletteMouvementRepository $paletteMouvementRepository): Response
  35.     {
  36.         $listTourneeSansCA = array();
  37.         $listTourneeSansCMR = array();
  38.         $listPaletteMouv = array();
  39.         if($this->getUser()->getId()==50)
  40.         {
  41.             return $this->redirectToRoute('app_horaire_exploit_mensuel', [], Response::HTTP_SEE_OTHER);
  42.         }
  43.         $em $doctrine->getManager();
  44.         $listCamionProb = array();
  45.         $listCamion $camionRepository->findCamionProblemeNom($this->getUser()->getSystemeClient());
  46.         if(!empty($listCamion))
  47.         {
  48.             foreach($listCamion as $camion)
  49.             {
  50.                 $listCamionProb[] = $camion;
  51.             }
  52.         }
  53.         if($this->getUser()->getSystemeClient()->getId() == 1)
  54.         {//si Lingèvres, non Solubac
  55.             $dateDebPal = new \DateTime();
  56.             $dateDebPal->modify('-1 month');
  57.             $listPM $paletteMouvementRepository->findPaletteMouvementFromDateAndNonVu($dateDebPal);
  58.             if (!empty($listPM)) {
  59.                 foreach ($listPM as $pm) {
  60.                     $listPaletteMouv[$pm->getDate()->format('Y-m-d')][] = $pm;
  61.                 }
  62.             }
  63.         }
  64.         $listAJustifier $em->getRepository(PeageAutorouteJustificatif::class)->findBy(array('valide'=>0));
  65.         $countJustif count($listAJustifier);
  66.         $countFacPeage 0;
  67.         $countConso 0;
  68.         if(date('d')>16)
  69.         {
  70.             $dateDeb = new \DateTime(date('Y-m-16'));
  71.             $dateFin = new \DateTime(date('Y-m-t'));
  72.         }
  73.         else
  74.         {
  75.             $dateDeb = new \DateTime(date('Y-m-01'));
  76.             $dateFin = new \DateTime(date('Y-m-15'));
  77.         }
  78.         $countFacPeage $em->getRepository(PeageAutorouteFacturation::class)->getCountEntre2DateSortie($dateDeb,$dateFin);
  79.         $countConso $em->getRepository(ConsommationCamion::class)->getCountEntre2DateSortie($dateDeb,$dateFin);
  80.         $dateJour = new \DateTime();
  81.         /*$listCarteSansCamion = array();
  82.         $listCarte = $em->getRepository(CartePaiement::class)->findAll();
  83.         if(!empty($listCarte))
  84.         {
  85.             foreach($listCarte as $carte)
  86.             {
  87.                 $returnCCU = $carteCamionUserService->carteGetUser($carte,$dateJour);
  88.                 $camion = $returnCCU['camion'];
  89.                 if($camion==null)
  90.                 {
  91.                     $listCarteSansCamion[] = $carte;
  92.                 }
  93.             }
  94.         }*/
  95.         $listCamionSansUser = array();
  96.         $listCam $em->getRepository(Camion::class)->findBy(array('actif'=>1,'systemeClient'=>$this->getUser()->getSystemeClient(),'typeVehicule'=>1));
  97.         if(!empty($listCam))
  98.         {
  99.             foreach($listCam as $camion)
  100.             {
  101.                 $returnCCU $carteCamionUserService->camionGetUser($camion,$dateJour);
  102.                 $user $returnCCU['user'];
  103.                 if($user==null)
  104.                 {
  105.                     $listCamionSansUser[] = $camion;
  106.                 }
  107.             }
  108.         }
  109.         $nbrAbsenceProp 0;
  110.         $listPropAbsence $em->getRepository(AbsenceProposition::class)->findBy(array('traite'=>0));
  111.         if(!empty($listPropAbsence)) {
  112.             foreach ($listPropAbsence as $propAbsence) {
  113.                 $nbrAbsenceProp++;
  114.             }
  115.         }
  116.         /*$listTourneeSansCA = array();
  117.         $listTourneeSansCMR = array();
  118.         if($this->getUser()->getSystemeClient()->getId()==1) {
  119.             $date2W = new \DateTime();
  120.             $date2W->modify("-2 weeks");
  121.             $listTourneeBDD = $em->getRepository(TourneeReel::class)->getTourneeReelSansCAPlusAncienQueDate($date2W);
  122.             if (!empty($listTourneeBDD)) {
  123.                 foreach ($listTourneeBDD as $tournee) {
  124.                     $listTourneeSansCA[$tournee->getId()] = $tournee->getCodeLingevres();
  125.                 }
  126.             }
  127.             $listTourneeBDD = $em->getRepository(TourneeReel::class)->getTourneeReelSansCMRPlusAncienQueDate($date2W);
  128.             if (!empty($listTourneeBDD)) {
  129.                 foreach ($listTourneeBDD as $tournee) {
  130.                     $listTourneeSansCMR[$tournee->getId()] = $tournee->getCodeLingevres();
  131.                 }
  132.             }
  133.         }*/
  134.         //rappel maintenance
  135.         $listEchCamUrg $maintenanceService->getEcheanceUrgente(1,$this->getUser()->getSystemeClient());
  136.         $listEchRemUrg $maintenanceService->getEcheanceUrgente(2,$this->getUser()->getSystemeClient());
  137.         //rappel date permis...
  138.         $dateFutur = new \DateTime();
  139.         $dateFutur->modify('+3 month');
  140.         $listDatePermis $em->getRepository(InfoChauffeur::class)->getInfoChaffeurAvantDate($dateFutur,'dateValidPermis');
  141.         $listDateValidFCO $em->getRepository(InfoChauffeur::class)->getInfoChaffeurAvantDate($dateFutur,'dateValidFCO');
  142.         $listDateVisiteMedicale $em->getRepository(InfoChauffeur::class)->getInfoChaffeurAvantDate($dateFutur,'dateVisiteMedicale');
  143.         $listDateValidCartConduc $em->getRepository(InfoChauffeur::class)->getInfoChaffeurAvantDate($dateFutur,'dateValidCartConduc');
  144.         $date3Week = new \DateTime();
  145.         $date3Week->modify('-3 weeks');
  146.         $listMsg $em->getRepository(MessageAccueil::class)->getMessageAccueilFromDate($date3Week);
  147.         return $this->render('accueil/index.html.twig', [
  148.             'controller_name' => 'AccueilController',
  149.             'listCamionProb'=>$listCamionProb,
  150.             'countJustif'=>$countJustif,
  151.             'countFacPeage'=>$countFacPeage,
  152.             'countConso'=>$countConso,
  153.             'dateDeb'=>$dateDeb,
  154.             'dateFin'=>$dateFin,
  155.             //'listCarteSansCamion'=>$listCarteSansCamion,
  156.             'listCamionSansUser'=>$listCamionSansUser,
  157.             'countEchCamUrg'=>$listEchCamUrg['nbrVehiConcern'],
  158.             'countEchRemUrg'=>$listEchRemUrg['nbrVehiConcern'],
  159.             'listTourneeSansCA'=>$listTourneeSansCA,
  160.             'listTourneeSansCMR'=>$listTourneeSansCMR,
  161.             'listDatePermis'=>$listDatePermis,
  162.             'listDateValidFCO'=>$listDateValidFCO,
  163.             'listDateVisiteMedicale'=>$listDateVisiteMedicale,
  164.             'listDateValidCartConduc'=>$listDateValidCartConduc,
  165.             'listPaletteMouv'=>$listPaletteMouv,
  166.             'listMsg'=>$listMsg,
  167.             'nbrAbsenceProp'=>$nbrAbsenceProp,
  168.         ]);
  169.     }
  170.     #[Route('/'name'app_accueil2')]
  171.     public function index2(ImportationRepository $importationRepository,CamionRepository $camionRepositoryManagerRegistry $doctrine,CarteCamionUserService $carteCamionUserService,MaintenanceService $maintenanceService): Response
  172.     {
  173.         if($this->getUser()->getId()==50)
  174.         {
  175.             return $this->redirectToRoute('app_horaire_exploit_mensuel', [], Response::HTTP_SEE_OTHER);
  176.         }
  177.         $em $doctrine->getManager();
  178.         $listCamionProb = array();
  179.         $listCamion $camionRepository->findCamionProblemeNom($this->getUser()->getSystemeClient());
  180.         if(!empty($listCamion))
  181.         {
  182.             foreach($listCamion as $camion)
  183.             {
  184.                 $listCamionProb[] = $camion;
  185.             }
  186.         }
  187.         $listAJustifier $em->getRepository(PeageAutorouteJustificatif::class)->findBy(array('valide'=>0));
  188.         $countJustif count($listAJustifier);
  189.         $countFacPeage 0;
  190.         $countConso 0;
  191.         if(date('d')>16)
  192.         {
  193.             $dateDeb = new \DateTime(date('Y-m-16'));
  194.             $dateFin = new \DateTime(date('Y-m-t'));
  195.         }
  196.         else
  197.         {
  198.             $dateDeb = new \DateTime(date('Y-m-01'));
  199.             $dateFin = new \DateTime(date('Y-m-15'));
  200.         }
  201.         $countFacPeage $em->getRepository(PeageAutorouteFacturation::class)->getCountEntre2DateSortie($dateDeb,$dateFin);
  202.         $countConso $em->getRepository(ConsommationCamion::class)->getCountEntre2DateSortie($dateDeb,$dateFin);
  203.         $dateJour = new \DateTime();
  204.         /*$listCarteSansCamion = array();
  205.         $listCarte = $em->getRepository(CartePaiement::class)->findAll();
  206.         if(!empty($listCarte))
  207.         {
  208.             foreach($listCarte as $carte)
  209.             {
  210.                 $returnCCU = $carteCamionUserService->carteGetUser($carte,$dateJour);
  211.                 $camion = $returnCCU['camion'];
  212.                 if($camion==null)
  213.                 {
  214.                     $listCarteSansCamion[] = $carte;
  215.                 }
  216.             }
  217.         }*/
  218.         $listCamionSansUser = array();
  219.         $listCam $em->getRepository(Camion::class)->findBy(array('actif'=>1,'systemeClient'=>$this->getUser()->getSystemeClient(),'typeVehicule'=>1));
  220.         if(!empty($listCam))
  221.         {
  222.             foreach($listCam as $camion)
  223.             {
  224.                 $returnCCU $carteCamionUserService->camionGetUser($camion,$dateJour);
  225.                 $user $returnCCU['user'];
  226.                 if($user==null)
  227.                 {
  228.                     $listCamionSansUser[] = $camion;
  229.                 }
  230.             }
  231.         }
  232.         $listTourneeSansCA = array();
  233.         $listTourneeSansCMR = array();
  234.         if($this->getUser()->getSystemeClient()->getId()==1) {
  235.             $date2W = new \DateTime();
  236.             $date2W->modify("-2 weeks");
  237.             $listTourneeBDD $em->getRepository(TourneeReel::class)->getTourneeReelSansCAPlusAncienQueDate($date2W);
  238.             if (!empty($listTourneeBDD)) {
  239.                 foreach ($listTourneeBDD as $tournee) {
  240.                     $listTourneeSansCA[$tournee->getId()] = $tournee->getCodeLingevres();
  241.                 }
  242.             }
  243.             $listTourneeBDD $em->getRepository(TourneeReel::class)->getTourneeReelSansCMRPlusAncienQueDate($date2W);
  244.             if (!empty($listTourneeBDD)) {
  245.                 foreach ($listTourneeBDD as $tournee) {
  246.                     $listTourneeSansCMR[$tournee->getId()] = $tournee->getCodeLingevres();
  247.                 }
  248.             }
  249.         }
  250.         //rappel maintenance
  251.         $listEchCamUrg $maintenanceService->getEcheanceUrgente(1,$this->getUser()->getSystemeClient());
  252.         $listEchRemUrg $maintenanceService->getEcheanceUrgente(2,$this->getUser()->getSystemeClient());
  253.         //rappel date permis...
  254.         $dateFutur = new \DateTime();
  255.         $dateFutur->modify('+3 month');
  256.         $listDatePermis $em->getRepository(InfoChauffeur::class)->getInfoChaffeurAvantDate($dateFutur,'dateValidPermis');
  257.         $listDateValidFCO $em->getRepository(InfoChauffeur::class)->getInfoChaffeurAvantDate($dateFutur,'dateValidFCO');
  258.         $listDateVisiteMedicale $em->getRepository(InfoChauffeur::class)->getInfoChaffeurAvantDate($dateFutur,'dateVisiteMedicale');
  259.         $listDateValidCartConduc $em->getRepository(InfoChauffeur::class)->getInfoChaffeurAvantDate($dateFutur,'dateValidCartConduc');
  260.         $date3Week = new \DateTime();
  261.         $date3Week->modify('-3 weeks');
  262.         $listMsg $em->getRepository(MessageAccueil::class)->getMessageAccueilFromDate($date3Week);
  263.         return $this->render('accueil/index.html.twig', [
  264.             'controller_name' => 'AccueilController',
  265.             'listCamionProb'=>$listCamionProb,
  266.             'countJustif'=>$countJustif,
  267.             'countFacPeage'=>$countFacPeage,
  268.             'countConso'=>$countConso,
  269.             'dateDeb'=>$dateDeb,
  270.             'dateFin'=>$dateFin,
  271.             //'listCarteSansCamion'=>$listCarteSansCamion,
  272.             'listCamionSansUser'=>$listCamionSansUser,
  273.             'countEchCamUrg'=>$listEchCamUrg['nbrVehiConcern'],
  274.             'countEchRemUrg'=>$listEchRemUrg['nbrVehiConcern'],
  275.             'listTourneeSansCA'=>$listTourneeSansCA,
  276.             'listTourneeSansCMR'=>$listTourneeSansCMR,
  277.             'listDatePermis'=>$listDatePermis,
  278.             'listDateValidFCO'=>$listDateValidFCO,
  279.             'listDateVisiteMedicale'=>$listDateVisiteMedicale,
  280.             'listDateValidCartConduc'=>$listDateValidCartConduc,
  281.             'listMsg'=>$listMsg
  282.         ]);
  283.     }
  284.     #[Route('/getNbrPassageCaen'name'app_getNbrPassageCaen')]
  285.     public function getNbrPassageCaen(ImportationRepository $importationRepositoryManagerRegistry $doctrine,APISamsaraService $APISamsaraService): Response
  286.     {
  287.         $APISamsaraService->getNbrPassageCaen();
  288.     }
  289.     #[Route('/generer_lavage'name'app_generer_lavage')]
  290.     public function genererLavage(ImportationRepository $importationRepository,RemorqueRepository $remorqueRepositoryManagerRegistry $doctrineUserRepository $userRepositoryLavageVehiculeRepository $lavageVehiculeRepository): Response
  291.     {
  292.         $listRem $remorqueRepository->findAllRemorque($this->getUser()->getSystemeClient())->getQuery()
  293.             ->getResult();
  294.         $listChauffeur = array();
  295.         $listChauffeurBDD $userRepository->findAllChauffeur($this->getUser()->getSystemeClient());
  296.         foreach($listChauffeurBDD as $chauf)
  297.         {
  298.             $listChauffeur[$chauf->getId()] = $chauf;
  299.         }
  300.         $startDate = new \DateTime();
  301.         $startDate->modify('-10 months');
  302.         foreach ($listRem as $rem) {
  303.             echo "Remorque: " $rem->getNumero() . " - Date: " $startDate->format('d/m/Y') . "<br>";
  304.             // Boucle pour générer les dates jusqu'à aujourd’hui
  305.             while ($startDate < new \DateTime()) {
  306.                 // Ajouter entre 12 et 15 jours
  307.                 $daysToAdd rand(1215);
  308.                 $startDate->modify("+$daysToAdd days");
  309.                 if($startDate->format('w')==0)
  310.                 {
  311.                     $startDate->modify("+1 days");
  312.                 }
  313.                 // Vérifier qu'on ne dépasse pas la date d'aujourd'hui
  314.                 if ($startDate > new \DateTime()) {
  315.                     break;
  316.                 }
  317.                 if (rand(115) === 1) {
  318.                     echo "<br />";
  319.                 } else {
  320.                     // Choix du chauffeur : environ 1 fois sur 2, ce sera l'ID 50
  321.                     if (rand(01) === && isset($listChauffeur[50])) {
  322.                         $selectedChauffeur $listChauffeur[50];
  323.                     } else {
  324.                         // Prendre un chauffeur au hasard parmi la liste (hors ID 50 si possible)
  325.                         $filteredChauffeurs array_filter($listChauffeur, fn($id) => $id !== 50ARRAY_FILTER_USE_KEY);
  326.                         // Si la liste filtrée est vide (par exemple, si seul l'ID 50 existe), on le prend quand même
  327.                         if (!empty($filteredChauffeurs)) {
  328.                             $selectedChauffeur $filteredChauffeurs[array_rand($filteredChauffeurs)];
  329.                         } else {
  330.                             $selectedChauffeur $listChauffeur[50]; // Fallback si 50 est le seul dispo
  331.                         }
  332.                     }
  333.                     echo "Chauffeur sélectionné : " $selectedChauffeur->getId();
  334.                     echo "Remorque: " $rem->getNumero() . " - Date: " $startDate->format('d/m/Y') . "<br>";
  335.                     $lavage = new LavageVehicule();
  336.                     $lavage->setCreated(new \DateTime());
  337.                     $lavage->setRemorque($rem);
  338.                     $lavage->setCamion(null);
  339.                     $lavage->setUser($selectedChauffeur);
  340.                     $lavage->setDate($startDate);
  341.                     $lavage->setSystemeClient($this->getUser()->getSystemeClient());
  342.                     $lavage->setExterieur(1);
  343.                     $lavage->setInterieur(1);
  344.                     $lavage->setDesinfection(0);
  345.                     $lavageVehiculeRepository->save($lavagetrue);
  346.                 }
  347.             }
  348.             // Remettre la date de départ à 8 mois avant pour la prochaine remorque
  349.             $startDate = new \DateTime();
  350.             $startDate->modify('-10 months');
  351.         }
  352.         foreach ($listRem as $rem) {
  353.             echo "Remorque: ".$rem->getNumero()." - Date: " $startDate->format('d/m/Y') . "<br>";
  354.             // Boucle pour générer les dates jusqu'à aujourd’hui
  355.             while ($startDate < new \DateTime()) {
  356.                 $daysToAdd rand(2832);
  357.                 $startDate->modify("+$daysToAdd days");
  358.                 if($startDate->format('w')==0)
  359.                 {
  360.                     $startDate->modify("+1 days");
  361.                 }
  362.                 // Vérifier qu'on ne dépasse pas la date d'aujourd'hui
  363.                 if ($startDate > new \DateTime()) {
  364.                     break;
  365.                 }
  366.                 if (rand(115) === 1) {
  367.                     echo "<br />";
  368.                 } else {
  369.                     // Choix du chauffeur : environ 1 fois sur 2, ce sera l'ID 50
  370.                     if (rand(01) === && isset($listChauffeur[50])) {
  371.                         $selectedChauffeur $listChauffeur[50];
  372.                     } else {
  373.                         // Prendre un chauffeur au hasard parmi la liste (hors ID 50 si possible)
  374.                         $filteredChauffeurs array_filter($listChauffeur, fn($id) => $id !== 50ARRAY_FILTER_USE_KEY);
  375.                         // Si la liste filtrée est vide (par exemple, si seul l'ID 50 existe), on le prend quand même
  376.                         if (!empty($filteredChauffeurs)) {
  377.                             $selectedChauffeur $filteredChauffeurs[array_rand($filteredChauffeurs)];
  378.                         } else {
  379.                             $selectedChauffeur $listChauffeur[50]; // Fallback si 50 est le seul dispo
  380.                         }
  381.                     }
  382.                     echo "Chauffeur sélectionné : " $selectedChauffeur->getId();
  383.                     echo "Remorque: " $rem->getNumero() . " - Date: " $startDate->format('d/m/Y') . "<br>";
  384.                     $lavage2 = new LavageVehicule();
  385.                     $lavage2->setCreated(new \DateTime());
  386.                     $lavage2->setRemorque($rem);
  387.                     $lavage2->setCamion(null);
  388.                     $lavage2->setUser($selectedChauffeur);
  389.                     $lavage2->setDate($startDate);
  390.                     $lavage2->setSystemeClient($this->getUser()->getSystemeClient());
  391.                     $lavage2->setExterieur(0);
  392.                     $lavage2->setInterieur(0);
  393.                     $lavage2->setDesinfection(1);
  394.                     $lavageVehiculeRepository->save($lavage2,true);
  395.                 }
  396.             }
  397.             // Remettre la date de départ à 8 mois avant pour la prochaine remorque
  398.             $startDate = new \DateTime();
  399.             $startDate->modify('-10 months');
  400.         }
  401.     }
  402.     #[Route('/test'name'app_test')]
  403.     public function test(ImportationRepository $importationRepository,ManagerRegistry $doctrineAPIDashDocService $APIDashDocServiceAPISamsaraService $APISamsaraServiceCarteCamionUserService $carteCamionUserService PanneService $panneServiceAPIAddSecureService $addSecureService): Response
  404.     {
  405.         $em $doctrine->getManager();
  406.         $lat 48.75044;
  407.         $lon 2.38631;
  408.         //$addSecureService->getVilleByCoordonnees($lat,$lon);
  409.         $startRequete = new \DateTime('2026-06-08 00:00:00');
  410.         $endRequete = new \DateTime('2026-06-18 00:00:00');
  411.         //$addSecureService->importUser();
  412.         //$addSecureService->importVehicule();
  413.         /*$userRepo = $em->getRepository(User::class);
  414.         $chauffeur = $userRepo->find(21);
  415.         $addSecureService->importTachograph($startRequete,$endRequete,$chauffeur);*/
  416.         /*$dateDeb = new \DateTime('2026-06-08');
  417.         $APISamsaraService->majDeclarationChauf(1, 10, $dateDeb,$chauffeur);
  418.         $dateDeb = new \DateTime('2026-06-18');
  419.         $addSecureService->importAPILocalisation(1, $dateDeb,10,$chauffeur);
  420.         $dateDeb = new \DateTime('2026-06-01 15:30:00');
  421.         $dateFin = new \DateTime('2026-06-02 00:41:00');*/
  422.         $date = new \DateTime();
  423.         $date->modify('-4 days');
  424.         var_dump($date);
  425.         $addSecureService->fillDBCoordonates(10,$date);
  426.         //$addSecureService->getNbrPassageCaen(1);
  427.         /*$client = new \GuzzleHttp\Client([
  428.             'timeout' => 10,
  429.             'connect_timeout' => 5,
  430.             'http_errors' => false, // important
  431.             'handler' => \GuzzleHttp\HandlerStack::create(
  432.                 new \GuzzleHttp\Handler\StreamHandler()
  433.             ),
  434.         ]);
  435.         $res = $client->request('GET', 'https://nominatim.openstreetmap.org/reverse', [
  436.             'query' => [
  437.                 'format' => 'jsonv2',
  438.                 'lat' => $lat,
  439.                 'lon' => $lon,
  440.             ],
  441.             'headers' => [
  442.                 'User-Agent' => 'LingevresTransport/1.0 (contact: jean-marc.reynaud@solubac.fr)',
  443.                 'Accept' => 'application/json',
  444.             ],
  445.             'timeout' => 10,
  446.             'curl' => [
  447.                 CURLOPT_FORBID_REUSE => true,
  448.                 CURLOPT_FRESH_CONNECT => true,
  449.             ],
  450.             //'verify' => false, // only for debugging
  451.         ]);
  452.         $data = json_decode($res->getBody()->getContents(), true);
  453.         //$data = json_decode($response, true);
  454.         var_dump($data);*/
  455.         //$addSecureService->getKMByDateUserBetween2Date($dateDeb,$dateFin,$chauffeur);
  456.         /*$WebPage = "";
  457.         $serverDBI = "dbi-production-sql-server.database.windows.net";
  458.         $connectionOptionsDBI = array(
  459.             "Database" => "DBI_FR11968",
  460.             "Uid" => "usr_FR11968",
  461.             "PWD" => "QnKigYKt95uUED7c",
  462.             "Encrypt" => true,
  463.             "TrustServerCertificate"=>true,
  464.             "CharacterSet" => "UTF-8"
  465.         );
  466.         // DBI Conector
  467.         $connDBI = sqlsrv_connect($serverDBI, $connectionOptionsDBI);
  468.         $DBIErrs = false;
  469.         if ($connDBI)
  470.         {
  471.             $tsqlDBI= "select * from [User]";*/
  472.             /*$tsqlDBI= "select *,dateadd(s,Timestamp/1000,'19700101 01:00:00') from StartStopEvent s ,StartStopEventType t
  473. where s.startstopeventTypeId = t.id and  
  474. dateadd(s,Timestamp/1000,'19700101 01:00:00')>'20260529 00:00:00'  
  475. and dateadd(s,Timestamp/1000,' 19700101 01:00:00') < '20260529 05:00:00'
  476. and userId = 73
  477. order by vehicleid,timestamp ";*/
  478.             /*$tsqlDBI= "select d.id,cardslot,[value],vehicleid,userId,
  479. dateadd(s,startTimestamp/1000,'19700101 01:00:00')datestart, 
  480. dateadd(s,endTimestamp/1000,'19700101 01:00:00') dateStop, 
  481. startlatitude,startLongitude,endLatitude,endLongitude, 
  482. startMileage/1000.0 as kmdebut,endMileage/1000.0 as kmfin 
  483. ,t.[value] from DrtTachographActivityPeriod d left join tachographActivity t on 
  484. d.tachographActivity = t.id  
  485. where
  486. userId = 73 and
  487. dateadd(s,startTimestamp/1000,'19700101 01:00:00')> '20260529 00:00:00'  
  488. and dateadd(s,endTimestamp/1000,'19700101 01:00:00')< '20260530 00:00:00' 
  489. order by starttimestamp ";*/
  490.             /*$tsqlDBI= "select
  491. v.licenseplateNumber,v.externalid,l.latitude,l.longitude,l.speed,u.lastname,u.firstname
  492. e,u.id from LastPositionVehicle l 
  493. left join vehicle v on l.vehicleId = v.id 
  494. left join [user] u on l.userid = u.id 
  495. order by licensePlateNumber";*/
  496.             /*$tsqlDBI= "select u.id,u.userName,u.firstName,u.LastName,u.tachographCardId,g.name,g.Id
  497. from [user] u 
  498. left join [Usergroup] ug on u.id = ug.userid
  499. left join [group] g on ug.groupid = g.id ";*/
  500.             /*$tsqlDBI= "select dateadd(s,timestamp/1000,'19700101 01:00:00') date,position.* from position
  501. ,vehicle  
  502. where position.vehicleid = vehicle.id 
  503. and vehicle.id =1
  504. and dateadd(s,timestamp/1000,'19700101 01:00:00') >'20260525 00:00:00'  
  505. and dateadd(s,timestamp/1000,'19700101 01:00:00') <'20260526 00:00:00' 
  506. order by vehicleid, timestamp ";*/
  507. /*
  508.             $i=0;
  509.             $getResults= sqlsrv_query($connDBI, $tsqlDBI);
  510.             //var_dump(count($getResults));
  511.             var_dump($getResults);
  512.             if ($getResults == FALSE)
  513.             {
  514.                 $WebPage .= print_r( sqlsrv_errors(), true);
  515.                 $DBIErrs = sqlsrv_errors();
  516.             }
  517.             else
  518.             {
  519.                 if(sqlsrv_has_rows($getResults))
  520.                 {
  521.                     while ($rowIP = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC))
  522.                     {
  523.                         var_dump($rowIP); // chaque enregistrement de la requette
  524.                         $i++;
  525.                     }
  526.                 }
  527.                 sqlsrv_free_stmt($getResults);
  528.             }
  529.             sqlsrv_close( $connDBI );
  530.         }
  531.         else
  532.         {
  533.             $WebPage .= print_r( sqlsrv_errors(), true);
  534.             $DBIErrs = sqlsrv_errors();
  535.         }
  536.         echo $WebPage;
  537.         var_dump($i);*/
  538.         //$panneService->sendMailRappelPanne();
  539.         //$date = new \DateTime('2026-02-06');
  540.         $dateTime = new \DateTime();
  541.         //$carteCamionUserService->getChauffeurByCamionSamsara(19, $date);
  542.         //$carteCamionUserService->getCamionByChauffeurSamsara(24, $date);
  543.         //$APISamsaraService->getNbrPassageCaen();
  544.         //$APISamsaraService->getLocalisationByBRAndWO($date,$date2);
  545.         //$APISamsaraService->importAPIDriverUseTruck();
  546.         //$APISamsaraService->alerteMailTpsMensuel(new \DateTime());
  547.         //$APISamsaraService->importTachograph(1,new \DateTime('2025-12-31'));
  548.         $date = new \DateTime("2025-12-28");
  549.         //$date->modify('-10 days');
  550.         //$APISamsaraService->majDeclarationChauf(1, 10,$date);
  551.         /*$chauffeur = $em->getRepository(User::class)->find(34);
  552.         $APISamsaraService->getLocalisationByBRAndWO();*/
  553.         /*$date = new \DateTime('2025-12-24');
  554.         $date2 = new \DateTime('2026-04-27');
  555.         $APISamsaraService->importInfoCamion();
  556.         $APISamsaraService->importAPIDriverUseTruck($date);
  557.         $chauffeur = $em->getRepository(User::class)->find(34);
  558.         $APISamsaraService->importAPILocalisation(1,$date2,5,$chauffeur);*/
  559.         //$APISamsaraService->calculKmTracteur(1,$date);
  560.         //$APISamsaraService->alerteMailTpsTravSiPlusLimite(new \DateTime('2025-05-12'));
  561.         //$APISamsaraService->calculKmTracteur(1,new \DateTime('2025-09-09'));
  562.         //$APIDashDocService->importDashDocTelephone(1);
  563.         /*$url = "https://api.dashdoc.eu/api/v4/manager-truckers/";
  564.         //$url = "https://api.dashdoc.eu/api/v4/manager-truckers/32305029";
  565.         //$url = "https://api.dashdoc.eu/api/v4/vehicles/";
  566.         $token = "92a9bdfe6ffd8d9a2977a6be680017f26798218a"; // replace with your token
  567.         $ch = curl_init($url);
  568.         curl_setopt($ch, CURLOPT_CAINFO, "C:/php/cacert.pem"); // path to your file
  569.         curl_setopt_array($ch, [
  570.             CURLOPT_RETURNTRANSFER => true,
  571.             CURLOPT_HTTPHEADER => [
  572.                 "Authorization: Token $token"
  573.             ]
  574.         ]);
  575.         $response = curl_exec($ch);
  576.         if (curl_errno($ch)) {
  577.             echo "cURL error: " . curl_error($ch);
  578.         } else {
  579.             $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  580.             if ($httpcode === 200) {
  581.                 $data = json_decode($response, true);
  582.                 $em = $doctrine->getManager();
  583.                 $userRepo = $em->getRepository(User::class);
  584.                 if (isset($data['results'])) {
  585.                     foreach ($data['results'] as $trucker) {
  586.                         $exp = explode(' ',$trucker['display_name']);
  587.                         if(!empty($exp))
  588.                         {
  589.                             $phone = str_replace('+33','0',$trucker['phone_number']);
  590.                             $nom = $exp[0];
  591.                             $prenom = $exp[1];
  592.                             $user = $userRepo->findOneBy(array('nom'=>$nom,'prenom'=>$prenom));
  593.                             if(is_object($user))
  594.                             {
  595.                                 echo $user->getId().' '.$user->getNom().' '.$user->getPrenom().'<br />';
  596.                                 $user->setTelephonePro($phone);
  597.                                 $userRepo->save($user,true);
  598.                             }
  599.                         }
  600.                     }
  601.                 }
  602.             } else {
  603.                 echo "HTTP code: $httpcode\n";
  604.                 echo "Response: $response\n";
  605.             }
  606.         }
  607.         curl_close($ch);*/
  608.     }
  609. }