diff --git a/app/Http/Controllers/Admin/InformasiController.php b/app/Http/Controllers/Admin/InformasiController.php index 21cf50c..b82ff00 100644 --- a/app/Http/Controllers/Admin/InformasiController.php +++ b/app/Http/Controllers/Admin/InformasiController.php @@ -6,17 +6,15 @@ use Illuminate\Http\Request; use App\Models\Informasi; use Illuminate\Support\Facades\Storage; -use Illuminate\Support\Facades\Validator; class InformasiController extends Controller { - // Menampilkan semua informasi public function index(Request $request) { $search = $request->search; $informasi = Informasi::when($search, function ($query) use ($search) { - $query->where('judul', 'like', '%' . $search . '%'); + $query->where('judul_informasi', 'like', '%' . $search . '%'); }) ->orderBy('tanggal_informasi', 'desc') ->paginate(10); @@ -24,26 +22,56 @@ public function index(Request $request) return view('admin.informasi.index', compact('informasi')); } - // Form tambah informasi public function create() { return view('admin.informasi.create'); } - // Simpan informasi baru - public function store(Request $request) + // ================= VALIDASI ================= + private function rules() { - $validator = Validator::make($request->all(), [ + return [ 'kategori_informasi' => 'required|in:berita,pengumuman', 'judul_informasi' => 'required|string|max:255', - 'isi_informasi' => 'required|string', + 'isi_informasi' => 'required|string|min:10', 'tanggal_informasi' => 'required|date', - 'gambar_informasi' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', - ]); + 'gambar_informasi' => 'nullable|image|mimes:jpeg,png,jpg|max:2048', + ]; + } - if ($validator->fails()) { - return redirect()->back()->withErrors($validator)->withInput(); - } + private function messages() + { + return [ + 'required' => ':attribute wajib diisi.', + 'in' => ':attribute tidak valid.', + 'string' => ':attribute harus berupa teks.', + 'max' => ':attribute maksimal :max karakter.', + 'min' => ':attribute minimal :min karakter.', + 'date' => ':attribute harus berupa tanggal yang valid.', + 'image' => ':attribute harus berupa gambar.', + 'mimes' => ':attribute harus berformat jpeg, jpg, atau png.', + ]; + } + + private function attributes() + { + return [ + 'kategori_informasi' => 'Kategori Informasi', + 'judul_informasi' => 'Judul Informasi', + 'isi_informasi' => 'Isi Informasi', + 'tanggal_informasi' => 'Tanggal Informasi', + 'gambar_informasi' => 'Gambar Informasi', + ]; + } + + // ================= STORE ================= + public function store(Request $request) + { + $request->validate( + $this->rules(), + $this->messages(), + $this->attributes() + ); $data = $request->only( 'kategori_informasi', @@ -63,29 +91,23 @@ public function store(Request $request) ->with('success', 'Informasi berhasil ditambahkan.'); } - // Form edit informasi + // ================= EDIT ================= public function edit($id_informasi) { $informasi = Informasi::findOrFail($id_informasi); return view('admin.informasi.edit', compact('informasi')); } - // Update informasi + // ================= UPDATE ================= public function update(Request $request, $id_informasi) { $informasi = Informasi::findOrFail($id_informasi); - $validator = Validator::make($request->all(), [ - 'kategori_informasi' => 'required|in:berita,pengumuman', - 'judul_informasi' => 'required|string|max:255', - 'isi_informasi' => 'required|string', - 'tanggal_informasi' => 'required|date', - 'gambar_informasi' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', - ]); - - if ($validator->fails()) { - return redirect()->back()->withErrors($validator)->withInput(); - } + $request->validate( + $this->rules(), + $this->messages(), + $this->attributes() + ); $data = $request->only( 'kategori_informasi', @@ -110,7 +132,7 @@ public function update(Request $request, $id_informasi) ->with('success', 'Informasi berhasil diperbarui.'); } - // Hapus informasi + // ================= DELETE ================= public function destroy($id_informasi) { $informasi = Informasi::findOrFail($id_informasi);