Add Base Controller

pull/2/head
sundayenglish 3 weeks ago
parent f7ad1f4c0a
commit 2bcc5769bd
  1. 18
      Modules/Api/app/Http/Controllers/ApiController.php
  2. 138
      app/Http/Controllers/BaseController.php

@ -2,19 +2,25 @@
namespace Modules\Api\Http\Controllers; namespace Modules\Api\Http\Controllers;
use App\Http\Controllers\BaseController;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
class ApiController extends Controller class ApiController extends BaseController
{ {
/** /**
* Display a listing of the resource. * Display a listing of the resource.
*/ */
public function index() public function index()
{ {
return response()->json(['message' => 'Inline route test']); $user = \App\Models\User::find(0);
if (!$user) {
return $this->errorResponse('User not found', 404);
}
return $this->successResponse($user, 'User fetched successfully');
} }
/** /**
@ -22,20 +28,20 @@ class ApiController extends Controller
*/ */
public function create() public function create()
{ {
return view('api::create'); return $this->successResponse("Success Call Create");
} }
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
*/ */
public function store(Request $request) {} public function store(Request $request) { return $this->successResponse("Success Call Store"); }
/** /**
* Show the specified resource. * Show the specified resource.
*/ */
public function show($id) public function show($id)
{ {
return view('api::show'); return $this->successResponse("Success Call Show");
} }
/** /**
@ -43,7 +49,7 @@ class ApiController extends Controller
*/ */
public function edit($id) public function edit($id)
{ {
return view('api::edit'); return $this->successResponse("Success Call Edit");
} }
/** /**

@ -0,0 +1,138 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class BaseController extends Controller
{
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
{
return response()->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);
}
}
Loading…
Cancel
Save