Update TransactionOnlineTrailController
This commit is contained in:
@@ -16,12 +16,13 @@ class TransactionOnlineTrailController extends Controller
|
||||
public function index(Request $request)
|
||||
{
|
||||
|
||||
$date = $request->date ? $request->date : Carbon::now()->toDateString();
|
||||
$transactionsOnline = $this->getTransactionOnlineQuery($request);
|
||||
|
||||
$transactionsOnline = $this->getTransactionOnlineQuery($date, $request);
|
||||
$transaction = $this->getTransactionQuery($date, $request);
|
||||
$transaksiKeuntungan = $this->getTransaksiKeuntunganQuery($date, $request);
|
||||
$glDetail = $this->getGlDetailQuery($date, $request);
|
||||
$list_norujukan = array_map(fn($x) => ['norujukan' => $x['norujukan'], 'kodcaw' => $x['kodcaw']], $transactionsOnline);
|
||||
|
||||
$transaction = $this->getTransactionQuery($list_norujukan, $request);
|
||||
$transaksiKeuntungan = $this->getTransaksiKeuntunganQuery($list_norujukan, $request);
|
||||
$glDetail = $this->getGlDetailQuery($list_norujukan, $request);
|
||||
|
||||
return response()->json([
|
||||
'transactionsOnline' => $transactionsOnline,
|
||||
@@ -31,16 +32,22 @@ class TransactionOnlineTrailController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
private function getTransactionOnlineQuery($date, $request)
|
||||
private function getTransactionOnlineQuery($request)
|
||||
{
|
||||
$transactionOnline = TransactionOnline::whereDate('tarikh', $date)
|
||||
$startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString();
|
||||
$endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString();
|
||||
|
||||
$transactionOnline = TransactionOnline::whereBetween('tarikh', [$startDate, $endDate])
|
||||
->when($request->filled('billplzBillId'), function ($query) use ($request) {
|
||||
return $query->where('billplz_id', $request->billplzBillId);
|
||||
})
|
||||
->when($request->filled('norujukan'), function ($query) use ($request) {
|
||||
return $query->where('norujukan', $request->norujukan);
|
||||
})
|
||||
->get();
|
||||
|
||||
if ($transactionOnline->isEmpty()) {
|
||||
$transactionOnline = TransactionOnline::whereDate('tarikh', $date)
|
||||
$transactionOnline = TransactionOnline::whereBetween('tarikh', [$startDate, $endDate])
|
||||
->when($request->filled('norujukan'), function ($query) use ($request) {
|
||||
return $query->where('norujukan', 'LIKE', '%' . $request->norujukan . '%');
|
||||
})
|
||||
@@ -50,7 +57,9 @@ class TransactionOnlineTrailController extends Controller
|
||||
$transactionOnline = $transactionOnline
|
||||
->sortByDesc('tarikh')
|
||||
->sortByDesc('masa')
|
||||
->filter(fn($x) => $x['status'] === 'PAID')
|
||||
->when($request->filled('status'), function ($query) use ($request) {
|
||||
return $query->where('status', $request->status);
|
||||
})
|
||||
->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) {
|
||||
return $query->groupBy('norujukan')->sortKeysDesc();
|
||||
})
|
||||
@@ -59,78 +68,56 @@ class TransactionOnlineTrailController extends Controller
|
||||
return $transactionOnline;
|
||||
}
|
||||
|
||||
private function getTransactionQuery($date, $request)
|
||||
private function getTransactionQuery($list_norujukan, $request)
|
||||
{
|
||||
$extract_norujukan = array_column($list_norujukan, 'norujukan');
|
||||
$startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString();
|
||||
$endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString();
|
||||
|
||||
$transaction = Transaction::whereDate('created_at', $date)
|
||||
->where('teller', 'Online')
|
||||
->when($request->filled('norujukan'), function ($query) use ($request) {
|
||||
return $query->where('norujukan', $request->norujukan);
|
||||
})
|
||||
->get();
|
||||
|
||||
if ($transaction->isEmpty()) {
|
||||
$transaction = Transaction::whereDate('created_at', $date)
|
||||
->where('teller', 'Online')
|
||||
->when($request->filled('norujukan'), function ($query) use ($request) {
|
||||
return $query->where('norujukan', 'LIKE', '%' . $request->norujukan . '%');
|
||||
})
|
||||
->get();
|
||||
}
|
||||
$transaction = Transaction::whereIn('norujukan', $extract_norujukan)
|
||||
->whereBetween('created_at', [$startDate, $endDate])
|
||||
->where('teller', 'online')
|
||||
->get();
|
||||
|
||||
return $transaction
|
||||
->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) {
|
||||
return $query->groupBy('norujukan')->sortKeysDesc();
|
||||
})
|
||||
->sortByDesc('created_at')->toArray();
|
||||
->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) {
|
||||
return $query->groupBy('norujukan')->sortKeysDesc();
|
||||
})
|
||||
->sortByDesc('created_at')->toArray();
|
||||
}
|
||||
|
||||
private function getTransaksiKeuntunganQuery($date, $request)
|
||||
private function getTransaksiKeuntunganQuery($list_norujukan, $request)
|
||||
{
|
||||
$transaksiKeuntungan = TransaksiKeuntungan::whereDate('tarikh_bayaran', $date)
|
||||
->whereHas('transaction', function ($query) {
|
||||
return $query->where('teller', 'Online');
|
||||
})
|
||||
->when($request->filled('norujukan'), function ($query) use ($request) {
|
||||
return $query->where('norujukan', $request->norujukan);
|
||||
})
|
||||
->get();
|
||||
$extract_norujukan = array_column($list_norujukan, 'norujukan');
|
||||
$startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString();
|
||||
$endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString();
|
||||
|
||||
if ($transaksiKeuntungan->isEmpty()) {
|
||||
$transaksiKeuntungan = TransaksiKeuntungan::whereDate('tarikh_bayaran', $date)
|
||||
->whereHas('transaction', function ($query) {
|
||||
return $query->where('teller', 'Online');
|
||||
})
|
||||
->when($request->filled('norujukan'), function ($query) use ($request) {
|
||||
return $query->where('norujukan', 'LIKE', '%' . $request->norujukan . '%');
|
||||
})
|
||||
->orderBy('id', 'desc')
|
||||
->get();
|
||||
}
|
||||
$transaksiKeuntungan = TransaksiKeuntungan::whereIn('norujukan', $extract_norujukan)
|
||||
->whereBetween('tarikh_bayaran', [$startDate, $endDate])
|
||||
->whereHas('transaction', fn($query) => $query->where('teller', 'online'))
|
||||
->get();
|
||||
|
||||
return $transaksiKeuntungan
|
||||
->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) {
|
||||
return $query->groupBy('norujukan')->sortKeysDesc();
|
||||
})
|
||||
->toArray();
|
||||
->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) {
|
||||
return $query->groupBy('norujukan')->sortKeysDesc();
|
||||
})
|
||||
->toArray();
|
||||
}
|
||||
|
||||
public function getGlDetailQuery($date, $request)
|
||||
public function getGlDetailQuery($list_norujukan, $request)
|
||||
{
|
||||
$startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString();
|
||||
$endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString();
|
||||
|
||||
$extract_norujukan = array_unique(array_column($list_norujukan, 'norujukan'));
|
||||
$extract_kodcaw = array_unique(array_column($list_norujukan, 'kodcaw'));
|
||||
|
||||
$isGroupByNorujukan = $request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1';
|
||||
|
||||
$connectionCawangan = Cawangan::on('mysql7')->where('kodcaw', 'KB2')->first()->mysql;
|
||||
$connectionCawangan = Cawangan::on('mysql7')->whereIn('kodcaw', $extract_kodcaw)->get()->pluck('mysql');
|
||||
|
||||
$cawanganTransactionOnline = TransactionOnline::whereDate('tarikh', $date)
|
||||
->get()
|
||||
->pluck('kodcaw')
|
||||
->unique()
|
||||
->all();
|
||||
|
||||
$connectionCawangan = Cawangan::on('mysql7')->whereIn('kodcaw', $cawanganTransactionOnline)->get()->pluck('mysql');
|
||||
|
||||
$glDetail = $connectionCawangan->map(fn($x) => GlDetail::on($x)->where('teller', 'ONLINE')->whereDate('tarikh', $date)->orderBy('recno')->get())
|
||||
$glDetail = $connectionCawangan->map(fn($x) => GlDetail::on($x)->where('teller', 'ONLINE')->whereBetween('tarikh', [$startDate, $endDate])
|
||||
->orderBy('recno')->get())
|
||||
->flatten()
|
||||
->when($isGroupByNorujukan, function ($glDetail) {
|
||||
return $glDetail->groupBy('descpt')
|
||||
@@ -142,6 +129,13 @@ class TransactionOnlineTrailController extends Controller
|
||||
->when($request->filled('norujukan'), function ($glDetail) use ($request) {
|
||||
return $glDetail->filter(fn($x) => strpos($x->descpt, $request->norujukan) !== false);
|
||||
})
|
||||
->when($request->filled('billplzBillId'), function ($glDetail) use ($extract_norujukan) {
|
||||
return $glDetail->filter(function ($x) use ($extract_norujukan) {
|
||||
return collect($extract_norujukan)->contains(function ($norujukan) use ($x) {
|
||||
return strpos($x->descpt, $norujukan) !== false;
|
||||
});
|
||||
});
|
||||
})
|
||||
->toArray();
|
||||
|
||||
return $glDetail;
|
||||
|
||||
Reference in New Issue
Block a user