diff --git a/app/Http/Controllers/Web/Ekosistem/PetaniCPMController.php b/app/Http/Controllers/Web/Ekosistem/PetaniCPMController.php index b5d25e2..6509798 100644 --- a/app/Http/Controllers/Web/Ekosistem/PetaniCPMController.php +++ b/app/Http/Controllers/Web/Ekosistem/PetaniCPMController.php @@ -13,6 +13,7 @@ use Illuminate\Http\JsonResponse; use App\Models\Ekosistem\PetaniCPM; use App\Models\Wilayah\Provinsi; use App\Models\Pertanian\Komoditas; +use App\Models\Core\Program; use App\Enums\Pendidikan; use App\Enums\Pekerjaan; @@ -30,15 +31,34 @@ class PetaniCPMController extends Controller $perPage = $request->query('per_page', 10); $search = strtolower($request->query('search', '')); + + + $program = null; + $programList = Program::get(); + if (app()->has('SystemProgram')) { + $program = app('SystemProgram'); + } else { + if ($request->has('program_id') && $request->query('program_id')) { + $programId = $request->query('program_id'); + $program = Program::find($programId); + if (!$program) { + abort(400, 'Program tidak ditemukan.'); + } + } + } + $petani = PetaniCPM::when($search, function ($query, $search) { return $query->where('nama', 'like', "%{$search}%"); }) + ->when($program, function ($query) use ($program) { + return $query->where('program_id', $program->id); + }) ->paginate($perPage); - return view('ekosistem.petani-cpm.index', compact('petani')); + return view('ekosistem.petani-cpm.index', compact('petani', 'program', 'programList')); } - public function create(): View + public function create(Request $request): View { if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); @@ -52,8 +72,21 @@ class PetaniCPMController extends Controller $provinsi = Provinsi::all(); $komoditas = Komoditas::all(); + $program = null; + if (app()->has('SystemProgram')) { + $program = app('SystemProgram'); + } else { + if ($request->has('program_id') && $request->query('program_id')) { + $programId = $request->query('program_id'); + $program = Program::find($programId); + } + } + if (!$program) { + abort(400, 'Program tidak ditemukan.'); + } + return view('ekosistem.petani-cpm.add', compact('pendidikan', 'pekerjaan', - 'pernikahan', 'statusKeluarga', 'provinsi', 'komoditas')); + 'pernikahan', 'statusKeluarga', 'provinsi', 'komoditas', 'program')); } /** @@ -65,6 +98,20 @@ class PetaniCPMController extends Controller abort(403); } + if (app()->has('SystemProgram')) { + $program = app('SystemProgram'); + } else { + if ($request->has('program_id') && $request->query('program_id')) { + $programId = $request->query('program_id'); + $program = Program::find($programId); + if (!$program) { + abort(400, 'Program tidak ditemukan.'); + } + } else { + abort(400, 'Program tidak ditemukan.'); + } + } + $validatedData = $request->validate([ 'nama' => ['required','string','max:255'], 'jenis_kelamin' => ['required','boolean'], @@ -88,16 +135,17 @@ class PetaniCPMController extends Controller ]); PetaniCPM::create([...$validatedData, + 'program_id' => $program->id, 'created_by' => auth()->id(), 'updated_by' => auth()->id()]); - return redirect()->route('petani-cpm.index')->with('success', 'Data petani CPM berhasil ditambahkan.'); + return redirect()->route('petani-cpm.index', ['program_id' => $program->id])->with('success', 'Data petani CPM berhasil ditambahkan.'); } /** * Display the specified resource. */ - public function show(string $id) + public function show(string $id): View { if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); @@ -111,12 +159,26 @@ class PetaniCPMController extends Controller /** * Show the form for editing the specified resource. */ - public function edit(string $id) + public function edit(Request $request, string $id): View { if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); } + if (app()->has('SystemProgram')) { + $program = app('SystemProgram'); + } else { + if ($request->has('program_id') && $request->query('program_id')) { + $programId = $request->query('program_id'); + $program = Program::find($programId); + if (!$program) { + abort(400, 'Program tidak ditemukan.'); + } + } else { + abort(400, 'Program tidak ditemukan.'); + } + } + $petani = PetaniCPM::findOrFail($id); $pendidikan = Pendidikan::options(); @@ -128,7 +190,7 @@ class PetaniCPMController extends Controller $komoditas = Komoditas::all(); return view('ekosistem.petani-cpm.edit', compact('petani', 'pendidikan', 'pekerjaan', - 'pernikahan', 'statusKeluarga', 'provinsi', 'komoditas')); + 'pernikahan', 'statusKeluarga', 'provinsi', 'komoditas', 'program')); } /** @@ -140,6 +202,20 @@ class PetaniCPMController extends Controller abort(403); } + if (app()->has('SystemProgram')) { + $program = app('SystemProgram'); + } else { + if ($request->has('program_id') && $request->query('program_id')) { + $programId = $request->query('program_id'); + $program = Program::find($programId); + if (!$program) { + abort(400, 'Program tidak ditemukan.'); + } + } else { + abort(400, 'Program tidak ditemukan.'); + } + } + $petani = PetaniCPM::findOrFail($id); $validatedData = $request->validate([ diff --git a/app/Http/Controllers/Web/Ekosistem/ValueBasisDataController.php b/app/Http/Controllers/Web/Ekosistem/ValueBasisDataController.php index 0048cc8..a3d8131 100644 --- a/app/Http/Controllers/Web/Ekosistem/ValueBasisDataController.php +++ b/app/Http/Controllers/Web/Ekosistem/ValueBasisDataController.php @@ -150,6 +150,7 @@ class ValueBasisDataController extends Controller abort(404, 'Data kolom tidak ditemukan untuk tabel ini.'); } + $program = null; if (app()->has('SystemProgram')) { $program = app('SystemProgram'); } else { diff --git a/app/Models/Ekosistem/PetaniCPM.php b/app/Models/Ekosistem/PetaniCPM.php index f5a606f..6706f70 100644 --- a/app/Models/Ekosistem/PetaniCPM.php +++ b/app/Models/Ekosistem/PetaniCPM.php @@ -44,6 +44,7 @@ class PetaniCPM extends Model 'created_by', 'updated_by', 'deleted_by', + 'program_id', ]; protected $casts = [ diff --git a/database/migrations/2026_05_05_103739_update_basis_data_table.php b/database/migrations/2026_05_05_103739_update_basis_data_table.php index d5048db..e01021b 100644 --- a/database/migrations/2026_05_05_103739_update_basis_data_table.php +++ b/database/migrations/2026_05_05_103739_update_basis_data_table.php @@ -36,6 +36,10 @@ return new class extends Migration Schema::table('ekosistem_basis_data_value', function (Blueprint $table) { $table->integer('value_relasi')->nullable(); }); + + Schema::table('ekosistem_petani_cpm', function (Blueprint $table) { + $table->foreignId('program_id')->nullable()->constrained('core_program')->nullOnDelete(); + }); } /** diff --git a/resources/views/ekosistem/petani-cpm/add.blade.php b/resources/views/ekosistem/petani-cpm/add.blade.php index bb67a67..ef24ce2 100644 --- a/resources/views/ekosistem/petani-cpm/add.blade.php +++ b/resources/views/ekosistem/petani-cpm/add.blade.php @@ -8,7 +8,7 @@
-
+ @csrf @if ($errors->any()) diff --git a/resources/views/ekosistem/petani-cpm/edit.blade.php b/resources/views/ekosistem/petani-cpm/edit.blade.php index 626408b..b3c3e76 100644 --- a/resources/views/ekosistem/petani-cpm/edit.blade.php +++ b/resources/views/ekosistem/petani-cpm/edit.blade.php @@ -8,7 +8,7 @@
- + @csrf @method('PUT') diff --git a/resources/views/ekosistem/petani-cpm/index.blade.php b/resources/views/ekosistem/petani-cpm/index.blade.php index 17e8192..f544342 100644 --- a/resources/views/ekosistem/petani-cpm/index.blade.php +++ b/resources/views/ekosistem/petani-cpm/index.blade.php @@ -71,7 +71,7 @@
- +
@@ -84,11 +84,26 @@
+ @if (app()->has('SystemProgram')) + @else +
+
+ + +
+
+ @endif
- + Tambah
@@ -117,7 +132,7 @@ {{ $p->desaKelurahan?->nama }}, {{ $p->desaKelurahan?->kecamatan?->nama }}, {{ $p->desaKelurahan?->kecamatan?->kabupatenKota?->nama }}, {{ $p->desaKelurahan?->kecamatan?->kabupatenKota?->provinsi?->nama }}
- +