diff --git a/src/Form/Model/BookingData.php b/src/Form/Model/BookingData.php index 423e646..f6e4c51 100644 --- a/src/Form/Model/BookingData.php +++ b/src/Form/Model/BookingData.php @@ -28,25 +28,22 @@ class BookingData $participantData = ParticipantData::fromPersonalData($participant); $participantData->index = $index; - // update services only for active participants - if ('S' !== $participantData->status) { - $participantData->courses = $booking - ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_COURSES); - $participantData->skiPass = $booking - ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_SKI_PASS); - $participantData->additionalServices = $booking - ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_ADDITIONAL); - $participantData->board = $booking - ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_BOARD); - $participantData->rentals = $booking - ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_RENTALS); - // Different keys for direction used in booking data (H <=> HIN, R <=> RUECK)! - $participantData->transportationServiceTo = $booking - ->getTransportationServiceForParticipantAndDirection($index, 'H'); - $participantData->transportationServiceFro = $booking - ->getTransportationServiceForParticipantAndDirection($index, 'R'); - $participantData->pickup = $booking->getPickupForParticipant($index); - } + $participantData->courses = $booking + ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_COURSES); + $participantData->skiPass = $booking + ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_SKI_PASS); + $participantData->additionalServices = $booking + ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_ADDITIONAL); + $participantData->board = $booking + ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_BOARD); + $participantData->rentals = $booking + ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_RENTALS); + // Different keys for direction used in booking data (H <=> HIN, R <=> RUECK)! + $participantData->transportationServiceTo = $booking + ->getTransportationServiceForParticipantAndDirection($index, 'H'); + $participantData->transportationServiceFro = $booking + ->getTransportationServiceForParticipantAndDirection($index, 'R'); + $participantData->pickup = $booking->getPickupForParticipant($index); $instance->participants[$index] = $participantData; } diff --git a/src/Form/Model/ParticipantData.php b/src/Form/Model/ParticipantData.php index 395ae86..be2eae6 100644 --- a/src/Form/Model/ParticipantData.php +++ b/src/Form/Model/ParticipantData.php @@ -40,13 +40,8 @@ class ParticipantData public array $skiPass = []; public array $board = []; public array $rentals = []; - - #[Assert\NotNull(message: 'Bitte angeben')] public ?Service $transportationServiceTo = null; - - #[Assert\NotNull(message: 'Bitte angeben')] public ?Service $transportationServiceFro = null; - public ?Pickup $pickup = null; #[Assert\Callback] @@ -78,6 +73,28 @@ class ParticipantData } } + #[Assert\Callback] + public function assertTransportationSelected(ExecutionContextInterface $context): void + { + if ('S' === $this->status) { + return; + } + + if (null === $this->transportationServiceTo) { + $context->buildViolation('Bitte angeben') + ->atPath('transportationServiceTo') + ->addViolation() + ; + } + + if (null === $this->transportationServiceFro) { + $context->buildViolation('Bitte angeben') + ->atPath('transportationServiceFro') + ->addViolation() + ; + } + } + #[Assert\Callback] public function assertPickupSelected(ExecutionContextInterface $context): void {