query('per_page', 10); $search = strtolower($request->query('search', '')); $petani = PetaniCPM::when($search, function ($query, $search) { return $query->where('nama', 'like', "%{$search}%"); }) ->paginate($perPage); return view('ekosistem.petani-cpm.index', compact('petani')); } public function create(): View { if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); } $pendidikan = Pendidikan::options(); $pekerjaan = Pekerjaan::options(); $pernikahan = Pernikahan::options(); $statusKeluarga = HubunganDalamKeluarga::options(); $provinsi = Provinsi::all(); $komoditas = Komoditas::all(); return view('ekosistem.petani-cpm.add', compact('pendidikan', 'pekerjaan', 'pernikahan', 'statusKeluarga', 'provinsi', 'komoditas')); } /** * Store a newly created resource in storage. */ public function store(Request $request): RedirectResponse { if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); } $validatedData = $request->validate([ 'nama' => ['required','string','max:255'], 'jenis_kelamin' => ['required','boolean'], 'tanggal_lahir' => ['required','date'], 'pendidikan_terakhir' => ['required', Rule::enum(Pendidikan::class)], 'alamat' => ['required','string','max:500'], 'desa_kelurahan_id' => ['required','exists:master_desa_kelurahan,id'], 'pekerjaan_utama' => ['required', Rule::enum(Pekerjaan::class)], 'komoditas_id' => ['required','exists:master_komoditas,id'], 'lama_bertani' => ['required','numeric','min:0'], 'luas_lahan' => ['required','numeric','min:0'], 'pekerjaan_sampingan' => ['nullable', Rule::enum(Pekerjaan::class)], 'komoditas_sampingan_id' => ['nullable','exists:master_komoditas,id'], 'lama_bertani_sampingan' => ['nullable','numeric','min:0'], 'luas_lahan_sampingan' => ['nullable','numeric','min:0'], 'status_perkawinan' => ['required', Rule::enum(Pernikahan::class)], 'status_keluarga' => ['required', Rule::enum(HubunganDalamKeluarga::class)], 'jumlah_tanggungan' => ['nullable','integer','min:0'], 'petani_pengumpul' => ['nullable','array'], 'petani_pengumpul.*' => ['in:petani,pengumpul'], ]); PetaniCPM::create([...$validatedData, 'created_by' => auth()->id(), 'updated_by' => auth()->id()]); return redirect()->route('petani-cpm.index')->with('success', 'Data petani CPM berhasil ditambahkan.'); } /** * Display the specified resource. */ public function show(string $id) { if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); } $petani = PetaniCPM::findOrFail($id); return view('ekosistem.petani-cpm.view', compact('petani')); } /** * Show the form for editing the specified resource. */ public function edit(string $id) { if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); } $petani = PetaniCPM::findOrFail($id); $pendidikan = Pendidikan::options(); $pekerjaan = Pekerjaan::options(); $pernikahan = Pernikahan::options(); $statusKeluarga = HubunganDalamKeluarga::options(); $provinsi = Provinsi::all(); $komoditas = Komoditas::all(); return view('ekosistem.petani-cpm.edit', compact('petani', 'pendidikan', 'pekerjaan', 'pernikahan', 'statusKeluarga', 'provinsi', 'komoditas')); } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); } $petani = PetaniCPM::findOrFail($id); $validatedData = $request->validate([ 'nama' => ['required','string','max:255'], 'jenis_kelamin' => ['required','boolean'], 'tanggal_lahir' => ['required','date'], 'pendidikan_terakhir' => ['required', Rule::enum(Pendidikan::class)], 'alamat' => ['required','string','max:500'], 'desa_kelurahan_id' => ['required','exists:master_desa_kelurahan,id'], 'pekerjaan_utama' => ['required', Rule::enum(Pekerjaan::class)], 'komoditas_id' => ['required','exists:master_komoditas,id'], 'lama_bertani' => ['required','numeric','min:0'], 'luas_lahan' => ['required','numeric','min:0'], 'pekerjaan_sampingan' => ['nullable', Rule::enum(Pekerjaan::class)], 'komoditas_sampingan_id' => ['nullable','exists:master_komoditas,id'], 'lama_bertani_sampingan' => ['nullable','numeric','min:0'], 'luas_lahan_sampingan' => ['nullable','numeric','min:0'], 'status_perkawinan' => ['required', Rule::enum(Pernikahan::class)], 'status_keluarga' => ['required', Rule::enum(HubunganDalamKeluarga::class)], 'jumlah_tanggungan' => ['nullable','integer','min:0'], 'petani_pengumpul' => ['nullable','array'], 'petani_pengumpul.*' => ['in:petani,pengumpul'], ]); $petani->update([...$validatedData, 'updated_by' => auth()->id()]); return redirect()->route('petani-cpm.index')->with('success', 'Data petani CPM berhasil diperbarui.'); } /** * Remove the specified resource from storage. */ public function destroy(string $id) { if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); } $petani = PetaniCPM::findOrFail($id); $petani->update(['deleted_by' => auth()->id()]); $petani->delete(); return redirect()->route('petani-cpm.index')->with('success', 'Data petani CPM berhasil dihapus.'); } }