diff --git a/app/Http/Controllers/Web/Program/KelompokBelajarTaniController.php b/app/Http/Controllers/Web/Program/KelompokBelajarTaniController.php new file mode 100644 index 0000000..9f79182 --- /dev/null +++ b/app/Http/Controllers/Web/Program/KelompokBelajarTaniController.php @@ -0,0 +1,148 @@ + 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 + ]); + } +} \ No newline at end of file diff --git a/app/Models/Program/KelompokBelajarTani.php b/app/Models/Program/KelompokBelajarTani.php new file mode 100644 index 0000000..a3cf92c --- /dev/null +++ b/app/Models/Program/KelompokBelajarTani.php @@ -0,0 +1,22 @@ +id(); + + $table->string('nama_kelompok'); + $table->text('deskripsi')->nullable(); + $table->string('status')->default('aktif'); + + $table->foreignId('created_by')->nullable() + ->constrained('users') + ->nullOnDelete(); + + $table->foreignId('updated_by')->nullable() + ->constrained('users') + ->nullOnDelete(); + + $table->foreignId('deleted_by')->nullable() + ->constrained('users') + ->nullOnDelete(); + + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('kelompok_belajar_tani'); + } +}; \ No newline at end of file diff --git a/resources/views/layout/sidebar.blade.php b/resources/views/layout/sidebar.blade.php index 4e59b37..1e8bf4b 100644 --- a/resources/views/layout/sidebar.blade.php +++ b/resources/views/layout/sidebar.blade.php @@ -150,8 +150,8 @@
Program & Komunitas