diff --git a/app/Http/Controllers/Api/DashboardController.php b/app/Http/Controllers/Api/DashboardController.php index 73a5c71..fd69fc5 100644 --- a/app/Http/Controllers/Api/DashboardController.php +++ b/app/Http/Controllers/Api/DashboardController.php @@ -2,15 +2,15 @@ namespace App\Http\Controllers\Api; -use App\Helpers\ApiResponse; use App\Http\Controllers\Controller; -use App\Models\PbgTask; -use App\Models\PbgTaskRetributions; +use App\Traits\GlobalApiResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class DashboardController extends Controller { + use GlobalApiResponse; + public function businnessDocument(Request $request){ $businessData = DB::table('pbg_task') ->leftJoin('pbg_task_retributions', 'pbg_task.uuid', '=', 'pbg_task_retributions.pbg_task_uid') @@ -30,7 +30,7 @@ class DashboardController extends Controller "series" => [$taskCount], "total" => $taskTotal ]; - return ApiResponse::successResponse($result, "Successfully count businness doucument"); + return $this->resSuccess($result); } public function nonBusinnessDocument(Request $request){ $businessData = DB::table('pbg_task') @@ -50,7 +50,7 @@ class DashboardController extends Controller "series" => [$taskCount], "total" => $taskTotal ]; - return ApiResponse::successResponse($result, "Successfully count not businness doucument"); + return $this->resSuccess($result); } public function allTaskDocuments(){ $query = DB::table('pbg_task') @@ -67,6 +67,6 @@ class DashboardController extends Controller "series" => [$taskCount], "total" => $taskTotal ]; - return ApiResponse::successResponse($result, "Successfully count all tasks documents"); + return $this->resSuccess($result); } } diff --git a/app/Http/Controllers/Api/GlobalSettingsController.php b/app/Http/Controllers/Api/GlobalSettingsController.php index 00f8a3d..e47384c 100644 --- a/app/Http/Controllers/Api/GlobalSettingsController.php +++ b/app/Http/Controllers/Api/GlobalSettingsController.php @@ -6,10 +6,12 @@ use App\Http\Controllers\Controller; use App\Http\Requests\GlobalSettingRequest; use App\Http\Resources\GlobalSettingResource; use App\Models\GlobalSetting; -use Illuminate\Http\Request; +use App\Traits\GlobalApiResponse; +use Exception; class GlobalSettingsController extends Controller { + use GlobalApiResponse; /** * Display a listing of the resource. */ @@ -25,15 +27,10 @@ class GlobalSettingsController extends Controller public function store(GlobalSettingRequest $request) { try { - //code... $data = GlobalSetting::create($request->validated()); return new GlobalSettingResource($data); } catch (\Exception $e) { - return response()->json( - [ - "errors" => $e->getMessage() - ] - ); + return $this->resError($e->getMessage(), null, $e->getCode()); } } @@ -42,15 +39,36 @@ class GlobalSettingsController extends Controller */ public function show(string $id) { - // + try{ + $data = GlobalSetting::find($id); + if(!$data){ + return $this->resError("Invalid id", null, 404); + } + return new GlobalSettingResource($data); + }catch(Exception $e){ + return $this->resError($e->getMessage(), null, $e->getCode()); + } } /** * Update the specified resource in storage. */ - public function update(Request $request, string $id) + public function update(GlobalSettingRequest $request, string $id) { - // + try{ + + $data = GlobalSetting::find($id); + if(!$data){ + return $this->resError("Invalid id", null, 400); + } + + $data->update($request->validated()); + + return new GlobalSettingResource($data); + + }catch(Exception $e){ + return $this->resError($e->getMessage(), null, $e->getCode()); + } } /** @@ -58,6 +76,17 @@ class GlobalSettingsController extends Controller */ public function destroy(string $id) { - // + try{ + $data = GlobalSetting::find($id); + if(!$data){ + return $this->resError("Invalid id", null, 404); + } + + $data->delete(); + + return new GlobalSettingResource($data); + }catch(Exception $e){ + return $this->resError($e->getMessage(), null, $e->getCode()); + } } } diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index d3659b8..a79a949 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -5,7 +5,7 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\Auth\LoginRequest; use App\Models\User; -use Hash; +use Illuminate\Support\Facades\Hash; use Illuminate\Http\Request; class UsersController extends Controller diff --git a/app/Http/Resources/GlobalSettingResource.php b/app/Http/Resources/GlobalSettingResource.php index b1ea867..18d6a3e 100644 --- a/app/Http/Resources/GlobalSettingResource.php +++ b/app/Http/Resources/GlobalSettingResource.php @@ -15,6 +15,7 @@ class GlobalSettingResource extends JsonResource public function toArray(Request $request): array { return [ + 'id' => $this->id, 'key' => $this->key, 'value' => $this->value, 'type' => $this->type, diff --git a/app/ServiceClient.php b/app/ServiceClient.php index 5518d49..3595bce 100644 --- a/app/ServiceClient.php +++ b/app/ServiceClient.php @@ -1,11 +1,12 @@ client->request($method, $this->baseUrl . $url, $options); $resultResponse = json_decode($response->getBody(), true); - return ApiResponse::successResponse($resultResponse, "Successfully fetched data"); + return $this->resSuccess($resultResponse); } catch (Exception $e) { - return ApiResponse::errorResponse($e->getMessage(), $e->getCode()); + return $this->resError($e->getMessage()); } } diff --git a/app/ServiceSIMBG.php b/app/ServiceSIMBG.php index 1b1da42..f5e04a8 100644 --- a/app/ServiceSIMBG.php +++ b/app/ServiceSIMBG.php @@ -3,17 +3,18 @@ namespace App; use App\Enums\ImportDatasourceStatus; -use App\Helpers\ApiResponse; use App\Models\ImportDatasource; use App\Models\PbgTaskIndexIntegrations; use App\Models\PbgTaskPrasarana; use App\Models\PbgTaskRetributions; use Exception; use App\Models\PbgTask; +use App\Traits\GlobalApiResponse; use Illuminate\Support\Facades\Log; class ServiceSIMBG { + use GlobalApiResponse; private $email; private $password; /** @@ -106,7 +107,7 @@ class ServiceSIMBG 'status' => ImportDatasourceStatus::Failed->value, 'message' => 'Failed to retrive token' ]); - return ApiResponse::errorResponse("Failed to retrieve token", 401); + return $this->resError("Failed to retrive token"); } $apiToken = $resToken->original['data']['token']['access']; @@ -127,7 +128,7 @@ class ServiceSIMBG 'status' => ImportDatasourceStatus::Failed->value, 'message' => 'Invalid response: no total_page' ]); - return ApiResponse::errorResponse("Invalid response from API", 400); + return $this->resError("Invalid response from API"); } $totalPage = $initialResponse->original['data']['total_page']; @@ -214,7 +215,7 @@ class ServiceSIMBG ]); Log::info("syncTaskList completed", $result); - return ApiResponse::successResponse(json_encode($result), "Successfully saved"); + return $this->resSuccess($result); } diff --git a/app/Traits/GlobalApiResponse.php b/app/Traits/GlobalApiResponse.php new file mode 100644 index 0000000..8d84aca --- /dev/null +++ b/app/Traits/GlobalApiResponse.php @@ -0,0 +1,30 @@ + true, + 'data' => $result + ]; + + if(!empty($message)){ + $response['message'] = $message; + } + + return response()->json($response, $code); + } + protected function resError(string $message, $errors = null, int $code = 400){ + Log::error($message); + return response()->json([ + 'success' => false, + 'message' => $message, + 'errors' => $errors, + ], $code); + } +} diff --git a/bootstrap/app.php b/bootstrap/app.php index 1c8e87b..bd95a51 100755 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -3,6 +3,7 @@ use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; +use Illuminate\Http\Request; use Symfony\Component\HttpKernel\Exception\HttpException; return Application::configure(basePath: dirname(__DIR__)) @@ -15,8 +16,13 @@ return Application::configure(basePath: dirname(__DIR__)) ->withMiddleware(function (Middleware $middleware) { }) ->withExceptions(function (Exceptions $exceptions) { - $exceptions->render(function (HttpException $exception){ - if($exception->getStatusCode() == 404) { + $exceptions->shouldRenderJsonWhen(function (Request $request, Throwable $th){ + if($request->is('api/*')){ + return true; + } + }); + $exceptions->render(function (HttpException $exception, Request $request){ + if($exception->getStatusCode() == 404 && $request->isNot('api/*')) { return response()->view('pages.404',[],404); } });