<?php
// src/Controller/IndexController.php
namespace App\Controller;
use App\Entity\User;
use App\Entity\Organization;
use App\Entity\UserOrganization;
use App\Entity\Distributor;
use App\Entity\OrganizationDistributor;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use App\Service\HelperService;
class IndexController extends AbstractController
{
private $session;
private $helperService;
public function __construct(SessionInterface $session, HelperService $helperService)
{
$this->session = $session;
$this->helperService = $helperService;
}
/**
* @Route("/", name="homepage", methods={"GET", "POST"})
*/
public function homepage(Request $request): Response
{
return $this->redirectToRoute('app_login', [], Response::HTTP_SEE_OTHER);
}
/**
* @Route("/switch_language", name="switch_language", methods={"GET", "POST"})
*/
public function switchLanguage(Request $request): Response
{
$this->session->set('_locale', $request->get('lang'));
$referer = $request->headers->get('referer');
return $this->redirect($referer);
}
/**
* @Route("/switch_distributor", name="switch_distributor", methods={"GET", "POST"})
*/
public function switchDistributor(Request $request): Response
{
$this->session->set('_distributor', $request->get('dist'));
$referer = $request->headers->get('referer');
return $this->redirect($referer);
}
/**
* @Route("/switch_organization", name="switch_organization", methods={"GET", "POST"})
*/
public function switchOrganization(Request $request): Response
{
$this->session->set('_organization', $request->get('org'));
$user = $this->getUser();
$organization_id = $request->get('org');
$defaultModule = $this->helperService->getUserPerms($user,$organization_id);
$this->helperService->getMenuModules($user,$organization_id);
return $this->redirectToRoute($defaultModule);
//$referer = $request->headers->get('referer');
//return $this->redirect($referer);
}
public function mainNav(): Response
{
$lastUsername = $this->session->get(Security::LAST_USERNAME);
$menu = $this->session->get($lastUsername."_menu");
return $this->render('nav.html.twig', [
'menu' => $menu
]);
}
public function organizationDropdown(Request $request, EntityManagerInterface $entityManager): Response
{
$lastUsername = $this->session->get(Security::LAST_USERNAME);
$userData = $request->getSession()->get($lastUsername);
$userObj = $entityManager->getRepository(User::class)->findOneBy([
'id' => $userData['id']
]);
if($this->session->get('_organization'))
{
$selectedOrganizationObj = $entityManager->getRepository(\App\Entity\Organization::class)->findOneBy([
'organizationId' => $this->session->get('_organization')
]);
}else{
$selectedUserOrganizationTemp = $entityManager->getRepository(\App\Entity\UserOrganization::class)->findOneBy([
'user' => $userObj, "is_primary" => 1
]);
$selectedOrganizationObj = $selectedUserOrganizationTemp->getOrganization();
$this->session->set('_organization', $selectedOrganizationObj->getOrganizationId());
}
$organizationList = $entityManager->getRepository(\App\Entity\UserOrganization::class)->findBy([
'user' => $userObj, "is_active" => 1
]);
return $this->render('dropdown.html.twig', [
'organizations' => $organizationList,
'selectedOrganization' => $selectedOrganizationObj
]);
}
}