where('is_utama', true)->get(); $komoditasIds = $komoditas->pluck('id'); $petaniIds = fn () => Petani::query()->select('id'); $lahanIds = fn () => Lahan::query() ->whereIn('petani_id', $petaniIds()) ->select('id'); $petaniSummary = Petani::select( 'komoditas_id', DB::raw('COUNT(*) as total') ) ->groupBy('komoditas_id') ->get(); $lahanSummary = Lahan::select( 'komoditas_id', DB::raw('COUNT(*) as total'), DB::raw('SUM(luas_lahan) as luas_lahan') ) ->whereIn('petani_id', $petaniIds()) ->groupBy('komoditas_id') ->get(); $tanamanSummary = Tanaman::select( 'komoditas_id', DB::raw('COUNT(*) as total') ) ->whereIn('lahan_id', $lahanIds()) ->groupBy('komoditas_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 "; $skorSummary = SkorPetani::selectRaw("$case AS segmen, COUNT(*) AS total") ->whereIn('petani_id', $petaniIds()) ->groupByRaw($case) ->get(); $skorKomoditasSummary = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->selectRaw(" petani.komoditas_id, $case AS segmen, COUNT(petani.id) AS total ") ->whereIn('petani_skor.petani_id', $petaniIds()) ->groupBy('petani.komoditas_id') ->groupByRaw($case) ->get(); $skorAverage = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->whereIn('petani_id', $petaniIds()) ->whereIn('petani.komoditas_id', $komoditasIds) ->avg('skor_kesiapan_adopsi'); if ($skorAverage >= 4.0) { $segmenAverage = 'Penggerak'; } elseif ($skorAverage >= 3.0) { $segmenAverage = 'Perintis'; } elseif ($skorAverage >= 2.0) { $segmenAverage = 'Pemerhati'; } elseif ($skorAverage >= 1.0) { $segmenAverage = 'Pemula'; } else { $segmenAverage = 'Belum Lengkap'; } $skorDimensi = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->whereIn('petani_id', $petaniIds()) ->whereIn('petani.komoditas_id', $komoditasIds) ->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(); $skorKomponen = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->whereIn('petani_id', $petaniIds()) ->whereIn('petani.komoditas_id', $komoditasIds) ->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(); $skorMultiDimensi = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->whereIn('petani_id', $petaniIds()) ->whereIn('petani.komoditas_id', $komoditasIds) ->selectRaw("$case AS segmen, avg(skor_kesiapan_adopsi) as skor_kesiapan_adopsi, 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") ->groupByRaw($case) ->get(); $skorMultiKomponen = SkorPetani::query() ->join('petani', 'petani_skor.petani_id', '=', 'petani.id') ->whereIn('petani_id', $petaniIds()) ->whereIn('petani.komoditas_id', $komoditasIds) ->selectRaw("$case AS segmen, avg(skor_kesiapan_adopsi) as skor_kesiapan_adopsi, 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") ->groupByRaw($case) ->get(); $petani = Petani::query() ->select('id', 'nama', 'jenis_kelamin', 'tanggal_lahir', 'komoditas_id') ->with([ 'komoditas:id,nama', 'skor:id,petani_id,skor_kesiapan_adopsi,skor_d2_sistem_praktik_budidaya,skor_d4_sosial_ekonomi,skor_d6_rantai_nilai_akses_pasar,skor_komp_1_d4_k3_motivasi_kapasitas_adopsi,skor_komp_2_d4_k2_ekonomi_rumah_tangga,skor_komp_3_d2_praktik_budidaya_gap,skor_komp_4_d4_k4_keterlibatan_kelembagaan,skor_komp_5_d4_k5_k6_akses_kebebasan_keuangan,skor_komp_6_d6_k1_k4_k5_rantai_nilai_akses_pasar', ]) ->whereIn('komoditas_id', $komoditasIds) ->orderBy('nama') ->get(); return view('dashboard.petani', compact('title', 'komoditas', 'petaniSummary', 'lahanSummary', 'tanamanSummary', 'skorSummary', 'skorKomoditasSummary', 'segmenAverage', 'skorAverage', 'skorDimensi', 'skorKomponen', 'skorMultiDimensi', 'skorMultiKomponen', 'petani', )); } }