37 lines
1.3 KiB
PHP
37 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\BusProNet\XmlParser;
|
|
|
|
use App\BusProNet\Model\Pickup;
|
|
use Symfony\Component\DomCrawler\Crawler;
|
|
|
|
class PickupsParser extends AbstractParser
|
|
{
|
|
public function parse(Crawler $result): array
|
|
{
|
|
$pickups = [];
|
|
|
|
$result->each(function (Crawler $node) use (&$pickups) {
|
|
$pickupId = (int) $node->attr('idzustieg');
|
|
$pickupDate = $node->attr('datum');
|
|
$pickupTime = $node->attr('zeit');
|
|
$price = $node->attr('preis') ? $this->stringToFloat($node->attr('preis')) : null;
|
|
|
|
$pickup = new Pickup();
|
|
$pickup->id = $pickupId;
|
|
$pickup->code = $node->attr('code');
|
|
$pickup->city = $this->getStringOrNullValue($node->filterXPath('//ort'));
|
|
$pickup->postalCode = $this->getStringOrNullValue($node->filterXPath('//plz'));
|
|
$pickup->street = $this->getStringOrNullValue($node->filterXPath('//strasse'));
|
|
$pickup->time = $this->stringToDateTime($pickupDate.' '.$pickupTime);
|
|
$pickup->price = $price;
|
|
$mapping = $this->stringToArray($node->attr('zuordnung'));
|
|
$pickup->mapping = array_map(function ($index) { return (int) $index - 1; }, $mapping);
|
|
|
|
$pickups[$pickupId] = $pickup;
|
|
});
|
|
|
|
return $pickups;
|
|
}
|
|
}
|