From 8539bdcec40cc1dcc19dfc1c40219a02c0f4a19c Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Wed, 7 Oct 2026 12:03:02 +0700 Subject: [PATCH] update profil petani --- .../Web/Produktivitas/PetaniController.php | 36 +++++++++++++++- .../produktivitas/petani/index.blade.php | 41 +++++++++++++++---- 2 files changed, 69 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Web/Produktivitas/PetaniController.php b/app/Http/Controllers/Web/Produktivitas/PetaniController.php index 2ed4604..9d707a4 100644 --- a/app/Http/Controllers/Web/Produktivitas/PetaniController.php +++ b/app/Http/Controllers/Web/Produktivitas/PetaniController.php @@ -44,12 +44,23 @@ class PetaniController extends Controller ->orderBy('nama') ->first(); $selectedKabupatenId = $request->query('kabupaten_kota_id', $defaultKabupaten?->id); + $allowedSorts = ['nama_asc', 'nama_desc', 'luas_lahan_desc', 'luas_lahan_asc']; + $requestedSort = $request->query('sort_by') + ?? match ($request->query('sort_nama')) { + 'asc' => 'nama_asc', + 'desc' => 'nama_desc', + default => null, + }; + $filters = [ 'search' => $request->query('search'), 'komoditas_id' => $request->query('komoditas_id'), 'kabupaten_kota_id' => $selectedKabupatenId, 'kecamatan_id' => $request->query('kecamatan_id'), 'desa_kelurahan_id' => $request->query('desa_kelurahan_id'), + 'sort_by' => in_array($requestedSort, $allowedSorts, true) + ? $requestedSort + : null, ]; $query = Petani::with([ @@ -61,7 +72,7 @@ class PetaniController extends Controller 'skor:id,petani_id,skor_kesiapan_adopsi', 'creator:id,name,role', ]) - ->orderBy('created_at', 'desc'); + ->withSum('lahans as total_luas_lahan', 'luas_lahan'); $search = $request->filled('search') ? Str::lower($request->search) : null; if ($search) { @@ -95,6 +106,26 @@ class PetaniController extends Controller $query->where('created_by', auth()->user()->id); } + $totalPetani = (clone $query)->count(); + $totalPetaniLakiLaki = (clone $query)->where('jenis_kelamin', 1)->count(); + $totalPetaniPerempuan = (clone $query)->where('jenis_kelamin', 0)->count(); + + match ($filters['sort_by']) { + 'nama_asc' => $query->orderBy('nama', 'asc')->orderBy('created_at', 'desc'), + 'nama_desc' => $query->orderBy('nama', 'desc')->orderBy('created_at', 'desc'), + 'luas_lahan_desc' => $query->orderByDesc( + Lahan::selectRaw('COALESCE(SUM(luas_lahan), 0)') + ->whereColumn('map_lahan.petani_id', 'petani.id') + ->whereNull('map_lahan.deleted_at') + )->orderBy('created_at', 'desc'), + 'luas_lahan_asc' => $query->orderBy( + Lahan::selectRaw('COALESCE(SUM(luas_lahan), 0)') + ->whereColumn('map_lahan.petani_id', 'petani.id') + ->whereNull('map_lahan.deleted_at') + )->orderBy('created_at', 'desc'), + default => $query->orderBy('created_at', 'desc'), + }; + $summaryPetaniIds = (clone $query)->pluck('id'); $petani = $query->paginate($request->per_page ?? 10); @@ -176,6 +207,9 @@ class PetaniController extends Controller 'totalLahan', 'totalLuasLahan', 'totalTanaman', + 'totalPetani', + 'totalPetaniLakiLaki', + 'totalPetaniPerempuan', 'showFasilitatorColumn' )); } diff --git a/resources/views/produktivitas/petani/index.blade.php b/resources/views/produktivitas/petani/index.blade.php index 6a05cd8..eced01a 100644 --- a/resources/views/produktivitas/petani/index.blade.php +++ b/resources/views/produktivitas/petani/index.blade.php @@ -88,8 +88,8 @@
@@ -208,6 +208,22 @@
+
+ +
+
+
@@ -286,10 +303,9 @@ No Nama - Jenis Kelamin - Usia Desa/Kelurahan Komoditas Utama + Luas Lahan @if($showFasilitatorColumn) Fasilitator @endif @@ -301,11 +317,22 @@ @forelse($petani as $index => $item) {{ $loop->iteration }} - {{ $item->nama }} - {{ $item->jenis_kelamin ? 'Laki-laki' : 'Perempuan' }} - {{ $item->umur }} tahun + + {{ $item->nama }} + + {{ $item->jenis_kelamin ? 'Laki-laki' : 'Perempuan' }} + @if(! is_null($item->umur)) + , {{ $item->umur }} tahun + @endif + + {{ $item->desaKelurahan?->nama }}, {{ $item->desaKelurahan?->kecamatan?->nama }}, {{ $item->desaKelurahan?->kecamatan?->kabupatenKota?->nama }}, {{ $item->desaKelurahan?->kecamatan?->kabupatenKota?->provinsi?->nama }} {{ $item->komoditas?->nama }} + + + {{ number_format((float) ($item->total_luas_lahan ?? 0), 2, ',', '.') }} ha + + @if($showFasilitatorColumn) {{ $item->creator?->name ?? '-' }} @endif