33 lines
1.1 KiB
PHP
33 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\BusProNet\XmlParser;
|
|
|
|
use App\BusProNet\Model\PromoVoucher;
|
|
use Symfony\Component\DomCrawler\Crawler;
|
|
|
|
final class PromoVoucherParser extends AbstractParser
|
|
{
|
|
public function parse(Crawler $node): PromoVoucher
|
|
{
|
|
$voucherNode = $node->filterXPath('//aktionsgutschein');
|
|
|
|
$code = trim($voucherNode->attr('code') ?? '');
|
|
$description = trim($voucherNode->attr('text') ?? '');
|
|
$applicability = $voucherNode->attr('pro_buchung_person') ?? '';
|
|
$discountAmount = $this->stringToFloat($voucherNode->attr('wert_betrag') ?? '0,00');
|
|
$discountPercentage = $this->stringToFloat($voucherNode->attr('wert_prozent') ?? '0,00');
|
|
$minimumPrice = $this->stringToFloat($voucherNode->attr('ab_preis') ?? '0,00');
|
|
|
|
return new PromoVoucher(
|
|
code: $code,
|
|
description: $description,
|
|
applicability: $applicability,
|
|
discountAmount: $discountAmount,
|
|
discountPercentage: $discountPercentage,
|
|
minimumPrice: $minimumPrice
|
|
);
|
|
}
|
|
}
|