src/Controller/Back/MediaController.php line 88

Open in your IDE?
  1. <?php
  2. /*
  3.  * Unauthorized copying of this file, via any medium is strictly prohibited
  4.  * Proprietary and confidential.
  5.  *
  6.  * @author Bilel AZRI          <azri.bilel@gmail.com>
  7.  * @author Assma BEN SASSI     <bensassiasma.bws@gmail.com>
  8.  *
  9.  * Bicking man (c) 2019-present.
  10.  */
  11. declare(strict_types=1);
  12. namespace App\Controller\Back;
  13. use App\Entity\Media\Media;
  14. use App\Entity\User\User;
  15. use App\Repository\Media\MediaRepository;
  16. use App\Repository\User\UserRepository;
  17. use App\Repository\Company\CompanyRepository;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
  20. use Symfony\Component\HttpFoundation\RedirectResponse;
  21. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  22. use App\Event\Media\MediaPreRemoveEvent;
  23. use Doctrine\ORM\EntityManagerInterface;
  24. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  25. use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
  26. use Symfony\Component\HttpFoundation\File\File;
  27. use Symfony\Component\HttpFoundation\JsonResponse;
  28. use Symfony\Component\HttpFoundation\Response;
  29. use Symfony\Component\Routing\Annotation\Route;
  30. use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
  31. use Twig\Environment;
  32. /**
  33.  * @Route("/media", name="media.")
  34.  */
  35. final class MediaController
  36. {
  37.     private EntityManagerInterface $entityManager;
  38.     private MediaRepository $repository;
  39.     private UserRepository $userRepository;
  40.     private CompanyRepository $companyRepository;
  41.     private EventDispatcherInterface $dispatcher;
  42.     private Environment $twig;
  43.     private UrlGeneratorInterface $urlGenerator;
  44.     /// asmaaaaaa A terminer getUser from image ID
  45.     public function __construct(EntityManagerInterface $entityManagerEventDispatcherInterface $dispatcher,
  46.                     MediaRepository $repositoryUserRepository $userRepositoryUrlGeneratorInterface $urlGenerator,
  47.                     CompanyRepository $companyRepositoryEnvironment $twigFlashBagInterface $flashBag)
  48.     {
  49.         $this->entityManager $entityManager;
  50.         $this->repository $repository;
  51.         $this->userRepository $userRepository;
  52.         $this->companyRepository $companyRepository;
  53.         $this->dispatcher $dispatcher;
  54.         $this->twig $twig;
  55.         $this->flashBag $flashBag;
  56.         $this->urlGenerator $urlGenerator;
  57.     }
  58.     /**
  59.      * @Route("/", name="index", methods={"GET"}, options={"expose": true})
  60.      */
  61.     public function index(Request $request): Response
  62.     {
  63.         $companies $this->repository->findAll();
  64.        
  65.         return new Response($this->twig->render('back/media/index.html.twig', ['companies' => $companies]));
  66.     }
  67.     /**
  68.      * @Route("/{id}", name="show", methods={"GET"}, options={"expose": true})
  69.      */
  70.     public function show(Media $media): Response
  71.     {
  72.         $file $media->getFile();
  73.         //var_dump($file->getPathname());exit();
  74.         if ($file instanceof File) {
  75.             return new BinaryFileResponse($file->getPathname());
  76.         }
  77.         
  78.         throw new FileNotFoundException('File not found!');
  79.     }
  80.     /**
  81.      * @Route("/{id}", name="getUserPhoto", methods={"GET"}, options={"expose": true})
  82.      */
  83.     public function getUserPhoto(Request $request): Response
  84.     {
  85.         //$file = $media->getFile();
  86.         //$documentsPending = $this->userRepository->findBy(['photo' => 2]);
  87.         //var_dump($request->get('id'));exit();
  88.         $user $this->userRepository ->findOneByphoto($request->get('id'));
  89.         $company $this->companyRepository ->findOneBy(['logo' => $request->get('id')]);
  90.         if($user != null){
  91.             $nameUser $user->fullName();
  92.             return new Response($nameUser);
  93.         }elseif($company != null){
  94.             $nameUser $company->getName();
  95.             return new Response($nameUser);
  96.         }else{
  97.             return new Response(null);
  98.         }
  99.        
  100.         //throw new FileNotFoundException('File not found!');
  101.     }
  102.     /**
  103.      * @Route("/{id}/activate", name="activate", methods={"GET", "POST"})
  104.      */
  105.     public function activate(Request $requestMedia $media): Response
  106.     {
  107.         $media $this->entityManager->getRepository(Media::class)->find($request->get('media'));
  108.         if (null != $media) {
  109.             if ($media->getValidate() == 0) {
  110.                 $media->setValidate(true);
  111.                 $this->entityManager->flush();
  112.                 $this->flashBag->add('success'"L'image a été activé avec succès.");
  113.             } else {
  114.                 $media->setValidate(false);
  115.                 $this->entityManager->flush();
  116.                 $this->flashBag->add('success'"L'image a été désactivé avec succès.");
  117.             }
  118.         } else {
  119.             $this->flashBag->add('warning''Oups! quelque chose a mal tourné ');
  120.         }
  121.         return new RedirectResponse($this->urlGenerator->generate('back.media.index'));
  122.     }
  123.     /**
  124.      * @Route("/{id}", name="deleteMedia", methods={"DELETE"})
  125.      */
  126.     public function deleteMedia(Request $requestMedia $media): Response
  127.     {
  128.         
  129.             $event = new MediaPreRemoveEvent($media);
  130.             /** @psalm-suppress TooManyArguments */
  131.             $this->dispatcher->dispatch($eventMediaPreRemoveEvent::NAME);
  132.             $this->entityManager->remove($media);
  133.             $this->entityManager->flush();
  134.             $this->flashBag->add('success''Media supprimé avec succès!');
  135.         
  136.         return new RedirectResponse($this->urlGenerator->generate('back.media.index'));
  137.     }
  138.     /**
  139.      * @Route("/getStatutImage/{id}", name="getStatutImage", methods={"GET"}, options={"expose": true})
  140.      */
  141.     public function getStatutImage(Request $request): Response
  142.     {
  143.         $media $this->entityManager->getRepository(Media::class)->find($request->get('id'));
  144.         $userPhoto $this->entityManager->getRepository(User::class) ->findOneBy(['photo' => $request->get('id')]);
  145.         $userCover $this->entityManager->getRepository(User::class) ->findOneBy(['coverPhoto' => $request->get('id')]);
  146.         
  147.         if($userPhoto != null){
  148.             $media->setValidate(true);
  149.             $this->entityManager->flush();
  150.         }
  151.         if($userCover != null){
  152.             $media->setValidate(true);
  153.             $this->entityManager->flush();
  154.         }
  155.         
  156.         $image $this->repository ->find($request->get('id'));
  157.         if($image != null){
  158.             if($image->getValidate() == 1){
  159.                 return new Response('validate');
  160.             }else{
  161.                 return new Response(null);
  162.             }
  163.         }else{
  164.             return new Response(null);
  165.         }
  166.        
  167.     }
  168.     /**
  169.      * @Route("/{id}/delete", name="delete", methods={"GET"}, options={"expose": true})
  170.      */
  171.     public function delete(Media $media): JsonResponse
  172.     {
  173.         $event = new MediaPreRemoveEvent($media);
  174.         /** @psalm-suppress TooManyArguments */
  175.         $this->dispatcher->dispatch($eventMediaPreRemoveEvent::NAME);
  176.         $this->entityManager->remove($media);
  177.         $this->entityManager->flush();
  178.         return new JsonResponse(['status' => 'success''message' => 'media successffuly deleted!']);
  179.     }
  180. }