src/Service/Management/Office/OfficeSelectionSessionImpl.php line 39

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\Management\Office;
  4. use App\Data\Office\Office;
  5. use App\Repository\Office\OfficeRepository;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  8. class OfficeSelectionSessionImpl implements OfficeSelectionService
  9. {
  10.     private const SELECTED_OFFICE_KEY 'management_selected_office';
  11.     private SessionInterface $session;
  12.     public function __construct(
  13.         RequestStack $requestStack,
  14.         private OfficeRepository $officeRepository,
  15.     ) {
  16.         $this->session $requestStack->getSession();
  17.     }
  18.     public function isOfficeSelected(): bool
  19.     {
  20.         return $this->getSelectedOffice() instanceof Office;
  21.     }
  22.     public function setSelectedOffice(?Office $office): void
  23.     {
  24.         $id $office->getId();
  25.         $this->session->set(self::SELECTED_OFFICE_KEY$id);
  26.     }
  27.     public function getSelectedOffice(): ?Office
  28.     {
  29.         $id $this->session->get(self::SELECTED_OFFICE_KEY);
  30.         if (is_string($id)) {
  31.             $office $this->officeRepository->findOneBy(['id' => $id]);
  32.         }
  33.         return $office ?? null;
  34.     }
  35. }