Files
database-pertani-web/app/Http/Controllers/Web/Program/KelompokBelajarTaniController.php
T
2026-05-19 11:10:53 +07:00

165 lines
4.5 KiB
PHP

<?php
namespace App\Http\Controllers\Web\Program;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Program\KelompokBelajarTani;
use App\Models\Program\DetailKelompok;
use App\Models\User;
class KelompokBelajarTaniController extends Controller
{
public function index(Request $request)
{
$title = 'Kelompok Belajar Tani';
// SUMMARY CARD
$summary = ([
'total_kelompok' => 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'
));
}
}