diff --git a/app/Domains/Event/Actions/SetParticipationFees/SetParticipationFeesCommand.php b/app/Domains/Event/Actions/SetParticipationFees/SetParticipationFeesCommand.php index 18974c6..062e5ea 100644 --- a/app/Domains/Event/Actions/SetParticipationFees/SetParticipationFeesCommand.php +++ b/app/Domains/Event/Actions/SetParticipationFees/SetParticipationFeesCommand.php @@ -12,6 +12,9 @@ class SetParticipationFeesCommand { public function execute() : SetParticipationFeesResponse { $response = new SetParticipationFeesResponse(); + $this->request->event->sibling_reduction = $this->request->siblingReduction; + $this->request->event->save(); + $this->cleanBefore(); $this->request->event->participationFee1()->associate(EventParticipationFee::create([ diff --git a/app/Domains/Event/Actions/SetParticipationFees/SetParticipationFeesRequest.php b/app/Domains/Event/Actions/SetParticipationFees/SetParticipationFeesRequest.php index 28f2ec4..0df1171 100644 --- a/app/Domains/Event/Actions/SetParticipationFees/SetParticipationFeesRequest.php +++ b/app/Domains/Event/Actions/SetParticipationFees/SetParticipationFeesRequest.php @@ -12,13 +12,16 @@ class SetParticipationFeesRequest { public ?array $participationFeeThird; public ?array $participationFeeFourth; + public bool $siblingReduction; - public function __construct(Event $event, array $participationFeeFirst) { + + public function __construct(Event $event, array $participationFeeFirst, bool $siblingReduction) { $this->event = $event; $this->participationFeeFirst = $participationFeeFirst; $this->participationFeeSecond = null; $this->participationFeeThird = null; $this->participationFeeFourth = null; + $this->siblingReduction = $siblingReduction; } } diff --git a/app/Domains/Event/Controllers/DetailsController.php b/app/Domains/Event/Controllers/DetailsController.php index fbfac37..b0d7ebc 100644 --- a/app/Domains/Event/Controllers/DetailsController.php +++ b/app/Domains/Event/Controllers/DetailsController.php @@ -87,7 +87,8 @@ class DetailsController extends CommonController { 'amount_solidarity' => null !== $request->input('pft_1_amount_solidarity') ? Amount::fromString($request->input('pft_1_amount_solidarity')) : null ]; - $participationFeeRequest = new SetParticipationFeesRequest($event, $participationFeeFirst); + $siblingReduction = $request->input('sibling_reduction') ?? false; + $participationFeeRequest = new SetParticipationFeesRequest($event, $participationFeeFirst, $siblingReduction); if ($request->input('pft_2_active')) { $participationFeeRequest->participationFeeSecond = [ diff --git a/app/Domains/Event/Controllers/SignupController.php b/app/Domains/Event/Controllers/SignupController.php index c6999eb..67cc0b6 100644 --- a/app/Domains/Event/Controllers/SignupController.php +++ b/app/Domains/Event/Controllers/SignupController.php @@ -70,6 +70,8 @@ class SignupController extends CommonController { $event = $this->events->getById($eventId, false); $eventResource = $event->toResource(); $registrationData = $request->input('registration_data'); + $siblingReduction = $registrationData['sibling'] === 'true'; + $arrival = \DateTime::createFromFormat('Y-m-d', $registrationData['arrival']); $departure = \DateTime::createFromFormat('Y-m-d', $registrationData['departure']); @@ -81,16 +83,17 @@ class SignupController extends CommonController { $registrationData['nachname'], $registrationData['email_1'], DateTime::createFromFormat('Y-m-d', $registrationData['geburtsdatum'])); -/* + if ($doubleCheckEventRegistrationProvider->isRegistered()) { return response()->json(['status' => 'exists']); - }*/ + } $amount = $eventResource->calculateAmount( $registrationData['participationType'], $registrationData['beitrag'], $arrival, - $departure + $departure, + $siblingReduction ); $signupRequest = new SignUpRequest( @@ -164,12 +167,15 @@ class SignupController extends CommonController { public function calculateAmount(int $eventId, Request $request, bool $forDisplay = true) : JsonResponse | float { $event = $this->events->getById($eventId, false)->toResource(); + $siblingReduction = $request->input('sibling') === 'true'; + return response()->json(['amount' => $event->calculateAmount( $request->input('participationType'), $request->input('beitrag'), \DateTime::createFromFormat('Y-m-d', $request->input('arrival')), - \DateTime::createFromFormat('Y-m-d', $request->input('departure')) + \DateTime::createFromFormat('Y-m-d', $request->input('departure')), + $siblingReduction )->toString() ]); } diff --git a/app/Domains/Event/Views/Partials/ParticipationFees.vue b/app/Domains/Event/Views/Partials/ParticipationFees.vue index 53e687c..7e1f1da 100644 --- a/app/Domains/Event/Views/Partials/ParticipationFees.vue +++ b/app/Domains/Event/Views/Partials/ParticipationFees.vue @@ -38,9 +38,12 @@ "pft_4_description": props.event.participationFee_4.description, 'maxAmount': props.event.maxAmount, + 'sibling_reduction': props.event.siblingReduction, }) + console.log(formData) + function validateInput() { var noErrors = true; @@ -103,6 +106,7 @@ pft_4_description: formData.pft_4_description, maxAmount: formData.maxAmount, + sibling_reduction: formData.sibling_reduction, } }) @@ -277,7 +281,14 @@ - + + + + + + + + diff --git a/app/Domains/Event/Views/Partials/SignUpForm/composables/useSignupForm.js b/app/Domains/Event/Views/Partials/SignUpForm/composables/useSignupForm.js index 40c4905..e5b50a1 100644 --- a/app/Domains/Event/Views/Partials/SignUpForm/composables/useSignupForm.js +++ b/app/Domains/Event/Views/Partials/SignUpForm/composables/useSignupForm.js @@ -30,6 +30,7 @@ console.log(participantData) telefon_2: '', email_2: '', badeerlaubnis: '-1', + sibling: '-1', first_aid: '-1', participant_group: '', beitrag: 'regular', @@ -66,6 +67,7 @@ console.log(participantData) addons: selectedAddons, participationType: formData.participationType, beitrag: formData.beitrag, + sibling: formData.sibling, }) summaryAmount.value = res.data.amount } finally { diff --git a/app/Domains/Event/Views/Partials/SignUpForm/steps/StepContactPerson.vue b/app/Domains/Event/Views/Partials/SignUpForm/steps/StepContactPerson.vue index dd8c8b8..5b6367c 100644 --- a/app/Domains/Event/Views/Partials/SignUpForm/steps/StepContactPerson.vue +++ b/app/Domains/Event/Views/Partials/SignUpForm/steps/StepContactPerson.vue @@ -27,6 +27,11 @@ const next = () => { hasError = true } + if (props.event.siblingReduction && props.formData.sibling === '-1') { + errors.sibling = 'Bitte eine Entscheidung treffen.' + } + + if (!props.formData.telefon_2) { errors.telefon_2 = 'Bitte eine Telefonnummer angeben.' hasError = true @@ -110,6 +115,20 @@ const next = () => { + + Ist bereits ein vollzahlendes Geschwisterkind für die Veranstaltung angemeldet:* + +
+ + Ist bereits ein vollzahlendes Geschwisterkind angemeldet, reduziert sich der Teilnahmebeitrag um 50%. Der Preisnachlass wird am Ende der Anmeldung automatisch abgezogen. + + + + diff --git a/app/Domains/Event/Views/Partials/SignUpForm/steps/StepRegistrationMode.vue b/app/Domains/Event/Views/Partials/SignUpForm/steps/StepRegistrationMode.vue index b640e44..a57ce47 100644 --- a/app/Domains/Event/Views/Partials/SignUpForm/steps/StepRegistrationMode.vue +++ b/app/Domains/Event/Views/Partials/SignUpForm/steps/StepRegistrationMode.vue @@ -20,6 +20,7 @@ const nextStep = () => { const hasAddons = (props.event.addons?.length ?? 0) > 0 emit('next', hasAddons ? 6 : 7) } +console.log(props.formData, props.event)