wip: continue implemntation

This commit is contained in:
Björn Fromme
2024-11-22 17:30:20 +01:00
parent bd13ae6537
commit d3786795e4
26 changed files with 798 additions and 494 deletions
+22 -13
View File
@@ -35,11 +35,17 @@ class EditController extends AbstractController
return $this->security->logout();
}
$booking = $this->apiClient->getBooking($bpnUser->getEmail(), $bpnUser->getPassword(), $id);
// Fetch original bookingData data via API
$bookingData = $this->apiClient->getBooking($bpnUser->getEmail(), $bpnUser->getPassword(), $id);
//$this->denyAccessUnlessGranted('VIEW', $booking);
if (null === $bookingData) {
$this->addFlash('error', 'Buchungsdaten nicht (mehr) verfügbar');
$travelData = $this->travelDataLoader->loadById($booking->travelId);
return $this->redirectToRoute('app_bookings');
}
// Load according travel data
$travelData = $this->travelDataLoader->loadById($bookingData->travelId);
if (null === $travelData) {
$this->addFlash('error', 'Reisedaten nicht (mehr) verfügbar');
@@ -47,22 +53,25 @@ class EditController extends AbstractController
return $this->redirectToRoute('app_bookings');
}
$booking->travelData = $travelData;
$mutableFields = $this->apiClient->getMutableFields($booking->travelId);
$availabilities = $this->apiClient->getAvailabilities($booking->travelId);
// Fetch mutability information via API
$mutableData = $this->apiClient->getMutableData($bookingData->travelId);
$this->travelDataLoader->enrichServicesData($travelData, $availabilities);
$this->pickupDataLoader->enrichPickupsData($travelData);
// Fetch availability information via API
$availabilities = $this->apiClient->getAvailabilities($bookingData->travelId);
$formData = BookingData::fromBooking($booking);
// Patch travel data with additional information from above
$this->travelDataLoader->patchAvailabilities($travelData, $availabilities);
$this->travelDataLoader->patchMutability($travelData, $mutableData);
$this->pickupDataLoader->patchPickupsDetails($travelData);
// Create DTO for form
$formData = BookingData::fromBooking($bookingData, $travelData);
$form = $this->createForm(BookingType::class, $formData, [
'hx_post' => $this->generateUrl('app_booking_edit', ['id' => $id]),
'hx_target' => '#app',
'hx_swap' => 'innerHTML show:top',
'attr' => ['novalidate' => 'novalidate'],
'travel' => $travelData,
'mutable_fields' => $mutableFields,
]);
$form->handleRequest($request);
@@ -76,9 +85,9 @@ class EditController extends AbstractController
}
return $this->render('booking/edit.html.twig', [
'booking' => $booking,
'bookingData' => $bookingData,
'travelData' => $travelData,
'mutableFields' => $mutableFields,
'mutableData' => $mutableData,
'availabilities' => $availabilities,
'form' => $form->createView(),
]);