feat: extract room grouping from booking service
This commit is contained in:
@@ -10,6 +10,7 @@ use App\Form\BookingCreateStep1Type;
|
||||
use App\Form\Model\BookingDto;
|
||||
use App\Htmx\HxTrait;
|
||||
use App\Service\BookingService;
|
||||
use App\Service\BookingRoomSelectionService;
|
||||
use App\Service\BookingSessionService;
|
||||
use App\Service\BookingSummaryDataService;
|
||||
use App\Service\RoomPricingCalculator;
|
||||
@@ -32,6 +33,7 @@ class Step1Controller extends AbstractController
|
||||
|
||||
public function __construct(
|
||||
private readonly BookingService $bookingService,
|
||||
private readonly BookingRoomSelectionService $roomSelectionService,
|
||||
private readonly BookingSessionService $bookingSessionService,
|
||||
private readonly BookingSummaryDataService $summaryDataService,
|
||||
) {
|
||||
@@ -84,7 +86,7 @@ class Step1Controller extends AbstractController
|
||||
$summaryData = $this->summaryDataService->getSummaryData($bookingCreateDto, RoomPricingCalculator::PRICING_MODE_SELECTION);
|
||||
|
||||
$availableRooms = $bookingCreateDto->travel->getAvailableRooms();
|
||||
$groupedRooms = $this->bookingService->groupRoomsBySelectionType($availableRooms);
|
||||
$groupedRooms = $this->roomSelectionService->groupRoomsBySelectionType($availableRooms);
|
||||
|
||||
return $this->render('booking/create/step_1.html.twig', [
|
||||
'bookingCreateDto' => $bookingCreateDto,
|
||||
@@ -116,7 +118,7 @@ class Step1Controller extends AbstractController
|
||||
// Get complete summary data (pricing, rooms, CMS data)
|
||||
$summaryData = $this->summaryDataService->getSummaryData($bookingCreateDto, RoomPricingCalculator::PRICING_MODE_SELECTION);
|
||||
$availableRooms = $bookingCreateDto->travel->getAvailableRooms();
|
||||
$groupedRooms = $this->bookingService->groupRoomsBySelectionType($availableRooms);
|
||||
$groupedRooms = $this->roomSelectionService->groupRoomsBySelectionType($availableRooms);
|
||||
|
||||
// The DTO is now updated with the latest selection.
|
||||
// We can now render the blocks with the fresh data.
|
||||
|
||||
@@ -48,16 +48,6 @@ trait BookingCreateTrait
|
||||
return $this->redirectToRoute($route);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the total number of participants based on room selections.
|
||||
*/
|
||||
private function getParticipantsCount(BookingDto $bookingCreateDto): int
|
||||
{
|
||||
return $this
|
||||
->bookingService
|
||||
->getParticipantsCount($bookingCreateDto->roomSelections, $bookingCreateDto->travel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares template variables for the booking summary sidebar.
|
||||
*
|
||||
@@ -65,17 +55,13 @@ trait BookingCreateTrait
|
||||
*/
|
||||
private function getSummaryVariables(BookingDto $bookingCreateDto): array
|
||||
{
|
||||
$participantsCount = $this->getParticipantsCount($bookingCreateDto);
|
||||
$summary = $this->bookingService->getRoomSummaryAndParticipantCount($bookingCreateDto);
|
||||
$roomAssignmentCounts = $bookingCreateDto->getRoomAssignmentCounts();
|
||||
$availableRooms = $bookingCreateDto->travel->getAvailableRooms();
|
||||
$groupedSelectedRooms = $this->bookingService->groupRoomSelectionsByType($bookingCreateDto->getSelectedRooms(), $availableRooms);
|
||||
$summary = $this->summaryDataService->getSummaryData($bookingCreateDto);
|
||||
|
||||
return [
|
||||
'participantsCount' => $participantsCount,
|
||||
'pricingData' => $summary['pricing'],
|
||||
'assignmentCounts' => $roomAssignmentCounts,
|
||||
'groupedSelectedRooms' => $groupedSelectedRooms,
|
||||
'participantsCount' => $summary->participantCount,
|
||||
'pricingData' => $summary->pricingData,
|
||||
'assignmentCounts' => $summary->assignmentCounts,
|
||||
'groupedSelectedRooms' => $summary->groupedSelectedRooms,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user