src/Controller/DashboardController.php line 28

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Document;
  4. use App\Entity\Media;
  5. use App\Entity\Tag;
  6. use App\Form\DocumentType;
  7. use App\Repository\DocumentRepository;
  8. use App\Repository\GroupeRepository;
  9. use App\Repository\MediaRepository;
  10. use App\Repository\TagRepository;
  11. use App\Service\DisplaySize;
  12. use App\Service\DocumentService;
  13. use App\Service\FileUploader;
  14. use Doctrine\ORM\EntityManagerInterface;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. #[Route(path'/dashboard')]
  20. class DashboardController extends AbstractController
  21. {
  22.     public const NBRE_DOCS 5;
  23.     #[Route(path'/{tagId}'name'dashboard_index'methods: ['GET''POST'])]
  24.     public function index(
  25.         DocumentRepository $documentRepository,
  26.         MediaRepository $mediaRepository,
  27.         TagRepository $tagRepository,
  28.         Request $request,
  29.         EntityManagerInterface $entityManager,
  30.         FileUploader $fileUploader,
  31.         GroupeRepository $groupeRepository,
  32.         DisplaySize $displaySize,
  33.         DocumentService $ds,
  34.         Tag $tagId null,
  35.     ): Response {
  36.         $newDoc = new Document();
  37.         $groupe $groupeRepository->findAll();
  38.         $newDoc->addGroupe($groupe[0]);
  39.         $newDoc->setDateAjout(new \DateTime());
  40.         $documents = [];
  41.         $form $this->createForm(DocumentType::class, $newDoc);
  42.         $form->handleRequest($request);
  43.         if ($form->isSubmitted() && $form->isValid()) {
  44.             $newDoc->setDateAjout(new \DateTime());
  45.             $fichier $form->get('fichier')->getData();
  46.             if ($fichier) {
  47.                 $uploaded = new Media();
  48.                 $uploaded $fileUploader->upload($fichier);
  49.                 $newDoc->setDoc($uploaded);
  50.             }
  51.             $entityManager->persist($newDoc);
  52.             $entityManager->flush();
  53.             $this->addFlash(
  54.                 'success',
  55.                 'Le document a été créé !'
  56.             );
  57.             return $this->redirectToRoute('dashboard_index');
  58.         }
  59.         $tags $tagRepository->findAll();
  60.         if ($tagId) {
  61.             $tag $tagId;
  62.         } else {
  63.             $tag $tags[array_key_first($tags)];
  64.         }
  65.         $docsTag $tag->getDocuments()->toArray();
  66.         /** @var \App\Entity\User|null $user */
  67.         $user $this->getUser();
  68.         if ($this->isGranted('ROLE_ADMIN')) {
  69.             $documents $documentRepository->findBy([], ['id' => 'DESC'], self::NBRE_DOCS);
  70.         } else {
  71.             $grps $user->getGroupes();
  72.             foreach ($grps as $groupe) {
  73.                 foreach ($groupe->getDocuments() as $doc) {
  74.                     $documents[$doc->getId()] = $doc;
  75.                 }
  76.                 $documents \array_slice($documentsself::NBRE_DOCS * -1);
  77.                 $documents array_reverse($documents);
  78.             }
  79.         }
  80.         $documents $ds->docFilter($documents);
  81.         $docsTag $ds->docFilter($docsTag);
  82.         $docsTag \array_slice($docsTagself::NBRE_DOCS * -1);
  83.         $sizeTotal $mediaRepository->getSize();
  84.         $sizeTotalDisplay $displaySize->getSize((string) $sizeTotal);
  85.         return $this->render('dashboard/index.html.twig', [
  86.             'docsTous' => $documents,
  87.             'docsTag' => $docsTag,
  88.             'maxDocs' => self::NBRE_DOCS,
  89.             // 'titre' => 'Actions',
  90.             'tags' => $tags,
  91.             'tagDefault' => $tag,
  92.             'controller_name' => 'DashboardController',
  93.             'sizetotalDisplay' => $sizeTotalDisplay,
  94.             'nbreTotalDocs' => $documentRepository->countDocs(),
  95.             'form' => $form->createView(),
  96.         ]);
  97.     }
  98. }