feat: correct determination of inquiry status and conditional voucher field display

This commit is contained in:
Björn Fromme
2025-11-25 16:41:25 +01:00
parent f33e55f201
commit ecc4741f56
19 changed files with 468 additions and 193 deletions
+12 -5
View File
@@ -4,6 +4,7 @@ namespace App\BusProNet\XmlLoader;
use App\BusProNet\Model\BaseData;
use App\BusProNet\Model\MutableData;
use App\BusProNet\Model\ServiceAvailabilityResponse;
use App\BusProNet\Model\Travel;
use App\BusProNet\Utility\DateCodeUtility;
use App\BusProNet\XmlParser\TravelParser;
@@ -278,20 +279,26 @@ class TravelLoader extends AbstractLoader
* Apply availability data to travel services.
*
* Updates the availability status of additional and transportation
* services based on the provided availability data.
* services, and the allowed booking status, based on the provided
* availability data.
*
* @param Travel $travel The travel object to update
* @param BaseData $availabilities The availability data for services
* @param Travel $travel The travel object to update
* @param ServiceAvailabilityResponse $availabilities The availability data for services
*/
public function patchAvailabilities(Travel $travel, BaseData $availabilities): void
public function patchAvailabilities(Travel $travel, ServiceAvailabilityResponse $availabilities): void
{
$serviceAvailabilities = $availabilities->getItems();
$serviceAvailabilities = $availabilities->getServices();
foreach ([...$travel->additionalServices, ...$travel->transportationServices] as $service) {
if (array_key_exists($service->id, $serviceAvailabilities)) {
$service->available = $serviceAvailabilities[$service->id]->available;
}
}
// Patch travel-level booking status from availability response
if ([] !== $availabilities->allowedBookingStatus) {
$travel->allowedBookingStatus = $availabilities->allowedBookingStatus;
}
}
/**