src/Controller/FichierController.php line 55

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Fichier;
  4. use App\Form\FichierType;
  5. use App\Repository\FichierRepository;
  6. use App\Repository\ApplicationRepository;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\String\Slugger\SluggerInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. /**
  14.  * @Route("/fichier")
  15.  */
  16. class FichierController extends AbstractController
  17. {
  18.     /**
  19.      * @Route("/", name="app_fichier_index", methods={"GET"})
  20.      */
  21.     public function index(FichierRepository $fichierRepository): Response
  22.     {
  23.         return $this->render('fichier/index.html.twig', [
  24.             'fichiers' => $fichierRepository->findAll(),
  25.         ]);
  26.     }
  27.     /**
  28.      * @Route("/new", name="app_fichier_new", methods={"GET", "POST"})
  29.      */
  30.     public function new(Request $requestFichierRepository $fichierRepository): Response
  31.     {
  32.         $fichier = new Fichier();
  33.         $form $this->createForm(FichierType::class, $fichier);
  34.         $form->handleRequest($request);
  35.         if ($form->isSubmitted() && $form->isValid()) {
  36.             $fichierRepository->add($fichiertrue);
  37.             return $this->redirectToRoute('app_fichier_index', [], Response::HTTP_SEE_OTHER);
  38.         }
  39.         return $this->renderForm('fichier/new.html.twig', [
  40.             'fichier' => $fichier,
  41.             'form' => $form,
  42.         ]);
  43.     }
  44.     
  45.     /**
  46.      * @Route("/save/json", name="app_fichier_save", methods={"GET", "POST"})
  47.      */
  48.     public function newSave(Request $requestSluggerInterface $sluggerFichierRepository $fichierRepositoryApplicationRepository $applicationRepository): Response
  49.     {
  50.         $appKey $request->get('app_key');
  51.         if($appKey)
  52.         {
  53.             $application $applicationRepository->findOneBy(['applicationPass'=>$appKey]);
  54.             if($application)
  55.             {
  56.                 /** @var UploadedFile $pos1 */            
  57.                 $fich $request->files->get('file');
  58.                 //This condition is needed because the 'brochure' field is not required
  59.                 //So the PDF file must be processed only when a file is uploaded
  60.                 if ($fich
  61.                 {
  62.                     $originalFilename pathinfo($fich->getClientOriginalName(), PATHINFO_FILENAME);
  63.                     //This is needed to safely include the file name as part of the URL
  64.                     $safeFilename $slugger->slug($originalFilename);
  65.                     $newFilename $safeFilename.'-'.uniqid().'.'.$fich->guessExtension();
  66.                     $extension $fich->guessExtension();
  67.                     // Move the file to the directory where they must be stored
  68.                     
  69.                     try {
  70.                         $fich->move(
  71.                             $this->getParameter('file_directory'),
  72.                             $newFilename
  73.                         );
  74.                     } catch (FileException $e
  75.                     {
  76.                         // ... handle exception if something happens during file upload
  77.                     }
  78.                     
  79.                     $fichier = new Fichier();
  80.                     //enregistrement de tout
  81.                     $fichier->setOriginalName($originalFilename);
  82.                     $fichier->setChemin($newFilename);
  83.                     $fichier->setExtension($extension);
  84.                     $fichier->setApplication($application);
  85.                     $fichierRepository->add($fichiertrue);
  86.                     $post = array(
  87.                         'status' => 'SUCCESS',   
  88.                         'message' => "Votre fichier as été enregistré avec succès...",  
  89.                         'chemin' => "/uploads/kyvala/fichier/".$newFilename,
  90.                     );
  91.                 }else
  92.                 {
  93.                     $post = array(
  94.                         'status' => 'FAILED',   
  95.                         'message' => "Aucun fichier à enregistrer...",   
  96.                     );
  97.                 }
  98.             }else
  99.             {
  100.                 $post = array(
  101.                     'status' => 'FAILED',   
  102.                     'message' => "La clé d'application est erronée...",   
  103.                 );
  104.             }
  105.         }else
  106.         {
  107.             $post = array(
  108.                 'status' => 'FAILED',   
  109.                 'message' => "La clé d'application est absente...",   
  110.             );
  111.         }
  112.         $response = new JsonResponse($post);
  113.         return $response;  
  114.             
  115.         
  116.     }
  117.     /**
  118.      * @Route("/{id}", name="app_fichier_show", methods={"GET"})
  119.      */
  120.     public function show(Fichier $fichier): Response
  121.     {
  122.         return $this->render('fichier/show.html.twig', [
  123.             'fichier' => $fichier,
  124.         ]);
  125.     }
  126.     /**
  127.      * @Route("/{id}/edit", name="app_fichier_edit", methods={"GET", "POST"})
  128.      */
  129.     public function edit(Request $requestFichier $fichierFichierRepository $fichierRepository): Response
  130.     {
  131.         $form $this->createForm(FichierType::class, $fichier);
  132.         $form->handleRequest($request);
  133.         if ($form->isSubmitted() && $form->isValid()) {
  134.             $fichierRepository->add($fichiertrue);
  135.             return $this->redirectToRoute('app_fichier_index', [], Response::HTTP_SEE_OTHER);
  136.         }
  137.         return $this->renderForm('fichier/edit.html.twig', [
  138.             'fichier' => $fichier,
  139.             'form' => $form,
  140.         ]);
  141.     }
  142.     /**
  143.      * @Route("/{id}", name="app_fichier_delete", methods={"POST"})
  144.      */
  145.     public function delete(Request $requestFichier $fichierFichierRepository $fichierRepository): Response
  146.     {
  147.         if ($this->isCsrfTokenValid('delete'.$fichier->getId(), $request->request->get('_token'))) {
  148.             $fichierRepository->remove($fichiertrue);
  149.         }
  150.         return $this->redirectToRoute('app_fichier_index', [], Response::HTTP_SEE_OTHER);
  151.     }
  152. }