src/Controller/Admin/DashboardController.php line 58

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Controller\VendorController;
  4. use App\Entity\Announcement;
  5. use App\Entity\Answer;
  6. use App\Entity\Bagian;
  7. use App\Entity\BentukUsaha;
  8. use App\Entity\IzinUsaha;
  9. use App\Entity\JenisKontrak;
  10. use App\Entity\JenisPengadaan;
  11. use App\Entity\KlasifikasiUsaha;
  12. use App\Entity\Kontak;
  13. use App\Entity\MasterDokumenPenawaran;
  14. use App\Entity\MasterKualifikasi;
  15. use App\Entity\MetodePengadaan;
  16. use App\Entity\Narahubung;
  17. use App\Entity\Penyuratan;
  18. use App\Entity\PokjaGroup;
  19. use App\Entity\Question;
  20. use App\Entity\Rup;
  21. use App\Entity\TahapanTender;
  22. use App\Entity\Tender;
  23. use App\Entity\TenderMetodePenyampaianDokumenPenawaran;
  24. use App\Entity\Topic;
  25. use App\Entity\User;
  26. use App\Entity\Vendor;
  27. use App\Entity\VendorTender;
  28. use App\Entity\VendorTenderEvaluasi;
  29. use App\Entity\Wilayah;
  30. use App\Entity\WilayahPdam;
  31. use App\Repository\VendorRepository;
  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\Filters;
  38. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  39. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  40. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  41. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  42. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  43. use Symfony\Component\HttpFoundation\Request;
  44. use Symfony\Component\HttpFoundation\Response;
  45. use Symfony\Component\Routing\Annotation\Route;
  46. use Symfony\Component\Security\Core\Exception\CredentialsExpiredException;
  47. use Symfony\Component\Security\Core\User\UserInterface;
  48. class DashboardController extends AbstractDashboardController
  49. {
  50.     #[IsGranted('ROLE_USER')]
  51.     #[Route('/admin'name'admin')]
  52.     public function index(): Response
  53.     {
  54.         //return parent::index();
  55.         // Option 1. You can make your dashboard redirect to some common page of your backend
  56.         //
  57.         $hasAccess $this->isGranted('ROLE_ADMIN');
  58.         $adminUrlGenerator $this->container->get(AdminUrlGenerator::class);
  59.         if ($hasAccess) {
  60.             return $this->redirect($adminUrlGenerator->setController(TenderCrudController::class)->generateUrl());
  61.         } elseif ($this->isGranted('ROLE_LPSE')) {
  62.             return $this->redirect($adminUrlGenerator->setController(RupCrudController::class)->generateUrl());
  63.         } elseif ($this->isGranted('ROLE_POKJA')) {
  64.             return $this->redirect($adminUrlGenerator->setController(TenderCrudController::class)->generateUrl());
  65.         } elseif ($this->isGranted('ROLE_PPK')) {
  66.             return $this->redirect($adminUrlGenerator->setController(TenderCrudController::class)->generateUrl());
  67.         } else {
  68.             return $this->redirect($adminUrlGenerator->setRoute('app_vendor_dashboard')->generateUrl());
  69.         }
  70.         // Option 2. You can make your dashboard redirect to different pages depending on the user
  71.         //
  72.         // if ('jane' === $this->getUser()->getUsername()) {
  73.         //     return $this->redirect('...');
  74.         // }
  75.         // Option 3. You can render some custom template to display a proper dashboard with widgets, etc.
  76.         // (tip: it's easier if your template extends from @EasyAdmin/page/content.html.twig)
  77.         //
  78.         // return $this->render('some/path/my-dashboard.html.twig');
  79.     }
  80.     public function configureDashboard(): Dashboard
  81.     {
  82.         return Dashboard::new()
  83.             ->setTitle('E-tender PDAM')
  84.             ->disableDarkMode();
  85.     }
  86.     public function configureMenuItems(): iterable
  87.     {
  88.         if ($this->getUser() === null) {
  89.             throw new CredentialsExpiredException("Sesi Habis");
  90.         }
  91.         $user $this->getUser();
  92.         if (!$user instanceof User) {
  93.             $this->redirectToRoute('app_homepage');
  94.         }
  95.         $vendorId null;
  96.         $vendorEmail null;
  97.         foreach ($user->getVendors() as $vendor) {
  98.             $vendorId $vendor->getVendor()->getId();
  99.             $vendorEmail $vendor->getVendor()->getEmail();
  100.         }
  101.         yield MenuItem::linkToRoute('Beranda''fa-solid fa-table-columns''app_vendor_dashboard')
  102.             ->setPermission('ROLE_VENDOR');
  103.         yield MenuItem::linkToCrud('Data Penyedia''fa-solid fa-layer-group'Vendor::class)
  104.             ->setAction(Action::EDIT)
  105.             ->setEntityId($vendorId)
  106.             ->setPermission('ROLE_VENDOR');
  107.         yield MenuItem::linkToRoute('Paket Baru''fa-solid fa-box-archive''app_paket_baru')
  108.             ->setPermission('ROLE_VENDOR');
  109.         yield MenuItem::linkToRoute('Inbox''fa-solid fa-inbox''app_inbox')
  110.             ->setPermission('ROLE_VENDOR');
  111.         yield MenuItem::linkToRoute('Log Akses''fa-solid fa-repeat''app_log_akses')
  112.             ->setPermission('ROLE_VENDOR');
  113.         yield MenuItem::linkToDashboard('Dashboard''fa fa-dashboard')
  114.             ->setPermission('ROLE_ADMIN');
  115.         yield MenuItem::linkToCrud('Berita''fa-solid fa-newspaper'Announcement::class);
  116.         yield MenuItem::subMenu('Referensi''fas fa-folder')->setSubItems([
  117.             MenuItem::linkToCrud('Jenis Kontrak''fas fa-folder'JenisKontrak::class),
  118.             MenuItem::linkToCrud('Jenis Pengadaan''fas fa-folder'JenisPengadaan::class),
  119.             MenuItem::linkToCrud('Metode Pengadaan''fas fa-users'MetodePengadaan::class),
  120.             MenuItem::linkToCrud('Metode Penyampaian Dokumen Penawaran''fas fa-users'TenderMetodePenyampaianDokumenPenawaran::class),
  121.             MenuItem::linkToCrud('Bentuk Usaha''fas fa-users'BentukUsaha::class),
  122.             MenuItem::linkToCrud('Izin Usaha''fas fa-users'IzinUsaha::class),
  123.             MenuItem::linkToCrud('Klasifikasi Usaha''fas fa-users'KlasifikasiUsaha::class),
  124.             MenuItem::linkToCrud('Tahapan Tender''fas fa-users'TahapanTender::class),
  125.             MenuItem::linkToCrud('Master Kualifikasi''fas fa-users'MasterKualifikasi::class),
  126.             MenuItem::linkToCrud('Master Dokumen Penawaran''fas fa-users'MasterDokumenPenawaran::class),
  127.             MenuItem::linkToCrud('Wilayah''fas fa-users'Wilayah::class),
  128.             MenuItem::linkToCrud('Wilayah/Bagian''fas fa-users'WilayahPdam::class),
  129.             MenuItem::linkToCrud('Group Pokja''fas fa-users'PokjaGroup::class),
  130.             // MenuItem::linkToCrud('Bagian', 'fas fa-users', Bagian::class),
  131.         ])->setPermission('ROLE_ADMIN');
  132.         yield MenuItem::linkToCrud('Rencana Umum Pengadaan''fas fa-comments'Rup::class)->setPermission('ROLE_LPSE');
  133.         yield MenuItem::linkToCrud('Tender''fas fa-question-circle'Tender::class)
  134.             ->setPermission('ROLE_POKJA');
  135.         yield MenuItem::linkToCrud('Tender''fas fa-question-circle'Tender::class)
  136.             ->setPermission('ROLE_PPK');
  137.         if ($this->isGranted('ROLE_POKJA') || $this->isGranted('ROLE_LPSE')) {
  138.             // yield MenuItem::linkToCrud('Vendor - Tender', 'fas fa-question-circle', VendorTender::class);
  139.             yield MenuItem::linkToRoute('Vendor - Tender''fas fa-question-circle''app_admin_vendor_tender');
  140.         }
  141.         yield MenuItem::linkToCrud('Skor Vendor''fas fa-question-circle'VendorTenderEvaluasi::class)
  142.             ->setPermission('ROLE_POKJA');
  143.         yield MenuItem::LinkToRoute('Pertanyaan & Jawaban''fas fa-comments''app_pertanyaan_jawaban')->setPermission('ROLE_POKJA');
  144.         yield MenuItem::linkToCrud('Penyuratan''fas fa-envelope'Penyuratan::class)->setPermission('ROLE_POKJA');
  145.         yield MenuItem::linkToCrud('Tender''fas fa-question-circle'Tender::class)
  146.             ->setPermission('ROLE_LPSE');
  147.         yield   MenuItem::linkToCrud('User''fas fa-users'User::class)->setPermission('ROLE_ADMIN');
  148.         yield   MenuItem::linkToCrud('Kontak''fas fa-envelope'Kontak::class)->setPermission('ROLE_ADMIN');
  149.         yield MenuItem::linkToCrud('Vendor''fas fa-users'Vendor::class)
  150.             ->setPermission('ROLE_ADMIN');
  151.         yield MenuItem::linkToUrl('Homepage''fas fa-home'$this->generateUrl('app_homepage'));
  152.     }
  153.     public function configureActions(): Actions
  154.     {
  155.         return parent::configureActions()
  156.             ->add(Crud::PAGE_INDEXAction::DETAIL);
  157.     }
  158.     public function configureUserMenu(UserInterface $user): UserMenu
  159.     {
  160.         if (!$user instanceof User) {
  161.             throw new \Exception("Wrong User");
  162.         }
  163.         return parent::configureUserMenu($user)
  164.             ->setAvatarUrl($user->getAvatarUrl())
  165.             ->addMenuItems([
  166.                 MenuItem::linkToUrl('My Profile''fas fa-user'$this->generateUrl('app_profile_show'))
  167.             ]); // TODO: Change the autogenerated stub
  168.     }
  169.     public function configureAssets(): Assets
  170.     {
  171.         return parent::configureAssets()
  172.             ->addWebpackEncoreEntry('admin')->addCssFile('bundles/css/paketbaru.css');
  173.     }
  174. }