diff --git a/app/Http/Controllers/Web/Produktivitas/PetaniController.php b/app/Http/Controllers/Web/Produktivitas/PetaniController.php index 72dc6ce..73dc694 100644 --- a/app/Http/Controllers/Web/Produktivitas/PetaniController.php +++ b/app/Http/Controllers/Web/Produktivitas/PetaniController.php @@ -272,7 +272,17 @@ class PetaniController extends Controller try { $petani = Petani::findOrFail($id); - $petani->delete(); + if (auth()->user()->role->value === 'fasilitator' && $petani->created_by !== auth()->id()) { + return response()->json(['message' => 'Anda tidak memiliki akses.'], 403); + } + + DB::transaction(function () use ($petani) { + $petani->update([ + 'deleted_by' => auth()->id(), + ]); + + $petani->delete(); + }); return response()->json([ 'status' => 'success', diff --git a/resources/views/produktivitas/petani/header.blade.php b/resources/views/produktivitas/petani/header.blade.php index e3ed814..170133b 100644 --- a/resources/views/produktivitas/petani/header.blade.php +++ b/resources/views/produktivitas/petani/header.blade.php @@ -66,33 +66,11 @@
@php $skorLahanTanaman = isset($petani) ? $petani->skorLahanTanaman() : null; - $skorPraktikBudidaya = isset($petani) ? $petani->skorPraktikBudidaya() : null; - $skorPendidikan = isset($petani) ? $petani->skorPendidikan() : null; - $skorSosialEkonomiSegmen = isset($petani) ? $petani->skorSosialEkonomi() : null; - $skorAksesPasarSegmen = isset($petani) ? $petani->skorAksesPasar() : null; - - $skorSegmenPetani = collect([ - $skorLahanTanaman, - $skorPraktikBudidaya, - $skorPendidikan, - $skorSosialEkonomiSegmen, - $skorAksesPasarSegmen, - ])->filter(fn ($value) => !is_null($value))->sum(); - - $skorSegmenPetani = $skorSegmenPetani > 0 ? round($skorSegmenPetani, 1) : null; - $segmenPetani = is_null($skorSegmenPetani) ? null : match (true) { - $skorSegmenPetani >= 4.0 => 'Penggerak', - $skorSegmenPetani >= 3.0 => 'Perintis', - $skorSegmenPetani >= 2.0 => 'Pemerhati', - $skorSegmenPetani >= 1.0 => 'Pemula', - default => 'Belum tersegmentasi', - }; $lahanPetani = isset($petani) && \Illuminate\Support\Facades\Schema::hasTable('map_lahan') ? $petani->lahans()->get() : collect(); - $totalLuasLahan = $petani ? $lahanPetani->where('komoditas_id', $petani->komoditas_id)->sum('luas_lahan') : 0; - $totalLuasLahanHa = $totalLuasLahan / 10000; + $totalLuasLahanHa = $petani ? $lahanPetani->where('komoditas_id', $petani->komoditas_id)->sum('luas_lahan') : 0; $lahanKomoditasUtamaIds = $petani ? $lahanPetani->where('komoditas_id', $petani->komoditas_id)->pluck('id') : collect(); @@ -100,9 +78,8 @@ ? \App\Models\Pertanian\Tanaman::whereIn('lahan_id', $lahanKomoditasUtamaIds)->count() : 0; $pendidikanLabel = isset($petani) ? $petani->pendidikan_terakhir?->label() : null; - @endphp - +
@@ -112,8 +89,8 @@

Segmen Petani

{{ $petani?->segmen() ?? '-' }}

- @if(!is_null($petani?->skor)) - Skor {{ number_format($petani?->skor->skor_kesiapan_adopsi, 1) }} + @if(!is_null($petani?->skor?->skor_kesiapan_adopsi)) + Skor {{ number_format($petani->skor->skor_kesiapan_adopsi, 1, ',', '.') }}/5 @else Belum terisi @endif @@ -187,35 +164,19 @@

@php $skorPraktik = isset($petani?->skor) ? $petani?->skor->skor_d2_sistem_praktik_budidaya : null; - if (!is_null($skorPraktik)) { - if ($skorPraktik >= 4) { - $praktik = 'Menjalankan GAP (' . number_format($skorPraktik, 1, ',', '.') . ')'; - } else if ($skorPraktik >= 2) { - $praktik = 'Menjalankan sebagian GAP (' . number_format($skorPraktik, 1, ',', '.') . ')'; - } else { - $praktik = 'Belum menjalankan GAP (' . number_format($skorPraktik, 1, ',', '.') . ')'; - } - } - @endphp - @php - $produktivitas = isset($petani?->surveyProduktivitas) ? $petani?->surveyProduktivitas : null; - if (!is_null($produktivitas)) { - $produktivitas = $produktivitas->where('komoditas_id', $petani->komoditas_id); - } + $labelPraktik = match (true) { + is_null($skorPraktik) => null, + $skorPraktik >= 4 => 'Penuh GAP', + $skorPraktik >= 2 => 'Sebagian GAP', + default => 'Belum GAP', + }; @endphp

Praktik Budidaya

-
- @if($produktivitas && count($produktivitas) > 0) - {{ number_format($produktivitas->sum('kuantitas'), 0, ',', '.') }} - {{ $produktivitas->first()->satuan == 'ha_tahun' ? 'Ha/Tahun' : 'Pohon/Tahun' }} - @else - - - @endif -
+
{{ $labelPraktik ?? '-' }}

@if(!is_null($skorPraktik)) - {{ $praktik }} + Skor {{ number_format($skorPraktik, 1, ',', '.') }}/5 @else Belum terisi @endif @@ -241,13 +202,15 @@ $pendapatanKomoditas = isset($sosialEkonomi) ? $sosialEkonomi->pendapatanKomoditas : null; @endphp @php + $rekeningValue = $sosialEkonomi?->status_rekening_tabungan?->value; + $kreditValue = $sosialEkonomi?->pengalaman_kredit_kebun?->value; $ekonomi = null; - if ($sosialEkonomi?->status_rekening_tabungan && $sosialEkonomi?->pengalaman_kredit_kebun) { - if ($sosialEkonomi?->status_rekening_tabungan > 1 && $sosialEkonomi?->pengalaman_kredit_kebun > 3) { + if ($rekeningValue && $kreditValue) { + if ($rekeningValue > 1 && $kreditValue > 3) { $ekonomi = 'Memiliki rekening dan pengalaman kredit'; - } elseif ($sosialEkonomi?->status_rekening_tabungan > 1 && $sosialEkonomi?->pengalaman_kredit_kebun <= 3) { + } elseif ($rekeningValue > 1 && $kreditValue <= 3) { $ekonomi = 'Memiliki rekening'; - } elseif ($sosialEkonomi?->status_rekening_tabungan == 1 && $sosialEkonomi?->pengalaman_kredit_kebun > 3) { + } elseif ($rekeningValue == 1 && $kreditValue > 3) { $ekonomi = 'Memiliki pengalaman kredit'; } else { $ekonomi = 'Tidak memiliki akses keuangan'; @@ -257,9 +220,9 @@ } @endphp

- @if(!is_null($pendapatanKomoditas)) - {{ number_format($pendapatanKomoditas->sum('pendapatan'), 0, ',', '.') }} - pendapatan (Rp) + @if($pendapatanKomoditas && $pendapatanKomoditas->isNotEmpty()) + Rp {{ number_format($pendapatanKomoditas->sum('pendapatan'), 0, ',', '.') }} + /musim @else - @endif @@ -303,30 +266,35 @@ @endphp @php $pengalaman = null; - if(!is_null($aksesPasar?->skor_pengalaman) && !is_null($aksesPasar->skor_kesadaran_premium)){ - if($aksesPasar->skor_pengalaman > 1){ - if ($aksesPasar->skor_kesadaran_premium == 5) { - $pengalaman = 'Akses saluran lain dan pasar premium'; - } else { - $pengalaman = 'Akses saluran lain'; - } - } else { - $pengalaman = 'Belum akses'; + if (!is_null($aksesPasar?->skor_pengalaman) && !is_null($aksesPasar->skor_kesadaran_premium)) { + $pengalaman = match ($aksesPasar->skor_pengalaman) { + 1 => 'Belum pernah coba saluran lain', + 2 => 'Pernah, kini tidak ada akses', + 3 => 'Pernah, sempat berhenti', + 4 => 'Pernah, sesekali masih jual', + 5 => 'Pernah & masih punya akses', + default => null, + }; + + if (!is_null($pengalaman) && $aksesPasar->skor_kesadaran_premium == 5) { + $pengalaman .= ' · kenal pasar premium'; } } @endphp
@if(!is_null($hargaJual)) - {{ number_format($hargaJual->harga_panen_terakhir, 0, ',', '.') }} - {{ $hargaJual->bentuk_produk }} + Rp {{ number_format($hargaJual->harga_panen_terakhir, 0, ',', '.') }} @else - @endif
-

+

+ @if(!is_null($hargaJual)) + {{ $hargaJual->bentuk_produk }} + @endif @if(!is_null($aksesPasar?->skor_pengalaman) && !is_null($aksesPasar->skor_kesadaran_premium)) - {{ $pengalaman }} - @else + {{ $hargaJual ? '·' : '' }} {{ $pengalaman }} + @elseif(is_null($hargaJual)) Belum terisi @endif