src/Controller/API/APIDeclarationChauffeurController.php line 271
<?php/*** Created by PhpStorm.* User: JMR* Date: 31/03/2025* Time: 17:29*/namespace App\Controller\API;use App\Entity\CarburantType;use App\Entity\ConsoCarburantChauffeur;use App\Entity\DeclarationChauffeur;use App\Entity\User;use App\Entity\Camion;use App\Entity\LavageVehicule;use App\Entity\Remorque;use App\Repository\AbsenceRepository;use App\Entity\VilleFrance;use App\Repository\CarburantTypeRepository;use App\Repository\ConsoCarburantChauffeurRepository;use App\Repository\DeclarationChauffeurRepository;use App\Repository\VilleFranceRepository;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpKernel\Attribute\AsController;use Symfony\Component\HttpFoundation\JsonResponse;use Doctrine\ORM\EntityManagerInterface;use Symfony\Component\Serializer\SerializerInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\File\UploadedFile;use Symfony\Component\Validator\Constraints\DateTime;use Doctrine\Persistence\ManagerRegistry;use Symfony\Component\Security\Core\Security;use PHPMailer\PHPMailer\PHPMailer;use PHPMailer\PHPMailer\Exception;use Symfony\Component\Routing\Annotation\Route;#[Route('/api_declaration_chauffeur', name: 'api_declaration_chauffeur')]class APIDeclarationChauffeurController extends AbstractController{private $serializer;private $em;private $security;public function __construct(EntityManagerInterface $em, SerializerInterface $serializer, Security $security){$this->serializer = $serializer;$this->em = $em;$this->security = $security;}#[Route('/get_declaration_chauffeur_par_date/{date}', name: 'app_api_declaration_chauffeur_get_declaration_chauffeur_par_date', methods: ['GET'])]public function GetDeclarationChauffeurParDateAction(Request $request,ManagerRegistry $doctrine, $date, DeclarationChauffeurRepository $declarationChauffeurRepository){$return = array('date'=>'','heureDepart'=>'','heureArrivee'=>'','villeDepartId'=>'','villeArriveeId'=>'','villeDepartNom'=>'','villeArriveeNom'=>'','pdj'=>'','rmidi'=>'','rsoir'=>'','rgd'=>'','rnuit'=>'','retourVoiture'=>'','id'=>'',);$user = $this->security->getUser();if (!$user) {return $this->json(['error' => 'User not authenticated'], 401);}$dateTime = new \DateTime($date);$declChauf = $declarationChauffeurRepository->findOneBy(array('date'=>$dateTime,'user'=>$user));if(is_object($declChauf)){$villeArriveeId = null;$villeArriveeNom = null;try {if($declChauf->getVilleArrivee()!==null){$villeArriveeId = $declChauf->getVilleArrivee()->getId();$villeArriveeNom = $declChauf->getVilleArrivee()->getVilleNomReel();}} catch (\Doctrine\ORM\EntityNotFoundException $e) {// Handle the broken relation gracefully$villeArriveeId = null;$villeArriveeNom = null;}$return['date'] = $declChauf->getDate()->format('Y-m-d');$return['heureDepart'] = $declChauf->getHeureDepart()->format('H:i:s');$return['heureArrivee'] = $declChauf->getHeureArrivee()->format('H:i:s');$return['villeDepartId'] = $declChauf->getVilleDepart()->getId();$return['villeArriveeId'] = $villeArriveeId;$return['villeDepartNom'] = $declChauf->getVilleDepart()->getVilleNomReel();$return['villeArriveeNom'] = $villeArriveeNom;$return['created'] = $declChauf->getCreated()->format('Y-m-d');$return['pdj'] = $declChauf->getPdj();$return['rmidi'] = $declChauf->getRnuit();$return['rsoir'] = $declChauf->getRsoir();$return['rnuit'] = $declChauf->getRnuit();$return['retourVoiture'] = "0";if($declChauf->getHeureVoitureAvant()->format('H:i')=='02:00'){$return['retourVoiture'] = "CT";}else if($declChauf->getHeureVoitureAvant()->format('H:i')=='00:50'){$return['retourVoiture'] = "CV";}else if($declChauf->getHeureVoitureApres()->format('H:i')=='02:00'){$return['retourVoiture'] = "TC";}else if($declChauf->getHeureVoitureApres()->format('H:i')=='00:50'){$return['retourVoiture'] = "VC";}$return['id'] = $declChauf->getId();}return new JsonResponse($return);}#[Route('/declaration_chauffeurs', name: 'app_api_declaration_carburant_declaration_chauffeurs', methods: ['POST'])]public function declarationChauffeursAction(Request $request, VilleFranceRepository $villeFranceRepository){$data = json_decode($request->getContent(), true);// Check if data is validif (!$data) {return new JsonResponse(['error' => 'Invalid JSON'], 400);}$user = $this->security->getUser();if (!$user) {return $this->json(['error' => 'User not authenticated'], 401);}$return = array('valide' => 0,'msg'=>'');$idDeclaration = $data['idDeclaration'] ?? null;$date = $data['date'] ?? null;$heureDepart = $data['heureDepart'] ?? null;$heureArrivee = $data['heureArrivee'] ?? null;$villeDepartId = $data['villeDepartId'] ?? null;$villeArriveeId = $data['villeArriveeId'] ?? null;$pdj = $data['pdj'] ?? null;$rmidi = $data['rmidi'] ?? null;$rsoir = $data['rsoir'] ?? null;$rgd = $data['rgd'] ?? null;$rnuit = $data['rnuit'] ?? null;$i = $data['i'] ?? null;$retourVoiture = $data['retourVoiture'] ?? 0;if(is_numeric($villeDepartId) )//&& is_numeric($villeArriveeId){$villeDepart = $villeFranceRepository->find($villeDepartId);$villeArrivee = null;if(is_numeric($villeArriveeId)){$villeArrivee = $villeFranceRepository->find($villeArriveeId);}$heureDepartDT = new \DateTime($heureDepart);$heureArriveeDT = new \DateTime($heureArrivee);$declChaufRepository = $this->em->getRepository(DeclarationChauffeur::class);if(is_object($villeDepart)){if ($idDeclaration != null) {//si modif$declaChauf = $declChaufRepository->find($idDeclaration);$declaChauf->setDate(new \DateTime($date));$declaChauf->setHeureDepart($heureDepartDT);$declaChauf->setHeureArrivee($heureArriveeDT);$declaChauf->setVilleDepart($villeDepart);if(is_object($villeArrivee)){$declaChauf->setVilleArrivee($villeArrivee);}$declaChauf->setPdj($pdj);$declaChauf->setRmidi($rmidi);$declaChauf->setRgd($rgd);$declaChauf->setRnuit($rnuit);$declaChauf->setRsoir($rsoir);$declaChauf->setAmp(new \DateTime('00:00:00'));$declaChauf->setServ(new \DateTime('00:00:00'));$declaChauf->setCond(new \DateTime('00:00:00'));$declaChauf->setTrav(new \DateTime('00:00:00'));$declaChauf->setCoup(new \DateTime('00:00:00'));$declaChauf->setHeureNuit(new \DateTime('00:00:00'));$declaChauf->setAv(new \DateTime('00:00:00'));if($retourVoiture=="CT"){$declaChauf->setHeureVoitureAvant(new \DateTime('02:00:00'));$declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));}else if($retourVoiture=="TC"){$declaChauf->setHeureVoitureApres(new \DateTime('02:00:00'));$declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));}else if($retourVoiture=="VC"){$declaChauf->setHeureVoitureApres(new \DateTime('00:50:00'));$declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));}else if($retourVoiture=="CV"){$declaChauf->setHeureVoitureAvant(new \DateTime('00:50:00'));$declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));}$declChaufRepository->save($declaChauf,true);$return['valide'] = 1;} else {//si nouveau$declaChauf = new DeclarationChauffeur(new \DateTime($date),$user);$declaChauf->setDate(new \DateTime($date));$declaChauf->setHeureDepart($heureDepartDT);$declaChauf->setHeureArrivee($heureArriveeDT);$declaChauf->setVilleDepart($villeDepart);if(is_object($villeArrivee)) {$declaChauf->setVilleArrivee($villeArrivee);}$declaChauf->setPdj($pdj);$declaChauf->setRmidi($rmidi);$declaChauf->setRgd($rgd);$declaChauf->setRnuit($rnuit);$declaChauf->setRsoir($rsoir);$declaChauf->setI($i);//$declaChauf->setRetourVoiture(intval($retourVoiture));if($retourVoiture=="CT"){$declaChauf->setHeureVoitureAvant(new \DateTime('02:00:00'));$declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));}else if($retourVoiture=="TC"){$declaChauf->setHeureVoitureApres(new \DateTime('02:00:00'));$declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));}else if($retourVoiture=="VC"){$declaChauf->setHeureVoitureApres(new \DateTime('00:50:00'));$declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));}else if($retourVoiture=="CV"){$declaChauf->setHeureVoitureAvant(new \DateTime('00:50:00'));$declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));}else{$declaChauf->setHeureVoitureAvant(new \DateTime('00:00:00'));$declaChauf->setHeureVoitureApres(new \DateTime('00:00:00'));}$declaChauf->setCreated(new \DateTime());$declaChauf->setRetourVoiture(0);$declaChauf->setInterr(0);$declaChauf->setAmp(new \DateTime('00:00:00'));$declaChauf->setServ(new \DateTime('00:00:00'));$declaChauf->setCond(new \DateTime('00:00:00'));$declaChauf->setTrav(new \DateTime('00:00:00'));$declaChauf->setCoup(new \DateTime('00:00:00'));$declaChauf->setHeureNuit(new \DateTime('00:00:00'));$declaChauf->setAv(new \DateTime('00:00:00'));$declChaufRepository->save($declaChauf,true);$return['valide'] = 1;}}}return new JsonResponse($return);}#[Route('/get_lasts_declaration_chauffeur/', name: 'app_api_declaration_chauffeur_get_lasts_declaration_chauffeur', methods: ['GET'])]public function GetLastsDeclarationChauffeurAction(Request $request,ManagerRegistry $doctrine){$user = $this->security->getUser();if (!$user) {return $this->json(['error' => 'User not authenticated'], 401);}$return = array('valide' => 0, 'listDeclarationChauffeur'=>array(),'declarationVeilleDateSiPasFini'=>null,'declarationVeilleDateSiPasFiniUS'=>null);$date = new \DateTime();$date->modify('-2 month');$dcRepo = $this->em->getRepository(DeclarationChauffeur::class);$dateDeb = new \DateTime('00:00:00');$dateDeb->modify('-2 months');$dateFin = new \DateTime();$listDC = $dcRepo->getDeclarationByUserAndAfterDateDebutOrderDesc($user,$dateDeb);//$listDC = $dcRepo->getDeclarationByUserAndBetween2DateDebutOrderDesc($user,$dateDeb,$dateFin);/*$dc = $dcRepo->getLastDeclaration($dateFin,$user);if(is_object($dc)){if($dc->getVilleArrivee()==null){$return['declarationVeilleDateSiPasFini'] = $dc->getDate()->format('d/m/Y');$return['declarationVeilleDateSiPasFiniUS'] = $dc->getDate()->format('Y-m-d');}}*/if(!empty($listDC)){foreach($listDC as $dc){if($dc->getVilleArrivee()===null){$return['declarationVeilleDateSiPasFini'] = $dc->getDate()->format('d/m/Y');$return['declarationVeilleDateSiPasFiniUS'] = $dc->getDate()->format('Y-m-d');}$villeArrivee = "";$villeArriveeId = "";try {if ($dc->getVilleArrivee() !== null) {$villeArrivee = $dc->getVilleArrivee()->getVilleNomReel();$villeArriveeId = $dc->getVilleArrivee()->getId();}} catch (\Doctrine\ORM\EntityNotFoundException $e) {// Handle the broken relation gracefully$villeArrivee = '';$villeArriveeId = null;$return['declarationVeilleDateSiPasFini'] = $dc->getDate()->format('d/m/Y');$return['declarationVeilleDateSiPasFiniUS'] = $dc->getDate()->format('Y-m-d');}//var_dump($dc->getCreated()->format('Y-m-d'));$retourVoiture = "0";if ($dc->getHeureVoitureAvant()->format('H:i') == '02:00') {$retourVoiture = "CT";} else if ($dc->getHeureVoitureAvant()->format('H:i') == '00:50') {$retourVoiture = "CV";}else if ($dc->getHeureVoitureApres()->format('H:i') == '02:00') {$retourVoiture = "TC";} else if ($dc->getHeureVoitureApres()->format('H:i') == '00:50') {$retourVoiture = "VC";}$return['listDeclarationChauffeur'][] = array('date'=>$dc->getDate()->format('d/m/Y'),'heureDepart'=>$dc->getHeureDepart()->format('H:i:s'),'heureArrivee'=>$dc->getHeureArrivee()->format('H:i:s'),'villeDepart'=>$dc->getVilleDepart()->getVilleNomReel(),'villeDepartId'=>$dc->getVilleDepart()->getId(),'villeArrivee'=>$villeArrivee,'villeArriveeId'=>$villeArriveeId,'pdj'=>$dc->getPdj(),'rmidi'=>$dc->getRmidi(),'rgd'=>$dc->getRgd(),'rnuit'=>$dc->getRnuit(),'rsoir'=>$dc->getRsoir(),'retourVoiture'=>$retourVoiture,'dateUS'=>$dc->getDate()->format('Y-m-d'),'id'=>$dc->getId(),'idUser'=>$dc->getUser()->getId(),'created'=>$dc->getCreated()->format('Y-m-d'));$return['valide'] = 0;}}return new JsonResponse($return);}#[Route('/declaration_chauffeurs_delete/{id}', name: 'app_api_declaration_chauffeur_delete', methods: ['GET'])]public function delete(Request $request, DeclarationChauffeur $declarationChauffeur, DeclarationChauffeurRepository $declarationChauffeurRepository){$return = array('valide'=>0);if(is_object($declarationChauffeur)){$declarationChauffeurRepository->remove($declarationChauffeur, true);$return['valide'] = 1;}return new JsonResponse($return);}}