diff --git a/app/Http/Controllers/Web/Produktivitas/PetaniController.php b/app/Http/Controllers/Web/Produktivitas/PetaniController.php
index 6a176fd..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;
@@ -49,7 +52,29 @@ class PetaniController extends Controller
$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()
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 }}
-
{{ $count }}
+
{!! $count !!}
{{ $subtitle }}
diff --git a/resources/views/produktivitas/petani/add.blade.php b/resources/views/produktivitas/petani/add.blade.php
index 1d53f37..15fbb69 100644
--- a/resources/views/produktivitas/petani/add.blade.php
+++ b/resources/views/produktivitas/petani/add.blade.php
@@ -329,7 +329,7 @@
ktp: { required: true, digits: true, minlength: 16, maxlength: 16 },
kk: { required: true, digits: true, minlength: 16, maxlength: 16 },
tempat_lahir: { required: true },
- tanggal_lahir: { required: true, date: true },
+ tanggal_lahir: { required: true },
jenis_kelamin: { required: true },
pendidikan_terakhir: { required: true },
komoditas_id: { required: true },
@@ -349,7 +349,7 @@
ktp: { required: "NIK wajib diisi", digits: "NIK harus berupa angka", minlength: "NIK harus 16 digit", maxlength: "NIK harus 16 digit" },
kk: { digits: "No. KK harus berupa angka", minlength: "No. KK harus 16 digit", maxlength: "No. KK harus 16 digit" },
tempat_lahir: { required: "Tempat lahir wajib diisi" },
- tanggal_lahir: { required: "Tanggal lahir wajib diisi", date: "Format tanggal salah" },
+ tanggal_lahir: { required: "Tanggal lahir wajib diisi" },
jenis_kelamin: { required: "Jenis kelamin wajib diisi" },
pendidikan_terakhir: { required: "Pendidikan terakhir wajib diisi" },
komoditas_id: { required: "Komoditas wajib diisi" },
diff --git a/resources/views/produktivitas/petani/edit.blade.php b/resources/views/produktivitas/petani/edit.blade.php
index f7f8c64..cc3dd1b 100644
--- a/resources/views/produktivitas/petani/edit.blade.php
+++ b/resources/views/produktivitas/petani/edit.blade.php
@@ -334,7 +334,7 @@
ktp: { required: true, digits: true, minlength: 16, maxlength: 16 },
kk: { required: true, digits: true, minlength: 16, maxlength: 16 },
tempat_lahir: { required: true },
- tanggal_lahir: { required: true, date: true },
+ tanggal_lahir: { required: true },
jenis_kelamin: { required: true },
pendidikan_terakhir: { required: true },
komoditas_id: { required: true },
@@ -354,7 +354,7 @@
ktp: { required: "NIK wajib diisi", digits: "NIK harus berupa angka", minlength: "NIK harus 16 digit", maxlength: "NIK harus 16 digit" },
kk: { required: "No. KK wajib diisi", digits: "No. KK harus berupa angka", minlength: "No. KK harus 16 digit", maxlength: "No. KK harus 16 digit" },
tempat_lahir: { required: "Tempat lahir wajib diisi" },
- tanggal_lahir: { required: "Tanggal lahir wajib diisi", date: "Format tanggal salah" },
+ tanggal_lahir: { required: "Tanggal lahir wajib diisi" },
jenis_kelamin: { required: "Jenis kelamin wajib diisi" },
pendidikan_terakhir: { required: "Pendidikan terakhir wajib diisi" },
alamat: { required: "Alamat wajib diisi" },
diff --git a/resources/views/produktivitas/petani/header.blade.php b/resources/views/produktivitas/petani/header.blade.php
index ec77916..70b8c67 100644
--- a/resources/views/produktivitas/petani/header.blade.php
+++ b/resources/views/produktivitas/petani/header.blade.php
@@ -127,7 +127,7 @@
-
+
@@ -175,13 +175,13 @@
@if(!is_null($skorPraktik))