wip: continue implemntation
This commit is contained in:
@@ -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(),
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user