withCount('aduan') ->get(); return view('admin.tps.index', compact('title', 'tps')); } public function create() { $title = 'Tambah TPS'; $kategori = KategoriTps::all(); return view('admin.tps.create', compact('title', 'kategori')); } public function store(Request $request) { $request->validate([ 'kategori_tps_id' => 'required|exists:kategori_tps,id', 'nama_tps' => 'required|string|max:255', 'alamat_tps' => 'required|string|max:255', 'status_tps' => 'required', 'tahun_pembuatan' => 'required|numeric', 'kapasitas_tps' => 'required', 'latitude' => 'required', 'longitude' => 'required', 'foto_tps' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', ]); // Upload foto if ($request->hasFile('foto_tps')) { $foto = $request->file('foto_tps')->store('foto-tps', 'public'); } else { $foto = null; } LokasiTps::create([ 'kategori_tps_id' => $request->kategori_tps_id, 'nama_tps' => $request->nama_tps, 'alamat_tps' => $request->alamat_tps, 'status_tps' => $request->status_tps, 'tahun_pembuatan' => $request->tahun_pembuatan, 'kapasitas_tps' => $request->kapasitas_tps, 'latitude' => $request->latitude, 'longitude' => $request->longitude, 'foto_tps' => $foto, ]); return redirect()->route('admin.tps.index') ->with('success', 'Data TPS berhasil ditambahkan'); } public function edit($id) { $title = 'Edit TPS'; $tps = LokasiTps::findOrFail($id); $kategori = KategoriTps::all(); return view('admin.tps.edit', compact('title', 'tps', 'kategori')); } public function update(Request $request, $id) { $tps = LokasiTps::findOrFail($id); $request->validate([ 'kategori_tps_id' => 'required|exists:kategori_tps,id', 'nama_tps' => 'required|string|max:255', 'alamat_tps' => 'required|string|max:255', 'status_tps' => 'required', 'tahun_pembuatan' => 'required|numeric', 'kapasitas_tps' => 'required', 'latitude' => 'required', 'longitude' => 'required', 'foto_tps' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', ]); // Jika upload foto baru if ($request->hasFile('foto_tps')) { if ($tps->foto_tps) { Storage::disk('public')->delete($tps->foto_tps); } $foto = $request->file('foto_tps')->store('foto-tps', 'public'); } else { $foto = $tps->foto_tps; } $tps->update([ 'kategori_tps_id' => $request->kategori_tps_id, 'nama_tps' => $request->nama_tps, 'alamat_tps' => $request->alamat_tps, 'status_tps' => $request->status_tps, 'tahun_pembuatan' => $request->tahun_pembuatan, 'kapasitas_tps' => $request->kapasitas_tps, 'latitude' => $request->latitude, 'longitude' => $request->longitude, 'foto_tps' => $foto, ]); return redirect()->route('admin.tps.index') ->with('success', 'Data TPS berhasil diperbarui'); } public function destroy($id) { $tps = LokasiTps::findOrFail($id); if ($tps->foto_tps) { Storage::disk('public')->delete($tps->foto_tps); } $tps->delete(); return redirect()->route('admin.tps.index') ->with('success', 'Data TPS berhasil dihapus'); } }