orderBy('created_at', 'desc')->get(); $sekolahList = Sekolah::whereNotIn('id', [172, 173, 63])->orderBy('nama_sekolah', 'asc')->get(); return view('admin.pages.ruangan', compact('data', 'sekolahList')); } /** * Get single data for ajax editing. */ public function data($id) { $data = Ruangan::with('sekolah')->findOrFail($id); return response()->json($data); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $validator = Validator::make($request->all(), [ 'nama_ruangan' => 'required|string|max:255', 'kapasitas' => 'nullable|integer|min:0', 'status' => 'required|in:aktif,nonaktif', 'lokasi_tipe' => 'required|in:robotku,sekolah', 'sekolah_id' => 'required_if:lokasi_tipe,sekolah|nullable|exists:sekolah,id', ], [ 'nama_ruangan.required' => 'Nama ruangan wajib diisi!', 'nama_ruangan.string' => 'Nama ruangan harus berupa teks!', 'nama_ruangan.max' => 'Nama ruangan maksimal 255 karakter!', 'kapasitas.integer' => 'Kapasitas harus berupa angka!', 'kapasitas.min' => 'Kapasitas tidak boleh kurang dari 0!', 'status.required' => 'Status wajib dipilih!', 'status.in' => 'Status tidak valid!', 'lokasi_tipe.required' => 'Lokasi tipe wajib dipilih!', 'lokasi_tipe.in' => 'Lokasi tipe tidak valid!', 'sekolah_id.required_if' => 'Sekolah wajib dipilih jika lokasi tipe adalah Sekolah!', 'sekolah_id.exists' => 'Sekolah tidak valid!', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput()->with('error', 'Gagal menyimpan data. Periksa inputan Anda.'); } $validated = $validator->validated(); if ($validated['lokasi_tipe'] === 'robotku') { $validated['sekolah_id'] = null; } Ruangan::create($validated); return redirect('/admin/ruangan')->with('success', 'Data Ruangan berhasil disimpan'); } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { $ruangan = Ruangan::findOrFail($id); $validator = Validator::make($request->all(), [ 'nama_ruangan' => 'required|string|max:255', 'kapasitas' => 'nullable|integer|min:0', 'status' => 'required|in:aktif,nonaktif', 'lokasi_tipe' => 'required|in:robotku,sekolah', 'sekolah_id' => 'required_if:lokasi_tipe,sekolah|nullable|exists:sekolah,id', ], [ 'nama_ruangan.required' => 'Nama ruangan wajib diisi!', 'nama_ruangan.string' => 'Nama ruangan harus berupa teks!', 'nama_ruangan.max' => 'Nama ruangan maksimal 255 karakter!', 'kapasitas.integer' => 'Kapasitas harus berupa angka!', 'kapasitas.min' => 'Kapasitas tidak boleh kurang dari 0!', 'status.required' => 'Status wajib dipilih!', 'status.in' => 'Status tidak valid!', 'lokasi_tipe.required' => 'Lokasi tipe wajib dipilih!', 'lokasi_tipe.in' => 'Lokasi tipe tidak valid!', 'sekolah_id.required_if' => 'Sekolah wajib dipilih jika lokasi tipe adalah Sekolah!', 'sekolah_id.exists' => 'Sekolah tidak valid!', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput()->with('error', 'Gagal memperbarui data. Periksa inputan Anda.'); } $validated = $validator->validated(); if ($validated['lokasi_tipe'] === 'robotku') { $validated['sekolah_id'] = null; } $ruangan->update($validated); return redirect('/admin/ruangan')->with('success', 'Data Ruangan berhasil diperbarui'); } /** * Remove the specified resource from storage. */ public function destroy(string $id) { $ruangan = Ruangan::findOrFail($id); $ruangan->delete(); return redirect('/admin/ruangan')->with('success', 'Data Ruangan berhasil dihapus'); } }