forked from cleverage/processuibundle
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProcessDashboardController.php
83 lines (72 loc) · 2.92 KB
/
ProcessDashboardController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
declare(strict_types=1);
/*
* This file is part of the CleverAge/UiProcessBundle package.
*
* Copyright (c) Clever-Age
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CleverAge\UiProcessBundle\Controller\Admin;
use CleverAge\UiProcessBundle\Entity\LogRecord;
use CleverAge\UiProcessBundle\Entity\ProcessExecution;
use CleverAge\UiProcessBundle\Entity\ProcessSchedule;
use CleverAge\UiProcessBundle\Entity\User;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
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;
use Symfony\Component\Security\Http\Attribute\IsGranted;
use Symfony\Component\Translation\LocaleSwitcher;
#[IsGranted('ROLE_ADMIN')]
class ProcessDashboardController extends AbstractDashboardController
{
public function __construct(
private readonly LocaleSwitcher $localeSwitcher,
private readonly string $logoPath = '',
) {
}
#[Route('/process', name: 'process')]
public function index(): Response
{
$adminUrlGenerator = $this->container->get(AdminUrlGenerator::class);
return $this->redirect($adminUrlGenerator->setController(ProcessExecutionCrudController::class)->generateUrl());
}
public function configureDashboard(): Dashboard
{
return Dashboard::new()
->renderContentMaximized()
->setTitle('<img src="'.$this->logoPath.'" />');
}
public function configureMenuItems(): iterable
{
yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');
yield MenuItem::subMenu('Process', 'fas fa-gear')->setSubItems(
[
MenuItem::linkToRoute('Process list', 'fas fa-list', 'process_list'),
MenuItem::linkToCrud('Executions', 'fas fa-rocket', ProcessExecution::class),
MenuItem::linkToCrud('Logs', 'fas fa-pen', LogRecord::class),
MenuItem::linkToCrud('Scheduler', 'fas fa-solid fa-clock', ProcessSchedule::class)
->setPermission('ROLE_SUPER_ADMIN'),
]
);
yield MenuItem::subMenu('Users', 'fas fa-user')->setSubItems(
[
MenuItem::linkToCrud('User List', 'fas fa-user', User::class),
]
)->setPermission('ROLE_SUPER_ADMIN');
}
public function configureCrud(): Crud
{
/** @var ?User $user */
$user = $this->getUser();
if (null !== $user?->getLocale()) {
$this->localeSwitcher->setLocale($user->getLocale());
}
return parent::configureCrud()->setTimezone($user?->getTimezone() ?? date_default_timezone_get());
}
}