src/Controller/ConcessionController.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Concession;
  4. use App\Form\Concession\CreateType;
  5. use App\Form\Concession\EditType;
  6. use App\Repository\ConcessionRepository;
  7. use App\Service\Converter\ConvertDataToJsonFile;
  8. use App\Service\DataGouvApi\SendToApi;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class ConcessionController extends AbstractController
  15. {
  16.     public function __construct(
  17.         private ConvertDataToJsonFile $jsonConverter,
  18.         private SendToApi $sendToApi
  19.     ){
  20.     }
  21.     #[Route('app/concession/creer'name'app_concession_create'methods: ['GET''POST'])]
  22.     public function create(Request $requestEntityManagerInterface $entityManager): Response
  23.     {
  24.         $concession = new Concession();
  25.         $form $this->createForm(CreateType::class, $concession, [
  26.             'attr' => ['id' => 'concession_form']
  27.         ]);
  28.         $form->handleRequest($request);
  29.         if($form->isSubmitted()){
  30.             if($form->isValid()){
  31.                 foreach ($concession->getDonneePerformance() as $donnePerformance) {
  32.                     $donnePerformance->setConcession($concession);
  33.                     foreach ($donnePerformance->getTarifUsager() as $tarifUsager) {
  34.                         $tarifUsager->setDonneePerformance($donnePerformance);
  35.                     }
  36.                 }
  37.                 foreach ($concession->getTitulaire() as $titulaire) {
  38.                     $titulaire->setConcession($concession);
  39.                 }
  40.                 $concession->setUser($this->getUser());
  41.                 $entityManager->persist($concession);
  42.                 $entityManager->flush();
  43.                 $jsonData =$this->jsonConverter->convertConcessionToJsonData($concession);
  44.                 $filePath $this->jsonConverter->convertJsonDataToJsonFile($jsonData$concession->getId());
  45.                 $idApi $this->sendToApi->sendFileToApiAndGetRemoteId($filePath);
  46.                 $concession->setApiId($idApi);
  47.                 $entityManager->persist($concession);
  48.                 $entityManager->flush();
  49.                 $this->addFlash('success''Le marché public a bien été publié sur data.gouv.fr');
  50.                 return $this->redirectToRoute('front_concession_show',[
  51.                     'id'=>$concession->getId()
  52.                 ]);
  53.             }
  54.         }
  55.         return $this->render('concession/create.html.twig', [
  56.             'form' => $form->createView()
  57.         ]);
  58.     }
  59.     #[Route('/concession/voir/{id?1}'name'front_concession_show'methods: ['GET'])]
  60.     public function show(int $idConcessionRepository $concessionRepository):Response
  61.     {
  62.         $concession $concessionRepository->find($id);
  63.         return $this->render('concession/show.html.twig', [
  64.             'concession'=>$concession
  65.         ]);
  66.     }
  67.     #[Route('/app/concession/edit/{id}'name'app_concession_edit')]
  68.     public function edit(int $idRequest $requestConcessionRepository $concessionRepositoryEntityManagerInterface $entityManager) : Response
  69.     {
  70.         $concession $concessionRepository->find($id);
  71.         if(is_null($concession)){
  72.             $this->addFlash('error''Cette ressource n\'existe pas');
  73.             return $this->redirectToRoute('app_show_all_marches_and_concessions');
  74.         }
  75.         $form $this->createForm(EditType::class, $concession, [
  76.             'attr' => ['id' => 'concession_form']
  77.         ]);
  78.         if($this->getUser()!= $concession->getUser()){
  79.             $this->addFlash('error''Vous n\'avez pas accès à cette ressource');
  80.             return $this->redirectToRoute('app_show_all_marches_and_concessions');
  81.         }
  82.         $form->handleRequest($request);
  83.         if($form->isSubmitted() && $form->isValid()){
  84.             foreach ($concession->getModificationConcession() as $modification) {
  85.                 $modification->setConcession($concession);
  86.                 $entityManager->persist($modification);
  87.             }
  88.             $entityManager->flush();
  89.             $entityManager->refresh($concession);
  90.             $jsonData =$this->jsonConverter->convertConcessionToJsonData($concession);
  91.             $filePath $this->jsonConverter->convertJsonDataToJsonFile($jsonData$concession->getId());
  92.             $this->sendToApi->updateDataSentToApi($filePath$concession);
  93.             $this->addFlash('success''Les données ont bien été modifiées sur data.gouv.fr');
  94.             return $this->redirectToRoute('front_concession_show',[
  95.                 'id'=>$concession->getId()
  96.             ]);
  97.         }
  98.         return $this->render('concession/edit.html.twig',[
  99.             'concession'=>$concession,
  100.             'form'=>$form->createView()
  101.         ]);
  102.     }
  103. }