json([ 'status' => 'success', 'message' => $message, 'data' => $data, ], $code); } /** * Return a standardized error JSON response for API requests. * * @param string $message * @param int $code * @param array $errors * @return JsonResponse */ protected function errorResponse(string $message = 'Error', int $code = 400, array $errors = []): JsonResponse { return response()->json([ 'status' => 'error', 'message' => $message, 'errors' => $errors, ], $code); } /** * Automatically respond with JSON or Web view based on request type. * * @param Request $request * @param mixed $data * @param string $message * @param int $code * @return JsonResponse|\Illuminate\View\View */ protected function respond(Request $request, $data = null, string $message = 'Success', int $code = 200) { if ($request->expectsJson()) { return $this->successResponse($data, $message, $code); } // You can customize the view as needed. return view('response.success', compact('data', 'message')); } /** * Automatically handle error response for Web or API. * * @param Request $request * @param string $message * @param array $errors * @param int $code * @return JsonResponse|RedirectResponse */ protected function respondError(Request $request, string $message = 'Error', array $errors = [], int $code = 400) { if ($request->expectsJson()) { return $this->errorResponse($message, $code, $errors); } return redirect()->back() ->withErrors($errors) ->withInput(); } /** * Redirect the response to a route or return success JSON for API. * * @param Request $request * @param string $route * @param string $message * @param array $routeParams * @return JsonResponse|RedirectResponse */ protected function redirectResponse(Request $request, string $route, string $message = 'Operation successful', array $routeParams = []) { if ($request->expectsJson()) { return $this->successResponse([], $message); } return redirect()->route($route, $routeParams)->with('success', $message); } /** * Handle unauthorized access responses. * * @param Request $request * @param string $message * @return JsonResponse|RedirectResponse */ protected function unauthorizedResponse(Request $request, string $message = 'Unauthorized') { if ($request->expectsJson()) { return $this->errorResponse($message, 403); } return redirect()->route('login')->with('error', $message); } /** * Handle not found (404) responses. * * @param Request $request * @param string $message * @return JsonResponse|\Illuminate\View\View */ protected function notFoundResponse(Request $request, string $message = 'Not Found') { if ($request->expectsJson()) { return $this->errorResponse($message, 404); } return response()->view('errors.404', ['message' => $message], 404); } }