diff --git a/src/BusProNet/Constants.php b/src/BusProNet/Constants.php index c106e98..6ed30e0 100644 --- a/src/BusProNet/Constants.php +++ b/src/BusProNet/Constants.php @@ -70,4 +70,7 @@ final class Constants // Baby room constraints public const BABY_MAX_AGE = 2; public const BABY_ROOM_CODE = 'Baby'; + + // Pseudo price room - used for website display only, not bookable + public const PSEUDO_PRICE_ROOM_CODE = 'PDGS'; } diff --git a/src/BusProNet/XmlParser/TravelParser.php b/src/BusProNet/XmlParser/TravelParser.php index b1e8fb4..673d082 100644 --- a/src/BusProNet/XmlParser/TravelParser.php +++ b/src/BusProNet/XmlParser/TravelParser.php @@ -24,6 +24,13 @@ class TravelParser extends AbstractParser { private AgeConstraintParserRegistry $ageConstraintRegistry; + /** + * @var array + */ + private array $ignoredRoomCodes = [ + Constants::PSEUDO_PRICE_ROOM_CODE, + ]; + public function __construct() { $this->ageConstraintRegistry = new AgeConstraintParserRegistry(); @@ -319,11 +326,17 @@ class TravelParser extends AbstractParser $rooms = []; $roomNodes->each(function (Crawler $roomNode) use (&$rooms) { + $roomCode = $roomNode->attr('zimmercode'); + + if (true === in_array($roomCode, $this->ignoredRoomCodes, true)) { + return; + } + $roomId = (int) $roomNode->attr('idbuspro_zimmer'); $room = new Room(); $room->id = $roomId; - $room->code = $roomNode->attr('zimmercode'); + $room->code = $roomCode; $room->category = $roomNode->attr('kat'); $room->boardId = (int) $roomNode->attr('idbuspro_vp'); $room->label = $roomNode->attr('zimmertext');