feat: correct determination of inquiry status and conditional voucher field display
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -62,7 +62,6 @@ class TravelParser extends AbstractParser
|
||||
}
|
||||
|
||||
$travel->type = $node->attr('reiseart');
|
||||
$travel->status = $this->getStringOrNullValue($node->filterXPath('//status_hin'));
|
||||
$travel->priceFrom = $this->stringToFloat($this->getStringOrNullValue($node->filterXPath('//abpreis')));
|
||||
$travel->selectionGroups = $this->getSelectionGroups($node->filterXPath('//selektiongruppe'));
|
||||
$travel->additionalServices = $this
|
||||
|
||||
Reference in New Issue
Block a user