Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
75.00% covered (warning)
75.00%
12 / 16
75.00% covered (warning)
75.00%
3 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
DashboardController
75.00% covered (warning)
75.00%
12 / 16
75.00% covered (warning)
75.00%
3 / 4
4.25
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 index
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 configureDashboard
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 configureMenuItems
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5namespace App\Controller\Admin;
6
7use Override;
8use App\Entity\Maxfield;
9use App\Entity\User;
10use App\Entity\Waypoint;
11use App\Enum\UserRole;
12use App\Repository\UserRepository;
13use EasyCorp\Bundle\EasyAdminBundle\Attribute\AdminDashboard;
14use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
15use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
16use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
17use Symfony\Component\HttpFoundation\Response;
18use Symfony\Component\Security\Http\Attribute\IsGranted;
19
20#[IsGranted(UserRole::ADMIN->value)]
21#[AdminDashboard(routePath: '/admin', routeName: 'admin')]
22class DashboardController extends AbstractDashboardController
23{
24    public function __construct(private readonly UserRepository $userRepository) {}
25
26    #[Override]
27    public function index(): Response
28    {
29        $users = $this->userRepository->findAll();
30
31        return $this->render('admin/index.html.twig', [
32            'userCount' => count($users),
33        ]);
34    }
35
36    #[Override]
37    public function configureDashboard(): Dashboard
38    {
39        return Dashboard::new()
40            ->setTitle('Playground One Admin');
41    }
42
43    #[Override]
44    public function configureMenuItems(): iterable
45    {
46        yield MenuItem::linkToCrud('Users', 'fa fa-users', User::class);
47        yield MenuItem::linkToCrud('Waypoints', 'fa fa-users', Waypoint::class);
48        yield MenuItem::linkToCrud('Maxfields', 'fa fa-users', Maxfield::class);
49
50        yield MenuItem::section();
51        yield MenuItem::linkToUrl(
52            'Homepage',
53            'fas fa-home',
54            $this->generateUrl('default')
55        );
56    }
57}