where('is_active', true) ->firstOrFail(); return view('public.page', compact('page')); } public function subscribe(Request $request, string $slug): JsonResponse { $page = PreregistrationPage::where('slug', $slug) ->where('is_active', true) ->firstOrFail(); abort_if(now()->lt($page->start_date) || now()->gt($page->end_date), 403); $validated = $request->validate([ 'first_name' => 'required|string|max:255', 'last_name' => 'required|string|max:255', 'email' => 'required|email|max:255', 'phone' => $page->phone_enabled ? 'required|string|max:20' : 'nullable', ]); $exists = $page->subscribers()->where('email', $validated['email'])->exists(); if ($exists) { return response()->json([ 'success' => false, 'message' => 'This email address is already registered.', ], 422); } $subscriber = $page->subscribers()->create($validated); // Mailwizz sync will be wired up in Phase 4 if ($page->mailwizzConfig) { // SyncSubscriberToMailwizz::dispatch($subscriber); } return response()->json([ 'success' => true, 'message' => $page->thank_you_message ?? 'Thank you for registering!', ]); } }