src/Controller/FrontendController.php line 109

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Lexik\Bundle\JWTAuthenticationBundle\Services\JWTTokenManagerInterface;
  4. use Roothirsch\CoreBundle\Menu\Repository\MenuItemRepository;
  5. use Roothirsch\CoreBundle\Site\Repository\SiteRepository;
  6. use Roothirsch\DamBundle\Controller\FileCrudController;
  7. use Roothirsch\DamBundle\Entity\File;
  8. use Roothirsch\DamBundle\Repository\FileRepository;
  9. use Roothirsch\DeclarationBundle\Entity\Declaration;
  10. use Roothirsch\DeclarationBundle\Repository\FieldRepository;
  11. use Roothirsch\CoreBundle\Entity\Company;
  12. use Roothirsch\CoreBundle\Entity\ContactPerson;
  13. use Roothirsch\DeclarationBundle\Entity\Field;
  14. use Roothirsch\CoreBundle\Entity\Article;
  15. use Roothirsch\CoreBundle\Entity\Group;
  16. use Roothirsch\CoreBundle\Entity\User;
  17. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  18. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  20. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  21. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  22. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  23. use Flagception\Manager\FeatureManagerInterface;
  24. use Roothirsch\ShopBundle\Controller\OrderCrudController;
  25. use Roothirsch\ShopBundle\Repository\OrderRepository;
  26. use Symfony\Component\HttpFoundation\Response;
  27. use Symfony\Component\Routing\Annotation\Route;
  28. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  29. use Symfony\Component\Security\Core\User\UserInterface;
  30. class FrontendController extends AbstractDashboardController
  31. {
  32.     /**
  33.      * @var FeatureManagerInterface
  34.      */
  35.     private $featureManager;
  36.     /**
  37.      * @var MenuItemRepository
  38.      */
  39.     private $menuItemRepository;
  40.     /**
  41.      * @var TokenStorageInterface
  42.      */
  43.     private $tokenStorage;
  44.     /**
  45.      * @var Site
  46.      */
  47.     private $site;
  48.     /**
  49.      * @var SiteRepository
  50.      */
  51.     private $siteRepository;
  52.     /**
  53.      * @var OrderRepository
  54.      */
  55.     private $orderRepository;
  56.     /**
  57.      * @var FileRepository
  58.      */
  59.     private $fileRepository;
  60.     /**
  61.      * DashboardController constructor.
  62.      */
  63.     public function __construct(
  64.         FeatureManagerInterface $featureManager,
  65.         MenuItemRepository $menuItemRepository,
  66.         TokenStorageInterface $tokenStorage,
  67.         SiteRepository $siteRepository,
  68.         OrderRepository $orderRepository,
  69.         FileRepository $fileRepository,
  70.         JWTTokenManagerInterface $jwtTokenManager
  71.     ) {
  72.         $this->featureManager $featureManager;
  73.         $this->menuItemRepository $menuItemRepository;
  74.         $this->tokenStorage $tokenStorage;
  75.         $this->site $siteRepository->find(1);
  76.         $this->siteRepository $siteRepository;
  77.         $this->orderRepository $orderRepository;
  78.         $this->fileRepository $fileRepository;
  79.         if ($tokenStorage->getToken()->getUser() instanceof UserInterface) {
  80.             setcookie(
  81.                 'token',
  82.                 $jwtTokenManager->create($tokenStorage->getToken()->getUser()),
  83.                 time() + (14 * (60 60 24)),
  84.                 "/",
  85.                 ".stf-lizenzsystem.de"
  86.             );
  87.         }
  88.     }
  89.     public function getName()
  90.     {
  91.         return 'frontend';
  92.     }
  93.     /**
  94.      * @Route("/", name="home")
  95.      */
  96.     public function index(): Response
  97.     {
  98.         return $this->render(
  99.             'dashboard/index.html.twig',
  100.             [
  101.                 'dashboard_controller_filepath' => (new \ReflectionClass(static::class))->getFileName(),
  102.                 'dashboard_controller_class' => (new \ReflectionClass(static::class))->getShortName(),
  103.                 'orders' => $this->orderRepository->getLastOrders(5),
  104.                 'files' => $this->fileRepository->getLast(5),
  105.             ]
  106.         );
  107.     }
  108.     public function configureDashboard(): Dashboard
  109.     {
  110.         return Dashboard::new()
  111.             ->setTitle($this->site->getTitle());
  112.     }
  113.     public function configureCrud(): Crud
  114.     {
  115.         return Crud::new()
  116.             ->setFormThemes(
  117.                 [
  118.                     'form/types/icon_picker.html.twig',
  119.                     'form/types/ea_fileupload_widget.html.twig',
  120.                     '@EasyAdmin/crud/form_theme.html.twig',
  121.                 ]
  122.             );
  123.     }
  124.     public function configureMenuItems(): iterable
  125.     {
  126.         yield MenuItem::section('');
  127.         yield MenuItem::linkToDashboard('Start''fal fa-home');
  128.         yield MenuItem::linkToRoute('Plaketten''fal fa-shield''products_index');
  129.         yield MenuItem::linkToCrud('Warenkorb''fal fa-shopping-cart'Order::class)
  130.             ->setController(OrderCrudController::class)->setAction('cart');
  131.         yield MenuItem::linkToCrud('Bestellungen''fal fa-truck'Order::class)
  132.             ->setController(OrderCrudController::class);
  133.         yield MenuItem::linkToCrud('Dokumentation''fal fa-book'File::class)
  134.             ->setController(FileCrudController::class);
  135.         yield MenuItem::linkToCrud('Leistungserklärungen''fal fa-book'Declaration::class);
  136.         yield MenuItem::section('');
  137.         yield MenuItem::linkToUrl('zur Website''fal fa-external-link-square''https://stf-lizenzsystem.de/');
  138.     }
  139.     public function configureUserMenu(UserInterface $user): UserMenu
  140.     {
  141.         // Usually it's better to call the parent method because that gives you a
  142.         // user menu with some menu items already created ("sign out", "exit impersonation", etc.)
  143.         // if you prefer to create the user menu from scratch, use: return UserMenu::new()->...
  144.         return parent::configureUserMenu($user)
  145.             ->setName($user->__toString())
  146.             ->displayUserName(true)
  147.             ->displayUserAvatar(true)
  148.             ->setGravatarEmail($user->getEmail())
  149.             ->addMenuItems(
  150.                 [
  151.                     MenuItem::linkToRoute('Passwort ändern''fa fa-key''app_change_password_index'),
  152.                     MenuItem::section(),
  153.                     // MenuItem::linkToCrud('Mein Profil', 'fa fa-id-card', User::class)
  154.                     //     ->setAction('editProfile')
  155.                     //     ->setEntityId($this->tokenStorage->getToken()->getUser()->getId()),
  156.                     // MenuItem::section(),
  157.                 ]
  158.             );
  159.     }
  160. }