create public search

This commit is contained in:
arifal hidayat
2025-08-26 02:33:09 +07:00
parent 38493063c4
commit c6257b79bf
6 changed files with 363 additions and 0 deletions

View File

@@ -17,6 +17,10 @@ class QuickSearchController extends Controller
return view("quick-search.index");
}
public function public_search(){
return view("public-search.index");
}
public function search_result(Request $request){
$keyword = $request->get("keyword");
@@ -60,6 +64,42 @@ class QuickSearchController extends Controller
}
}
public function public_search_datatable(Request $request)
{
try {
// Gunakan subquery untuk performa yang lebih baik dan menghindari duplikasi
$query = PbgTask::select([
'pbg_task.*',
DB::raw('(SELECT name_building FROM pbg_task_details WHERE pbg_task_details.pbg_task_uid = pbg_task.uuid LIMIT 1) as name_building'),
DB::raw('(SELECT nilai_retribusi_bangunan FROM pbg_task_retributions WHERE pbg_task_retributions.pbg_task_uid = pbg_task.uuid LIMIT 1) as nilai_retribusi_bangunan')
])
->orderBy('pbg_task.id', 'desc');
if ($request->filled('search')) {
$search = trim($request->get('search'));
$query->where(function ($q) use ($search) {
$q->where('pbg_task.registration_number', 'LIKE', "%$search%")
->orWhere('pbg_task.name', 'LIKE', "%$search%")
->orWhere('pbg_task.owner_name', 'LIKE', "%$search%")
->orWhereExists(function ($subQuery) use ($search) {
$subQuery->select(DB::raw(1))
->from('pbg_task_details')
->whereColumn('pbg_task_details.pbg_task_uid', 'pbg_task.uuid')
->where('pbg_task_details.name_building', 'LIKE', "%$search%");
});
});
}
return response()->json($query->paginate());
} catch (\Throwable $e) {
Log::error("Error fetching datatable data: " . $e->getMessage());
return response()->json([
'message' => 'Terjadi kesalahan saat mengambil data.',
'error' => $e->getMessage(),
], 500);
}
}
public function show($id)
{
try {