add crud api global setting and make global api response and handle response web and api on bootstrap app
This commit is contained in:
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\Api;
|
namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
use App\Helpers\ApiResponse;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\PbgTask;
|
use App\Traits\GlobalApiResponse;
|
||||||
use App\Models\PbgTaskRetributions;
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class DashboardController extends Controller
|
class DashboardController extends Controller
|
||||||
{
|
{
|
||||||
|
use GlobalApiResponse;
|
||||||
|
|
||||||
public function businnessDocument(Request $request){
|
public function businnessDocument(Request $request){
|
||||||
$businessData = DB::table('pbg_task')
|
$businessData = DB::table('pbg_task')
|
||||||
->leftJoin('pbg_task_retributions', 'pbg_task.uuid', '=', 'pbg_task_retributions.pbg_task_uid')
|
->leftJoin('pbg_task_retributions', 'pbg_task.uuid', '=', 'pbg_task_retributions.pbg_task_uid')
|
||||||
@@ -30,7 +30,7 @@ class DashboardController extends Controller
|
|||||||
"series" => [$taskCount],
|
"series" => [$taskCount],
|
||||||
"total" => $taskTotal
|
"total" => $taskTotal
|
||||||
];
|
];
|
||||||
return ApiResponse::successResponse($result, "Successfully count businness doucument");
|
return $this->resSuccess($result);
|
||||||
}
|
}
|
||||||
public function nonBusinnessDocument(Request $request){
|
public function nonBusinnessDocument(Request $request){
|
||||||
$businessData = DB::table('pbg_task')
|
$businessData = DB::table('pbg_task')
|
||||||
@@ -50,7 +50,7 @@ class DashboardController extends Controller
|
|||||||
"series" => [$taskCount],
|
"series" => [$taskCount],
|
||||||
"total" => $taskTotal
|
"total" => $taskTotal
|
||||||
];
|
];
|
||||||
return ApiResponse::successResponse($result, "Successfully count not businness doucument");
|
return $this->resSuccess($result);
|
||||||
}
|
}
|
||||||
public function allTaskDocuments(){
|
public function allTaskDocuments(){
|
||||||
$query = DB::table('pbg_task')
|
$query = DB::table('pbg_task')
|
||||||
@@ -67,6 +67,6 @@ class DashboardController extends Controller
|
|||||||
"series" => [$taskCount],
|
"series" => [$taskCount],
|
||||||
"total" => $taskTotal
|
"total" => $taskTotal
|
||||||
];
|
];
|
||||||
return ApiResponse::successResponse($result, "Successfully count all tasks documents");
|
return $this->resSuccess($result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,12 @@ use App\Http\Controllers\Controller;
|
|||||||
use App\Http\Requests\GlobalSettingRequest;
|
use App\Http\Requests\GlobalSettingRequest;
|
||||||
use App\Http\Resources\GlobalSettingResource;
|
use App\Http\Resources\GlobalSettingResource;
|
||||||
use App\Models\GlobalSetting;
|
use App\Models\GlobalSetting;
|
||||||
use Illuminate\Http\Request;
|
use App\Traits\GlobalApiResponse;
|
||||||
|
use Exception;
|
||||||
|
|
||||||
class GlobalSettingsController extends Controller
|
class GlobalSettingsController extends Controller
|
||||||
{
|
{
|
||||||
|
use GlobalApiResponse;
|
||||||
/**
|
/**
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*/
|
*/
|
||||||
@@ -25,15 +27,10 @@ class GlobalSettingsController extends Controller
|
|||||||
public function store(GlobalSettingRequest $request)
|
public function store(GlobalSettingRequest $request)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
//code...
|
|
||||||
$data = GlobalSetting::create($request->validated());
|
$data = GlobalSetting::create($request->validated());
|
||||||
return new GlobalSettingResource($data);
|
return new GlobalSettingResource($data);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
return response()->json(
|
return $this->resError($e->getMessage(), null, $e->getCode());
|
||||||
[
|
|
||||||
"errors" => $e->getMessage()
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,15 +39,36 @@ class GlobalSettingsController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function show(string $id)
|
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.
|
* 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)
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ namespace App\Http\Controllers\Api;
|
|||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Auth\LoginRequest;
|
use App\Http\Requests\Auth\LoginRequest;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class UsersController extends Controller
|
class UsersController extends Controller
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ class GlobalSettingResource extends JsonResource
|
|||||||
public function toArray(Request $request): array
|
public function toArray(Request $request): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
'key' => $this->key,
|
'key' => $this->key,
|
||||||
'value' => $this->value,
|
'value' => $this->value,
|
||||||
'type' => $this->type,
|
'type' => $this->type,
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App;
|
namespace App;
|
||||||
use App\Helpers\ApiResponse;
|
use App\Traits\GlobalApiResponse;
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use Exception;
|
use Exception;
|
||||||
class ServiceClient
|
class ServiceClient
|
||||||
{
|
{
|
||||||
|
use GlobalApiResponse;
|
||||||
private $client;
|
private $client;
|
||||||
private $baseUrl;
|
private $baseUrl;
|
||||||
private $headers;
|
private $headers;
|
||||||
@@ -41,9 +42,9 @@ class ServiceClient
|
|||||||
$response = $this->client->request($method, $this->baseUrl . $url, $options);
|
$response = $this->client->request($method, $this->baseUrl . $url, $options);
|
||||||
|
|
||||||
$resultResponse = json_decode($response->getBody(), true);
|
$resultResponse = json_decode($response->getBody(), true);
|
||||||
return ApiResponse::successResponse($resultResponse, "Successfully fetched data");
|
return $this->resSuccess($resultResponse);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
return ApiResponse::errorResponse($e->getMessage(), $e->getCode());
|
return $this->resError($e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,17 +3,18 @@
|
|||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
use App\Enums\ImportDatasourceStatus;
|
use App\Enums\ImportDatasourceStatus;
|
||||||
use App\Helpers\ApiResponse;
|
|
||||||
use App\Models\ImportDatasource;
|
use App\Models\ImportDatasource;
|
||||||
use App\Models\PbgTaskIndexIntegrations;
|
use App\Models\PbgTaskIndexIntegrations;
|
||||||
use App\Models\PbgTaskPrasarana;
|
use App\Models\PbgTaskPrasarana;
|
||||||
use App\Models\PbgTaskRetributions;
|
use App\Models\PbgTaskRetributions;
|
||||||
use Exception;
|
use Exception;
|
||||||
use App\Models\PbgTask;
|
use App\Models\PbgTask;
|
||||||
|
use App\Traits\GlobalApiResponse;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class ServiceSIMBG
|
class ServiceSIMBG
|
||||||
{
|
{
|
||||||
|
use GlobalApiResponse;
|
||||||
private $email;
|
private $email;
|
||||||
private $password;
|
private $password;
|
||||||
/**
|
/**
|
||||||
@@ -106,7 +107,7 @@ class ServiceSIMBG
|
|||||||
'status' => ImportDatasourceStatus::Failed->value,
|
'status' => ImportDatasourceStatus::Failed->value,
|
||||||
'message' => 'Failed to retrive token'
|
'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'];
|
$apiToken = $resToken->original['data']['token']['access'];
|
||||||
@@ -127,7 +128,7 @@ class ServiceSIMBG
|
|||||||
'status' => ImportDatasourceStatus::Failed->value,
|
'status' => ImportDatasourceStatus::Failed->value,
|
||||||
'message' => 'Invalid response: no total_page'
|
'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'];
|
$totalPage = $initialResponse->original['data']['total_page'];
|
||||||
@@ -214,7 +215,7 @@ class ServiceSIMBG
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
Log::info("syncTaskList completed", $result);
|
Log::info("syncTaskList completed", $result);
|
||||||
return ApiResponse::successResponse(json_encode($result), "Successfully saved");
|
return $this->resSuccess($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
30
app/Traits/GlobalApiResponse.php
Normal file
30
app/Traits/GlobalApiResponse.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Traits;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
trait GlobalApiResponse
|
||||||
|
{
|
||||||
|
protected function resSuccess($result, $code = 200){
|
||||||
|
|
||||||
|
$response = [
|
||||||
|
'success' => 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
use Illuminate\Foundation\Application;
|
use Illuminate\Foundation\Application;
|
||||||
use Illuminate\Foundation\Configuration\Exceptions;
|
use Illuminate\Foundation\Configuration\Exceptions;
|
||||||
use Illuminate\Foundation\Configuration\Middleware;
|
use Illuminate\Foundation\Configuration\Middleware;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||||
|
|
||||||
return Application::configure(basePath: dirname(__DIR__))
|
return Application::configure(basePath: dirname(__DIR__))
|
||||||
@@ -15,8 +16,13 @@ return Application::configure(basePath: dirname(__DIR__))
|
|||||||
->withMiddleware(function (Middleware $middleware) {
|
->withMiddleware(function (Middleware $middleware) {
|
||||||
})
|
})
|
||||||
->withExceptions(function (Exceptions $exceptions) {
|
->withExceptions(function (Exceptions $exceptions) {
|
||||||
$exceptions->render(function (HttpException $exception){
|
$exceptions->shouldRenderJsonWhen(function (Request $request, Throwable $th){
|
||||||
if($exception->getStatusCode() == 404) {
|
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);
|
return response()->view('pages.404',[],404);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user