<?php
namespace App\Controller\Dashboard;
use App\Entity\BookingTime;
use App\Entity\Course;
use App\Entity\Customer;
use App\Entity\Document;
use App\Entity\EmailTemplate;
use App\Entity\Event;
use App\Entity\Housekeeping;
use App\Entity\Invoice;
use App\Entity\InvoiceStatement;
use App\Entity\MaintenanceEquipment;
use App\Entity\MaintenanceInvoice;
use App\Entity\MaintenanceRequest;
use App\Entity\Membership;
use App\Entity\MembershipPrice;
use App\Entity\News;
use App\Entity\Newsletter;
use App\Entity\Order;
use App\Entity\OrderStatus;
use App\Entity\Package;
use App\Entity\PackageOption;
use App\Entity\PackagePrice;
use App\Entity\Promotion;
use App\Entity\Property;
use App\Entity\Request;
use App\Entity\Reseller;
use App\Entity\TeeTime;
use App\Entity\User;
use App\Entity\Voucher;
use Dukecity\CommandSchedulerBundle\Entity\ScheduledCommand;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
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 EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\User\UserInterface;
class DashboardController extends AbstractDashboardController
{
#[Route('/', name: 'dashboard')]
public function index(): Response
{
// return parent::index();
// Option 1. You can make your dashboard redirect to some common page of your backend
$adminUrlGenerator = $this->container->get(AdminUrlGenerator::class);
return $this->redirect($adminUrlGenerator->setController(OrderCrudController::class)->generateUrl());
// Option 2. You can make your dashboard redirect to different pages depending on the user
// if ('jane' === $this->getUser()->getUsername()) {
// return $this->redirect('...');
// }
// Option 3. You can render some custom template to display a proper dashboard with widgets, etc.
// (tip: it's easier if your template extends from @EasyAdmin/page/content.html.twig)
//
// return $this->render('some/path/my-dashboard.html.twig');
}
public function configureDashboard(): Dashboard
{
return Dashboard::new()
->setTitle('DG Golf <br/>Concierge')
->disableDarkMode()
;
}
public function configureCrud(): Crud
{
return Crud::new()
->setDateTimeFormat('medium', 'short')
->showEntityActionsInlined()
->setPaginatorPageSize(30)
->overrideTemplate('label/null', 'dashboard/fields/null.html.twig')
;
}
public function configureActions(): Actions
{
return Actions::new()
->addBatchAction(Action::BATCH_DELETE)
->add(Crud::PAGE_INDEX, Action::NEW)
->add(Crud::PAGE_INDEX, Action::EDIT)
->add(Crud::PAGE_INDEX, Action::DELETE)
->add(Crud::PAGE_DETAIL, Action::EDIT)
->add(Crud::PAGE_DETAIL, Action::INDEX)
->add(Crud::PAGE_DETAIL, Action::DELETE)
->add(Crud::PAGE_EDIT, Action::SAVE_AND_RETURN)
->add(Crud::PAGE_EDIT, Action::SAVE_AND_CONTINUE)
->add(Crud::PAGE_NEW, Action::SAVE_AND_RETURN)
->add(Crud::PAGE_NEW, Action::SAVE_AND_ADD_ANOTHER)
->remove(Crud::PAGE_INDEX, Action::BATCH_DELETE)
->remove(Crud::PAGE_INDEX, Action::DELETE)
// ->remove(Crud::PAGE_DETAIL, Action::DELETE)
->add(Crud::PAGE_INDEX, Action::DETAIL)
->add(Crud::PAGE_EDIT, Action::SAVE_AND_ADD_ANOTHER)
// ->add(Crud::PAGE_EDIT, Action::DELETE)
// ->setPermission(Crud::PAGE_EDIT, 'ROLE_SUPER_ADMIN')
// ->add(Crud::PAGE_DETAIL, Action::INDEX)
;
}
public function configureAssets(): Assets
{
return Assets::new()
->addWebpackEncoreEntry('base');
}
public function configureUserMenu(UserInterface $user): UserMenu
{
return parent::configureUserMenu($user)
->setName($user->getFullName())
;
}
public function configureMenuItems(): iterable
{
yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');
yield MenuItem::section('Sales');
yield MenuItem::linkToCrud('Orders', 'fa fa-clipboard-list', Order::class)
->setBadge('4', 'secondary');
yield MenuItem::linkToCrud('Requests', 'fa fa-comment-dollar', Request::class);
// ->setBadge('Soon', 'info')
// ->setCssClass('disabled');
yield MenuItem::linkToCrud('Tee Times', 'fa fa-golf-ball-tee', TeeTime::class);
yield MenuItem::linkToCrud('Bookings', 'fa fa-calendar-check', BookingTime::class);
// yield MenuItem::linkToCrud('Proshop EOD', 'fas fa-stopwatch', Order::class)
// ->setBadge('Soon', 'info')
// ->setCssClass('disabled')
// ;
// yield MenuItem::linkToRoute('Download Proshop EOD', 'fas fa-file-download', 'dailypssalessheet');
yield MenuItem::section('Service');
yield MenuItem::linkToCrud('Customers', 'fa fa-users-rectangle', Customer::class);
yield MenuItem::linkToCrud('Memberships', 'fa fa-address-card', Membership::class);
yield MenuItem::linkToCrud('Membership Prices', 'fa fa-comment-dollar', MembershipPrice::class);
yield MenuItem::linkToCrud('Newsletter', 'fa fa-envelope', Newsletter::class);
// yield MenuItem::linkToCrud('Rewards', 'fa fa-certificate', Order::class)
// ->setBadge('Soon', 'info')
// ->setCssClass('disabled');
yield MenuItem::linkToCrud('Housekeeping', 'fa fa-hand-sparkles', Housekeeping::class)
// ->setBadge('Soon', 'info')
// ->setCssClass('disabled')
;
// yield MenuItem::linkToCrud('Maintenance', 'fa fa-screwdriver-wrench', Order::class)
// // ->setBadge('Soon', 'info')
// // ->setCssClass('disabled')
// ;
yield MenuItem::subMenu('Maintenance', 'fa fa-screwdriver-wrench')->setSubItems([
MenuItem::linkToCrud('Requests', 'fa fa-box', MaintenanceRequest::class),
MenuItem::linkToCrud('Equipment', 'fa fa-box', MaintenanceEquipment::class),
MenuItem::linkToCrud('Invoices', 'fa fa-box', MaintenanceInvoice::class),
]);
yield MenuItem::section('');
yield MenuItem::subMenu('Management', 'fa fa-desktop')->setSubItems([
MenuItem::linkToCrud('Packages', 'fa fa-box', Package::class),
MenuItem::linkToCrud('Package Options', 'fa fa-box', PackageOption::class),
MenuItem::linkToCrud('Package Prices', 'fa fa-comment-dollar', PackagePrice::class),
MenuItem::linkToCrud('Promotions', 'fa fa-tags', Promotion::class),
// ->setBadge('Soon', 'info')
// ->setCssClass('disabled'),
MenuItem::linkToCrud('Vouchers', 'fa fa-ticket', Voucher::class),
// ->setBadge('Soon', 'info')
// ->setCssClass('disabled'),
MenuItem::linkToCrud('Properties', 'fa fa-building', Property::class),
MenuItem::linkToCrud('Golf Courses', 'fa fa-flag', Course::class),
MenuItem::linkToCrud('Documents', 'fa fa-file', Document::class),
// ->setBadge('Soon', 'info')
// ->setCssClass('disabled'),
])
->setPermission('ROLE_ADMIN');
yield MenuItem::subMenu('Reports', 'fa fa-magnifying-glass-chart')->setSubItems([
MenuItem::linkToCrud('Invoices', 'fa fa-chart-line', Invoice::class),
MenuItem::linkToCrud('Transactions', 'fa fa-chart-line', Order::class)
->setBadge('Soon', 'info')
->setCssClass('disabled'),
MenuItem::linkToCrud('Tee Sales', 'fa fa-chart-line', Order::class)
->setBadge('Soon', 'info')
->setCssClass('disabled'),
MenuItem::linkToCrud('Package Sales', 'fa fa-chart-line', Order::class)
->setBadge('Soon', 'info')
->setCssClass('disabled'),
MenuItem::linkToCrud('Proshop Sales', 'fa fa-chart-line', Order::class)
->setBadge('Soon', 'info')
->setCssClass('disabled'),
])
->setPermission('ROLE_ADMIN');
yield MenuItem::section('');
yield MenuItem::linkToCrud('Users', 'fa fa-users', User::class)
->setPermission('ROLE_ADMIN');
yield MenuItem::linkToCrud('Packagers/Reseller', 'fa fa-user-tie', Reseller::class)
->setPermission('ROLE_ADMIN');
yield MenuItem::section('');
yield MenuItem::linkToCrud('News', 'fa fa-newspaper', News::class)
->setPermission('ROLE_ADMIN');
yield MenuItem::linkToCrud('Events', 'fa fa-calendar-alt', Event::class)
->setPermission('ROLE_ADMIN');
// yield MenuItem::linkToCrud('Documents', 'fa fa-file', Document::class);
// Set Menu Below to Only Super Admins (Developers)
yield MenuItem::section('Dev Systems')
->setPermission('ROLE_SUPER_ADMIN');
// yield MenuItem::linkToCrud('All Booked Times', 'fa fa-calendar-check', Order::class)
// ->setBadge('Soon', 'info')
// ->setCssClass('disabled')
// ->setPermission('ROLE_SUPER_ADMIN');
yield MenuItem::linkToCrud('Order Status', 'fa fa-check', OrderStatus::class)
->setPermission('ROLE_SUPER_ADMIN');
// yield MenuItem::linkToCrud('Booking Times', 'fa fa-calendar', BookingTime::class);
yield MenuItem::subMenu('Emails', 'fas fa-envelope')->setSubItems([
MenuItem::linkToCrud('Templates', 'fas fa-envelope', EmailTemplate::class),
MenuItem::linkToCrud('Log', 'fa fa-box', Package::class),
MenuItem::linkToCrud('Actions', 'fa fa-box', Package::class),
])->setPermission('ROLE_SUPER_ADMIN');
yield MenuItem::linkToCrud('Scheduled Commands', 'fas fa-calendar-times', ScheduledCommand::class)
->setPermission('ROLE_SUPER_ADMIN');
yield MenuItem::linkToCrud('All Tee Times', 'fa fa-golf-ball-tee', Order::class)
->setBadge('Soon', 'info')
->setCssClass('disabled')
->setPermission('ROLE_SUPER_ADMIN');
// yield MenuItem::linkToCrud('All Booked Times', 'fa fa-calendar-check', BookingTme::class)
// ->setBadge('Soon', 'info')
// ->setCssClass('disabled')
// ->setPermission('ROLE_SUPER_ADMIN');
}
}