<?php
namespace App\Controller\Admin;
use App\Entity\Client;
use App\Entity\ElementSettings;
use App\Entity\FenceColorDictionary;
use App\Entity\FenceElementDictionary;
use App\Entity\FenceOffer;
use App\Entity\Settings;
use App\Repository\ClientRepository;
use App\Repository\UserRepository;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use App\Repository\FenceOfferRepository;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
use App\Entity\User;
use Symfony\Component\Security\Core\User\UserInterface;
class DashboardController extends AbstractDashboardController
{
private $userRepository;
private $fenceOfferRepository;
private $clientRepository;
private $adminUrlGenerator;
public function __construct(UserRepository $userRepository, FenceOfferRepository $fenceOfferRepository, ClientRepository $clientRepository, AdminUrlGenerator $adminUrlGenerator)
{
$this->userRepository = $userRepository;
$this->fenceOfferRepository = $fenceOfferRepository;
$this->clientRepository = $clientRepository;
$this->adminUrlGenerator = $adminUrlGenerator;
}
#[IsGranted('ROLE_ADMIN_EASY_ADMIN')]
#[Route('/admin', name: 'admin')]
public function index(): Response
{
return $this->redirect($this->adminUrlGenerator->setController(ClientCrudController::class)->generateUrl());
//// $users = $this->userRepository->findBy([], ['id' => 'DESC'], 3);
// $offers = $this->fenceOfferRepository->findBy([], ['id' => 'DESC'], 3);
// $clients = $this->clientRepository->findBy([], ['id' => 'DESC'], 3);
// return $this->render('admin/index.html.twig', [
//// 'users' => $users,
// 'offers' => $offers,
// 'clients' => $clients,
// ]);
}
public function configureDashboard(): Dashboard
{
return Dashboard::new()
->disableDarkMode()
->setTitle('Falcon system');
}
public function configureUserMenu(UserInterface $user): UserMenu
{
return parent::configureUserMenu($user)
->setName($user->getFirstName() . ' - ' . $user->getEmail());
}
public function configureMenuItems(): iterable
{
// yield MenuItem::linkToUrl('Home page', 'fa fa-link', '/');
// yield MenuItem::linkToDashboard('Dashboard', 'fa fa-dashboard');
yield MenuItem::section('Clients');
yield MenuItem::linkToCrud('Clients', 'fas fa-users', Client::class);
yield MenuItem::section('Offer');
yield MenuItem::linkToCrud('Fence Offer', 'fas fa-rectangle-list', FenceOffer::class);
yield MenuItem::section('Offer settings')->setPermission('ROLE_SYSTEM_CONFIG');
yield MenuItem::linkToCrud('Custom colors', 'fas fa-gears', null::class)
->setAction('fenceColorDictionaryPage')
->setController(FenceColorDictionaryCrudController::class)
->setPermission('ROLE_SYSTEM_CONFIG');
yield MenuItem::section('Quotation settings')->setPermission('ROLE_SYSTEM_CONFIG');
yield MenuItem::linkToCrud('Elements settings', 'fas fa-gears', ElementSettings::class)
->setPermission('ROLE_SYSTEM_CONFIG');
yield MenuItem::linkToCrud('General settings', 'fas fa-gear', null::class)
->setAction('generalSettings')
->setController(SettingsCrudController::class)
->setPermission('ROLE_SYSTEM_CONFIG');
yield MenuItem::linkToCrud('Predefined items', 'fas fa-gear', null::class)
->setAction('predefinedItemsPage')
->setController(PredefnedItemsCrudController::class)
->setPermission('ROLE_SYSTEM_CONFIG');
yield MenuItem::linkToCrud('Elements Descriptions', 'fas fa-gear', null::class)
->setAction('elementsDescriptions')
->setController(SettingsCrudController::class)
->setPermission('ROLE_SYSTEM_CONFIG');
yield MenuItem::section('Admin');
yield MenuItem::linkToCrud('Users', 'fas fa-users', User::class);
// yield MenuItem::linkToCrud('Fence Color Dictionary', 'fas fa-palette', FenceColorDictionary::class);
// yield MenuItem::linkToCrud('Fence Element Dictionary', 'fas fa-xmark', FenceElementDictionary::class);
}
public function configureActions(): Actions
{
return parent::configureActions()
->add(Crud::PAGE_INDEX, Action::DETAIL)
->add(Crud::PAGE_NEW, Action::INDEX);
}
public function configureAssets(): Assets
{
return parent::configureAssets()
->addWebpackEncoreEntry('admin');
}
public function configureCrud(): Crud
{
return parent::configureCrud()
->setDefaultSort([
'id' => 'DESC'
])
->showEntityActionsInlined();
}
}