events->getAvailable(false) as $event) { $availableEvents[] = $event->toResource()->toArray($request); }; $event = $this->events->getByIdentifier($eventId, false)?->toResource()->toArray($request); $participantData = [ 'firstname' => '', 'lastname' => '', ]; if (auth()->check()) { $user = new UserResource(auth()->user())->toArray($request); $participantData = [ 'id' => $user['id'], 'firstname' => $user['firstname'], 'lastname' => $user['lastname'], 'nickname' => $user['nickname'], 'email' => $user['email'], 'phone' => $user['phone'], 'postcode' => $user['postcode'], 'city' => $user['city'], 'address_1' => $user['address_1'], 'address_2' => $user['address_2'], 'birthday' => $user['birthday'], 'localGroup' => $user['localGroup'], 'allergies' => $user['allergies'], 'intolerances' => $user['intolerances'], 'eating_habit' => $user['eating_habits'], 'medications' => $user['medications'], 'tetanusVaccination' => $user['tetanus_vaccination'], ]; } $inertiaProvider = new InertiaProvider('Event/Signup', [ 'event' => $event, 'availableEvents' => $availableEvents, 'localGroups' => $event['contributingLocalGroups'], 'participantData' => $participantData, ]); return $inertiaProvider->render(); } public function signUp(int $eventId, Request $request) { $event = $this->events->getById($eventId, false); $eventResource = $event->toResource(); $registrationData = $request->input('registration_data'); $arrival = \DateTime::createFromFormat('Y-m-d', $registrationData['arrival']); $departure = \DateTime::createFromFormat('Y-m-d', $registrationData['departure']); $tetanusVaccination = $registrationData['tetanusVaccination'] ? \DateTime::createFromFormat('Y-m-d', $registrationData['tetanusVaccination']) : null; $doubleCheckEventRegistrationProvider = new DoubleCheckEventRegistrationProvider( $event, $registrationData['vorname'], $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 ); $signupRequest = new SignUpRequest( $event,$registrationData['userId'], $registrationData['vorname'], $registrationData['nachname'], $registrationData['pfadiname'], $registrationData['participationType'], Tenant::findOrFail($registrationData['localGroup']), \DateTime::createFromFormat('Y-m-d', $registrationData['geburtsdatum']), $registrationData['address1'], $registrationData['address2'], $registrationData['plz'], $registrationData['ort'], $registrationData['email_1'], $registrationData['telefon_1'], $registrationData['email_2'], $registrationData['telefon_2'], $registrationData['ansprechpartner'], $registrationData['allergien'], $registrationData['intolerances'], $registrationData['medikamente'], $tetanusVaccination, $registrationData['essgewohnheit'], $registrationData['badeerlaubnis'], $registrationData['first_aid'], $registrationData['foto']['socialmedia'], $registrationData['foto']['print'], $registrationData['foto']['webseite'], $registrationData['foto']['partner'], $registrationData['foto']['intern'], $arrival, $departure, $registrationData['anreise_essen'], $registrationData['abreise_essen'], $registrationData['anmerkungen'], $amount ); $signupCommand = new SignUpCommand($signupRequest); $signupResponse = $signupCommand->execute(); // 4. Addons registrieren $certificateOfConductionCheckRequest = new CertificateOfConductionCheckRequest($signupResponse->participant); $certificateOfConductionCheckCommand = new CertificateOfConductionCheckCommand($certificateOfConductionCheckRequest); $certificateOfConductionCheckResponse = $certificateOfConductionCheckCommand->execute(); $signupResponse->participant->efz_status = $certificateOfConductionCheckResponse->status; $signupResponse->participant->save(); Mail::to($signupResponse->participant->email_1)->send(new EventSignUpSuccessfull( participant: $signupResponse->participant, )); if ($signupResponse->participant->email_2 !== null) { Mail::to($signupResponse->participant->email_2)->send(new EventSignUpSuccessfull( participant: $signupResponse->participant, )); } return response()->json( [ 'participant' => $signupResponse->participant->toResource()->toArray($request), 'status' => 'success', ] ); dd($eventId, $registrationData, $amount); } public function calculateAmount(int $eventId, Request $request, bool $forDisplay = true) : JsonResponse | float { $event = $this->events->getById($eventId, false)->toResource(); 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')) )->toString() ]); } }