src/Controller/API/APIDeclarationChauffeurController.php line 271

  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.             $declChaufRepository $this->em->getRepository(DeclarationChauffeur::class);
  144.             if(is_object($villeDepart))
  145.             {
  146.                 if ($idDeclaration != null) {//si modif
  147.                     $declaChauf $declChaufRepository->find($idDeclaration);
  148.                     $declaChauf->setDate(new \DateTime($date));
  149.                     $declaChauf->setHeureDepart($heureDepartDT);
  150.                     $declaChauf->setHeureArrivee($heureArriveeDT);
  151.                     $declaChauf->setVilleDepart($villeDepart);
  152.                     if(is_object($villeArrivee))
  153.                     {
  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.                     {
  170.                         $declaChauf->setHeureVoitureAvant(new \DateTime('02:00:00'));
  171.                         $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  172.                     }
  173.                     else if($retourVoiture=="TC")
  174.                     {
  175.                         $declaChauf->setHeureVoitureApres(new \DateTime('02:00:00'));
  176.                         $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  177.                     }
  178.                     else if($retourVoiture=="VC")
  179.                     {
  180.                         $declaChauf->setHeureVoitureApres(new \DateTime('00:50:00'));
  181.                         $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  182.                     }
  183.                     else if($retourVoiture=="CV")
  184.                     {
  185.                         $declaChauf->setHeureVoitureAvant(new \DateTime('00:50:00'));
  186.                         $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  187.                     }
  188.                     $declChaufRepository->save($declaChauf,true);
  189.                     $return['valide'] = 1;
  190.                 } else {//si nouveau
  191.                     $declaChauf = new DeclarationChauffeur(new \DateTime($date),$user);
  192.                     $declaChauf->setDate(new \DateTime($date));
  193.                     $declaChauf->setHeureDepart($heureDepartDT);
  194.                     $declaChauf->setHeureArrivee($heureArriveeDT);
  195.                     $declaChauf->setVilleDepart($villeDepart);
  196.                     if(is_object($villeArrivee)) {
  197.                         $declaChauf->setVilleArrivee($villeArrivee);
  198.                     }
  199.                     $declaChauf->setPdj($pdj);
  200.                     $declaChauf->setRmidi($rmidi);
  201.                     $declaChauf->setRgd($rgd);
  202.                     $declaChauf->setRnuit($rnuit);
  203.                     $declaChauf->setRsoir($rsoir);
  204.                     $declaChauf->setI($i);
  205.                     //$declaChauf->setRetourVoiture(intval($retourVoiture));
  206.                     if($retourVoiture=="CT")
  207.                     {
  208.                         $declaChauf->setHeureVoitureAvant(new \DateTime('02:00:00'));
  209.                         $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  210.                     }
  211.                     else if($retourVoiture=="TC")
  212.                     {
  213.                         $declaChauf->setHeureVoitureApres(new \DateTime('02:00:00'));
  214.                         $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  215.                     }
  216.                     else if($retourVoiture=="VC")
  217.                     {
  218.                         $declaChauf->setHeureVoitureApres(new \DateTime('00:50:00'));
  219.                         $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  220.                     }
  221.                     else if($retourVoiture=="CV")
  222.                     {
  223.                         $declaChauf->setHeureVoitureAvant(new \DateTime('00:50:00'));
  224.                         $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  225.                     }
  226.                     else
  227.                     {
  228.                         $declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));
  229.                         $declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));
  230.                     }
  231.                     $declaChauf->setCreated(new \DateTime());
  232.                     $declaChauf->setRetourVoiture(0);
  233.                     $declaChauf->setInterr(0);
  234.                     $declaChauf->setAmp(new \DateTime('00:00:00'));
  235.                     $declaChauf->setServ(new \DateTime('00:00:00'));
  236.                     $declaChauf->setCond(new \DateTime('00:00:00'));
  237.                     $declaChauf->setTrav(new \DateTime('00:00:00'));
  238.                     $declaChauf->setCoup(new \DateTime('00:00:00'));
  239.                     $declaChauf->setHeureNuit(new \DateTime('00:00:00'));
  240.                     $declaChauf->setAv(new \DateTime('00:00:00'));
  241.                     $declChaufRepository->save($declaChauf,true);
  242.                     $return['valide'] = 1;
  243.                 }
  244.             }
  245.         }
  246.         return new JsonResponse($return);
  247.     }
  248.     #[Route('/get_lasts_declaration_chauffeur/'name'app_api_declaration_chauffeur_get_lasts_declaration_chauffeur'methods: ['GET'])]
  249.     public function GetLastsDeclarationChauffeurAction(Request $request,ManagerRegistry $doctrine)
  250.     {
  251.         $user $this->security->getUser();
  252.         if (!$user) {
  253.             return $this->json(['error' => 'User not authenticated'], 401);
  254.         }
  255.         $return = array('valide' => 0'listDeclarationChauffeur'=>array(),'declarationVeilleDateSiPasFini'=>null,
  256.             'declarationVeilleDateSiPasFiniUS'=>null);
  257.         $date = new \DateTime();
  258.         $date->modify('-2 month');
  259.         $dcRepo $this->em->getRepository(DeclarationChauffeur::class);
  260.         $dateDeb = new \DateTime('00:00:00');
  261.         $dateDeb->modify('-2 months');
  262.         $dateFin = new \DateTime();
  263.         $listDC $dcRepo->getDeclarationByUserAndAfterDateDebutOrderDesc($user,$dateDeb);
  264.         //$listDC = $dcRepo->getDeclarationByUserAndBetween2DateDebutOrderDesc($user,$dateDeb,$dateFin);
  265.         /*$dc = $dcRepo->getLastDeclaration($dateFin,$user);
  266.         if(is_object($dc))
  267.         {
  268.             if($dc->getVilleArrivee()==null)
  269.             {
  270.                 $return['declarationVeilleDateSiPasFini'] = $dc->getDate()->format('d/m/Y');
  271.                 $return['declarationVeilleDateSiPasFiniUS'] = $dc->getDate()->format('Y-m-d');
  272.             }
  273.         }*/
  274.         if(!empty($listDC))
  275.         {
  276.             foreach($listDC as $dc)
  277.             {
  278.                 if($dc->getVilleArrivee()===null)
  279.                 {
  280.                     $return['declarationVeilleDateSiPasFini'] = $dc->getDate()->format('d/m/Y');
  281.                     $return['declarationVeilleDateSiPasFiniUS'] = $dc->getDate()->format('Y-m-d');
  282.                 }
  283.                 $villeArrivee "";
  284.                 $villeArriveeId "";
  285.                 try {
  286.                     if ($dc->getVilleArrivee() !== null) {
  287.                         $villeArrivee $dc->getVilleArrivee()->getVilleNomReel();
  288.                         $villeArriveeId $dc->getVilleArrivee()->getId();
  289.                     }
  290.                 } catch (\Doctrine\ORM\EntityNotFoundException $e) {
  291.                     // Handle the broken relation gracefully
  292.                     $villeArrivee '';
  293.                     $villeArriveeId null;
  294.                     $return['declarationVeilleDateSiPasFini'] = $dc->getDate()->format('d/m/Y');
  295.                     $return['declarationVeilleDateSiPasFiniUS'] = $dc->getDate()->format('Y-m-d');
  296.                 }
  297.                 //var_dump($dc->getCreated()->format('Y-m-d'));
  298.                 $retourVoiture "0";
  299.                 if ($dc->getHeureVoitureAvant()->format('H:i') == '02:00') {
  300.                     $retourVoiture "CT";
  301.                 } else if ($dc->getHeureVoitureAvant()->format('H:i') == '00:50') {
  302.                     $retourVoiture "CV";
  303.                 }else if ($dc->getHeureVoitureApres()->format('H:i') == '02:00') {
  304.                     $retourVoiture "TC";
  305.                 } else if ($dc->getHeureVoitureApres()->format('H:i') == '00:50') {
  306.                     $retourVoiture "VC";
  307.                 }
  308.                 $return['listDeclarationChauffeur'][] = array('date'=>$dc->getDate()->format('d/m/Y'),'heureDepart'=>$dc->getHeureDepart()->format('H:i:s'),
  309.                     'heureArrivee'=>$dc->getHeureArrivee()->format('H:i:s'),'villeDepart'=>$dc->getVilleDepart()->getVilleNomReel(),
  310.                     'villeDepartId'=>$dc->getVilleDepart()->getId(),'villeArrivee'=>$villeArrivee,
  311.                     'villeArriveeId'=>$villeArriveeId,'pdj'=>$dc->getPdj(),'rmidi'=>$dc->getRmidi(),
  312.                     'rgd'=>$dc->getRgd(),'rnuit'=>$dc->getRnuit(),'rsoir'=>$dc->getRsoir(),'retourVoiture'=>$retourVoiture,
  313.                     'dateUS'=>$dc->getDate()->format('Y-m-d'),'id'=>$dc->getId(),'idUser'=>$dc->getUser()->getId(),
  314.                     'created'=>$dc->getCreated()->format('Y-m-d')
  315.                 );
  316.                 $return['valide'] = 0;
  317.             }
  318.         }
  319.         return new JsonResponse($return);
  320.     }
  321.     #[Route('/declaration_chauffeurs_delete/{id}'name'app_api_declaration_chauffeur_delete'methods: ['GET'])]
  322.     public function delete(Request $requestDeclarationChauffeur $declarationChauffeurDeclarationChauffeurRepository $declarationChauffeurRepository)
  323.     {
  324.         $return = array('valide'=>0);
  325.         if(is_object($declarationChauffeur))
  326.         {
  327.             $declarationChauffeurRepository->remove($declarationChauffeurtrue);
  328.             $return['valide'] = 1;
  329.         }
  330.         return new JsonResponse($return);
  331.     }
  332. }