get("keyword"); return view('quick-search.result', compact('keyword')); } public function quick_search_datatable(Request $request) { try { $query = PbgTask::leftJoin('pbg_task_details', 'pbg_task.uuid', '=', 'pbg_task_details.pbg_task_uid') ->select('pbg_task.*') ->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%") ->orWhere('pbg_task.address', 'LIKE', "%$search%") ->orWhere('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 { $data = PbgTask::with([ 'pbg_task_retributions', 'pbg_task_index_integrations', 'pbg_task_retributions.pbg_task_prasarana' ])->findOrFail($id); $statusOptions = PbgTaskStatus::getStatuses(); $applicationTypes = PbgTaskApplicationTypes::labels(); return view("quick-search.detail", compact("data", 'statusOptions', 'applicationTypes')); } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { Log::warning("PbgTask with ID {$id} not found."); return redirect()->route('quick-search.index')->with('error', 'Data tidak ditemukan.'); } catch (\Throwable $e) { Log::error("Error in QuickSearchController@show: " . $e->getMessage()); return response()->view('pages.404', [], 500); // Optional: create `resources/views/errors/500.blade.php` } } public function task_assignments(Request $request, $uuid){ try{ $query = TaskAssignment::query() ->where('pbg_task_uid', $uuid) ->orderBy('id', 'desc'); if ($request->filled('search')) { $query->where('name', 'like', "%{$request->get('search')}%") ->orWhere('email', 'like', "%{$request->get('search')}%"); } return TaskAssignmentsResource::collection($query->paginate(config('app.paginate_per_page', 50))); }catch(\Exception $exception){ return response()->json(['message' => $exception->getMessage()], 500); } } }