diff --git a/app/Http/Controllers/Api/AccountBalanceController.php b/app/Http/Controllers/Api/AccountBalanceController.php new file mode 100644 index 0000000..afc67a2 --- /dev/null +++ b/app/Http/Controllers/Api/AccountBalanceController.php @@ -0,0 +1,69 @@ +accountBalanceService = $accountBalanceService; + } + + /** + * Get account balance summary (opening and closing balance) + * + * @param BalanceSummaryRequest $request + * @return JsonResponse + */ + public function getBalanceSummary(BalanceSummaryRequest $request): JsonResponse + { + try { + + $accountNumber = $request->input('account_number'); + $startDate = $request->input('start_date'); + $endDate = $request->input('end_date'); + + Log::info('Account balance summary requested', [ + 'account_number' => $accountNumber, + 'start_date' => $startDate, + 'end_date' => $endDate, + 'ip' => $request->ip(), + 'user_agent' => $request->userAgent() + ]); + + $result = $this->accountBalanceService->getBalanceSummary( + $accountNumber, + $startDate, + $endDate + ); + + return (new BalanceSummaryResource($result))->response(); + + } catch (Exception $e) { + Log::error('Error getting account balance summary', [ + 'error' => $e->getMessage(), + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'trace' => $e->getTraceAsString() + ]); + + return response()->json([ + 'success' => false, + 'message' => 'Terjadi kesalahan saat mengambil data saldo', + 'error' => config('app.debug') ? $e->getMessage() : null + ], 500); + } + } +} diff --git a/routes/api.php b/routes/api.php index 6e62916..310abd2 100644 --- a/routes/api.php +++ b/routes/api.php @@ -3,7 +3,13 @@ use Illuminate\Support\Facades\Route; use Modules\Webstatement\Http\Controllers\CustomerController; use Modules\Webstatement\Http\Controllers\EmailBlastController; + use Modules\Webstatement\Http\Controllers\Api\AccountBalanceController; Route::post('/email-blast', [EmailBlastController::class, 'sendEmailBlast']); Route::get('/email-blast-history', [EmailBlastController::class, 'getEmailBlastHistory']); Route::get('/customers/search', [CustomerController::class, 'search']); + + // Account Balance API Routes + Route::prefix('balance')->group(function () { + Route::get('/', [AccountBalanceController::class, 'getBalanceSummary']); + });