src/Controller/FilesUserController.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\FilesUser;
  4. use App\Form\FilesUserType;
  5. use App\Repository\FilesUserRepository;
  6. use App\Repository\InformationEntrepriseRepository;
  7. use App\Services\XslService;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. #[Route('/files/user')]
  14. class FilesUserController extends AbstractController
  15. {
  16.     public function __construct(private InformationEntrepriseRepository $informationEntrepriseRepository)
  17.     {
  18.     }
  19.     #[Route('/new'name'app_files_user_index'methods: ['GET''POST'])]
  20.     public function new(Request $requestFilesUserRepository $filesUserRepository): Response
  21.     {
  22.         $filesUser = new FilesUser();
  23.         $form $this->createForm(FilesUserType::class, $filesUser);
  24.         $form->handleRequest($request);
  25.         if ($form->isSubmitted() && $form->isValid()) {
  26.             $filesUser
  27.                 ->setUser($this->getUser())
  28.                 ->setIsPaid(false)
  29.                 ->setCreatedAt(new \DateTimeImmutable('now'))
  30.                 ->setIsReadyToDownload(false)
  31.                 ->setIsFileVerified(false)
  32.                 ->setHaveData(false);
  33.             $filesUserRepository->save($filesUsertrue);
  34.             return $this->redirectToRoute('app_user_show', ['email' => $this->getUser()->getUserIdentifier()], Response::HTTP_SEE_OTHER);
  35.         }
  36.         return $this->renderForm('files_user/new.html.twig', [
  37.             'files_user' => $filesUser,
  38.             'form' => $form,
  39.         ]);
  40.     }
  41.     #[Route('/{id}'name'app_files_user_show'methods: ['GET'])]
  42.     public function show(FilesUser $filesUser): Response
  43.     {
  44.         $data $this->informationEntrepriseRepository->findByFilesUser($filesUser);
  45.         return $this->render('files_user/show.html.twig', [
  46.             'files_user' => $filesUser,
  47.             'data' => $data
  48.         ]);
  49.     }
  50.     #[Route('/{id}/edit'name'app_files_user_edit'methods: ['GET''POST'])]
  51.     public function edit(Request $requestFilesUser $filesUserFilesUserRepository $filesUserRepository): Response
  52.     {
  53.         $form $this->createForm(FilesUserType::class, $filesUser);
  54.         $form->handleRequest($request);
  55.         if ($form->isSubmitted() && $form->isValid()) {
  56.             $filesUserRepository->save($filesUsertrue);
  57.             return $this->redirectToRoute('app_files_user_index', [], Response::HTTP_SEE_OTHER);
  58.         }
  59.         return $this->renderForm('files_user/edit.html.twig', [
  60.             'files_user' => $filesUser,
  61.             'form' => $form,
  62.         ]);
  63.     }
  64.     #[Route('/{id}'name'app_files_user_delete'methods: ['POST'])]
  65.     public function delete(Request $requestFilesUser $filesUserFilesUserRepository $filesUserRepository): Response
  66.     {
  67.         if ($this->isCsrfTokenValid('delete' $filesUser->getId(), $request->request->get('_token'))) {
  68.             $filesUserRepository->remove($filesUsertrue);
  69.         }
  70.         return $this->redirectToRoute('app_files_user_index', [], Response::HTTP_SEE_OTHER);
  71.     }
  72.     #[Route('/{id}/paid'name'app_files_user_paid')]
  73.     public function paid(FilesUser $filesUserEntityManagerInterface $entityManager)
  74.     {
  75.         if ($filesUser) {
  76.             $filesUser->setIsPaid(true);
  77.             $entityManager->persist($filesUser);
  78.             $entityManager->flush();
  79.         }
  80.         # Redirect the user to their show page
  81.         return $this->redirectToRoute('app_user_show', ['email' => $this->getUser()->getUserIdentifier()]);
  82.     }
  83.     #[Route('/{id}/download'name'app_files_user_download')]
  84.     public function downloadXsl(int $idFilesUserRepository $filesUserRepositoryXslService $xslService)
  85.     {
  86.         set_time_limit(0);
  87.         $results $this->informationEntrepriseRepository->getDataByFilesUser($filesUserRepository->find($id));
  88.         # Check if the file exists
  89.         if ($results) {
  90.             // # Prepare the data for the file
  91.             $preparedData $xslService->prepareData($results);
  92.             # Create the file using the xslService and the prepared data
  93.             $xslService->createFile($preparedData);
  94.         }
  95.         # Redirect the user to their show page
  96.         return $this->redirectToRoute('app_user_show', ['email' => $this->getUser()->getUserIdentifier()]);
  97.     }
  98. }