wip: booking process, refactor participant room assignment logic

This commit is contained in:
Björn Fromme
2025-07-22 08:52:13 +02:00
parent b3c633dccb
commit 2f5b855bae
16 changed files with 216 additions and 94 deletions
+2 -2
View File
@@ -49,7 +49,7 @@ class BookingParser extends AbstractParser
$booking->applicant = $this->parsePersonalData($node->filterXPath('//anmelder'));
$participantsStatus = $this->getArrayValue($node->filterXPath('//status_teilnehmer'), '/');
$booking->participantsStatus = array_combine(range(1, count($participantsStatus)), $participantsStatus);
$booking->participantsStatus = array_combine(range(0, count($participantsStatus) - 1), $participantsStatus);
$booking->participants = $this->parseParticipants($node->filterXPath('//teilnehmerliste/teilnehmer'));
@@ -110,7 +110,7 @@ class BookingParser extends AbstractParser
$node->each(function (Crawler $node) use (&$participants) {
$id = (int) $node->attr('id');
$participants[$id] = $this->parsePersonalData($node);
$participants[$id - 1] = $this->parsePersonalData($node);
});
return $participants;
+1 -1
View File
@@ -26,7 +26,7 @@ class PickupsParser extends AbstractParser
$pickup->time = $this->stringToDateTime($pickupDate.' '.$pickupTime);
$pickup->price = $price;
$mapping = $this->stringToArray($node->attr('zuordnung'));
$pickup->mapping = array_map('intval', $mapping);
$pickup->mapping = array_map(function ($index) { return (int) $index - 1; }, $mapping);
$pickups[$pickupId] = $pickup;
});
+2 -2
View File
@@ -24,14 +24,14 @@ class RoomsParser extends AbstractParser
$room->maxPax = (int) $node->attr('maxpax');
$room->board = $node->attr('verpflegung');
$mapping = $this->stringToArray($node->attr('zuordnung'));
$room->mapping = array_map('intval', $mapping);
$room->mapping = array_map(function ($index) { return (int) $index - 1; }, $mapping);
$room->totalPrice = $this->stringToFloat($node->attr('gesamtpreis'));
$individualPrices = array_map(
function ($price) {
return $this->stringToFloat($price);
}, $this->stringToArray($node->attr('einzelpreis', ''), '/')
);
$room->individualPrice = array_combine($mapping, $individualPrices);
$room->individualPrice = array_combine($room->mapping, $individualPrices);
$rooms[$room->id] = $room;
});
+2 -2
View File
@@ -23,14 +23,14 @@ class ServicesParser extends AbstractParser
$service->subType = $node->attr('unterart');
$service->totalCount = $node->attr('anzahl') ? (int) $node->attr('anzahl') : null;
$mapping = $this->stringToArray($node->attr('zuordnung'));
$service->mapping = array_map('intval', $mapping);
$service->mapping = array_map(function ($index) { return (int) $index - 1; }, $mapping);
$service->totalPrice = $this->stringToFloat($node->attr('gesamtpreis'));
$individualPrices = array_map(
function ($price) {
return $this->stringToFloat($price);
}, $this->stringToArray($node->attr('einzelpreis', ''), '/')
);
$service->individualPrice = array_combine($mapping, $individualPrices);
$service->individualPrice = array_combine($service->mapping, $individualPrices);
if (Constants::CATEGORY_TRANSPORTATION === $category) {
$service->direction = $node->attr('richtung');
}
+2 -2
View File
@@ -17,13 +17,13 @@ class SurchargesParser extends AbstractParser
$surcharge->label = empty($surchargeLabel) ? 'unbekannt' : $surchargeLabel;
$surcharge->totalPrice = $this->stringToFloat($node->attr('gesamtpreis'));
$mapping = $this->stringToArray($node->attr('zuordnung'));
$surcharge->mapping = array_map('intval', $mapping);
$surcharge->mapping = array_map(function ($index) { return (int) $index - 1; }, $mapping);
$individualPrices = array_map(
function ($price) {
return $this->stringToFloat($price);
}, $this->stringToArray($node->attr('einzelpreis', ''), '/')
);
$surcharge->individualPrice = array_combine($mapping, $individualPrices);
$surcharge->individualPrice = array_combine($surcharge->mapping, $individualPrices);
$surcharges[] = $surcharge;
});