src/Controller/Admin/DashboardController.php line 64

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\ActualitePage;
  4. use App\Entity\Application;
  5. use App\Entity\ApplicationParagraph;
  6. use App\Entity\Category;
  7. use App\Entity\Contact;
  8. use App\Entity\Document;
  9. use App\Entity\DocumentCategory;
  10. use App\Entity\DocumentPage;
  11. use App\Entity\FabricationPage;
  12. use App\Entity\FabricationParagraph;
  13. use App\Entity\History;
  14. use App\Entity\JobOffer;
  15. use App\Entity\JobOfferParagraph;
  16. use App\Entity\LandingSlider;
  17. use App\Entity\Member;
  18. use App\Entity\Newsletter;
  19. use App\Entity\Page;
  20. use App\Entity\Paragraph;
  21. use App\Entity\Partner;
  22. use App\Entity\Post;
  23. use App\Entity\PostCategory;
  24. use App\Entity\PostMedia;
  25. use App\Entity\PostTranslation;
  26. use App\Entity\PresentationPage;
  27. use App\Entity\PresentationParagraph;
  28. use App\Entity\Product;
  29. use App\Entity\ProductMedia;
  30. use App\Entity\ProductTable;
  31. use App\Entity\ProductTableColumn;
  32. use App\Entity\Project;
  33. use App\Entity\SubCategory;
  34. use App\Entity\SubSubCategory;
  35. use App\Entity\SubSubSubCategory;
  36. use App\Entity\Test;
  37. use App\Entity\Testimonial;
  38. use App\Entity\TestOk;
  39. use App\Form\ParagraphType;
  40. use Doctrine\Persistence\ManagerRegistry;
  41. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  42. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  43. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  44. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  45. use Symfony\Component\HttpFoundation\Request;
  46. use Symfony\Component\HttpFoundation\Response;
  47. use Symfony\Component\Routing\Annotation\Route;
  48. class DashboardController extends AbstractDashboardController
  49. {
  50.     private $adminUrlGenerator;
  51.     public function __construct(AdminUrlGenerator $adminUrlGenerator)
  52.     {
  53.         $this->adminUrlGenerator $adminUrlGenerator;
  54.     }
  55.     /**
  56.      * @Route("/admin", name="admin")
  57.      */
  58.     public function dashboard(ManagerRegistry $managerRegistry): Response
  59.     {
  60.         $repoContact $managerRegistry->getRepository(Contact::class);
  61.         $sixMonthAgo = new \DateTime();
  62.         $sixMonthAgo->modify("-6 months");
  63.         $data["between"]["notStrict"]["a.createdAt"]["min"] = $sixMonthAgo;
  64.         $data["count"] = 1;
  65.         $nbContactLastSixMonths $repoContact->search($data);
  66.         $nbContactsTotal $repoContact->search(["count" => 1]);
  67.         return $this->render('admin/dashboard.html.twig', [
  68.                 "contacts" => $repoContact->findBy([], ["createdAt" => "desc"], 5),
  69.                 "nbContactLastSixMonths" => $nbContactLastSixMonths,
  70.                 "nbContactsTotal" => $nbContactsTotal,
  71.             ]
  72.         );
  73.     }
  74.     public function configureDashboard(): Dashboard
  75.     {
  76.         $siteTitle $this->getParameter('siteTitle');
  77.         return Dashboard::new()
  78.             ->setTitle($siteTitle)
  79.             ->setFaviconPath('assets/img/favicon.ico');
  80.     }
  81.     public function configureMenuItems(): iterable
  82.     {
  83.         return [
  84.             yield MenuItem::linkToDashboard('Tableau de bord''fa fa-home'),
  85.             yield MenuItem::section('Général'),
  86.             yield MenuItem::linkToCrud('Messages''fa fa-envelope'Contact::class),
  87.             yield MenuItem::linkToCrud('Module SEO''fa fa-bar-chart'Page::class),
  88.             yield MenuItem::section('Contenus'),
  89.             yield MenuItem::linkToCrud("Slider - Accueil"'fa fa-camera'LandingSlider::class),
  90.             yield MenuItem::section('Qui sommes-nous'),
  91.             yield MenuItem::linkToCrud("Bannière"'fa fa-home'PresentationPage::class),
  92.             yield MenuItem::linkToCrud("Paragraphes"'fa fa-handshake'PresentationParagraph::class),
  93.             yield MenuItem::section('Applications'),
  94.             yield MenuItem::linkToCrud('Applications''fa fa-newspaper-o'Application::class),
  95.             yield MenuItem::linkToCrud("Paragraphes"'fa fa-list'ApplicationParagraph::class),
  96.             yield MenuItem::section('Actualités'),
  97.             yield MenuItem::linkToCrud('Bannière''fa fa-home'ActualitePage::class),
  98.             yield MenuItem::linkToCrud('Actualités''fa fa-newspaper-o'Post::class),
  99.             yield MenuItem::linkToCrud("Catégories"'fa fa-list'PostCategory::class),
  100.             yield MenuItem::linkToCrud("Medias"'fa fa-camera'PostMedia::class),
  101.             yield MenuItem::section('Documents'),
  102.             yield MenuItem::linkToCrud("Bannière"'fa fa-home'DocumentPage::class),
  103.             yield MenuItem::linkToCrud("Documents"'fa fa-newspaper-o'Document::class),
  104.             yield MenuItem::linkToCrud("Catégories"'fa fa-list'DocumentCategory::class),
  105.             yield MenuItem::section('Fabrication sur-mesure'),
  106.             yield MenuItem::linkToCrud("Bannière"'fa fa-home'FabricationPage::class),
  107.             yield MenuItem::linkToCrud("Paragraphes"'fa fa-list'FabricationParagraph::class),
  108.             yield MenuItem::section('Produits'),
  109.             yield MenuItem::linkToCrud("Catégories"'fa fa-list'Category::class),
  110.             yield MenuItem::linkToCrud("Sous-catégories"'fa fa-list-ol'SubCategory::class),
  111.             yield MenuItem::linkToCrud("Sous-sous-catégories"'fa fa-list-ol'SubSubCategory::class),
  112.             yield MenuItem::linkToCrud("Sous-sous-sous-catégories"'fa fa-list-ol'SubSubSubCategory::class),
  113.             yield MenuItem::linkToCrud("Produits"'fa fa-suitcase'Product::class),
  114.             // yield MenuItem::linkToCrud("Photos", 'fa fa-camera', ProductMedia::class),
  115.             // yield MenuItem::linkToCrud("Caractéristiques techniques", 'fa fa-handshake', ProductTable::class),
  116.             // yield MenuItem::linkToCrud("Colonnes - Tableau", 'fa fa-building', ProductTableColumn::class),
  117.         ];
  118.     }
  119.     /**
  120.      * @Route("/admin/paragraph-position", name="admin_paragraph_position")
  121.      */
  122.     public function paragraphPosition(ManagerRegistry $managerRegistryRequest $request)
  123.     {
  124.         $position $request->request->get('position'null);
  125.         $id $request->request->get('id'null);
  126.         $repoParagraph $managerRegistry->getRepository(Paragraph::class);
  127.         $paragraph $repoParagraph->find($id);
  128.         if ($paragraph) {
  129.             $paragraph->setPosition($position);
  130.             $em $managerRegistry->getManager();
  131.             $em->flush();
  132.         }
  133.         $response = new Response(json_encode(array('status' => 'success')));
  134.         $response->headers->set('Content-Type''application/json');
  135.         return $response;
  136.     }
  137.     /**
  138.      * @Route("/supprimer-un-paragraphe/{id}", name="admin_delete_paragraph")
  139.      */
  140.     public function deleteParagraph(ManagerRegistry $managerRegistryRequest $requestParagraph $paragraph)
  141.     {
  142.         $post $paragraph->getPost();
  143.         $em $managerRegistry->getManager();
  144.         $em->remove($paragraph);
  145.         $em->flush();
  146.         $this->addFlash("success""Paragraphe supprimé.");
  147.         return $this->redirectToRoute('admin_edit_post', ['slug' => $post->getSlug()]);
  148.     }
  149.     /**
  150.      * @Route("/admin/edition-d-un-article/{slug}/{paragraphId}", name="admin_edit_post")
  151.      */
  152.     public function editPost(Request $requestManagerRegistry $managerRegistrystring $slug$paragraphId null)
  153.     {
  154.         $repoPostTranslation $managerRegistry->getRepository(PostTranslation::class);
  155.         $postTranslation $repoPostTranslation->findOneBy(["slug" => $slug]);
  156.         if ($postTranslation and $post $postTranslation->getTranslatable()) {
  157.             $repoParagraph $managerRegistry->getRepository(Paragraph::class);
  158.             $paragraph = ($paragraphId and $repoParagraph->findOneBy(["post" => $post"id" => $paragraphId])) ? $repoParagraph->findOneBy(["post" => $post"id" => $paragraphId]) : new Paragraph();
  159.             $paragraph->setPost($post);
  160.             $paragraphForm $this->createForm(ParagraphType::class, $paragraph);
  161.             $paragraphForm->handleRequest($request);
  162.             if ($paragraphForm->isSubmitted() && $paragraphForm->isValid()) {
  163.                 $em $managerRegistry->getManager();
  164.                 $em->persist($paragraph);
  165.                 $em->flush();
  166.                 $this->addFlash("success""Paragraphe enregistré.");
  167.                 return $this->redirectToRoute('admin_edit_post', ["slug" => $post->getSlug()]);
  168.             }
  169.             $paragraphs $repoParagraph->findBy(["post" => $post], ["position" => "asc"]);
  170.             return $this->render('admin/editPost.html.twig', [
  171.                 'paragraphForm' => $paragraphForm->createView(),
  172.                 'post' => $post,
  173.                 "paragraphs" => $paragraphs
  174.             ]);
  175.         } else {
  176.             $this->addFlash("danger""admin.post_not_found");
  177.             return $this->redirectToRoute('admin');
  178.         }
  179.     }
  180. }