From a3f6135304e93ed01c5c9cb0c7c200e07bb46be8 Mon Sep 17 00:00:00 2001 From: Nur Izzati Date: Tue, 15 Jul 2025 21:03:10 +0800 Subject: [PATCH] update function getSummaryLaporanGadaiTebusMasa --- .../Controllers/Reports/GadaianController.php | 70 +++++++++++-------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/app/Http/Controllers/Reports/GadaianController.php b/app/Http/Controllers/Reports/GadaianController.php index ac5ec77..301905f 100644 --- a/app/Http/Controllers/Reports/GadaianController.php +++ b/app/Http/Controllers/Reports/GadaianController.php @@ -140,40 +140,48 @@ class GadaianController extends Controller $active_cawangan_db_connection = array_column($cawangan_available->toArray(), 'mysql'); - // Simpan hasil semua cawangan - $data = []; - - foreach ($cawangan_available as $cawangan) { - $kodcaw = $cawangan->kodcaw; - $db = $cawangan->mysql; - - $records = DB::connection($db)->table('gadai as g') - ->join('online_arrahn.transaction as trans', function ($join) { - $join->on('g.norujukan', '=', 'trans.norujukan') - ->where('trans.trans_type', '=', 'T'); - }) - ->whereBetween('g.t_gadai', [$startDate, $endDate]) - ->whereRaw('DATE(g.t_gadai) = DATE(trans.created_at)') - ->where('g.upah12', '>=', 0.00) - ->selectRaw(" - COUNT(*) as jumlah_transaksi, - AVG(TIME_TO_SEC(TIMEDIFF(TIME(trans.created_at), g.masa))) as avg_duration_sec - ") - ->first(); - - $data[] = [ - 'kodcaw' => $kodcaw, - 'details_caw' => $cawangan->details_caw, - 'jumlah_transaksi' => $records->jumlah_transaksi ?? 0, - 'purata_masa_saat' => round($records->avg_duration_sec ?? 0), - 'purata_masa_format' => gmdate("H:i:s", (int) ($records->avg_duration_sec ?? 0)) + // Map branch info for response + $active_cawangan_detail = $cawangan_available->map(function ($c) { + return [ + 'kodcaw' => $c->kodcaw, + 'details_caw' => $c->details_caw, ]; - } + })->values()->toArray(); - // Sort ikut purata masa (paling cepat dahulu) - $sorted = collect($data)->sortBy('purata_masa_saat')->values(); + // Loop through each DB + $summary_data = array_map(function ($db_connection) use ($startDate, $endDate) { + $result = DB::connection($db_connection)->table('gadai as g') + ->join('tebus as t', function ($join) { + $join->on(DB::raw('DATE(g.t_gadai)'), '=', DB::raw('DATE(t.t_tebus)')) + ->on('g.norujukan', '=', 't.norujukan'); + }) + ->whereDate('g.t_gadai', '>=', $startDate) + ->whereDate('g.t_gadai', '<=', $endDate) + ->whereDate('t.t_tebus', '>=', $startDate) + ->whereDate('t.t_tebus', '<=', $endDate) + ->where('g.upah12', '>=', 0.00) + ->selectRaw(' + COUNT(DISTINCT g.norujukan) as total_gadai_tebus_samahari, + SUM(g.pinjaman) as jumlah_pinjaman + ') + ->first(); // ambil satu hasil, bukan collection - return response()->json($sorted); + return (array) $result ?: [ + 'total_gadai_tebus_samahari' => 0, + 'jumlah_pinjaman' => 0.00 + ]; + }, $active_cawangan_db_connection); + + + // Gabung cawangan + hasil + $response = array_map(function ($cawangan_detail, $summary_row) { + return array_merge($cawangan_detail, $summary_row ?: [ + 'total_gadai_tebus_samahari' => 0, + 'jumlah_pinjaman' => 0.00 + ]); + }, $active_cawangan_detail, $summary_data); + + return response()->json($response); } public function getLaporanGadaiTebusMasaCawangan(string $kod_cawangan, Request $request)