src/Controller/Dashboard/DashboardController.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Dashboard;
  3. use App\Entity\BookingTime;
  4. use App\Entity\Course;
  5. use App\Entity\Customer;
  6. use App\Entity\Document;
  7. use App\Entity\EmailTemplate;
  8. use App\Entity\Event;
  9. use App\Entity\Housekeeping;
  10. use App\Entity\Invoice;
  11. use App\Entity\InvoiceStatement;
  12. use App\Entity\MaintenanceEquipment;
  13. use App\Entity\MaintenanceInvoice;
  14. use App\Entity\MaintenanceRequest;
  15. use App\Entity\Membership;
  16. use App\Entity\MembershipPrice;
  17. use App\Entity\News;
  18. use App\Entity\Newsletter;
  19. use App\Entity\Order;
  20. use App\Entity\OrderStatus;
  21. use App\Entity\Package;
  22. use App\Entity\PackageOption;
  23. use App\Entity\PackagePrice;
  24. use App\Entity\Promotion;
  25. use App\Entity\Property;
  26. use App\Entity\Request;
  27. use App\Entity\Reseller;
  28. use App\Entity\TeeTime;
  29. use App\Entity\User;
  30. use App\Entity\Voucher;
  31. use Dukecity\CommandSchedulerBundle\Entity\ScheduledCommand;
  32. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  33. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  34. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  35. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  36. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  37. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  38. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  39. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  40. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  41. use Symfony\Component\HttpFoundation\Response;
  42. use Symfony\Component\Routing\Annotation\Route;
  43. use Symfony\Component\Security\Core\User\UserInterface;
  44. class DashboardController extends AbstractDashboardController
  45. {
  46.     #[Route('/'name'dashboard')]
  47.     public function index(): Response
  48.     {
  49.         // return parent::index();
  50.         // Option 1. You can make your dashboard redirect to some common page of your backend
  51.         $adminUrlGenerator $this->container->get(AdminUrlGenerator::class);
  52.         return $this->redirect($adminUrlGenerator->setController(OrderCrudController::class)->generateUrl());
  53.         // Option 2. You can make your dashboard redirect to different pages depending on the user
  54.         // if ('jane' === $this->getUser()->getUsername()) {
  55.         //     return $this->redirect('...');
  56.         // }
  57.         // Option 3. You can render some custom template to display a proper dashboard with widgets, etc.
  58.         // (tip: it's easier if your template extends from @EasyAdmin/page/content.html.twig)
  59.         //
  60.         // return $this->render('some/path/my-dashboard.html.twig');
  61.     }
  62.     public function configureDashboard(): Dashboard
  63.     {
  64.         return Dashboard::new()
  65.             ->setTitle('DG Golf <br/>Concierge')
  66.             ->disableDarkMode()
  67.         ;
  68.     }
  69.     public function configureCrud(): Crud
  70.     {
  71.         return Crud::new()
  72.             ->setDateTimeFormat('medium''short')
  73.             ->showEntityActionsInlined()
  74.             ->setPaginatorPageSize(30)
  75.             ->overrideTemplate('label/null',   'dashboard/fields/null.html.twig')
  76.         ;
  77.     }
  78.  
  79.     public function configureActions(): Actions
  80.     {
  81.         return Actions::new()
  82.             ->addBatchAction(Action::BATCH_DELETE)
  83.             ->add(Crud::PAGE_INDEXAction::NEW)
  84.             ->add(Crud::PAGE_INDEXAction::EDIT)
  85.             ->add(Crud::PAGE_INDEXAction::DELETE)
  86.             ->add(Crud::PAGE_DETAILAction::EDIT)
  87.             ->add(Crud::PAGE_DETAILAction::INDEX)
  88.             ->add(Crud::PAGE_DETAILAction::DELETE)
  89.             ->add(Crud::PAGE_EDITAction::SAVE_AND_RETURN)
  90.             ->add(Crud::PAGE_EDITAction::SAVE_AND_CONTINUE)
  91.             ->add(Crud::PAGE_NEWAction::SAVE_AND_RETURN)
  92.             ->add(Crud::PAGE_NEWAction::SAVE_AND_ADD_ANOTHER)
  93.             ->remove(Crud::PAGE_INDEXAction::BATCH_DELETE)
  94.             ->remove(Crud::PAGE_INDEXAction::DELETE)
  95.             // ->remove(Crud::PAGE_DETAIL, Action::DELETE)
  96.             
  97.             ->add(Crud::PAGE_INDEXAction::DETAIL)
  98.             ->add(Crud::PAGE_EDITAction::SAVE_AND_ADD_ANOTHER)
  99.             // ->add(Crud::PAGE_EDIT, Action::DELETE)
  100.             // ->setPermission(Crud::PAGE_EDIT, 'ROLE_SUPER_ADMIN')
  101.             // ->add(Crud::PAGE_DETAIL, Action::INDEX)
  102.         ;
  103.     }
  104.     public function configureAssets(): Assets
  105.     {
  106.         return Assets::new()
  107.             ->addWebpackEncoreEntry('base');
  108.     }
  109.     public function configureUserMenu(UserInterface $user): UserMenu
  110.     {
  111.         return parent::configureUserMenu($user)
  112.             ->setName($user->getFullName())
  113.         ;
  114.     }
  115.     public function configureMenuItems(): iterable
  116.     {
  117.         yield MenuItem::linkToDashboard('Dashboard''fa fa-home');
  118.         yield MenuItem::section('Sales');
  119.         yield MenuItem::linkToCrud('Orders''fa fa-clipboard-list'Order::class)
  120.             ->setBadge('4''secondary');
  121.         yield MenuItem::linkToCrud('Requests''fa fa-comment-dollar'Request::class);
  122.             // ->setBadge('Soon', 'info')
  123.             // ->setCssClass('disabled');
  124.         yield MenuItem::linkToCrud('Tee Times''fa fa-golf-ball-tee'TeeTime::class);
  125.         yield MenuItem::linkToCrud('Bookings''fa fa-calendar-check'BookingTime::class);
  126.         // yield MenuItem::linkToCrud('Proshop EOD', 'fas fa-stopwatch', Order::class)
  127.         //     ->setBadge('Soon', 'info')
  128.         //     ->setCssClass('disabled')
  129.         //     ;
  130.         // yield MenuItem::linkToRoute('Download Proshop EOD', 'fas fa-file-download', 'dailypssalessheet');
  131.             
  132.         yield MenuItem::section('Service');
  133.         yield MenuItem::linkToCrud('Customers''fa fa-users-rectangle'Customer::class);
  134.         yield MenuItem::linkToCrud('Memberships''fa fa-address-card'Membership::class);
  135.         yield MenuItem::linkToCrud('Membership Prices''fa fa-comment-dollar'MembershipPrice::class);
  136.         yield MenuItem::linkToCrud('Newsletter''fa fa-envelope'Newsletter::class);
  137.         // yield MenuItem::linkToCrud('Rewards', 'fa fa-certificate', Order::class)
  138.         //     ->setBadge('Soon', 'info')
  139.         //     ->setCssClass('disabled');
  140.         yield MenuItem::linkToCrud('Housekeeping''fa fa-hand-sparkles'Housekeeping::class)
  141.             // ->setBadge('Soon', 'info')
  142.             // ->setCssClass('disabled')
  143.             ;
  144.         // yield MenuItem::linkToCrud('Maintenance', 'fa fa-screwdriver-wrench', Order::class)
  145.         //     // ->setBadge('Soon', 'info')
  146.         //     // ->setCssClass('disabled')
  147.         //     ;
  148.         yield MenuItem::subMenu('Maintenance''fa fa-screwdriver-wrench')->setSubItems([
  149.             MenuItem::linkToCrud('Requests''fa fa-box'MaintenanceRequest::class),
  150.             MenuItem::linkToCrud('Equipment''fa fa-box'MaintenanceEquipment::class),
  151.             MenuItem::linkToCrud('Invoices''fa fa-box'MaintenanceInvoice::class),
  152.         ]);
  153.         yield MenuItem::section('');
  154.         yield MenuItem::subMenu('Management''fa fa-desktop')->setSubItems([
  155.             MenuItem::linkToCrud('Packages''fa fa-box'Package::class),
  156.             MenuItem::linkToCrud('Package Options''fa fa-box'PackageOption::class),
  157.             MenuItem::linkToCrud('Package Prices''fa fa-comment-dollar'PackagePrice::class),
  158.             MenuItem::linkToCrud('Promotions''fa fa-tags'Promotion::class),
  159.                 // ->setBadge('Soon', 'info')
  160.                 // ->setCssClass('disabled'),
  161.             MenuItem::linkToCrud('Vouchers''fa fa-ticket'Voucher::class),
  162.                 // ->setBadge('Soon', 'info')
  163.                 // ->setCssClass('disabled'),
  164.             MenuItem::linkToCrud('Properties''fa fa-building'Property::class),
  165.             MenuItem::linkToCrud('Golf Courses''fa fa-flag'Course::class),
  166.             MenuItem::linkToCrud('Documents''fa fa-file'Document::class),
  167.                 // ->setBadge('Soon', 'info')
  168.                 // ->setCssClass('disabled'),
  169.         ])
  170.         ->setPermission('ROLE_ADMIN');
  171.         yield MenuItem::subMenu('Reports''fa fa-magnifying-glass-chart')->setSubItems([
  172.             MenuItem::linkToCrud('Invoices''fa fa-chart-line'Invoice::class),
  173.             MenuItem::linkToCrud('Transactions''fa fa-chart-line'Order::class)
  174.                 ->setBadge('Soon''info')
  175.                 ->setCssClass('disabled'),
  176.             MenuItem::linkToCrud('Tee Sales''fa fa-chart-line'Order::class)
  177.                 ->setBadge('Soon''info')
  178.                 ->setCssClass('disabled'),
  179.             MenuItem::linkToCrud('Package Sales''fa fa-chart-line'Order::class)
  180.                 ->setBadge('Soon''info')
  181.                 ->setCssClass('disabled'),
  182.             MenuItem::linkToCrud('Proshop Sales''fa fa-chart-line'Order::class)
  183.                 ->setBadge('Soon''info')
  184.                 ->setCssClass('disabled'),
  185.         ])
  186.         ->setPermission('ROLE_ADMIN');
  187.         
  188.         yield MenuItem::section('');
  189.         yield MenuItem::linkToCrud('Users''fa fa-users'User::class)
  190.             ->setPermission('ROLE_ADMIN');
  191.         yield MenuItem::linkToCrud('Packagers/Reseller''fa fa-user-tie'Reseller::class)
  192.             ->setPermission('ROLE_ADMIN');
  193.         yield MenuItem::section('');
  194.         yield MenuItem::linkToCrud('News''fa fa-newspaper'News::class)
  195.             ->setPermission('ROLE_ADMIN');
  196.         yield MenuItem::linkToCrud('Events''fa fa-calendar-alt'Event::class)
  197.             ->setPermission('ROLE_ADMIN');
  198.         // yield MenuItem::linkToCrud('Documents', 'fa fa-file', Document::class);
  199.         
  200.         // Set Menu Below to Only Super Admins (Developers)
  201.         yield MenuItem::section('Dev Systems')
  202.             ->setPermission('ROLE_SUPER_ADMIN');
  203.         // yield MenuItem::linkToCrud('All Booked Times', 'fa fa-calendar-check', Order::class)
  204.         //     ->setBadge('Soon', 'info')
  205.         //     ->setCssClass('disabled')
  206.         //     ->setPermission('ROLE_SUPER_ADMIN');
  207.         yield MenuItem::linkToCrud('Order Status''fa fa-check'OrderStatus::class)
  208.             ->setPermission('ROLE_SUPER_ADMIN');
  209.         // yield MenuItem::linkToCrud('Booking Times', 'fa fa-calendar', BookingTime::class);
  210.         yield MenuItem::subMenu('Emails''fas fa-envelope')->setSubItems([
  211.             MenuItem::linkToCrud('Templates''fas fa-envelope'EmailTemplate::class),
  212.             MenuItem::linkToCrud('Log''fa fa-box'Package::class),
  213.             MenuItem::linkToCrud('Actions''fa fa-box'Package::class),
  214.         ])->setPermission('ROLE_SUPER_ADMIN');
  215.         yield MenuItem::linkToCrud('Scheduled Commands''fas fa-calendar-times'ScheduledCommand::class)
  216.             ->setPermission('ROLE_SUPER_ADMIN');
  217.         yield MenuItem::linkToCrud('All Tee Times''fa fa-golf-ball-tee'Order::class)
  218.             ->setBadge('Soon''info')
  219.             ->setCssClass('disabled')
  220.             ->setPermission('ROLE_SUPER_ADMIN');
  221.         // yield MenuItem::linkToCrud('All Booked Times', 'fa fa-calendar-check', BookingTme::class)
  222.         //     ->setBadge('Soon', 'info')
  223.         //     ->setCssClass('disabled')
  224.         //     ->setPermission('ROLE_SUPER_ADMIN');
  225.     }
  226. }