From d7b79a15df8b1eadbae164ac4da86fbf8d4f69b7 Mon Sep 17 00:00:00 2001 From: Support ITCN Date: Tue, 30 Sep 2025 14:35:10 +0700 Subject: [PATCH] Penambahan endpoint, payment, operator dan gate --- .../Controllers/Api/V1/LaporanController.php | 309 +++++++++++++++++- routes/api.php | 3 + 2 files changed, 302 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Api/V1/LaporanController.php b/app/Http/Controllers/Api/V1/LaporanController.php index b22c9cc..a353d47 100644 --- a/app/Http/Controllers/Api/V1/LaporanController.php +++ b/app/Http/Controllers/Api/V1/LaporanController.php @@ -11,10 +11,10 @@ class LaporanController extends Controller { private function getTrans() { - $query = TransaksiParkir::selectRaw('jm.id, jm.nama as vehicle, COUNT(*) as jml, SUM(bayar_keluar) as total_bayar') - ->leftJoin('jenis_mobil as jm','jm.id','=','transaksi_parkir.id_kendaraan'); + // $query = TransaksiParkir::all(); - return $query; + // return $query; + return TransaksiParkir::query(); } @@ -23,6 +23,7 @@ public function harian(Request $request) $tanggal = $request->input('tanggal'); $shift = $request->input('shift'); + $harian = $request->input('harian'); Log::info($shift); // $cashless = $request->input('cashless'); @@ -40,15 +41,34 @@ public function harian(Request $request) // Terapkan filter tanggal berdasarkan input $totalTrans = 0; $totalIncome = 0; - if ($shift === null || $shift === 0 || $shift === '0') { - $dateField = 'waktu_keluar' ; - } else { - $dateField = 'pklogin'; - } + // if ($shift === null || $shift === 0 || $shift === '0' || $shift === false) { + // $dateField = 'pklogin'; + // } else { + // $dateField = 'waktu_keluar' ; + // } + + // if ($harian === null || $harian === 0 || $harian === '0' || $harian === false) { + // $dateField = 'waktu_keluar' ; + // } else { + // $dateField = 'pklogin'; + // } + + $isShift = ($shift !== null && $shift !== 0 && $shift !== '0' && $shift !== false); + $isHarian = ($harian !== null && $harian !== 0 && $harian !== '0' && $harian !== false); + + if ($isHarian) { + $dateField = 'waktu_keluar'; // harian aktif → pklogin + } elseif ($isShift) { + $dateField = 'pklogin'; // shift aktif → waktu_keluar + } else { + $dateField = 'waktu_keluar'; // default + } // Log::info('Memproses permintaan dengan perhitungan : ' . $dateField); // Cash payment initialize - $queryCash = $this->getTrans(); + $queryCash = $this->getTrans()->selectRaw('jm.id, jm.nama as vehicle, COUNT(*) as jml, SUM(bayar_keluar) as total_bayar') + ->leftJoin('jenis_mobil as jm','jm.id','=','transaksi_parkir.id_kendaraan'); + if ($tanggal) { $queryCash->whereDate($dateField, '=', $tanggal); } @@ -75,7 +95,9 @@ public function harian(Request $request) } // Cashless payment initialize - $queryCashless = $this->getTrans(); + $queryCashless = $this->getTrans()->selectRaw('jm.id, jm.nama as vehicle, COUNT(*) as jml, SUM(bayar_keluar) as total_bayar') + ->leftJoin('jenis_mobil as jm','jm.id','=','transaksi_parkir.id_kendaraan'); + if ($tanggal) { $queryCashless->whereDate($dateField, '=', $tanggal); } @@ -101,6 +123,273 @@ public function harian(Request $request) } + $totalTrans = $jmlCash + $jmlCashless; + $totalIncome = $incomeCash + $incomeCashless; + // Log::info($incomeCashless); + + return response()->json([ + 'status' => 'success', + 'result' => [ + 'cash' => $resultCash, + 'cashless' => $resultCashless, + ], + 'total' => [ + 'jumlah' => $totalTrans, + 'income' => $totalIncome, + ] + ]); + } + + public function payment(Request $request) + { + $tanggal = $request->input('tanggal'); + $shift = $request->input('shift'); + $harian = $request->input('harian'); + Log::info($shift); + + $cash = []; + $cashless = []; + + // Mulai query dengan select dasar + $payment = ['cash', 'cashless']; + $totalTrans = 0; + $totalIncome = 0; + + $isShift = ($shift !== null && $shift !== 0 && $shift !== '0' && $shift !== false); + $isHarian = ($harian !== null && $harian !== 0 && $harian !== '0' && $harian !== false); + + if ($isHarian) { + $dateField = 'waktu_keluar'; // harian aktif → pklogin + } elseif ($isShift) { + $dateField = 'pklogin'; // shift aktif → waktu_keluar + } else { + $dateField = 'waktu_keluar'; // default + } + + $queryCash = $this->getTrans()->selectRaw('rep_bank as payment, COUNT(*) as jml, SUM(bayar_keluar) as total_bayar'); + if ($tanggal) { + $queryCash->whereDate($dateField, '=', $tanggal); + } + Log::info('Find cash transaksi with params date : ' . $tanggal . ', and : ' . $dateField); + $resultCash = $queryCash + ->where(function ($q) { + $q->whereRaw('cara_bayar <> 3') + ->orWhereRaw('cara_bayar is null'); + }) + ->groupByRaw("rep_bank") + ->orderByRaw("rep_bank") + ->get(); + + $jmlCash = 0; + $incomeCash = 0; + foreach ($resultCash as $row) { + $jmlCash += $row->jml; + $incomeCash += $row->total_bayar; + } + + // Cashless payment initialize + $queryCashless = $this->getTrans()->selectRaw('rep_bank as payment, COUNT(*) as jml, SUM(bayar_keluar) as total_bayar'); + if ($tanggal) { + $queryCashless->whereDate($dateField, '=', $tanggal); + } + Log::info(' Cari data cashless dengan tanggal : ' . $tanggal); + + $resultCashless = $queryCashless + ->where('cara_bayar', 3) + ->groupByRaw("rep_bank") + ->orderByRaw("rep_bank") + ->get(); + + Log::info($resultCashless); + $jmlCashless = 0; + $incomeCashless = 0; + + foreach ($resultCashless as $row) { + $jmlCashless += $row->jml; + $incomeCashless += $row->total_bayar; + } + + + $totalTrans = $jmlCash + $jmlCashless; + $totalIncome = $incomeCash + $incomeCashless; + // Log::info($incomeCashless); + + return response()->json([ + 'status' => 'success', + 'result' => [ + 'cash' => $resultCash, + 'cashless' => $resultCashless, + ], + 'total' => [ + 'jumlah' => $totalTrans, + 'income' => $totalIncome, + ] + ]); + } + + public function operator(Request $request) + { + $tanggal = $request->input('tanggal'); + $shift = $request->input('shift'); + $harian = $request->input('harian'); + Log::info($shift); + + $cash = []; + $cashless = []; + + // Mulai query dengan select dasar + $payment = ['cash', 'cashless']; + $totalTrans = 0; + $totalIncome = 0; + + $isShift = ($shift !== null && $shift !== 0 && $shift !== '0' && $shift !== false); + $isHarian = ($harian !== null && $harian !== 0 && $harian !== '0' && $harian !== false); + + if ($isHarian) { + $dateField = 'waktu_keluar'; // harian aktif → pklogin + } elseif ($isShift) { + $dateField = 'pklogin'; // shift aktif → waktu_keluar + } else { + $dateField = 'waktu_keluar'; // default + } + + $queryCash = $this->getTrans()->selectRaw('id_op_keluar as operator, p.nama, COUNT(*) as jml, SUM(bayar_keluar) as total_bayar') + ->leftJoin('pegawai as p','p.nomer','=','transaksi_parkir.id_op_keluar'); + if ($tanggal) { + $queryCash->whereDate($dateField, '=', $tanggal); + } + Log::info('Find cash transaksi with params date : ' . $tanggal . ', and : ' . $dateField); + $resultCash = $queryCash + ->where(function ($q) { + $q->whereRaw('cara_bayar <> 3') + ->orWhereRaw('cara_bayar is null'); + }) + ->groupByRaw("id_op_keluar, p.nama") + ->orderByRaw("id_op_keluar, p.nama") + ->get(); + + $jmlCash = 0; + $incomeCash = 0; + foreach ($resultCash as $row) { + $jmlCash += $row->jml; + $incomeCash += $row->total_bayar; + } + + // Cashless payment initialize + $queryCashless = $this->getTrans()->selectRaw('id_op_keluar as operator, p.nama, COUNT(*) as jml, SUM(bayar_keluar) as total_bayar') + ->leftJoin('pegawai as p','p.nomer','=','transaksi_parkir.id_op_keluar'); + + if ($tanggal) { + $queryCashless->whereDate($dateField, '=', $tanggal); + } + Log::info(' Cari data cashless dengan tanggal : ' . $tanggal); + + $resultCashless = $queryCashless + ->where('cara_bayar', 3) + ->groupByRaw("id_op_keluar, p.nama") + ->orderByRaw("id_op_keluar, p.nama") + ->get(); + + Log::info($resultCashless); + $jmlCashless = 0; + $incomeCashless = 0; + + foreach ($resultCashless as $row) { + $jmlCashless += $row->jml; + $incomeCashless += $row->total_bayar; + } + + + $totalTrans = $jmlCash + $jmlCashless; + $totalIncome = $incomeCash + $incomeCashless; + // Log::info($incomeCashless); + + return response()->json([ + 'status' => 'success', + 'result' => [ + 'cash' => $resultCash, + 'cashless' => $resultCashless, + ], + 'total' => [ + 'jumlah' => $totalTrans, + 'income' => $totalIncome, + ] + ]); + } + + public function gate(Request $request) + { + $tanggal = $request->input('tanggal'); + $shift = $request->input('shift'); + $harian = $request->input('harian'); + Log::info($shift); + + $cash = []; + $cashless = []; + + // Mulai query dengan select dasar + $payment = ['cash', 'cashless']; + $totalTrans = 0; + $totalIncome = 0; + + $isShift = ($shift !== null && $shift !== 0 && $shift !== '0' && $shift !== false); + $isHarian = ($harian !== null && $harian !== 0 && $harian !== '0' && $harian !== false); + + if ($isHarian) { + $dateField = 'waktu_keluar'; // harian aktif → pklogin + } elseif ($isShift) { + $dateField = 'pklogin'; // shift aktif → waktu_keluar + } else { + $dateField = 'waktu_keluar'; // default + } + + $queryCash = $this->getTrans()->selectRaw('id_pintu_keluar as gate, np.nama, COUNT(*) as jml, SUM(bayar_keluar) as total_bayar') + ->leftJoin('nama_pos as np','np.id','=','transaksi_parkir.id_pintu_keluar'); + if ($tanggal) { + $queryCash->whereDate($dateField, '=', $tanggal); + } + Log::info('Find cash transaksi with params date : ' . $tanggal . ', and : ' . $dateField); + $resultCash = $queryCash + ->where(function ($q) { + $q->whereRaw('cara_bayar <> 3') + ->orWhereRaw('cara_bayar is null'); + }) + ->groupByRaw("id_pintu_keluar, np.nama") + ->orderByRaw("id_pintu_keluar, np.nama") + ->get(); + + $jmlCash = 0; + $incomeCash = 0; + foreach ($resultCash as $row) { + $jmlCash += $row->jml; + $incomeCash += $row->total_bayar; + } + + // Cashless payment initialize + $queryCashless = $this->getTrans()->selectRaw('id_pintu_keluar as gate, np.nama, COUNT(*) as jml, SUM(bayar_keluar) as total_bayar') + ->leftJoin('nama_pos as np','np.id','=','transaksi_parkir.id_pintu_keluar'); + + if ($tanggal) { + $queryCashless->whereDate($dateField, '=', $tanggal); + } + Log::info(' Cari data cashless dengan tanggal : ' . $tanggal); + + $resultCashless = $queryCashless + ->where('cara_bayar', 3) + ->groupByRaw("id_pintu_keluar, np.nama") + ->orderByRaw("id_pintu_keluar, np.nama") + ->get(); + + Log::info($resultCashless); + $jmlCashless = 0; + $incomeCashless = 0; + + foreach ($resultCashless as $row) { + $jmlCashless += $row->jml; + $incomeCashless += $row->total_bayar; + } + + $totalTrans = $jmlCash + $jmlCashless; $totalIncome = $incomeCash + $incomeCashless; // Log::info($incomeCashless); diff --git a/routes/api.php b/routes/api.php index 241ce93..3a42b94 100644 --- a/routes/api.php +++ b/routes/api.php @@ -32,4 +32,7 @@ Route::prefix('report')->group(function () { Route::post('harian', [LaporanController::class, 'harian']); + Route::post('payment', [LaporanController::class, 'payment']); + Route::post('operator', [LaporanController::class, 'operator']); + Route::post('gate', [LaporanController::class, 'gate']); });