165 lines
4.5 KiB
PHP
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'
|
|
));
|
|
}
|
|
} |