wip: selectable bus exits

This commit is contained in:
Björn Fromme
2025-03-12 18:05:21 +01:00
parent 778d79fd23
commit 851c7086ba
14 changed files with 162 additions and 75 deletions
@@ -12,7 +12,7 @@ class BookingDataProcessor
$travelData = $formData->travel;
// Reset mappings
foreach ([...$bookingData->additionalServices, ...$bookingData->transportationServices, ...$bookingData->pickups] as $service) {
foreach ([...$bookingData->additionalServices, ...$bookingData->transportationServices, ...$bookingData->pickupsTo, ...$bookingData->pickupsFro] as $service) {
$service->mapping = [];
}
// Update mappings, add services and pickups
@@ -40,11 +40,17 @@ class BookingDataProcessor
}
$bookingData->transportationServices[$service->id]->mapping[] = $participant->index;
}
if ('BUS' === $participant->transportationServiceTo->subType && null !== $selectedPickup = $participant->pickup) {
if (false === isset($bookingData->pickups[$selectedPickup->id])) {
$bookingData->pickups[$selectedPickup->id] = $selectedPickup;
if ('BUS' === $participant->transportationServiceTo->subType && null !== $selectedPickup = $participant->pickupTo) {
if (false === isset($bookingData->pickupsTo[$selectedPickup->id])) {
$bookingData->pickupsTo[$selectedPickup->id] = $selectedPickup;
}
$bookingData->pickups[$selectedPickup->id]->mapping[] = $participant->index;
$bookingData->pickupsTo[$selectedPickup->id]->mapping[] = $participant->index;
}
if ('BUS' === $participant->transportationServiceFro->subType && null !== $selectedPickup = $participant->pickupFro) {
if (false === isset($bookingData->pickupsFro[$selectedPickup->id])) {
$bookingData->pickupsFro[$selectedPickup->id] = $selectedPickup;
}
$bookingData->pickupsFro[$selectedPickup->id]->mapping[] = $participant->index;
}
}
// Remove services/pickups with empty mappings
@@ -58,9 +64,14 @@ class BookingDataProcessor
unset($bookingData->transportationServices[$service->id]);
}
}
foreach ($bookingData->pickups as $pickup) {
foreach ($bookingData->pickupsTo as $pickup) {
if (0 === count($pickup->mapping)) {
unset($bookingData->pickups[$pickup->id]);
unset($bookingData->pickupsTo[$pickup->id]);
}
}
foreach ($bookingData->pickupsFro as $pickup) {
if (0 === count($pickup->mapping)) {
unset($bookingData->pickupsFro[$pickup->id]);
}
}
@@ -147,9 +158,9 @@ class BookingDataProcessor
];
}
if (0 < count($bookingData->pickups)) {
if (0 < count($bookingData->pickupsTo)) {
$payload['zustiege']['zustieg'] = [];
foreach ($bookingData->pickups as $pickup) {
foreach ($bookingData->pickupsTo as $pickup) {
$payload['zustiege']['zustieg'][] = [
'@idzustieg' => $pickup->id,
'@anzahl' => count($pickup->mapping),
@@ -158,6 +169,17 @@ class BookingDataProcessor
}
}
if (0 < count($bookingData->pickupsFro)) {
$payload['zustiege_rueck']['zustieg_rueck'] = [];
foreach ($bookingData->pickupsFro as $pickup) {
$payload['zustiege_rueck']['zustieg_rueck'][] = [
'@idzustieg' => $pickup->id,
'@anzahl' => count($pickup->mapping),
'@zuordnung' => implode(',', $pickup->mapping),
];
}
}
return $payload;
}
}