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

This commit is contained in:
Björn Fromme
2026-03-16 11:59:11 +01:00
parent 85998534fe
commit 1f2f2751e4
19 changed files with 468 additions and 193 deletions
@@ -5,11 +5,12 @@ namespace App\BusProNet\XmlParser;
use App\BusProNet\Model\Availability;
use App\BusProNet\Model\BaseData;
use App\BusProNet\Model\Room;
use App\BusProNet\Model\ServiceAvailabilityResponse;
use Symfony\Component\DomCrawler\Crawler;
class AvailabilitiesParser extends AbstractParser
{
public function parseServices(Crawler $result): BaseData
public function parseServices(Crawler $result): ServiceAvailabilityResponse
{
$availabilities = [];
@@ -26,7 +27,21 @@ class AvailabilitiesParser extends AbstractParser
})
;
return new BaseData($availabilities);
// Parse travel-level booking status from <reise> node
$allowedBookingStatus = [];
$travelStatus = null;
$reiseNode = $result->filterXPath('//reise');
if ($reiseNode->count() > 0) {
$travelStatus = $reiseNode->attr('status');
$bookingStatusPossible = $reiseNode->attr('buchungstatusmoeglich') ?? '';
if ('' !== $bookingStatusPossible) {
$allowedBookingStatus = str_split($bookingStatusPossible);
}
}
return new ServiceAvailabilityResponse($availabilities, $allowedBookingStatus, $travelStatus);
}
public function parseRooms(Crawler $result): BaseData