wip: modernized edit flow
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace App\Controller\Booking;
|
||||
|
||||
use App\BusProNet\ApiClient;
|
||||
use App\BusProNet\DataProcessor\BookingDataProcessor;
|
||||
use App\BusProNet\Exception\ApiClientException;
|
||||
use App\BusProNet\Model\Notification;
|
||||
use App\BusProNet\XmlLoader\PickupLoader;
|
||||
@@ -10,7 +11,7 @@ use App\Controller\Traits\BookingDataTrait;
|
||||
use App\Controller\Traits\HtmxControllerTrait;
|
||||
use App\Entity\User;
|
||||
use App\Form\BookingEditType;
|
||||
use App\Form\Model\BookingEditDto;
|
||||
use App\Form\Model\BookingDto;
|
||||
use App\Security\Crypt;
|
||||
use App\Service\BookingPriceCalculatorService;
|
||||
use App\Service\BookingService;
|
||||
@@ -32,6 +33,7 @@ class EditController extends AbstractController
|
||||
|
||||
public function __construct(
|
||||
private readonly ApiClient $apiClient,
|
||||
private readonly BookingDataProcessor $bookingDataProcessor,
|
||||
private readonly TravelDataService $travelDataService,
|
||||
private readonly BookingService $bookingService,
|
||||
private readonly BookingPriceCalculatorService $priceCalculator,
|
||||
@@ -87,7 +89,7 @@ class EditController extends AbstractController
|
||||
$this->travelDataService->patchMutability($travelData, $mutableData);
|
||||
|
||||
// Create DTO for form
|
||||
$formData = BookingEditDto::fromBooking($bookingData, $travelData);
|
||||
$formData = $this->bookingDataProcessor->createBookingDtoFromBooking($bookingData, $travelData);
|
||||
|
||||
// Calculate pricing data for template
|
||||
$summary = $this->bookingService->getRoomSummaryAndParticipantCount($formData);
|
||||
@@ -151,9 +153,7 @@ class EditController extends AbstractController
|
||||
return $this->render('booking/edit.html.twig', [
|
||||
'bookingData' => $bookingData,
|
||||
'bookingEditDto' => $formData,
|
||||
'travelData' => $travelData,
|
||||
'mutableData' => $mutableData,
|
||||
'availabilities' => $availabilities,
|
||||
'form' => $form->createView(),
|
||||
'pricingData' => $summary['pricing'],
|
||||
'participantCount' => $summary['participantCount'],
|
||||
@@ -203,8 +203,8 @@ class EditController extends AbstractController
|
||||
$this->travelDataService->patchAvailabilities($travelData, $availabilities);
|
||||
$this->travelDataService->patchMutability($travelData, $mutableData);
|
||||
|
||||
// Create DTO for form
|
||||
$formData = BookingEditDto::fromBooking($bookingData, $travelData);
|
||||
// Create fresh DTO from booking data
|
||||
$formData = $this->bookingDataProcessor->createBookingDtoFromBooking($bookingData, $travelData);
|
||||
|
||||
// Process form data without validation to capture current state
|
||||
$form = $this->createForm(BookingEditType::class, $formData, [
|
||||
@@ -242,6 +242,7 @@ class EditController extends AbstractController
|
||||
'assignmentCounts' => $roomAssignmentCounts,
|
||||
'participantPrices' => $participantPrices,
|
||||
'groupedSelectedRooms' => $groupedSelectedRooms,
|
||||
'mutableData' => $mutableData,
|
||||
]
|
||||
);
|
||||
|
||||
@@ -260,11 +261,11 @@ class EditController extends AbstractController
|
||||
*
|
||||
* @return array<array{type: string, message: string}> Array of notification messages
|
||||
*/
|
||||
private function collectParticipantNotifications(BookingEditDto $bookingEditDto): array
|
||||
private function collectParticipantNotifications(BookingDto $bookingDto): array
|
||||
{
|
||||
$notifications = [];
|
||||
|
||||
foreach ($bookingEditDto->participants as $participant) {
|
||||
foreach ($bookingDto->participants as $participant) {
|
||||
if ([] !== $participant->notifications) {
|
||||
foreach ($participant->notifications as $notification) {
|
||||
$notifications[] = $notification;
|
||||
|
||||
Reference in New Issue
Block a user