diff --git a/app/Enums/HttpStatus.php b/app/Enums/HttpStatus.php new file mode 100644 index 0000000..8ce2716 --- /dev/null +++ b/app/Enums/HttpStatus.php @@ -0,0 +1,40 @@ + 'OK', + self::CREATED => 'Created', + self::NO_CONTENT => 'No Content', + self::BAD_REQUEST => 'Bad Request', + self::UNAUTHORIZED => 'Unauthorized', + self::FORBIDDEN => 'Forbidden', + self::NOT_FOUND => 'Not Found', + self::UNPROCESSABLE_ENTITY => 'Unprocessable Entity', + self::INTERNAL_SERVER_ERROR => 'Internal Server Error', + default => 'Unknown Status', + }; + } +} diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php index d5a63f6..b7c12bf 100644 --- a/app/Http/Controllers/BaseController.php +++ b/app/Http/Controllers/BaseController.php @@ -2,26 +2,22 @@ namespace App\Http\Controllers; +use App\Enums\HttpStatus; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Validation\ValidatesRequests; -use Illuminate\Routing\Controller; +use Illuminate\Routing\Controller as LaravelController; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -class BaseController extends Controller +class BaseController extends LaravelController { use AuthorizesRequests, ValidatesRequests; /** * Return a standardized success JSON response for API requests. - * - * @param mixed $data - * @param string $message - * @param int $code - * @return JsonResponse */ - protected function successResponse($data = null, string $message = 'Success', int $code = 200): JsonResponse + protected function successResponse($data = null, string $message = 'Success', int $code = HttpStatus::OK): JsonResponse { return response()->json([ 'status' => 'success', @@ -32,13 +28,8 @@ class BaseController extends Controller /** * 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 + protected function errorResponse(string $message = 'Error', int $code = HttpStatus::BAD_REQUEST, array $errors = []): JsonResponse { return response()->json([ 'status' => 'error', @@ -49,33 +40,20 @@ class BaseController extends Controller /** * 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) + protected function respond(Request $request, $data = null, string $message = 'Success', int $code = HttpStatus::OK) { 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) + protected function respondError(Request $request, string $message = 'Error', array $errors = [], int $code = HttpStatus::BAD_REQUEST) { if ($request->expectsJson()) { return $this->errorResponse($message, $code, $errors); @@ -88,14 +66,8 @@ class BaseController extends Controller /** * 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 = []) + protected function redirectResponse(Request $request, string $route, string $message = 'Operation successful', array $routeParams = []): JsonResponse|RedirectResponse { if ($request->expectsJson()) { return $this->successResponse([], $message); @@ -106,15 +78,11 @@ class BaseController extends Controller /** * Handle unauthorized access responses. - * - * @param Request $request - * @param string $message - * @return JsonResponse|RedirectResponse */ - protected function unauthorizedResponse(Request $request, string $message = 'Unauthorized') + protected function unauthorizedResponse(Request $request, string $message = 'Unauthorized'): JsonResponse|RedirectResponse { if ($request->expectsJson()) { - return $this->errorResponse($message, 403); + return $this->errorResponse($message, HttpStatus::FORBIDDEN); } return redirect()->route('login')->with('error', $message); @@ -122,17 +90,13 @@ class BaseController extends Controller /** * 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 $this->errorResponse($message, HttpStatus::NOT_FOUND); } - return response()->view('errors.404', ['message' => $message], 404); + return response()->view('errors.404', ['message' => $message], HttpStatus::NOT_FOUND); } }