Files
backend_parkir/app/Http/Controllers/Api/V1/LaporanController.php

438 lines
15 KiB
PHP

<?php
namespace App\Http\Controllers\Api\V1;
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::all();
// return $query;
return TransaksiParkir::query();
}
public function harian(Request $request)
{
$tanggal = $request->input('tanggal');
$shift = $request->input('shift');
$harian = $request->input('harian');
Log::info($shift);
// $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';
// $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;
// 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()->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);
}
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');
})
// ->where(function ($q) {
// $q->where('status_transaksi', '-0')
// ->orWhere('status_transaksi', '3');
// })
->groupByRaw("jm.id, jm.nama")
->orderByRaw("jm.id, jm.nama")
->get();
// Log::info($resultCash->toSql());
$jmlCash = 0;
$incomeCash = 0;
foreach ($resultCash as $row) {
$jmlCash += $row->jml;
$incomeCash += $row->total_bayar;
}
// Cashless payment initialize
$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);
}
Log::info(' Cari data cashless dengan tanggal : ' . $tanggal);
$resultCashless = $queryCashless
// ->where(function ($q) {
// $q->where('status_transaksi', '-0')
// ->orWhere('status_transaksi','3');
// })
->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->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 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);
return response()->json([
'status' => 'success',
'result' => [
'cash' => $resultCash,
'cashless' => $resultCashless,
],
'total' => [
'jumlah' => $totalTrans,
'income' => $totalIncome,
]
]);
}
}
// $tanggal = $request->input('tanggal');
// $shift = $request->input('shift');
// $cashless = $request->input('cashless');
// $query = TransaksiParkir::selectRaw('COUNT (*) as jml, SUM(bayar_keluar) as VALUE');
// $dateField = ($shift == 1) ? 'pklogin' : 'waktu_keluar';
// $query->selectRaw("DATE($dateField) as tanggal");
// if ($tanggal) {
// $query->whereDate($dateField, '=', $tanggal);
// }
// if ($cashless == 1) {
// $query->where('cara_bayar', 3);
// } else {
// $query->where('cara_bayar', 2);
// }
// $query->groupBy('tanggal')
// ->orderBy('tanggal');
// $result = $query->get();
// return response()->json([
// 'status' => 'success',
// 'result' => $result,
// ]);