src/Controller/API/APIDeclarationChauffeurController.php line 259

  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: JMR
  5.  * Date: 31/03/2025
  6.  * Time: 17:29
  7.  */
  8. namespace App\Controller\API;
  9. use App\Entity\CarburantType;
  10. use App\Entity\ConsoCarburantChauffeur;
  11. use App\Entity\DeclarationChauffeur;
  12. use App\Entity\User;
  13. use App\Entity\Camion;
  14. use App\Entity\LavageVehicule;
  15. use App\Entity\Remorque;
  16. use App\Repository\AbsenceRepository;
  17. use App\Entity\VilleFrance;
  18. use App\Repository\CarburantTypeRepository;
  19. use App\Repository\ConsoCarburantChauffeurRepository;
  20. use App\Repository\DeclarationChauffeurRepository;
  21. use App\Repository\VilleFranceRepository;
  22. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  23. use Symfony\Component\HttpKernel\Attribute\AsController;
  24. use Symfony\Component\HttpFoundation\JsonResponse;
  25. use Doctrine\ORM\EntityManagerInterface;
  26. use Symfony\Component\Serializer\SerializerInterface;
  27. use Symfony\Component\HttpFoundation\Request;
  28. use Symfony\Component\HttpFoundation\File\UploadedFile;
  29. use Symfony\Component\Validator\Constraints\DateTime;
  30. use Doctrine\Persistence\ManagerRegistry;
  31. use Symfony\Component\Security\Core\Security;
  32. use PHPMailer\PHPMailer\PHPMailer;
  33. use PHPMailer\PHPMailer\Exception;
  34. use Symfony\Component\Routing\Annotation\Route;
  35. #[Route('/api_declaration_chauffeur'name'api_declaration_chauffeur')]
  36. class APIDeclarationChauffeurController extends AbstractController
  37. {
  38.     private $serializer;
  39.     private $em;
  40.     private $security;
  41.     public function __construct(EntityManagerInterface $emSerializerInterface $serializerSecurity $security)
  42.     {
  43.         $this->serializer $serializer;
  44.         $this->em $em;
  45.         $this->security $security;
  46.     }
  47.     #[Route('/get_declaration_chauffeur_par_date/{date}'name'app_api_declaration_chauffeur_get_declaration_chauffeur_par_date'methods: ['GET'])]
  48.     public function GetDeclarationChauffeurParDateAction(Request $request,ManagerRegistry $doctrine$dateDeclarationChauffeurRepository $declarationChauffeurRepository)
  49.     {
  50.         $return = array('date'=>'','heureDepart'=>'','heureArrivee'=>'','villeDepartId'=>'','villeArriveeId'=>'',
  51.             'villeDepartNom'=>'','villeArriveeNom'=>'','pdj'=>'','rmidi'=>'','rsoir'=>'','rgd'=>'','rnuit'=>'',
  52.             'retourVoiture'=>'','id'=>'',);
  53.         $user $this->security->getUser();
  54.         if (!$user) {
  55.             return $this->json(['error' => 'User not authenticated'], 401);
  56.         }
  57.         $dateTime = new \DateTime($date);
  58.         $declChauf $declarationChauffeurRepository->findOneBy(array('date'=>$dateTime,'user'=>$user));
  59.         if(is_object($declChauf))
  60.         {
  61.             $villeArriveeId null;
  62.             $villeArriveeNom null;
  63.             try {
  64.                 if($declChauf->getVilleArrivee()!==null)
  65.                 {
  66.                     $villeArriveeId $declChauf->getVilleArrivee()->getId();
  67.                     $villeArriveeNom $declChauf->getVilleArrivee()->getVilleNomReel();
  68.                 }
  69.             } catch (\Doctrine\ORM\EntityNotFoundException $e) {
  70.                 // Handle the broken relation gracefully
  71.                 $villeArriveeId null;
  72.                 $villeArriveeNom null;
  73.             }
  74.             $return['date'] = $declChauf->getDate()->format('Y-m-d');
  75.             $return['heureDepart'] = $declChauf->getHeureDepart()->format('H:i:s');
  76.             $return['heureArrivee'] = $declChauf->getHeureArrivee()->format('H:i:s');
  77.             $return['villeDepartId'] = $declChauf->getVilleDepart()->getId();
  78.             $return['villeArriveeId'] = $villeArriveeId;
  79.             $return['villeDepartNom'] = $declChauf->getVilleDepart()->getVilleNomReel();
  80.             $return['villeArriveeNom'] = $villeArriveeNom;
  81.             $return['created'] = $declChauf->getCreated()->format('Y-m-d');
  82.             $return['pdj'] = $declChauf->getPdj();
  83.             $return['rmidi'] = $declChauf->getRnuit();
  84.             $return['rsoir'] = $declChauf->getRsoir();
  85.             $return['rnuit'] = $declChauf->getRnuit();
  86.             $return['retourVoiture'] = "0";
  87.             if($declChauf->getHeureVoitureAvant()->format('H:i')=='02:00')
  88.             {
  89.                 $return['retourVoiture'] = "CT";
  90.             }
  91.             else if($declChauf->getHeureVoitureAvant()->format('H:i')=='00:50')
  92.             {
  93.                 $return['retourVoiture'] = "CV";
  94.             }
  95.             else if($declChauf->getHeureVoitureApres()->format('H:i')=='02:00')
  96.             {
  97.                 $return['retourVoiture'] = "TC";
  98.             }
  99.             else if($declChauf->getHeureVoitureApres()->format('H:i')=='00:50')
  100.             {
  101.                 $return['retourVoiture'] = "VC";
  102.             }
  103.             $return['id'] = $declChauf->getId();
  104.         }
  105.         return new JsonResponse($return);
  106.     }
  107.     #[Route('/declaration_chauffeurs'name'app_api_declaration_carburant_declaration_chauffeurs'methods: ['POST'])]
  108.     public function declarationChauffeursAction(Request $requestVilleFranceRepository $villeFranceRepository)
  109.     {
  110.         $data json_decode($request->getContent(), true);
  111.         // Check if data is valid
  112.         if (!$data) {
  113.             return new JsonResponse(['error' => 'Invalid JSON'], 400);
  114.         }
  115.         $user $this->security->getUser();
  116.         if (!$user) {
  117.             return $this->json(['error' => 'User not authenticated'], 401);
  118.         }
  119.         $return = array('valide' => 0,'msg'=>'');
  120.         $idDeclaration $data['idDeclaration'] ?? null;
  121.         $date $data['date'] ?? null;
  122.         $heureDepart $data['heureDepart'] ?? null;
  123.         $heureArrivee $data['heureArrivee'] ?? null;
  124.         $villeDepartId $data['villeDepartId'] ?? null;
  125.         $villeArriveeId $data['villeArriveeId'] ?? null;
  126.         $pdj $data['pdj'] ?? null;
  127.         $rmidi $data['rmidi'] ?? null;
  128.         $rsoir $data['rsoir'] ?? null;
  129.         $rgd $data['rgd'] ?? null;
  130.         $rnuit $data['rnuit'] ?? null;
  131.         $i $data['i'] ?? null;
  132.         $retourVoiture $data['retourVoiture'] ?? 0;
  133.         if(is_numeric($villeDepartId) )//&& is_numeric($villeArriveeId)
  134.         {
  135.             $villeDepart $villeFranceRepository->find($villeDepartId);
  136.             $villeArrivee null;
  137.             if(is_numeric($villeArriveeId))
  138.             {
  139.                 $villeArrivee $villeFranceRepository->find($villeArriveeId);
  140.             }
  141.             $heureDepartDT = new \DateTime($heureDepart);
  142.             $heureArriveeDT = new \DateTime($heureArrivee);
  143.             $dateTime = new \DateTime($date);
  144.             if($dateTime < new \DateTime()) {
  145.                 $declChaufRepository $this->em->getRepository(DeclarationChauffeur::class);
  146.                 if (is_object($villeDepart)) {
  147.                     if ($idDeclaration != null) {//si modif
  148.                         $declaChauf $declChaufRepository->find($idDeclaration);
  149.                         $declaChauf->setDate(new \DateTime($date));
  150.                         $declaChauf->setHeureDepart($heureDepartDT);
  151.                         $declaChauf->setHeureArrivee($heureArriveeDT);
  152.                         $declaChauf->setVilleDepart($villeDepart);
  153.                         if (is_object($villeArrivee)) {
  154.                             $declaChauf->setVilleArrivee($villeArrivee);
  155.                         }
  156.                         $declaChauf->setPdj($pdj);
  157.                         $declaChauf->setRmidi($rmidi);
  158.                         $declaChauf->setRgd($rgd);
  159.                         $declaChauf->setRnuit($rnuit);
  160.                         $declaChauf->setRsoir($rsoir);
  161.                         $declaChauf->setAmp(new \DateTime('00:00:00'));
  162.                         $declaChauf->setServ(new \DateTime('00:00:00'));
  163.                         $declaChauf->setCond(new \DateTime('00:00:00'));
  164.                         $declaChauf->setTrav(new \DateTime('00:00:00'));
  165.                         $declaChauf->setCoup(new \DateTime('00:00:00'));
  166.                         $declaChauf->setHeureNuit(new \DateTime('00:00:00'));
  167.                         $declaChauf->setAv(new \DateTime('00:00:00'));
  168.                         if ($retourVoiture == "CT") {
  169.                             $declaChauf->setHeureVoitureAvant(new \DateTime('02:00:00'));
  170.                             $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  171.                         } else if ($retourVoiture == "TC") {
  172.                             $declaChauf->setHeureVoitureApres(new \DateTime('02:00:00'));
  173.                             $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  174.                         } else if ($retourVoiture == "VC") {
  175.                             $declaChauf->setHeureVoitureApres(new \DateTime('00:50:00'));
  176.                             $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  177.                         } else if ($retourVoiture == "CV") {
  178.                             $declaChauf->setHeureVoitureAvant(new \DateTime('00:50:00'));
  179.                             $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  180.                         }
  181.                         $declChaufRepository->save($declaChauftrue);
  182.                         $return['valide'] = 1;
  183.                     } else {//si nouveau
  184.                         $declaChauf = new DeclarationChauffeur(new \DateTime($date), $user);
  185.                         $declaChauf->setDate(new \DateTime($date));
  186.                         $declaChauf->setHeureDepart($heureDepartDT);
  187.                         $declaChauf->setHeureArrivee($heureArriveeDT);
  188.                         $declaChauf->setVilleDepart($villeDepart);
  189.                         if (is_object($villeArrivee)) {
  190.                             $declaChauf->setVilleArrivee($villeArrivee);
  191.                         }
  192.                         $declaChauf->setPdj($pdj);
  193.                         $declaChauf->setRmidi($rmidi);
  194.                         $declaChauf->setRgd($rgd);
  195.                         $declaChauf->setRnuit($rnuit);
  196.                         $declaChauf->setRsoir($rsoir);
  197.                         $declaChauf->setI($i);
  198.                         //$declaChauf->setRetourVoiture(intval($retourVoiture));
  199.                         if ($retourVoiture == "CT") {
  200.                             $declaChauf->setHeureVoitureAvant(new \DateTime('02:00:00'));
  201.                             $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  202.                         } else if ($retourVoiture == "TC") {
  203.                             $declaChauf->setHeureVoitureApres(new \DateTime('02:00:00'));
  204.                             $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  205.                         } else if ($retourVoiture == "VC") {
  206.                             $declaChauf->setHeureVoitureApres(new \DateTime('00:50:00'));
  207.                             $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  208.                         } else if ($retourVoiture == "CV") {
  209.                             $declaChauf->setHeureVoitureAvant(new \DateTime('00:50:00'));
  210.                             $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  211.                         } else {
  212.                             $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  213.                             $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  214.                         }
  215.                         $declaChauf->setCreated(new \DateTime());
  216.                         $declaChauf->setRetourVoiture(0);
  217.                         $declaChauf->setInterr(0);
  218.                         $declaChauf->setAmp(new \DateTime('00:00:00'));
  219.                         $declaChauf->setServ(new \DateTime('00:00:00'));
  220.                         $declaChauf->setCond(new \DateTime('00:00:00'));
  221.                         $declaChauf->setTrav(new \DateTime('00:00:00'));
  222.                         $declaChauf->setCoup(new \DateTime('00:00:00'));
  223.                         $declaChauf->setHeureNuit(new \DateTime('00:00:00'));
  224.                         $declaChauf->setAv(new \DateTime('00:00:00'));
  225.                         $declChaufRepository->save($declaChauftrue);
  226.                         $return['valide'] = 1;
  227.                     }
  228.                 }
  229.             }
  230.             else
  231.             {
  232.                 $return['msg'] = "Il n'est pas possible de déclarer une date avenir.";
  233.             }
  234.         }
  235.         return new JsonResponse($return);
  236.     }
  237.     #[Route('/get_lasts_declaration_chauffeur/'name'app_api_declaration_chauffeur_get_lasts_declaration_chauffeur'methods: ['GET'])]
  238.     public function GetLastsDeclarationChauffeurAction(Request $request,ManagerRegistry $doctrine)
  239.     {
  240.         $user $this->security->getUser();
  241.         if (!$user) {
  242.             return $this->json(['error' => 'User not authenticated'], 401);
  243.         }
  244.         $return = array('valide' => 0'listDeclarationChauffeur'=>array(),'declarationVeilleDateSiPasFini'=>null,
  245.             'declarationVeilleDateSiPasFiniUS'=>null);
  246.         $date = new \DateTime();
  247.         $date->modify('-2 month');
  248.         $dcRepo $this->em->getRepository(DeclarationChauffeur::class);
  249.         $dateDeb = new \DateTime('00:00:00');
  250.         $dateDeb->modify('-2 months');
  251.         $dateFin = new \DateTime();
  252.         $listDC $dcRepo->getDeclarationByUserAndAfterDateDebutOrderDesc($user,$dateDeb);
  253.         //$listDC = $dcRepo->getDeclarationByUserAndBetween2DateDebutOrderDesc($user,$dateDeb,$dateFin);
  254.         /*$dc = $dcRepo->getLastDeclaration($dateFin,$user);
  255.         if(is_object($dc))
  256.         {
  257.             if($dc->getVilleArrivee()==null)
  258.             {
  259.                 $return['declarationVeilleDateSiPasFini'] = $dc->getDate()->format('d/m/Y');
  260.                 $return['declarationVeilleDateSiPasFiniUS'] = $dc->getDate()->format('Y-m-d');
  261.             }
  262.         }*/
  263.         if(!empty($listDC))
  264.         {
  265.             foreach($listDC as $dc)
  266.             {
  267.                 if($dc->getVilleArrivee()===null)
  268.                 {
  269.                     $return['declarationVeilleDateSiPasFini'] = $dc->getDate()->format('d/m/Y');
  270.                     $return['declarationVeilleDateSiPasFiniUS'] = $dc->getDate()->format('Y-m-d');
  271.                 }
  272.                 $villeArrivee "";
  273.                 $villeArriveeId "";
  274.                 try {
  275.                     if ($dc->getVilleArrivee() !== null) {
  276.                         $villeArrivee $dc->getVilleArrivee()->getVilleNomReel();
  277.                         $villeArriveeId $dc->getVilleArrivee()->getId();
  278.                     }
  279.                 } catch (\Doctrine\ORM\EntityNotFoundException $e) {
  280.                     // Handle the broken relation gracefully
  281.                     $villeArrivee '';
  282.                     $villeArriveeId null;
  283.                     $return['declarationVeilleDateSiPasFini'] = $dc->getDate()->format('d/m/Y');
  284.                     $return['declarationVeilleDateSiPasFiniUS'] = $dc->getDate()->format('Y-m-d');
  285.                 }
  286.                 //var_dump($dc->getCreated()->format('Y-m-d'));
  287.                 $retourVoiture "0";
  288.                 if ($dc->getHeureVoitureAvant()->format('H:i') == '02:00') {
  289.                     $retourVoiture "CT";
  290.                 } else if ($dc->getHeureVoitureAvant()->format('H:i') == '00:50') {
  291.                     $retourVoiture "CV";
  292.                 }else if ($dc->getHeureVoitureApres()->format('H:i') == '02:00') {
  293.                     $retourVoiture "TC";
  294.                 } else if ($dc->getHeureVoitureApres()->format('H:i') == '00:50') {
  295.                     $retourVoiture "VC";
  296.                 }
  297.                 $return['listDeclarationChauffeur'][] = array('date'=>$dc->getDate()->format('d/m/Y'),'heureDepart'=>$dc->getHeureDepart()->format('H:i:s'),
  298.                     'heureArrivee'=>$dc->getHeureArrivee()->format('H:i:s'),'villeDepart'=>$dc->getVilleDepart()->getVilleNomReel(),
  299.                     'villeDepartId'=>$dc->getVilleDepart()->getId(),'villeArrivee'=>$villeArrivee,
  300.                     'villeArriveeId'=>$villeArriveeId,'pdj'=>$dc->getPdj(),'rmidi'=>$dc->getRmidi(),
  301.                     'rgd'=>$dc->getRgd(),'rnuit'=>$dc->getRnuit(),'rsoir'=>$dc->getRsoir(),'retourVoiture'=>$retourVoiture,
  302.                     'dateUS'=>$dc->getDate()->format('Y-m-d'),'id'=>$dc->getId(),'idUser'=>$dc->getUser()->getId(),
  303.                     'created'=>$dc->getCreated()->format('Y-m-d')
  304.                 );
  305.                 $return['valide'] = 0;
  306.             }
  307.         }
  308.         return new JsonResponse($return);
  309.     }
  310.     #[Route('/declaration_chauffeurs_delete/{id}'name'app_api_declaration_chauffeur_delete'methods: ['GET'])]
  311.     public function delete(Request $requestDeclarationChauffeur $declarationChauffeurDeclarationChauffeurRepository $declarationChauffeurRepository)
  312.     {
  313.         $return = array('valide'=>0);
  314.         if(is_object($declarationChauffeur))
  315.         {
  316.             $declarationChauffeurRepository->remove($declarationChauffeurtrue);
  317.             $return['valide'] = 1;
  318.         }
  319.         return new JsonResponse($return);
  320.     }
  321. }