get(); return view('admin.ongkir-kota.index', compact('kotas')); } public function create() { return view('admin.ongkir-kota.create'); } public function store(Request $request) { $request->validate([ 'kotas.*.nama_kota' => 'required|string|max:255|unique:ongkir_kota,nama_kota', 'kotas.*.biaya_ongkir' => 'required|numeric|min:0', ], [ 'kotas.*.nama_kota.required' => 'Nama kota harus diisi', 'kotas.*.nama_kota.unique' => 'Nama kota sudah ada', 'kotas.*.biaya_ongkir.required' => 'Biaya ongkir harus diisi', 'kotas.*.biaya_ongkir.numeric' => 'Biaya ongkir harus berupa angka', 'kotas.*.biaya_ongkir.min' => 'Biaya ongkir minimal 0', ]); try { foreach ($request->kotas as $kota) { OngkirKota::create([ 'nama_kota' => $kota['nama_kota'], 'biaya_ongkir' => $kota['biaya_ongkir'], 'status' => true ]); } return redirect()->route('admin.ongkir-kota.index') ->with('success', 'Data ongkir kota berhasil ditambahkan'); } catch (\Exception $e) { return back()->with('error', 'Terjadi kesalahan: ' . $e->getMessage()) ->withInput(); } } public function edit($id) { $kota = OngkirKota::findOrFail($id); return view('admin.ongkir-kota.edit', compact('kota')); } public function update(Request $request, $id) { $kota = OngkirKota::findOrFail($id); $request->validate([ 'nama_kota' => 'required|string|max:255|unique:ongkir_kota,nama_kota,' . $id, 'biaya_ongkir' => 'required|numeric|min:0', ]); $kota->update([ 'nama_kota' => $request->nama_kota, 'biaya_ongkir' => $request->biaya_ongkir, 'status' => $request->has('status') ]); return redirect()->route('admin.ongkir-kota.index') ->with('success', 'Data ongkir kota berhasil diperbarui'); } public function destroy($id) { $kota = OngkirKota::findOrFail($id); $kota->delete(); return redirect()->route('admin.ongkir-kota.index') ->with('success', 'Data ongkir kota berhasil dihapus'); } }