- <?php
- namespace App\Controller;
- use Doctrine\ORM\EntityManagerInterface;
- use Symfony\Component\Routing\Annotation\Route;
- use Symfony\Component\HttpKernel\KernelInterface;
- use Webkul\UVDesk\CoreFrameworkBundle\Entity\Website;
- use Webkul\UVDesk\CoreFrameworkBundle\Entity\SupportRole;
- use Webkul\UVDesk\CoreFrameworkBundle\Entity\UserInstance;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- class BaseController extends AbstractController
- {
-     /**
-      * Forward request to other controllers based on application state.
-      *
-      * @Route("/", name="base_route")
-      */
-     public function base(EntityManagerInterface $entityManager, KernelInterface $kernel)
-     {
-         try {
-             // For a quick check we'll just see if support roles have been defined.
-             $ownerSupportRole = $entityManager->getRepository(SupportRole::class)->findOneByCode('ROLE_SUPER_ADMIN');
-             $administratorSupportRole = $entityManager->getRepository(SupportRole::class)->findOneByCode('ROLE_ADMIN');
-             if (!empty($ownerSupportRole) || !empty($administratorSupportRole)) {
-                 $userInstanceRepository = $entityManager->getRepository(UserInstance::class);
-                 
-                 // If support roles are present, we'll check if any users exists with the administrator role.
-                 $owners = $userInstanceRepository->findBySupportRole($ownerSupportRole);
-                 $administrators = $userInstanceRepository->findBySupportRole($administratorSupportRole);
-                 if (!empty($owners) || !empty($administrators)) {
-                     $availableBundles = array_keys($kernel->getBundles());
-                     $websiteRepository = $entityManager->getRepository(Website::class);
-                     // Redirect user to front panel
-                     if (in_array('UVDeskSupportCenterBundle', $availableBundles)) {
-                         $supportCenterWebsite = $websiteRepository->findOneByCode('knowledgebase');
-                         if (!empty($supportCenterWebsite)) {
-                             return $this->redirectToRoute('helpdesk_knowledgebase', [], 301);
-                         }
-                     }
-                     // Redirect user to back panel
-                     $helpdeskWebsite = $websiteRepository->findOneByCode('helpdesk');
-                     if (!empty($helpdeskWebsite)) {
-                         return $this->redirectToRoute('helpdesk_member_handle_login');
-                     }
-                 }
-             }
-         } catch (\Exception $e) {
-             // ...
-         }
-         
-         return $this->forward(ConfigureHelpdesk::class . "::load");
-     }
- }
-