all(), [ 'email' => 'required|email|max:255', ]); if ($validator->fails()) { return response()->json([ 'success' => false, 'message' => 'Please provide a valid email address.', 'errors' => $validator->errors(), ], 422); } $email = $request->input('email'); // Check if email already exists $existing = Subscription::where('email', $email)->first(); if ($existing) { if ($existing->is_active) { return response()->json([ 'success' => false, 'message' => 'This email is already subscribed to notifications.', ], 409); } else { // Reactivate subscription $existing->is_active = true; $existing->save(); return response()->json([ 'success' => true, 'message' => 'Your subscription has been reactivated! You will receive email notifications for new docket entries.', ]); } } // Create new subscription Subscription::create([ 'email' => $email, 'is_active' => true, ]); return response()->json([ 'success' => true, 'message' => 'Successfully subscribed! You will receive email notifications for new docket entries.', ]); } /** * Unsubscribe using token. */ public function unsubscribe(Request $request, string $token): JsonResponse { $subscription = Subscription::where('unsubscribe_token', $token)->first(); if (!$subscription) { return response()->json([ 'success' => false, 'message' => 'Invalid unsubscribe token.', ], 404); } $subscription->is_active = false; $subscription->save(); return response()->json([ 'success' => true, 'message' => 'You have been successfully unsubscribed from notifications.', ]); } }