input('search'); $puskesmas = Puskesmas::with('kecamatan') ->when($search, function ($query) use ($search) { $query->where('nama_puskesmas', 'like', "%$search%") ->orWhereHas('kecamatan', function ($query) use ($search) { $query->where('nama_kecamatan', 'like', "%$search%"); }); }) ->paginate(10); return view('puskesmas.index', compact('puskesmas')); } public function create() { $kecamatan = Kecamatan::all(); return view('puskesmas.create', compact('kecamatan')); } public function store(Request $request) { $validated = $request->validate([ 'nama_puskesmas' => 'required|string|max:255', 'id_kecamatan' => 'required|exists:tb_kecamatan,id_kecamatan', 'alamat_puskesmas' => 'nullable|string', 'lat' => 'required|regex:/^-?[\d\.]+$/', 'long' => 'required|regex:/^-?[\d\.]+$/', ]); Puskesmas::create($validated); return redirect()->route('puskesmas.index') ->with('success', 'Puskesmas berhasil ditambahkan.'); } public function edit($id) { $puskesmas = Puskesmas::findOrFail($id); $kecamatan = Kecamatan::all(); return view('puskesmas.edit', compact('puskesmas', 'kecamatan')); } public function update(Request $request, $id) { $validated = $request->validate([ 'nama_puskesmas' => 'required|string|max:255', 'id_kecamatan' => 'required|exists:tb_kecamatan,id_kecamatan', 'alamat_puskesmas' => 'nullable|string', 'lat' => 'nullable|numeric', 'long' => 'nullable|numeric', ]); $puskesmas = Puskesmas::findOrFail($id); $puskesmas->update($validated); return redirect()->route('puskesmas.index') ->with('success', 'Puskesmas berhasil diperbarui.'); } public function destroy($id) { $puskesmas = Puskesmas::findOrFail($id); $puskesmas->delete(); return redirect()->route('puskesmas.index') ->with('success', 'Puskesmas berhasil dihapus.'); } public function export() { $data = Puskesmas::with('kecamatan')->get()->map(function ($puskesmas) { return [ 'nama_puskesmas' => $puskesmas->nama_puskesmas, 'alamat_puskesmas' => $puskesmas->alamat_puskesmas, 'nama_kecamatan' => $puskesmas->kecamatan->nama_kecamatan, 'lat' => $puskesmas->lat, 'long' => $puskesmas->long, ]; }); $headings = [ 'Nama Puskesmas', 'Alamat Puskesmas', 'Nama Kecamatan', 'Latitude', 'Longitude', ]; return Excel::download(new GeneralExport($data, $headings), 'puskesmas.xlsx'); } }