get(); $petani = Petani::pluck('id'); $lahan = Lahan::has('petani')->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 "; $countPetani = Petani::count(); $countKomoditas = Petani::whereIn('komoditas_id', $komoditas->pluck('id'))->distinct()->count('komoditas_id'); $sumLahan = Lahan::has('petani')->whereIn('komoditas_id', $komoditas->pluck('id'))->sum('luas_lahan'); $avgLahan = Lahan::has('petani')->whereIn('komoditas_id', $komoditas->pluck('id'))->avg('luas_lahan'); $avgSkor = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->whereIn('petani.komoditas_id', $komoditas->pluck('id')) ->avg('skor_kesiapan_adopsi'); if ($avgSkor >= 4.0) { $avgSegmen = 'Penggerak'; } elseif ($avgSkor >= 3.0) { $avgSegmen = 'Perintis'; } elseif ($avgSkor >= 2.0) { $avgSegmen = 'Pemerhati'; } elseif ($avgSkor >= 1.0) { $avgSegmen = 'Pemula'; } else { $avgSegmen = 'Belum Lengkap'; } $countDesa = Petani::whereIn('komoditas_id', $komoditas->pluck('id'))->distinct()->count('desa_kelurahan_id'); $countKecamatan = Petani::query() ->join('master_desa_kelurahan', 'petani.desa_kelurahan_id', '=', 'master_desa_kelurahan.id') ->join('master_kecamatan', 'master_desa_kelurahan.kecamatan_id', '=', 'master_kecamatan.id') ->whereIn('komoditas_id', $komoditas->pluck('id'))->distinct()->count('master_kecamatan.id'); $countSegmentasi = SkorPetani::selectRaw("$case AS segmen, COUNT(*) AS total") ->groupByRaw($case) ->get(); $countSegmentasiByKomoditas = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->selectRaw(" petani.komoditas_id, $case AS segmen, COUNT(petani.id) AS total ") ->groupBy('petani.komoditas_id') ->groupByRaw($case) ->get(); $avgDimensi = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->whereIn('petani.komoditas_id', $komoditas->pluck('id')) ->selectRaw(" avg(skor_d2_sistem_praktik_budidaya) as skor_d2_sistem_praktik_budidaya, avg(skor_d4_sosial_ekonomi) as skor_d4_sosial_ekonomi, avg(skor_d6_rantai_nilai_akses_pasar) as skor_d6_rantai_nilai_akses_pasar") ->first(); $avgKomponen = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->whereIn('petani.komoditas_id', $komoditas->pluck('id')) ->selectRaw("avg(skor_komp_1_d4_k3_motivasi_kapasitas_adopsi) as skor_komp_1_d4_k3_motivasi_kapasitas_adopsi, avg(skor_komp_2_d4_k2_ekonomi_rumah_tangga) as skor_komp_2_d4_k2_ekonomi_rumah_tangga, avg(skor_komp_3_d2_praktik_budidaya_gap) as skor_komp_3_d2_praktik_budidaya_gap, avg(skor_komp_4_d4_k4_keterlibatan_kelembagaan) as skor_komp_4_d4_k4_keterlibatan_kelembagaan, avg(skor_komp_5_d4_k5_k6_akses_kebebasan_keuangan) as skor_komp_5_d4_k5_k6_akses_kebebasan_keuangan, avg(skor_komp_6_d6_k1_k4_k5_rantai_nilai_akses_pasar) as skor_komp_6_d6_k1_k4_k5_rantai_nilai_akses_pasar") ->first(); $desaKelurahan = Petani::query() ->join('master_desa_kelurahan', 'petani.desa_kelurahan_id', '=', 'master_desa_kelurahan.id') ->join('master_kecamatan', 'master_desa_kelurahan.kecamatan_id', '=', 'master_kecamatan.id') ->join('master_kabupaten_kota', 'master_kecamatan.kabupaten_kota_id', '=', 'master_kabupaten_kota.id') ->join('master_provinsi', 'master_kabupaten_kota.provinsi_id', '=', 'master_provinsi.id') ->selectRaw(" master_desa_kelurahan.id as desa_kelurahan_id, master_desa_kelurahan.nama as desa_kelurahan, master_desa_kelurahan.path as path, master_kecamatan.id as kecamatan_id, master_kecamatan.nama as kecamatan, master_kabupaten_kota.id as kabupaten_id, master_kabupaten_kota.nama as kabupaten, master_provinsi.id as provinsi_id, master_provinsi.nama as provinsi ") ->whereIn('petani.id', $petani) ->distinct() ->get(); $mapSegmentasi = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->selectRaw("petani.desa_kelurahan_id, $case AS segmen, COUNT(petani.id) AS total ") ->groupBy('petani.desa_kelurahan_id') ->groupByRaw($case) ->get(); $mapAvgSkorSegmentasi = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->selectRaw("petani.desa_kelurahan_id, COUNT(petani.id) AS jumlah_petani, avg(skor_kesiapan_adopsi) AS skor, CASE WHEN AVG(skor_kesiapan_adopsi) >= 4 THEN 'Penggerak' WHEN AVG(skor_kesiapan_adopsi) >= 3 THEN 'Perintis' WHEN AVG(skor_kesiapan_adopsi) >= 2 THEN 'Pemerhati' WHEN AVG(skor_kesiapan_adopsi) >= 1 THEN 'Pemula' ELSE 'Belum Lengkap' END AS segmen ") ->groupBy('petani.desa_kelurahan_id') ->get(); $daftarPetani = Petani::query() ->whereIn('komoditas_id', $komoditas->pluck('id')) ->get(); return view('dashboard.indeks-petani', compact( 'komoditas', 'countPetani', 'countKomoditas', 'sumLahan', 'avgLahan', 'avgSkor', 'avgSegmen', 'countDesa', 'countKecamatan', 'countSegmentasi', 'countSegmentasiByKomoditas', 'avgDimensi', 'avgKomponen', 'desaKelurahan', 'mapSegmentasi', 'mapAvgSkorSegmentasi', 'daftarPetani', )); } }