diff --git a/app/Http/Controllers/Reports/AuditTrailController.php b/app/Http/Controllers/Reports/AuditTrailController.php new file mode 100644 index 0000000..a24ff1a --- /dev/null +++ b/app/Http/Controllers/Reports/AuditTrailController.php @@ -0,0 +1,78 @@ +get('limit', 100); + + $audit_trails = Audit::query() + ->when($request->filled('norujukan'), fn($q) => $q->where('norujukan', $request->norujukan)) + ->when($request->filled('actions'), fn($q) => $q->where('actions', $request->actions)) + ->orderBy('created_at', 'desc') + ->limit($limit) + ->get(); + + return response()->json($audit_trails); + } + + public function AuditTrailOperasi(Request $request) + { + $date_first = $request->get('date', null); + $date_till = $request->get('date_till', null); + + $audit_trails = Audit::query() + ->where('kodcaw', 'operasi') + ->whereDate('created_at', '>=', $date_first) + ->whereDate('created_at', '<=', $date_till) + ->orderBy('created_at', 'asc') + ->get(); + + $audit_trails->map(function ($audit) { + // Convert from UTC to Malaysia timezone (UTC+8) + $audit->created_at = $audit->created_at->format('Y-m-d H:i:s'); + + // Get differences between old_data and new_data + $old_data = json_decode($audit->old_data, true) ?? []; + $new_data = json_decode($audit->new_data, true) ?? []; + + $differences = []; + + // Find changed fields + foreach ($new_data as $key => $new_value) { + if ($key === 'tarikhupdate') continue; + + $old_value = $old_data[$key] ?? null; + if ($old_value !== $new_value) { + $differences[$key] = [ + 'old' => $old_value, + 'new' => $new_value + ]; + } + } + + // Check for removed fields + foreach ($old_data as $key => $old_value) { + if ($key === 'tarikhupdate') continue; + + if (!array_key_exists($key, $new_data)) { + $differences[$key] = [ + 'old' => $old_value, + 'new' => null + ]; + } + } + + $audit->differences = $differences; + return $audit; + }); + + return response()->json($audit_trails); + } +} \ No newline at end of file diff --git a/routes/report.php b/routes/report.php index c202553..0046b76 100644 --- a/routes/report.php +++ b/routes/report.php @@ -55,7 +55,8 @@ $router->group(['prefix' => 'api/reports'], function () use ($router) { $router->get('gadaitebus', ['uses' => 'GadaianController@getSummaryLaporanGadaiTebus']); $router->get('gadaitebusmasa', ['uses' => 'GadaianController@getSummaryLaporanGadaiTebusMasa']); $router->get('gadaitebusmasa/{kod_cawangan}', ['uses' => 'GadaianController@getLaporanGadaiTebusMasaCawangan']); - + $router->get('audit-trail', ['uses' => 'AuditTrailController@getAuditTrail']); + $router->get('audittrail/operasi',['uses'=>'AuditTrailController@AuditTrailOperasi']); $router->get('saringan/gadaian', ['uses' => 'SaringanGadaianController@getLaporanGadai']); $router->get('data-pelanggan', ['uses' => 'AnalisaController@getSummaryLaporanDataPelanggan']);