diff --git a/app/Enums/Pendidikan.php b/app/Enums/Pendidikan.php index 6dbdc22..459c954 100644 --- a/app/Enums/Pendidikan.php +++ b/app/Enums/Pendidikan.php @@ -19,13 +19,13 @@ enum Pendidikan: string { return match($this) { self::TIDAK_SEKOLAH => 'Tidak Sekolah', - self::SD => 'SD atau Sederajat', - self::SMP => 'SMP atau Sederajat', - self::SMA => 'SMA atau Sederajat', + self::SD => 'SD', + self::SMP => 'SMP', + self::SMA => 'SMA/SMK', self::DIPLOMA => 'Diploma 1-3 (D1-D3)', - self::SARJANA => 'Sarjana (S1) atau sederajat', - self::MAGISTER => 'Magister (S2) atau sederajat', - self::DOKTOR => 'Doktor (S3) atau sederajat', + self::SARJANA => 'Sarjana (S1)', + self::MAGISTER => 'Magister (S2)', + self::DOKTOR => 'Doktor (S3)', self::PESANTREN => 'Pesantren, Semiari, Wihara, atau Pendidikan Keagamaan Formal', self::LAINNYA => 'Lainnya', }; diff --git a/app/Http/Controllers/Web/Dashboard/ProfilPetaniController.php b/app/Http/Controllers/Web/Dashboard/ProfilPetaniController.php index 6d88699..dd154e5 100644 --- a/app/Http/Controllers/Web/Dashboard/ProfilPetaniController.php +++ b/app/Http/Controllers/Web/Dashboard/ProfilPetaniController.php @@ -17,12 +17,12 @@ class ProfilPetaniController extends Controller { public function index() { - if (!Gate::allows('super_admin') && !Gate::allows('admin')) { + if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { abort(403); } $title = 'Dashboard Profil Petani'; - $komoditas = Komoditas::all(); + $komoditas = Komoditas::where('is_utama', true)->get(); $petani = Petani::pluck('id'); $lahan = Lahan::whereIn('petani_id', $petani)->get(); @@ -35,8 +35,8 @@ class ProfilPetaniController extends Controller ->get(); $lahanSummary = Lahan::select( 'komoditas_id', - DB::raw('COUNT(*) as total', - DB::raw('SUM(luas_lahan) as luas_lahan')) + DB::raw('COUNT(*) as total'), + DB::raw('SUM(luas_lahan) as luas_lahan') ) ->whereIn('petani_id', $petani) ->groupBy('komoditas_id') diff --git a/app/Http/Controllers/Web/Dashboard/SurveyPetaniController.php b/app/Http/Controllers/Web/Dashboard/SurveyPetaniController.php index eaf892c..3c3042e 100644 --- a/app/Http/Controllers/Web/Dashboard/SurveyPetaniController.php +++ b/app/Http/Controllers/Web/Dashboard/SurveyPetaniController.php @@ -57,6 +57,7 @@ class SurveyPetaniController extends Controller ->leftJoin("{$komoditasTable} as k", 'k.id', '=', 'p.komoditas_id') ->selectRaw("COALESCE(k.nama, 'Belum ditentukan') as nama") ->selectRaw('COUNT(p.id) as petani_count') + ->where('k.is_utama', true) ->groupBy('k.id', 'k.nama') ->orderByDesc('petani_count') ->get(); @@ -155,6 +156,7 @@ class SurveyPetaniController extends Controller ->leftJoin("{$komoditasTable} as k", 'k.id', '=', 'p.komoditas_id') ->selectRaw("COALESCE(k.nama, 'Belum ditentukan') as label") ->selectRaw('COALESCE(SUM(l.jumlah_tanaman), 0) as total') + ->where('k.is_utama', true) ->groupBy('k.id', 'k.nama') ->orderByDesc('total') ->get(); diff --git a/app/Http/Controllers/Web/Master/KomoditasController.php b/app/Http/Controllers/Web/Master/KomoditasController.php index 14d4583..3f599f6 100644 --- a/app/Http/Controllers/Web/Master/KomoditasController.php +++ b/app/Http/Controllers/Web/Master/KomoditasController.php @@ -28,9 +28,13 @@ class KomoditasController extends Controller public function store(Request $request) { $validator = Validator::make($request->all(), [ - 'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama'], // Tambah unique biar nggak ada data kembar + 'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama'], + 'kode' => ['required', 'string', 'max:2', 'unique:master_komoditas,kode'], + 'is_utama' => ['nullable', 'boolean'], ], [ - 'nama.unique' => 'Nama komoditas ini sudah ada di database.' + 'nama.unique' => 'Nama komoditas ini sudah ada di database.', + 'kode.unique' => 'Kode komoditas ini sudah ada di database.', + 'kode.max' => 'Kode komoditas maksimal 2 Digit.' ]); if ($validator->fails()) { @@ -39,6 +43,8 @@ class KomoditasController extends Controller Komoditas::create([ 'nama' => $request->nama, + 'kode' => $request->kode, + 'is_utama' => $request->is_utama, 'created_by' => auth()->id(), 'updated_by' => auth()->id(), ]); @@ -55,9 +61,13 @@ class KomoditasController extends Controller public function update(Request $request, $id) { $validator = Validator::make($request->all(), [ - 'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama,' . $id], + 'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama,' . $id], + 'kode' => ['required', 'string', 'max:2', 'unique:master_komoditas,kode,' . $id], + 'is_utama' => ['nullable', 'boolean'], ], [ - 'nama.unique' => 'Nama komoditas ini sudah digunakan.' + 'nama.unique' => 'Nama komoditas ini sudah ada di database.', + 'kode.unique' => 'Kode komoditas ini sudah ada di database.', + 'kode.max' => 'Kode komoditas maksimal 2 Digit.' ]); if ($validator->fails()) { @@ -66,8 +76,10 @@ class KomoditasController extends Controller $komoditas = Komoditas::findOrFail($id); $komoditas->update([ - 'nama' => $request->nama, - 'updated_by' => auth()->id(), + 'nama' => $request->nama, + 'kode' => $request->kode, + 'is_utama' => $request->is_utama, + 'updated_by' => auth()->id(), ]); return response()->json(['status' => 'success', 'message' => 'Komoditas berhasil diupdate.']); diff --git a/app/Http/Controllers/Web/Produktivitas/PetaniController.php b/app/Http/Controllers/Web/Produktivitas/PetaniController.php index 387ba64..92a99ef 100644 --- a/app/Http/Controllers/Web/Produktivitas/PetaniController.php +++ b/app/Http/Controllers/Web/Produktivitas/PetaniController.php @@ -15,6 +15,9 @@ use App\Models\Wilayah\Provinsi; use App\Models\Pertanian\Petani; use App\Models\Wilayah\DesaKelurahan; use App\Models\Pertanian\Komoditas; +use App\Models\Pertanian\Tanaman; +use App\Models\Pertanian\Lahan; +use App\Models\Pertanian\SkorPetani; use App\Enums\Pendidikan; use App\Enums\Pekerjaan; @@ -27,6 +30,10 @@ class PetaniController extends Controller */ public function index(Request $request) { + if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) { + abort(403); + } + $provinsi = Provinsi::orderBy('kode', 'asc')->get(); $query = Petani::with('desakelurahan') @@ -39,9 +46,35 @@ class PetaniController extends Controller }); } + if (auth()->user()->role->value === 'fasilitator') { + $query->where('created_by', auth()->user()->id); + } + $petani = $query->paginate($request->per_page ?? 10); - return view('produktivitas.petani.index', compact('petani', 'provinsi')); + $komoditas = Komoditas::where('is_utama', true)->get(); + $lahan = Lahan::whereIn('petani_id', $petani->pluck('id')) + ->whereIn('komoditas_id', $komoditas->pluck('id')) + ->get(); + $tanaman = Tanaman::whereIn('lahan_id', $lahan->pluck('id')) + ->whereIn('lahan_id', $lahan->pluck('id')) + ->get(); + + $case = " + CASE + WHEN skor_kesiapan_adopsi >= 4.0 THEN 'Penggerak' + WHEN skor_kesiapan_adopsi >= 3.0 THEN 'Perintis' + WHEN skor_kesiapan_adopsi >= 2.0 THEN 'Pemerhati' + WHEN skor_kesiapan_adopsi >= 1.0 THEN 'Pemula' + ELSE 'Belum Lengkap' + END + "; + $skor = SkorPetani::selectRaw("$case AS segmen, COUNT(*) AS total") + ->whereIn('petani_id', $petani->pluck('id')) + ->groupByRaw($case) + ->get(); + + return view('produktivitas.petani.index', compact('petani', 'provinsi', 'lahan', 'komoditas', 'tanaman', 'skor')); } public function create() @@ -54,7 +87,7 @@ class PetaniController extends Controller $pekerjaan = Pekerjaan::options(); $pernikahan = Pernikahan::options(); - $komoditas = Komoditas::all(); + $komoditas = Komoditas::where('is_utama', true)->get(); $provinsi = Provinsi::orderBy('kode', 'asc')->get(); @@ -174,7 +207,7 @@ class PetaniController extends Controller $provinsi = Provinsi::all(); - $komoditas = Komoditas::all(); + $komoditas = Komoditas::where('is_utama', true)->get(); return view('produktivitas.petani.edit', compact('petani', 'pendidikan', 'pekerjaan', 'pernikahan', 'provinsi', 'komoditas')); diff --git a/app/Http/Controllers/Web/Produktivitas/PetaniLahanController.php b/app/Http/Controllers/Web/Produktivitas/PetaniLahanController.php index 248413b..c4febdb 100644 --- a/app/Http/Controllers/Web/Produktivitas/PetaniLahanController.php +++ b/app/Http/Controllers/Web/Produktivitas/PetaniLahanController.php @@ -81,8 +81,8 @@ class PetaniLahanController extends Controller 'komoditas_id' => ['required', 'exists:master_komoditas,id'], 'jenis_komoditas_id' => ['required', 'exists:jenis_komoditas,id'], 'varietas_id' => ['nullable', 'exists:master_varietas,id'], - 'jumlah_tanaman' => ['required', 'numeric', 'min:1'], - 'umur_lahan' => ['required', 'numeric', 'min:1'], + 'jumlah_tanaman' => ['required', 'numeric', 'min:0'], + 'umur_lahan' => ['nullable', 'numeric', 'min:1'], 'umur_tanaman' => ['required', 'numeric', 'min:1'], 'kondisi_tanaman' => ['required', 'string', new Enum(KondisiTanaman::class)], 'serangan_hama' => ['nullable', 'string', new Enum(SeranganHama::class)], @@ -104,8 +104,8 @@ class PetaniLahanController extends Controller 'luas_lahan.min' => 'Luas lahan minimal 0.01.', 'jumlah_tanaman.required' => 'Jumlah tanaman wajib diisi.', 'jumlah_tanaman.numeric' => 'Jumlah tanaman diisi dengan angka.', - 'jumlah_tanaman.min' => 'Jumlah tanaman minimal 1.', - 'umur_lahan.required' => 'Umur lahan wajib diisi.', + 'jumlah_tanaman.min' => 'Jumlah tanaman minimal 0.', + //'umur_lahan.required' => 'Umur lahan wajib diisi.', 'umur_lahan.numeric' => 'Umur lahan diisi dengan angka.', 'umur_lahan.min' => 'Umur lahan minimal 1.', 'umur_tanaman.required' => 'Umur tanaman wajib diisi.', @@ -163,7 +163,7 @@ class PetaniLahanController extends Controller 'updated_by' => auth()->id()] ); - if ($lahan) { + if ($lahan && $lahan->jumlah_tanaman > 0) { $data = collect(range(1, $lahan->jumlah_tanaman))->map(function ($i) use ($lahan, $komoditas, $lahanUid) { return [ 'lahan_id' => $lahan->id, @@ -199,6 +199,8 @@ class PetaniLahanController extends Controller return redirect()->route('petani.lahan-tanaman.index', $petaniId)->with('success', 'Lahan berhasil ditambahkan.'); } + + return redirect()->route('petani.lahan-tanaman.index', $petaniId)->with('success', 'Lahan berhasil ditambahkan.'); } public function show(string $petaniId, string $id) diff --git a/app/Models/Pertanian/AksesPasar.php b/app/Models/Pertanian/AksesPasar.php index f455bd2..8f77920 100644 --- a/app/Models/Pertanian/AksesPasar.php +++ b/app/Models/Pertanian/AksesPasar.php @@ -50,7 +50,7 @@ class AksesPasar extends Model static::saved(function (AksesPasar $aksesPasar) { $petani = Petani::find($aksesPasar->petani_id); - $skor = SkorPetani::where('petani_id')->orderBy('id')->first(); + $skor = SkorPetani::where('petani_id', $petani->id)->orderBy('id')->first(); if (!$skor) { $petaniUid = $petani->uid; $part = explode('-', $petaniUid); @@ -61,6 +61,7 @@ class AksesPasar extends Model 'updated_by' => $petani->updated_by ]); } + $skor->update([ 'skor_d6_k1_6_pengalaman_menjual_ke_saluran_berbeda' => $aksesPasar->skor_pengalaman, 'skor_d6_k4_1_kesadaran_akses_pasar_premium' => $aksesPasar->skor_kesadaran_premium, diff --git a/app/Models/Pertanian/Komoditas.php b/app/Models/Pertanian/Komoditas.php index fc044b0..53b992c 100644 --- a/app/Models/Pertanian/Komoditas.php +++ b/app/Models/Pertanian/Komoditas.php @@ -16,11 +16,17 @@ class Komoditas extends Model protected $table = 'master_komoditas'; + protected $casts = [ + 'is_utama' => 'boolean', + ]; + protected $fillable = [ 'nama', + 'kode', 'created_by', 'updated_by', 'deleted_by', + 'is_utama', ]; protected static function booted() diff --git a/app/Models/Pertanian/Petani.php b/app/Models/Pertanian/Petani.php index 82db184..95cb12a 100644 --- a/app/Models/Pertanian/Petani.php +++ b/app/Models/Pertanian/Petani.php @@ -138,9 +138,9 @@ class Petani extends Model return $this->hasMany(SurveySertifikasi::class, 'petani_id'); } - public function surveyProduktivitas(): HasOne + public function surveyProduktivitas(): HasMany { - return $this->hasOne(SurveyProduktivitas::class, 'petani_id')->latestOfMany(); + return $this->hasMany(SurveyProduktivitas::class, 'petani_id'); } public function lahans(): HasMany diff --git a/app/Models/Pertanian/PraktikBudidaya.php b/app/Models/Pertanian/PraktikBudidaya.php index 9f82177..0a3782c 100644 --- a/app/Models/Pertanian/PraktikBudidaya.php +++ b/app/Models/Pertanian/PraktikBudidaya.php @@ -91,16 +91,29 @@ class PraktikBudidaya extends Model 'updated_by' => $petani->updated_by ]); } + + $kebiasaan = $praktikBudidaya->kebiasaan_konservasi_tanah ? count($praktikBudidaya->kebiasaan_konservasi_tanah) : 0; + $pemahaman = $praktikBudidaya->pemahaman_manfaat_konservasi_tanah == 'Ya, tahu manfaatnya' ? 1 : 0; + $skor_konservasi_tanah = 0; + if ($kebiasaan == 0) { + $skor_konservasi_tanah = 1; + } elseif ($kebiasaan == 1 && $pemahaman == 0) { + $skor_konservasi_tanah = 2; + } elseif ($kebiasaan == 1 && $pemahaman == 1) { + $skor_konservasi_tanah = 3; + } elseif ($kebiasaan > 1 && $pemahaman == 0) { + $skor_konservasi_tanah = 4; + } elseif ($kebiasaan > 1 && $pemahaman == 1) { + $skor_konservasi_tanah = 5; + } $skor->update([ - - 'skor_d2_k2_3_praktik_pemangkasan' => $praktikBudidaya->frekuensi_pemangkasan_komoditas_utama, + 'skor_d2_k2_3_praktik_pemangkasan' => $praktikBudidaya->frekuensi_pemangkasan_utama, 'skor_d2_k2_4_praktik_pemupukan' => $praktikBudidaya->pemberian_pupuk, - 'skor_d2_k2_5_pengendalian_opt' => $praktikBudidaya->metode_penanganan_hama_penyakit, + 'skor_d2_k2_5_pengendalian_opt' => $praktikBudidaya->metode_penanganan_opt, 'skor_d2_k2_6_sanitasi_kebun' => $praktikBudidaya->frekuensi_sanitasi_lahan, 'skor_d2_k2_6b_pengelolaan_gulma' => $praktikBudidaya->penanganan_gulma, - 'skor_d2_k2_7_penglolaan_air_irigasi' => $praktikBudidaya->kondisi_pengelolaan_air_irigasi, - //'skor_d2_k2_8_praktik_konservasi_tanah' => $praktikBudidaya->kebiasaan_konservasi_tanah, - //'skor_d2_k3_1_penentuan_pematangan' => $praktikBudidaya-> + 'skor_d2_k2_7_penglolaan_air_irigasi' => $praktikBudidaya->kondisi_pengelolaan_air, + 'skor_d2_k2_8_praktik_konservasi_tanah' => $skor_konservasi_tanah, ]); }); } diff --git a/app/Models/Pertanian/SkorPetani.php b/app/Models/Pertanian/SkorPetani.php index 69c649b..ccb5a4b 100644 --- a/app/Models/Pertanian/SkorPetani.php +++ b/app/Models/Pertanian/SkorPetani.php @@ -50,7 +50,7 @@ class SkorPetani extends Model 'skor_d4_k5_2_pengalaman_kredit_formal', 'skor_d4_k5_3_kepemilikan_aset_produktif', 'skor_d4_k5_4_kepemilikan_aset_tidak_produktif', - 'skor_d4_k5_4_5_akses_program_bantuan', + 'skor_d4_k5_4_akses_program_bantuan', 'skor_d4_k6_3_keberadaan_hutang_terkait_panen', 'skor_d4_k6_5a_praktik_ijon', 'skor_d4_k6_5b_kebebasan_memilih_pembeli', diff --git a/app/Models/Pertanian/SosialEkonomi.php b/app/Models/Pertanian/SosialEkonomi.php index 4cb082e..2cabcb2 100644 --- a/app/Models/Pertanian/SosialEkonomi.php +++ b/app/Models/Pertanian/SosialEkonomi.php @@ -41,6 +41,7 @@ use App\Enums\SosialEkonomi\UsahaMutuTambahanHarga; use App\Models\Pertanian\Petani; use App\Models\Pertanian\SkorPetani; +use App\Models\Pertanian\PraktikBudidaya; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -204,7 +205,42 @@ class SosialEkonomi extends Model 'updated_by' => $petani->updated_by ]); } + $praktik = PraktikBudidaya::where('petani_id', $petani->id)->orderBy('id')->first(); + $pendapatan = PendapatanKomoditas::where('sosial_ekonomi_id', $sosialEkonomi->id)->get(); + + $rasio = 0; + if ($praktik && ($pendapatan && $pendapatan->count() > 0 && $pendapatan->sum('pendapatan') > 0)) { + $rasio = $praktik->total_estimasi_biaya_produksi / $pendapatan->sum('pendapatan'); + } + if ($rasio >= 0.8) { + $skorRasio = 1; + } else if ($rasio >= 0.6) { + $skorRasio = 2; + } else if ($rasio >= 0.45) { + $skorRasio = 3; + } else if ($rasio >= 0.3) { + $skorRasio = 4; + } else { + $skorRasio = 5; + } + $skor->update([ + 'skor_d4_k3_1_praktik_baru' => $sosialEkonomi->kemauan_mencoba_praktik_baru?->value, + 'skor_d4_k3_4_pemahaman_mutu_harga' => $sosialEkonomi->pemahaman_mutu_harga?->value, + 'skor_d4_k3_5_role_model' => $sosialEkonomi->panutan_petani_sukses?->value, + 'skor_d4_k3_6_kemampuan_keterlibatan_program' => $sosialEkonomi->kemauan_ikut_program?->value, + 'skor_d4_k3_7_orientasi_jangka_panjang' => $sosialEkonomi->orientasi_rencana_jangka_panjang?->value, + + 'skor_d4_k2_5_stabilitas_penghasilan' => $sosialEkonomi->skor_periode_paceklik?->value, + 'skor_d4_k2_8_kemampuan_menabung' => $sosialEkonomi->skor_kemampuan_menabung?->value, + 'skor_d4_k2_9_kecukupan_penghasilan' => $sosialEkonomi->skor_kecukupan_penghasilan?->value, + 'skor_d4_k2_3_k2_7_rasio_biaya_produksi_pendapatan' => $skorRasio, + 'skor_d4_k2_11_hak_kelola_lahan' => $sosialEkonomi->skor_kejelasan_status_lahan?->value, + + 'skor_d4_k4_2_keaktifan_pertemuan' => $sosialEkonomi->keaktifan_pertemuan_kelompok?->value, + 'skor_d4_k4_3_peran_dalam_kelompok' => $sosialEkonomi->peran_dalam_kelompok?->value, + 'skor_d4_k4_4_manfaat_dirasakan' => $sosialEkonomi->manfaat_kelompok_tani?->value, + 'skor_d4_k5_1_kepemilikan_rekening' => $sosialEkonomi->status_rekening_tabungan?->value, 'skor_d4_k5_2_pengalaman_kredit_formal' => $sosialEkonomi->pengalaman_kredit_kebun?->value, 'skor_d4_k5_3_kepemilikan_aset_produktif' => $sosialEkonomi->kondisi_aset_produktif?->value, diff --git a/app/Models/Pertanian/SurveyPanen.php b/app/Models/Pertanian/SurveyPanen.php index 04a4c18..5a7f4ab 100644 --- a/app/Models/Pertanian/SurveyPanen.php +++ b/app/Models/Pertanian/SurveyPanen.php @@ -44,6 +44,30 @@ class SurveyPanen extends Model 'deleted_by', ]; + protected static function booted(): void + { + static::saved(function (SurveyPanen $survey) { + + $petani = Petani::find($survey->petani_id); + $skor = SkorPetani::where('petani_id', $petani->id)->orderBy('id')->first(); + if (!$skor) { + $petaniUid = $petani->uid; + $part = explode('-', $petaniUid); + $skor = SkorPetani::create([ + 'petani_id' => $petani->id, + 'uid' => 'SKR-' . $part[1] . '-' . strtoupper(Str::random(10)), + 'created_by' => $petani->created_by, + 'updated_by' => $petani->updated_by + ]); + } + + $skor->update([ + 'skor_d2_k3_1_penentuan_pematangan' => $survey->dasar_penentuan_panen, + 'skor_d2_k3_5_sortasi_awal_pemisahan_kualitas' => $survey->praktik_sortasi, + ]); + }); + } + public function petani(): BelongsTo { return $this->belongsTo(Petani::class, 'petani_id'); diff --git a/database/migrations/2026_06_29_141634_create_praktik_budidaya_table.php b/database/migrations/2026_06_29_141634_create_praktik_budidaya_table.php index 0cac968..4491c7c 100644 --- a/database/migrations/2026_06_29_141634_create_praktik_budidaya_table.php +++ b/database/migrations/2026_06_29_141634_create_praktik_budidaya_table.php @@ -35,24 +35,25 @@ return new class extends Migration $table->string('cara_pemberian_pupuk')->nullable(); // 2.5 Pengendalian Organisme Pengganggu Tumbuhan (OPT) $table->integer('metode_penanganan_opt')->nullable(); - $table->string('jenis_hama')->nullable(); - $table->string('jenis_penyakit')->nullable(); + $table->jsonb('jenis_hama')->nullable(); + $table->jsonb('jenis_penyakit')->nullable(); $table->string('intensitas_serangan')->nullable(); $table->string('waktu_kemunculan_terparah')->nullable(); $table->string('metode_paling_sering_dilakukan')->nullable(); - $table->integer('volume_obat_obatan_permusim')->nullable(); + $table->decimal('volume_obat_obatan_padat_permusim', 10, 2)->nullable(); + $table->decimal('volume_obat_obatan_cair_permusim', 10, 2)->nullable(); // 2.6 Sanitasi Kebun $table->integer('frekuensi_sanitasi_lahan')->nullable(); $table->string('penanganan_sisa_buah_ranting')->nullable(); $table->integer('penanganan_gulma')->nullable(); // 2.7 Pengelolaan Air & irigasi $table->integer('kondisi_pengelolaan_air')->nullable(); - $table->string('sumber_air')->nullable(); + $table->jsonb('sumber_air')->nullable(); $table->string('sistem_irigasi')->nullable(); $table->string('kebutuhan_air_permusim')->nullable(); // 2.8 Praktik konservasi tanah - $table->string('kebiasaan_konservasi_tanah')->nullable(); + $table->jsonb('kebiasaan_konservasi_tanah')->nullable(); $table->string('pemahaman_manfaat_konservasi_tanah')->nullable(); $table->integer('nilai_konservasi_tanah')->nullable(); @@ -99,7 +100,7 @@ return new class extends Migration $table->string('tindakan_panen_reject')->nullable(); $table->decimal('upah_tenaga_panen', 13, 2)->nullable(); $table->decimal('biaya_pengangkutan_panen', 13, 2)->nullable(); - $table->decimal('biaya_wadah-Panen', 13, 2)->nullable(); + $table->decimal('biaya_wadah_Panen', 13, 2)->nullable(); $table->decimal('biaya_sewa_alat_panen', 13, 2)->nullable(); $table->decimal('biaya_panen_lainnya', 13, 2)->nullable(); $table->decimal('total_estimasi_biaya_panen', 13, 2)->nullable(); diff --git a/database/migrations/2026_07_15_110145_update_komoditas_table.php b/database/migrations/2026_07_15_110145_update_komoditas_table.php new file mode 100644 index 0000000..41dd782 --- /dev/null +++ b/database/migrations/2026_07_15_110145_update_komoditas_table.php @@ -0,0 +1,25 @@ +boolean('is_utama')->default(false); + }); + } + + public function down(): void + { + Schema::table('master_komoditas', function (Blueprint $table) { + $table->dropColumn('is_utama'); + }); + } +}; diff --git a/resources/views/components/summary-card.blade.php b/resources/views/components/summary-card.blade.php index 901a701..7f5d918 100644 --- a/resources/views/components/summary-card.blade.php +++ b/resources/views/components/summary-card.blade.php @@ -4,7 +4,7 @@
{{ $title }}
-Lahan
@@ -91,10 +91,10 @@