<?php
namespace App\Controller;
use App\Entity\CaseStudies;
use App\Entity\Enquiry;
use App\Entity\HtmlBlocks;
use App\Entity\Menu;
use App\Entity\News;
use App\Entity\Page;
use App\Entity\Slider;
use App\Entity\TeamMember;
use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Security;
#[Route(path: '/takeflight')]
class AdminDefaultController extends AbstractController
{
#[Route(path: '/dash', name: 'control_dash')]
#[IsGranted('ROLE_CMS_ACCESS')]
public function index(EntityManagerInterface $em, Request $request): Response
{
$request->getSession()->set('_locale', 'en');
$request->setLocale('en');
$pageCount = [
'active' => $em->getRepository(Page::class)->getActiveCount(),
'inactive' => $em->getRepository(Page::class)->getInActiveCount(),
];
$contentBlockCount = [
'active' => $em->getRepository(HtmlBlocks::class)->getActiveCount(),
'inactive' => $em->getRepository(HtmlBlocks::class)->getInActiveCount(),
];
$sliderCount = [
'active' => $em->getRepository(Slider::class)->getActiveCount(),
'inactive' => $em->getRepository(Slider::class)->getInActiveCount(),
];
$newsCount = [
'active' => $em->getRepository(News::class)->getActiveCount(),
'inactive' => $em->getRepository(News::class)->getInActiveCount(),
];
$caseStudyCount = [
'active' => $em->getRepository(CaseStudies::class)->getActiveCount(),
'inactive' => $em->getRepository(CaseStudies::class)->getInActiveCount(),
];
$teamMemberCount = [
'active' => $em->getRepository(TeamMember::class)->getActiveCount(),
'inactive' => $em->getRepository(TeamMember::class)->getInActiveCount(),
];
$menuCount = [
'active' => $em->getRepository(Menu::class)->getActiveCount(),
'inactive' => $em->getRepository(Menu::class)->getInActiveCount(),
];
$enquiryCount = [
'active' => $em->getRepository(Enquiry::class)->getUnViewedCount(),
'inactive' => $em->getRepository(Enquiry::class)->getViewedCount(),
];
$userCount = [
'active' => $em->getRepository(User::class)->getActiveCount(),
'inactive' => $em->getRepository(User::class)->getInActiveCount(),
];
return $this->render('takeflight/dash.html.twig', [
'pageCount' => $pageCount,
'contentBlockCount' => $contentBlockCount,
'sliderCount' => $sliderCount,
'newsCount' => $newsCount,
'caseStudyCount' => $caseStudyCount,
'teamMemberCount' => $teamMemberCount,
'menuCount' => $menuCount,
'enquiryCount' => $enquiryCount,
'userCount' => $userCount,
]);
}
/**
* the $request is used to get the current page route for the menu.
*
* @param mixed|null $request
*/
public function showAdminHeader(EntityManagerInterface $em, Security $security, Request $request = null)
{
if ($security->isGranted('ROLE_CMS_ACCESS')) {
// add any logic for admin header elements - ie notifications
$messages = $em->getRepository(Enquiry::class)->findBy(['deleted' => false, 'viewed' => false]);
// notifications and flags left for future use
$notifications = [];
$alerts = [];
// used for hiding top admin bar on frontend
$isControlDash = true;
return $this->render('takeflight/header.html.twig', [
'request' => $request,
'messages' => $messages,
'notifications' => $notifications,
'alerts' => $alerts,
'isControlDash' => $isControlDash,
]);
}
return new Response('');
}
}