feat: groups price calculator admin crud, booking/offer flow and api
This commit is contained in:
1 parent
eabed8295a
commit
9d2aa11fdb
258 files changed
+16231
-582
No files matched your search
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use App\Exception\AccommodationSessionNotFoundException;
|
||||
use App\Form\Model\AccommodationBookingDto;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
class AccommodationSessionManager
|
||||
{
|
||||
// Key kept as accommodation_inquiry for session continuity during the inquiry→booking rename.
|
||||
public const SESSION_KEY = 'accommodation_inquiry';
|
||||
|
||||
public function getDto(Request $request): ?AccommodationBookingDto
|
||||
{
|
||||
$session = $request->getSession();
|
||||
|
||||
if (!$session->has(self::SESSION_KEY)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$dto = $session->get(self::SESSION_KEY);
|
||||
|
||||
if (!$dto instanceof AccommodationBookingDto) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $dto;
|
||||
}
|
||||
|
||||
public function getOrFail(Request $request): AccommodationBookingDto
|
||||
{
|
||||
$dto = $this->getDto($request);
|
||||
|
||||
if (null === $dto) {
|
||||
throw new AccommodationSessionNotFoundException();
|
||||
}
|
||||
|
||||
return $dto;
|
||||
}
|
||||
|
||||
public function save(Request $request, AccommodationBookingDto $dto): void
|
||||
{
|
||||
$request->getSession()->set(self::SESSION_KEY, $dto);
|
||||
}
|
||||
|
||||
public function clear(Request $request): void
|
||||
{
|
||||
$request->getSession()->remove(self::SESSION_KEY);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user