<?php
/**
* @author Yenier Jimenez <yjmorales86@gmail.com>
*/
namespace App\Controller\Admin\Dashboard;
use App\Controller\Core\BaseController;
use App\Entity\AboutUs;
use App\Entity\ContactUsMessageType;
use App\Entity\Inquiry;
use App\Entity\ReadyToLaunch;
use App\Entity\Resource;
use App\Entity\Service;
use App\Entity\Startup;
use App\Entity\TeamMember;
use App\Entity\User;
use Doctrine\Persistence\ManagerRegistry;
use Illuminate\Support\Arr;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* Renders the dashboard page.
*/
class DashboardController extends BaseController
{
/**
* Renders the dashboard page.
*
* @Route("/admin/dashboard", name="bo_dashboard")
*/
public function index(ManagerRegistry $doctrine): Response
{
$about = Arr::first($this->repository($doctrine, AboutUs::class)->findAll());;
$users = $this->repository($doctrine, User::class)->findAll();
// Inquiry
$messageRepo = $this->repository($doctrine, Inquiry::class);
$countAllInquiries = $messageRepo->count(['type' => ContactUsMessageType::INQUIRY,]);
$newInquiries = $messageRepo->findBy([
'visited' => false,
'type' => ContactUsMessageType::INQUIRY,
]);
// Launching
$countAllLaunching = $messageRepo->count(['type' => ContactUsMessageType::READY_TO_LAUNCH,]);
$newReadyToLaunchInquiry = $messageRepo->findBy([
'visited' => false,
'type' => ContactUsMessageType::READY_TO_LAUNCH,
]);
// Resume
$countAllResumes = $messageRepo->count(['type' => ContactUsMessageType::SUBMIT_RESUME,]);
$newResumeInquiry = $messageRepo->findBy([
'visited' => false,
'type' => ContactUsMessageType::SUBMIT_RESUME,
]);
// Sponsorships
$countAllSponsorships = $messageRepo->count(['type' => ContactUsMessageType::SPONSORSHIP,]);
$newSponsorshipInquiry = $messageRepo->findBy([
'visited' => false,
'type' => ContactUsMessageType::SPONSORSHIP,
]);
$allNewMessages = $countAllInquiries + $countAllResumes + $countAllLaunching + $countAllSponsorships;
return $this->render('/admin/authenticated/dashboard/dashboard.html.twig', [
'about' => $about,
'usersCount' => count($users),
'servicesCount' => count($this->repository($doctrine, Service::class)->findAll()),
'resourcesCount' => count($this->repository($doctrine, Resource::class)->findAll()),
'startupsCount' => count($this->repository($doctrine, Startup::class)->findAll()),
'teamMembersCount' => count($this->repository($doctrine, TeamMember::class)->findAll()),
'countNewInquiries' => count($newInquiries),
'countAllInquiries' => $countAllInquiries,
'countNewResumes' => count($newResumeInquiry),
'countAllResumes' => $countAllResumes,
'countNewLaunching' => count($newReadyToLaunchInquiry),
'countAllLaunching' => $countAllLaunching,
'countNewSponsorships' => count($newSponsorshipInquiry),
'countAllSponsorships' => $countAllSponsorships,
'allNewMessages' => $allNewMessages,
]);
}
}