From 44f8014bb9bfe048094f8618629457ae0c8b632b Mon Sep 17 00:00:00 2001 From: Support ITCN Date: Mon, 22 Sep 2025 12:21:09 +0700 Subject: [PATCH] Perubahan api laporan harian --- .../Controllers/Api/V1/LaporanController.php | 97 ++++++++++++++----- 1 file changed, 73 insertions(+), 24 deletions(-) diff --git a/app/Http/Controllers/Api/V1/LaporanController.php b/app/Http/Controllers/Api/V1/LaporanController.php index 2492d06..a542914 100644 --- a/app/Http/Controllers/Api/V1/LaporanController.php +++ b/app/Http/Controllers/Api/V1/LaporanController.php @@ -5,49 +5,99 @@ use App\Http\Controllers\Controller; use App\Models\TransaksiParkir; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; class LaporanController extends Controller { + + private function getTrans() { + $query = TransaksiParkir::selectRaw('jm.id, jm.nama as vehicle, COUNT(*) as jml, SUM(bayar_keluar) as VALUE') + ->leftJoin('jenis_mobil as jm','jm.id','=','transaksi_parkir.id_kendaraan'); + + return $query; + } + + public function harian(Request $request) { $tanggal = $request->input('tanggal'); $shift = $request->input('shift'); - $cashless = $request->input('cashless'); + // $cashless = $request->input('cashless'); + + $cash = []; + $cashless = []; // Mulai query dengan select dasar - + $payment = ['cash', 'cashless']; // Tentukan kolom tanggal berdasarkan input shift // $dateField = ($shift == 1) ? 'pklogin' : 'waktu_keluar'; - $dateField = ($shift == null) ? 'waktu_keluar' : 'pklogin'; - $query = TransaksiParkir::selectRaw('DATE(' . $dateField . ') as tanggal, COUNT(*) as jml, SUM(bayar_keluar) as VALUE'); + // $query = TransaksiParkir::selectRaw('jm.id, jm.nama as vehicle, COUNT(*) as jml, SUM(bayar_keluar) as VALUE') + // ->leftJoin('jenis_mobil as jm','jm.id','=','transaksi_parkir.id_kendaraan'); // $query->selectRaw("DATE($dateField) as tanggal"); // Terapkan filter tanggal berdasarkan input + $totalTrans = 0; + $totalIncome = 0; + $dateField = ($shift == null) ? 'waktu_keluar' : 'pklogin'; + + // Cash payment initialize + $queryCash = $this->getTrans(); if ($tanggal) { - $query->whereDate($dateField, '=', $tanggal); + $queryCash->whereDate($dateField, '=', $tanggal); } + + $resultCash = $queryCash->whereRaw('cara_bayar <> 3') + ->groupByRaw("jm.id, jm.nama") + ->orderByRaw("jm.id, jm.nama") + ->get(); + Log::info($resultCash); + + $jmlCash = 0; + $incomeCash = 0; + foreach ($resultCash as $row) { + $jmlCash += $row->jml; + $incomeCash += $row->value; + } + + // Cashless payment initialize + $queryCashless = $this->getTrans(); + if ($tanggal) { + $queryCashless->whereDate($dateField, '=', $tanggal); + } + $resultCashless = $queryCashless->where('cara_bayar', 3) + ->groupByRaw("jm.id, jm.nama") + ->orderByRaw("jm.id, jm.nama") + ->get(); + + Log::info($resultCashless); + $jmlCashless = 0; + $incomeCashless = 0; + + foreach ($resultCashless as $row) { + $jmlCashless += $row->jml; + $incomeCashless += $row->value; + } + + + $totalTrans = $jmlCash + $jmlCashless; + $totalIncome = $incomeCash + $incomeCashless; + // Log::info($incomeCashless); - // Terapkan filter cara bayar - if ($cashless == 1) { - $query->where('cara_bayar', 3); - } - - // Terapkan grouping dan sorting - // $query->groupBy('tanggal') - // ->orderBy('tanggal'); - - $query->groupByRaw("DATE($dateField)") - ->orderByRaw("DATE($dateField)"); - - - $result = $query->get(); - return response()->json([ 'status' => 'success', - 'result' => $result, + 'result' => [ + 'cash' => $resultCash, + 'cashless' => $resultCashless, + ], + 'total' => [ + 'jumlah' => $totalTrans, + 'income' => $totalIncome, + ] ]); - + } +} + // $tanggal = $request->input('tanggal'); // $shift = $request->input('shift'); // $cashless = $request->input('cashless'); @@ -74,5 +124,4 @@ public function harian(Request $request) // 'status' => 'success', // 'result' => $result, // ]); - } -} +