src/Controller/AdminDefaultController.php line 95

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CaseStudies;
  4. use App\Entity\Enquiry;
  5. use App\Entity\HtmlBlocks;
  6. use App\Entity\Menu;
  7. use App\Entity\News;
  8. use App\Entity\Page;
  9. use App\Entity\Slider;
  10. use App\Entity\TeamMember;
  11. use App\Entity\User;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\Security\Core\Security;
  19. #[Route(path: '/takeflight')]
  20. class AdminDefaultController extends AbstractController
  21. {
  22. #[Route(path: '/dash', name: 'control_dash')]
  23. #[IsGranted('ROLE_CMS_ACCESS')]
  24. public function index(EntityManagerInterface $em, Request $request): Response
  25. {
  26. $request->getSession()->set('_locale', 'en');
  27. $request->setLocale('en');
  28. $pageCount = [
  29. 'active' => $em->getRepository(Page::class)->getActiveCount(),
  30. 'inactive' => $em->getRepository(Page::class)->getInActiveCount(),
  31. ];
  32. $contentBlockCount = [
  33. 'active' => $em->getRepository(HtmlBlocks::class)->getActiveCount(),
  34. 'inactive' => $em->getRepository(HtmlBlocks::class)->getInActiveCount(),
  35. ];
  36. $sliderCount = [
  37. 'active' => $em->getRepository(Slider::class)->getActiveCount(),
  38. 'inactive' => $em->getRepository(Slider::class)->getInActiveCount(),
  39. ];
  40. $newsCount = [
  41. 'active' => $em->getRepository(News::class)->getActiveCount(),
  42. 'inactive' => $em->getRepository(News::class)->getInActiveCount(),
  43. ];
  44. $caseStudyCount = [
  45. 'active' => $em->getRepository(CaseStudies::class)->getActiveCount(),
  46. 'inactive' => $em->getRepository(CaseStudies::class)->getInActiveCount(),
  47. ];
  48. $teamMemberCount = [
  49. 'active' => $em->getRepository(TeamMember::class)->getActiveCount(),
  50. 'inactive' => $em->getRepository(TeamMember::class)->getInActiveCount(),
  51. ];
  52. $menuCount = [
  53. 'active' => $em->getRepository(Menu::class)->getActiveCount(),
  54. 'inactive' => $em->getRepository(Menu::class)->getInActiveCount(),
  55. ];
  56. $enquiryCount = [
  57. 'active' => $em->getRepository(Enquiry::class)->getUnViewedCount(),
  58. 'inactive' => $em->getRepository(Enquiry::class)->getViewedCount(),
  59. ];
  60. $userCount = [
  61. 'active' => $em->getRepository(User::class)->getActiveCount(),
  62. 'inactive' => $em->getRepository(User::class)->getInActiveCount(),
  63. ];
  64. return $this->render('takeflight/dash.html.twig', [
  65. 'pageCount' => $pageCount,
  66. 'contentBlockCount' => $contentBlockCount,
  67. 'sliderCount' => $sliderCount,
  68. 'newsCount' => $newsCount,
  69. 'caseStudyCount' => $caseStudyCount,
  70. 'teamMemberCount' => $teamMemberCount,
  71. 'menuCount' => $menuCount,
  72. 'enquiryCount' => $enquiryCount,
  73. 'userCount' => $userCount,
  74. ]);
  75. }
  76. /**
  77. * the $request is used to get the current page route for the menu.
  78. *
  79. * @param mixed|null $request
  80. */
  81. public function showAdminHeader(EntityManagerInterface $em, Security $security, Request $request = null)
  82. {
  83. if ($security->isGranted('ROLE_CMS_ACCESS')) {
  84. // add any logic for admin header elements - ie notifications
  85. $messages = $em->getRepository(Enquiry::class)->findBy(['deleted' => false, 'viewed' => false]);
  86. // notifications and flags left for future use
  87. $notifications = [];
  88. $alerts = [];
  89. // used for hiding top admin bar on frontend
  90. $isControlDash = true;
  91. return $this->render('takeflight/header.html.twig', [
  92. 'request' => $request,
  93. 'messages' => $messages,
  94. 'notifications' => $notifications,
  95. 'alerts' => $alerts,
  96. 'isControlDash' => $isControlDash,
  97. ]);
  98. }
  99. return new Response('');
  100. }
  101. }