feat: list and respect all surcharges

This commit is contained in:
Björn Fromme
2024-12-03 16:36:02 +01:00
parent aa0e3ef978
commit 273db3bdb7
3 changed files with 30 additions and 10 deletions
@@ -226,11 +226,7 @@ class BookingResponseParser
foreach ($xml->zuschlag as $item) { foreach ($xml->zuschlag as $item) {
$attributes = $item->attributes(); $attributes = $item->attributes();
$label = (string) $attributes['bezeichnung']; $label = empty($attributes['bezeichnung']) ? 'unbekannt' : (string) $attributes['bezeichnung'];
// Skip invalid entries
if (empty($label)) {
continue;
}
$surcharge = new Surcharge(); $surcharge = new Surcharge();
$surcharge->label = $label; $surcharge->label = $label;
+7
View File
@@ -121,6 +121,13 @@ class Booking
return $price; return $price;
} }
public function getSurchargesForParticipant(int $participantIndex): array
{
return array_filter($this->surcharges, function (Surcharge $surcharge) use ($participantIndex) {
return in_array($participantIndex, $surcharge->mapping);
});
}
public function isEditable(): bool public function isEditable(): bool
{ {
return $this->travelDate > new \DateTimeImmutable() && false === in_array($this->status, ['S', 'U']); return $this->travelDate > new \DateTimeImmutable() && false === in_array($this->status, ['S', 'U']);
+22 -5
View File
@@ -202,11 +202,28 @@
<div class="absolute top-0 left-0 inset-0 cursor-not-allowed"></div> <div class="absolute top-0 left-0 inset-0 cursor-not-allowed"></div>
{% endif %} {% endif %}
</div> </div>
<div> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-4">
<h3 class="text-xl font-semibold pb-2"> <div>
Gesamtpreis <h3 class="text-xl font-semibold pb-2">
</h3> Gesamtpreis
<span class="text-2xl font-medium">{{ bookingData.priceForParticipant(participant.index)|format_currency('EUR') }}</span> </h3>
<span class="text-2xl font-medium">{{ bookingData.priceForParticipant(participant.index)|format_currency('EUR') }}</span>
</div>
{% set surcharges = bookingData.surchargesForParticipant(participant.index) %}
{% if surcharges|length > 0 %}
<div>
<h3 class="text-xl font-semibold pb-2">
Zuschläge
</h3>
<ul>
{% for surcharge in surcharges %}
<li>
{{ surcharge.label }}: {{ surcharge.individualPrice[participant.index]|format_currency('EUR') }}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
</div> </div>
</div> </div>
</div> </div>