KelompokBelajarTani::count(), 'aktif' => KelompokBelajarTani::where('status', 'aktif')->count(), 'nonaktif' => KelompokBelajarTani::where('status', 'nonaktif')->count(), ]); // QUERY $query = KelompokBelajarTani::query(); // SEARCH if ($request->filled('search')) { $search = $request->search; $query->where(function ($q) use ($search) { $q->where('nama_kelompok', 'ilike', "%{$search}%") ->orWhere('deskripsi', 'ilike', "%{$search}%"); }); } // FILTER STATUS if ($request->filled('status')) { $query->where('status', $request->status); } // PAGINATION $perPage = $request->input('per_page', 10); $kelompok = $query->latest()->paginate($perPage); return view('program.kelompokbelajar.index', compact( 'title', 'summary', 'kelompok' )); } public function create() { return view('program.kelompokbelajar.add'); } public function store(Request $request) { $validated = $request->validate([ 'nama_kelompok' => 'required|string|max:255', 'status' => 'required|string', 'deskripsi' => 'nullable|string', ], [ 'nama_kelompok.required' => 'Nama kelompok wajib diisi.', 'nama_kelompok.string' => 'Nama kelompok harus berupa teks.', 'nama_kelompok.max' => 'Nama kelompok maksimal 255 karakter.', 'status.required' => 'Status wajib diisi.', 'status.string' => 'Status harus berupa teks.', 'deskripsi.string' => 'Deskripsi harus berupa teks.', ]); KelompokBelajarTani::create([ 'nama_kelompok' => $request->nama_kelompok, 'status' => $request->status, 'deskripsi' => $request->deskripsi, 'created_by' => auth()->user()->id, 'updated_by' => auth()->user()->id, ]); return response()->json([ 'status' => 'success', 'message' => 'Kelompok Belajar Tani berhasil disimpan.' ]); } public function edit($id) { $kelompok = KelompokBelajarTani::findOrFail($id); return view('program.kelompokbelajar.edit', compact( 'kelompok' )); } public function update(Request $request, $id) { $validated = $request->validate([ 'nama_kelompok' => 'required|string|max:255', 'status' => 'required|string', 'deskripsi' => 'nullable|string', ]); $kelompok = KelompokBelajarTani::findOrFail($id); $kelompok->update([ 'nama_kelompok' => $request->nama_kelompok, 'status' => $request->status, 'deskripsi' => $request->deskripsi, 'updated_by' => auth()->user()->id, ]); return response()->json([ 'status' => 'success', 'message' => 'Data Kelompok Belajar Tani berhasil diperbarui.' ]); } public function destroy($id) { $kelompok = KelompokBelajarTani::findOrFail($id); $kelompok->update([ 'deleted_by' => auth()->user()->id ]); $kelompok->delete(); return response()->json([ 'status' => 'success', 'message' => 'Data Kelompok Belajar Tani berhasil dihapus.' ]); } public function show($id) { $kelompok = KelompokBelajarTani::findOrFail($id); return response()->json([ 'status' => 'success', 'data' => $kelompok ]); } public function detail($id) { $kelompok = KelompokBelajarTani::with('detailAnggota.user') ->findOrFail($id); $petani = User::where('role', 'petani') ->orderBy('name') ->get(); return view('program.kelompokbelajar.detailkelompok', compact( 'kelompok', 'petani' )); } }