feat: consolidate micro-services and unify draft merge logic
This commit is contained in:
1 parent
fdfd5d56c9
commit
0d2cc5b998
16 files changed
+529
-846
No files matched your search
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use App\BusProNet\Model\Room;
|
||||
use App\Form\Model\BookingCreateContext;
|
||||
use App\Form\Model\BookingDto;
|
||||
use App\Form\Model\BookingSummaryDto;
|
||||
@@ -15,10 +16,9 @@ use App\Form\Model\RoomGroupsDto;
|
||||
class BookingCreateContextFactory
|
||||
{
|
||||
public function __construct(
|
||||
private readonly BookingRoomSelectionService $roomSelectionService,
|
||||
private readonly ParticipantCardDataService $participantCardDataService,
|
||||
private readonly BookingSummaryDataService $summaryDataService,
|
||||
private readonly BookingPriceCalculatorService $priceCalculator,
|
||||
private readonly ParticipantCardAssembler $participantCardDataService,
|
||||
private readonly BookingSummaryAssembler $summaryDataService,
|
||||
private readonly BookingPriceCalculator $priceCalculator,
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -68,7 +68,35 @@ class BookingCreateContextFactory
|
||||
{
|
||||
return [
|
||||
'summaryData' => $this->summaryDataService->getSummaryData($bookingDto, $pricingMode),
|
||||
'groupedRooms' => $this->roomSelectionService->groupRoomsBySelectionType($bookingDto->travel->getAvailableRooms()),
|
||||
'groupedRooms' => $this->groupRoomsBySelectionType($bookingDto->travel->getAvailableRooms()),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<int, Room> $rooms
|
||||
*/
|
||||
private function groupRoomsBySelectionType(array $rooms): RoomGroupsDto
|
||||
{
|
||||
$groups = [
|
||||
Room::SELECTION_TYPE_BY_PAX => [],
|
||||
Room::SELECTION_TYPE_BY_ROOM => [],
|
||||
];
|
||||
|
||||
foreach ($rooms as $room) {
|
||||
if (false !== stripos($room->label, 'bett')) {
|
||||
$groups[Room::SELECTION_TYPE_BY_PAX][$room->id] = $room;
|
||||
continue;
|
||||
}
|
||||
|
||||
$groups[Room::SELECTION_TYPE_BY_ROOM][$room->id] = $room;
|
||||
}
|
||||
|
||||
uasort($groups[Room::SELECTION_TYPE_BY_PAX], static fn (Room $a, Room $b): int => $a->maxPax <=> $b->maxPax);
|
||||
uasort($groups[Room::SELECTION_TYPE_BY_ROOM], static fn (Room $a, Room $b): int => $a->maxPax <=> $b->maxPax);
|
||||
|
||||
return new RoomGroupsDto(
|
||||
byPax: $groups[Room::SELECTION_TYPE_BY_PAX],
|
||||
byRoom: $groups[Room::SELECTION_TYPE_BY_ROOM],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user