feat: new service category 'VEG'

This commit is contained in:
Björn Fromme
2026-03-16 12:02:27 +01:00
parent 75366167e8
commit 95d0ce33d4
11 changed files with 437 additions and 12 deletions
+11 -7
View File
@@ -289,13 +289,17 @@ class ServicePricingCalculator
array &$serviceAggregation,
BookingDto $bookingDto,
): void {
// Handle single service selections (skiPass, rentalInsurance)
// Handle single service selections (skiPass, veg, rentalInsurance)
if (null !== $participant->skiPass && null !== $participant->skiPass->price) {
$this->addToServiceAggregation($serviceAggregation, $participant->skiPass, 1);
$this->addToServiceAggregation($serviceAggregation, $participant->skiPass);
}
if (null !== $participant->veg && null !== $participant->veg->price) {
$this->addToServiceAggregation($serviceAggregation, $participant->veg);
}
if (null !== $participant->rentalInsurance && null !== $participant->rentalInsurance->price) {
$this->addToServiceAggregation($serviceAggregation, $participant->rentalInsurance, 1);
$this->addToServiceAggregation($serviceAggregation, $participant->rentalInsurance);
}
// Resolve insurance: use price-tier-adjusted insurance for bulk assignment
@@ -303,7 +307,7 @@ class ServicePricingCalculator
$insuranceToAggregate = $this->resolveInsuranceForAggregation($participant, $bookingDto);
if (null !== $insuranceToAggregate && null !== $insuranceToAggregate->price && false === $insuranceToAggregate->isNoInsurance()) {
$this->addInsuranceToServiceAggregation($serviceAggregation, $insuranceToAggregate, 1);
$this->addInsuranceToServiceAggregation($serviceAggregation, $insuranceToAggregate);
}
// Handle multiple service selections
@@ -318,7 +322,7 @@ class ServicePricingCalculator
if (true === is_array($serviceArray)) {
foreach ($serviceArray as $service) {
if ($service instanceof Service && null !== $service->price) {
$this->addToServiceAggregation($serviceAggregation, $service, 1);
$this->addToServiceAggregation($serviceAggregation, $service);
}
}
}
@@ -328,7 +332,7 @@ class ServicePricingCalculator
/**
* Adds a service to the aggregation array, incrementing count and updating total price.
*/
private function addToServiceAggregation(array &$serviceAggregation, Service $service, int $quantity): void
private function addToServiceAggregation(array &$serviceAggregation, Service $service, int $quantity = 1): void
{
$serviceKey = $service->id.'_'.$service->label;
@@ -354,7 +358,7 @@ class ServicePricingCalculator
* @param Insurance $insurance The insurance to add
* @param int $quantity The quantity of the insurance
*/
private function addInsuranceToServiceAggregation(array &$serviceAggregation, Insurance $insurance, int $quantity): void
private function addInsuranceToServiceAggregation(array &$serviceAggregation, Insurance $insurance, int $quantity = 1): void
{
$serviceKey = $insurance->id.'_'.$insurance->label;