Update query to include partial norujukan sag match

This commit is contained in:
Afiq Hamzah
2024-08-06 13:14:08 +08:00
parent 7e38a748c7
commit 8cde06d92a
4 changed files with 153 additions and 75 deletions
@@ -719,78 +719,5 @@ class TransactionOnlineController extends Controller
}
}
public function getListTransactionOnlineTrail(Request $request)
{
$date = $request->date ? $request->date : Carbon::now()->toDateString();
$isGroupByNorujukan = $request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1';
$transactionsOnline = TransactionOnline::whereDate('tarikh', $date)
->when($request->filled('norujukan'), function ($query) use ($request) {
return $query->where('norujukan', $request->norujukan);
})
->orderBy('tarikh', 'desc')
->orderBy('masa', 'desc')
->get()
->filter(fn($x) => $x['status'] === 'PAID')
->when($isGroupByNorujukan, function ($query) {
return $query->groupBy('norujukan')->sortKeysDesc();
})
->toArray();
$transaction = Transaction::whereDate('created_at', $date)
->where('teller', 'Online')
->when($request->norujukan, function ($query) use ($request) {
return $query->where('norujukan', $request->norujukan);
})
->orderBy('created_at', 'desc')
->get()
->when($isGroupByNorujukan, function ($query) {
return $query->groupBy('norujukan')->sortKeysDesc();
})
->toArray();
$transaksiKeuntungan = TransaksiKeuntungan::whereDate('tarikh_bayaran', $date)
->when($request->norujukan, function ($query) use ($request) {
return $query->where('norujukan', $request->norujukan);
})
->orderBy('tarikh_bayaran', 'desc')
->get()
->when($isGroupByNorujukan, function ($query) {
return $query->groupBy('norujukan')->sortKeysDesc();
})
->toArray();
$connectionCawangan = Cawangan::on('mysql7')->where('kodcaw', 'KB2')->first()->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)->get())
->flatten()
->when($isGroupByNorujukan, function ($glDetail) {
return $glDetail->groupBy('descpt')
->keyBy(function ($group, $key) {
$array = explode(' ', $key);
return end($array);
});
})
->when($request->filled('norujukan'), function ($glDetail) use ($request) {
return $glDetail->filter(fn($x) => strpos($x->descpt, $request->norujukan) !== false);
})
->sortKeysDesc()
->toArray();
return response()->json([
'transactionsOnline' => $transactionsOnline,
'transaction' => $transaction,
'transaksiKeuntungan' => $transaksiKeuntungan,
'glDetail' => $glDetail,
]);
}
}