<?php
namespace App\Service;
use App\Entity\Configuration\CompanyEntity;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpFoundation\RequestStack;
use App\Repository\Configuration\CompanyEntityRepository;
class SelectedEntityService
{
private $security;
private $requestStack;
private $companyEntityRepository;
public function __construct(Security $security, RequestStack $requestStack, CompanyEntityRepository $companyEntityRepository)
{
$this->security = $security;
$this->requestStack = $requestStack;
$this->companyEntityRepository = $companyEntityRepository;
}
public function getSelectedEntity(): ?CompanyEntity
{
$user = $this->security->getUser();
$session = $this->requestStack->getCurrentRequest()->getSession();
$selectedEntityId = $session->get('selected_entity_id');
$selectedEntity = null;
if ($selectedEntityId && ($this->security->isGranted('ROLE_ADMIN') || $this->security->isGranted('ROLE_DIRECTION'))) {
$selectedEntity = $this->companyEntityRepository->find($selectedEntityId);
} elseif ($user && count($user->getEntities()) === 1) {
$selectedEntity = $user->getEntities()->first();
}
return $selectedEntity;
}
}