Merged in izzati-feat-laporan-lelong-admin (pull request #265)

tambah function laporan lelong admin
This commit is contained in:
izzati zulkifli
2025-02-26 08:05:57 +00:00
2 changed files with 114 additions and 0 deletions
+110
View File
@@ -32,6 +32,8 @@ use App\Services\RingkasanHarianServices;
use App\Services\OnePercentServices;
use App\Services\MasterServices;
use App\Support\v2\Calculation;
use Illuminate\Support\Facades\Validator;
use Log;
use DB;
@@ -1772,5 +1774,113 @@ class LelongController extends Controller
return response()->json($tuntutbaki,200);
}
public function LaporanLelong(Request $request)
{
// Validate required input
$validator = Validator::make($request->all(), [
'kodcaw' => 'required|string',
'tarikhmula' => 'required|date',
'tarikhhingga' => 'required|date|after_or_equal:tarikhmula',
'batchno' => 'nullable|string'
]);
if ($validator->fails()) {
return response()->json(['error' => $validator->errors()], 400);
}
// Get cawangan details
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $request->kodcaw)->first();
if (!$cawangan) {
return response()->json(['error' => 'Invalid kodcaw'], 403);
}
// Query lelong data
$lelong_query = Lelong::on($cawangan['mysql'])
->leftJoin('gadai', 'gadai.norujukan', '=', 'lelong.norujukan')
->join('lelmarhun', 'lelmarhun.norujukan', '=', 'lelong.norujukan')
->join('pembeli', 'pembeli.nopembeli', '=', 'lelong.nopembeli')
->whereBetween('lelong.t_lelong', [$request->tarikhmula, $request->tarikhhingga]);
// Optional: Filter by batch number
if ($request->has('batchno') && !empty($request->batchno)) {
$lelong_query->where('lelong.batchno', $request->batchno);
}
// dd($lelong_query);
// Select required fields
$lelong_data = $lelong_query->select(
'lelong.batchno', 'lelong.t_lelong', 'gadai.t_gadai', 'gadai.nokp', 'lelong.pinjaman',
'lelong.baki', 'lelong.norujukan', 'gadai.marhun', 'lelong.nilaimarhun',
'lelong.bakiupah', 'lelong.cajlelong', 'lelong.hargajual', 'lelong.hargaasas',
'pembeli.nama', 'pembeli.nokp AS nokppembeli', 'lelong.tagujrah', 'lelong.ujrah',
'lelong.onepercent', 'lelong.teller'
)
->orderBy('lelong.t_lelong')
->get();
// dd($lelong_data);
// If no data found, return a message
if ($lelong_data->isEmpty()) {
return response()->json([
'message' => 'Tiada lelongan dalam tarikh dipilih.',
'data' => [],
'totals' => [
'total_pinjaman' => 0,
'total_nilaimarhun' => 0,
'total_keuntungan' => 0,
'total_onepercent' => 0,
'total_ujrah' => 0,
'total_cajlelong' => 0,
'total_hargajual' => 0,
'total_baki' => 0,
'total_hargaasas' => 0
]
]);
}
// Calculate totals safely (prevent null values)
$totals = [
'total_pinjaman' => $lelong_data->sum(fn($item) => $item->pinjaman ?? 0),
'total_nilaimarhun' => $lelong_data->sum(fn($item) => $item->nilaimarhun ?? 0),
'total_keuntungan' => $lelong_data->sum(fn($item) => $item->bakiupah ?? 0),
'total_onepercent' => $lelong_data->sum(fn($item) => $item->onepercent ?? 0),
'total_ujrah' => $lelong_data->sum(fn($item) => $item->ujrah ?? 0),
'total_cajlelong' => $lelong_data->sum(fn($item) => $item->cajlelong ?? 0),
'total_hargajual' => $lelong_data->sum(fn($item) => $item->hargajual ?? 0),
'total_baki' => $lelong_data->sum(fn($item) => $item->baki ?? 0),
'total_hargaasas' => $lelong_data->sum(fn($item) => $item->hargaasas ?? 0)
];
$tarikh_lelongs = $lelong_data->pluck('t_lelong')->first(); // Get first date
// Return JSON response
return response()->json([
'data' => $lelong_data,
'totals' => $totals,
'tarikh_lelong' => $tarikh_lelongs
]);
}
public function LookupBatchLel($kodcaw,Request $request)
{
$harini = Carbon::now();
$harini = new Carbon;
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$batchlel = BatchLel::on($cawangan['mysql'])
->select('batchno','tarikh')
->when($kodcaw, function ($query, $kodcaw) {
return $query->where('kodcaw', $kodcaw);
})
->orderBy('tarikh', 'DESC')
->get();
return response()->json($batchlel);
}
}
+4
View File
@@ -448,6 +448,10 @@ $router->group(['prefix'=>'api'], function () use ($router){
$router->get('lookupalasan',['uses' => 'PolisController@LookupAlasan']);
$router->get('polis/laporan',['uses' => 'PolisController@LaporanPolis']);
//laporanlelong adminportal
$router->get('laporan/lelong',['uses' => 'LelongController@LaporanLelong']);
$router->get('lookupbatchlel/{kodcaw}',['uses' => 'LelongController@LookupBatchLel']);