diff --git a/src/Controller/Admin/ViewController.php b/src/Controller/Admin/ViewController.php index f03d94f..4f364ab 100644 --- a/src/Controller/Admin/ViewController.php +++ b/src/Controller/Admin/ViewController.php @@ -5,25 +5,29 @@ namespace App\Controller\Admin; use App\Entity\Customer; use App\Entity\Payment; use App\Entity\Ticket; +use App\Repository\PaymentRepository; +use App\Repository\TicketRepository; use EasyCorp\Bundle\EasyAdminBundle\Attribute\AdminDashboard; use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard; use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController; -use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; #[AdminDashboard(routePath: '/admin', routeName: 'admin')] class ViewController extends AbstractDashboardController { - public function __construct(private AdminUrlGenerator $adminUrlGenerator) + public function __construct(private readonly PaymentRepository $paymentRepository, private readonly TicketRepository $ticketRepository) { } #[Route('/admin', name: 'admin')] public function index(): Response { - return $this->redirect($this->adminUrlGenerator->setController(CustomerCrudController::class)->generateUrl()); + return $this->render('admin/dashboard.html.twig', [ + 'total' => $this->paymentRepository->getTotalMoneyMade(), + 'foodData' => $this->ticketRepository->getFoodData(), + ]); } public function configureDashboard(): Dashboard @@ -33,6 +37,7 @@ class ViewController extends AbstractDashboardController public function configureMenuItems(): iterable { + yield MenuItem::linktoDashboard('Dashboard', 'fa fa-home'); yield MenuItem::linkToCrud('Customers', 'fa fa-users', Customer::class); yield MenuItem::linkToCrud('Tickets', 'fa fa-ticket', Ticket::class); yield MenuItem::linkToCrud('Payments', 'fa fa-money', Payment::class); diff --git a/src/DataObjects/FoodData.php b/src/DataObjects/FoodData.php new file mode 100644 index 0000000..1cbd2cc --- /dev/null +++ b/src/DataObjects/FoodData.php @@ -0,0 +1,13 @@ +findAll(); + $total = 0.0; + foreach ($all as $payment) { + $total += $payment->getTotal(); + } + + return $total; + } } diff --git a/src/Repository/TicketRepository.php b/src/Repository/TicketRepository.php index fce3bff..cd6e338 100644 --- a/src/Repository/TicketRepository.php +++ b/src/Repository/TicketRepository.php @@ -2,6 +2,7 @@ namespace App\Repository; +use App\DataObjects\FoodData; use App\Entity\Ticket; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; @@ -15,4 +16,22 @@ class TicketRepository extends ServiceEntityRepository { parent::__construct($registry, Ticket::class); } + + public function getFoodData(): FoodData + { + $qb = $this->createQueryBuilder('t') + ->select( + 'SUM(CASE WHEN t.foodType = 1 THEN 1 ELSE 0 END) as totalMeat', + 'SUM(CASE WHEN t.foodType = 2 THEN 1 ELSE 0 END) as totalVegetarian', + 'SUM(CASE WHEN t.foodType = 3 THEN 1 ELSE 0 END) as totalVegan' + ); + + $result = $qb->getQuery()->getSingleResult(); + + return new FoodData( + (int) $result['totalMeat'], + (int) $result['totalVegetarian'], + (int) $result['totalVegan'] + ); + } } diff --git a/templates/admin/dashboard.html.twig b/templates/admin/dashboard.html.twig new file mode 100644 index 0000000..0f39655 --- /dev/null +++ b/templates/admin/dashboard.html.twig @@ -0,0 +1,8 @@ +{% extends '@EasyAdmin/page/content.html.twig' %} + +{% block content %} + {{ total }} € + meat: {{ foodData.totalMeat }} + vegetarian: {{ foodData.totalVegetarian }} + vegan: {{ foodData.totalVegan }} +{% endblock %} \ No newline at end of file