This commit is contained in:
2026-07-07 23:24:54 +07:00
19 changed files with 668 additions and 211 deletions
+14
View File
@@ -0,0 +1,14 @@
<?php
namespace App\Enums;
enum KategoriPendapatanKomoditas: string
{
case UTAMA = 'utama';
case LAINNYA = 'lainnya';
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
+14
View File
@@ -0,0 +1,14 @@
<?php
namespace App\Enums;
enum PeriodePendapatan: string
{
case MUSIM = 'musim';
case TAHUN = 'tahun';
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace App\Enums;
enum PihakMembantuKonflik: string
{
case TIDAK_ADA_SELESAIKAN_SENDIRI = 'Tidak ada-selesaikan sendiri';
case ADA = 'Ada';
public function label(): string
{
return $this->value;
}
public static function options(): array
{
return collect(self::cases())->map(fn ($case) => [
'value' => $case->value,
'label' => $case->label(),
])->toArray();
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace App\Enums;
enum SkorKecukupanPenghasilan: int
{
case SANGAT_TIDAK_CUKUP = 1;
case KURANG_SERING_BERHUTANG = 2;
case CUKUP_PAS_PASAN = 3;
case CUKUP_ADA_SISA = 4;
case LEBIH_DARI_CUKUP = 5;
public function label(): string
{
return match ($this) {
self::SANGAT_TIDAK_CUKUP => 'Sangat tidak cukup',
self::KURANG_SERING_BERHUTANG => 'Kurang, sering berhutang',
self::CUKUP_PAS_PASAN => 'Cukup pas-pasan',
self::CUKUP_ADA_SISA => 'Cukup, kadang ada sisa',
self::LEBIH_DARI_CUKUP => 'Lebih dari cukup',
};
}
public static function options(): array
{
return collect(self::cases())->map(fn ($case) => [
'value' => $case->value,
'label' => $case->label(),
])->toArray();
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace App\Enums;
enum SkorKejelasanStatusLahan: int
{
case TIDAK_ADA_DOKUMEN_ADA_SENGKETA = 1;
case ADA_DOKUMEN_MASIH_SENGKETA = 2;
case PERNAH_SENGKETA_SELESAI = 3;
case LAHAN_ADAT_TANPA_SENGKETA = 4;
case BERSERTIFIKAT_TANPA_SENGKETA = 5;
public function label(): string
{
return match ($this) {
self::TIDAK_ADA_DOKUMEN_ADA_SENGKETA => 'Tidak ada dokumen & ada sengketa',
self::ADA_DOKUMEN_MASIH_SENGKETA => 'Ada dokumen tapi masih sengketa',
self::PERNAH_SENGKETA_SELESAI => 'Pernah sengketa, sudah selesai',
self::LAHAN_ADAT_TANPA_SENGKETA => 'Lahan adat/keluarga/perhutanan sosial tanpa sengketa',
self::BERSERTIFIKAT_TANPA_SENGKETA => 'Bersertifikat & tidak ada sengketa',
};
}
public static function options(): array
{
return collect(self::cases())->map(fn ($case) => [
'value' => $case->value,
'label' => $case->label(),
])->toArray();
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace App\Enums;
enum SkorKemampuanMenabung: int
{
case TIDAK_BISA = 1;
case PERNAH_TERPAKAI = 2;
case KADANG_KADANG = 3;
case BISA_TIDAK_TETAP = 4;
case RUTIN_TETAP = 5;
public function label(): string
{
return match ($this) {
self::TIDAK_BISA => 'Tidak bisa sama sekali',
self::PERNAH_TERPAKAI => 'Pernah tapi selalu terpakai',
self::KADANG_KADANG => 'Kadang-kadang',
self::BISA_TIDAK_TETAP => 'Bisa tapi tidak tetap',
self::RUTIN_TETAP => 'Rutin & jumlah tetap',
};
}
public static function options(): array
{
return collect(self::cases())->map(fn ($case) => [
'value' => $case->value,
'label' => $case->label(),
])->toArray();
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace App\Enums;
enum SkorPeriodePaceklik: int
{
case LEBIH_DARI_EMPAT_BULAN = 1;
case TIGA_SAMPAI_EMPAT_BULAN = 2;
case SATU_SAMPAI_DUA_BULAN = 3;
case SEBENTAR_TIDAK_MENENTU = 4;
case TIDAK_ADA_STABIL = 5;
public function label(): string
{
return match ($this) {
self::LEBIH_DARI_EMPAT_BULAN => '>4 bulan',
self::TIGA_SAMPAI_EMPAT_BULAN => '3-4 bulan',
self::SATU_SAMPAI_DUA_BULAN => '1-2 bulan',
self::SEBENTAR_TIDAK_MENENTU => 'Sebentar & tidak menentu',
self::TIDAK_ADA_STABIL => 'Tidak ada, stabil',
};
}
public static function options(): array
{
return collect(self::cases())->map(fn ($case) => [
'value' => $case->value,
'label' => $case->label(),
])->toArray();
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
@@ -0,0 +1,30 @@
<?php
namespace App\Enums;
enum StatusKepemilikanLahanSosialEkonomi: string
{
case MILIK_PRIBADI = 'Milik pribadi';
case MILIK_ORANG_TUA_KELUARGA = 'Milik orang tua-keluarga';
case SEWA_BAGI_HASIL = 'Sewa-bagi hasil';
case LAHAN_ADAT = 'Lahan adat';
case PERHUTANAN_SOSIAL = 'Perhutanan sosial';
public function label(): string
{
return $this->value;
}
public static function options(): array
{
return collect(self::cases())->map(fn ($case) => [
'value' => $case->value,
'label' => $case->label(),
])->toArray();
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace App\Enums;
enum StatusKonflik: string
{
case SUDAH_SELESAI = 'Sudah selesai';
case BELUM_MASIH_BERLANJUT = 'Belum, masih berlanjut';
public function label(): string
{
return $this->value;
}
public static function options(): array
{
return collect(self::cases())->map(fn ($case) => [
'value' => $case->value,
'label' => $case->label(),
])->toArray();
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Web\Dashboard;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Gate;
class DistribusiController extends Controller
{
public function index()
{
if (!Gate::allows('super_admin') && !Gate::allows('admin')) {
abort(403);
}
$title = 'Distribusi Dashboard';
return view('dashboard.distribusi', compact('title'));
}
}
@@ -253,11 +253,47 @@ class PetaniLahanController extends Controller
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}
public function summary(string $petaniId)
{
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
abort(403);
}
$petani = Petani::findOrFail($petaniId);
$lahan = Lahan::where('petani_id', $petaniId)
->sum('luas_lahan');
$tanaman = Tanaman::whereHas('lahan', function ($query) use ($petaniId) {
$query->where('petani_id', $petaniId);
})->count();
$komoditas = Lahan::where('petani_id', $petaniId)
->join('master_komoditas', 'map_lahan.komoditas_id', '=', 'master_komoditas.id')
->select('master_komoditas.nama', DB::raw('count(*) as total'))
->groupBy('master_komoditas.nama')
->orderBy('total', 'desc')
->first();
$kondisiLahan = Lahan::where('petani_id', $petaniId)
->select('kondisi_tanaman', DB::raw('count(*) as total'))
->groupBy('kondisi_tanaman')
->orderBy('total', 'desc')
->first();
return response()->json([
'status' => 'success',
'data' => [
'lahan' => $lahan,
'tanaman' => $tanaman,
'komoditas' => $komoditas ? $komoditas->nama : null,
'kondisi_lahan' => $kondisiLahan ? $kondisiLahan->kondisi_tanaman : null,
],
]);
}
}
@@ -3,6 +3,15 @@
namespace App\Http\Controllers\Web\Produktivitas;
use App\Http\Controllers\Controller;
use App\Enums\KategoriPendapatanKomoditas;
use App\Enums\PeriodePendapatan;
use App\Enums\PihakMembantuKonflik;
use App\Enums\SkorKecukupanPenghasilan;
use App\Enums\SkorKejelasanStatusLahan;
use App\Enums\SkorKemampuanMenabung;
use App\Enums\SkorPeriodePaceklik;
use App\Enums\StatusKepemilikanLahanSosialEkonomi;
use App\Enums\StatusKonflik;
use App\Models\Pertanian\Komoditas;
use App\Models\Pertanian\Lahan;
use App\Models\Pertanian\Petani;
@@ -32,14 +41,14 @@ class SosialEkonomiController extends Controller
$pendapatanLuarPertanian = $sosialEkonomi?->pendapatanLuarPertanian?->values() ?? collect();
$komoditasPetani = $this->komoditasPetani($petani);
return view('produktivitas.petani.sosial-ekonomi.index', compact(
return view('produktivitas.petani.sosial-ekonomi.index', array_merge(compact(
'petani',
'sosialEkonomi',
'pendapatanKomoditasUtama',
'pendapatanKomoditasLainnya',
'pendapatanLuarPertanian',
'komoditasPetani'
));
), $this->sosialEkonomiOptions()));
}
public function index(Request $request, Petani $petani)
@@ -87,14 +96,14 @@ class SosialEkonomiController extends Controller
return response()->json($sosialEkonomi);
}
return view($view, compact(
return view($view, array_merge(compact(
'petani',
'sosialEkonomi',
'komoditasPetani',
'pendapatanKomoditasUtama',
'pendapatanKomoditasLainnya',
'pendapatanLuarPertanian',
));
), $this->sosialEkonomiOptions()));
}
public function store(Request $request, ?Petani $petani = null): JsonResponse|RedirectResponse
@@ -214,29 +223,29 @@ class SosialEkonomiController extends Controller
'jumlah_tanggungan' => ['nullable', 'integer', 'min:0'],
'anak_masih_sekolah' => ['nullable', 'integer', 'min:0'],
'yang_ikut_bekerja' => ['nullable', 'integer', 'min:0'],
'skor_periode_paceklik' => ['nullable', 'integer', 'min:1', 'max:5'],
'skor_periode_paceklik' => ['nullable', 'integer', Rule::in(SkorPeriodePaceklik::values())],
'bulan_paceklik' => ['nullable', 'string', 'max:255'],
'sumber_penghasilan_paceklik' => ['nullable', 'string'],
'total_estimasi_biaya_kebun_per_musim' => ['nullable', 'integer', 'min:0'],
'skor_kemampuan_menabung' => ['nullable', 'integer', 'min:1', 'max:5'],
'skor_kemampuan_menabung' => ['nullable', 'integer', Rule::in(SkorKemampuanMenabung::values())],
'estimasi_tabungan_per_bulan' => ['nullable', 'integer', 'min:0'],
'skor_kecukupan_penghasilan' => ['nullable', 'integer', 'min:1', 'max:5'],
'skor_kecukupan_penghasilan' => ['nullable', 'integer', Rule::in(SkorKecukupanPenghasilan::values())],
'alasan_kecukupan_penghasilan' => ['nullable', 'string'],
'status_kepemilikan_lahan' => ['nullable', 'string', 'max:255'],
'skor_kejelasan_status_lahan' => ['nullable', 'integer', 'min:1', 'max:5'],
'status_kepemilikan_lahan' => ['nullable', 'string', Rule::in(StatusKepemilikanLahanSosialEkonomi::values())],
'skor_kejelasan_status_lahan' => ['nullable', 'integer', Rule::in(SkorKejelasanStatusLahan::values())],
'ada_sertifikat_dokumen' => ['nullable', 'boolean'],
'ada_sengketa' => ['nullable', 'boolean'],
'keterangan_sengketa' => ['nullable', 'string'],
'pihak_membantu_konflik' => ['nullable', 'string', 'max:255'],
'pihak_membantu_konflik' => ['nullable', 'string', Rule::in(PihakMembantuKonflik::values())],
'pihak_membantu_konflik_nama' => ['nullable', 'string', 'max:255'],
'tahun_bantuan_konflik' => ['nullable', 'integer', 'digits:4'],
'status_konflik' => ['nullable', 'string', 'max:255'],
'status_konflik' => ['nullable', 'string', Rule::in(StatusKonflik::values())],
'pendapatan_komoditas' => ['nullable', 'array'],
'pendapatan_komoditas.*.kategori' => ['required_with:pendapatan_komoditas', 'string', 'in:utama,lainnya'],
'pendapatan_komoditas.*.kategori' => ['required_with:pendapatan_komoditas', 'string', Rule::in(KategoriPendapatanKomoditas::values())],
'pendapatan_komoditas.*.komoditas' => ['nullable', 'string', 'max:255'],
'pendapatan_komoditas.*.pendapatan' => ['nullable', 'integer', 'min:0'],
'pendapatan_komoditas.*.periode' => ['nullable', 'string', 'in:musim,tahun'],
'pendapatan_komoditas.*.periode' => ['nullable', 'string', Rule::in(PeriodePendapatan::values())],
'pendapatan_luar_pertanian' => ['nullable', 'array'],
'pendapatan_luar_pertanian.*.jenis_pekerjaan' => ['nullable', 'string', 'max:255'],
@@ -253,7 +262,9 @@ class SosialEkonomiController extends Controller
])
->all();
if (($payload['pihak_membantu_konflik'] ?? null) === 'Tidak ada-selesaikan sendiri') {
$payload = $this->normalizeSkorPayload($payload);
if (($payload['pihak_membantu_konflik'] ?? null) === PihakMembantuKonflik::TIDAK_ADA_SELESAIKAN_SENDIRI->value) {
$payload['pihak_membantu_konflik_nama'] = null;
$payload['tahun_bantuan_konflik'] = null;
}
@@ -261,6 +272,22 @@ class SosialEkonomiController extends Controller
return $payload;
}
private function normalizeSkorPayload(array $payload): array
{
foreach ([
'skor_periode_paceklik',
'skor_kemampuan_menabung',
'skor_kecukupan_penghasilan',
'skor_kejelasan_status_lahan',
] as $field) {
if (array_key_exists($field, $payload) && !is_null($payload[$field]) && $payload[$field] !== '') {
$payload[$field] = (int) $payload[$field];
}
}
return $payload;
}
private function syncPendapatanKomoditas(SosialEkonomi $sosialEkonomi, array $items): void
{
$sosialEkonomi->pendapatanKomoditas()->delete();
@@ -333,4 +360,18 @@ class SosialEkonomiController extends Controller
->get();
}
private function sosialEkonomiOptions(): array
{
return [
'periodePaceklikOptions' => SkorPeriodePaceklik::options(),
'kemampuanMenabungOptions' => SkorKemampuanMenabung::options(),
'kecukupanPenghasilanOptions' => SkorKecukupanPenghasilan::options(),
'kejelasanStatusLahanOptions' => SkorKejelasanStatusLahan::options(),
'statusKepemilikanLahanOptions' => StatusKepemilikanLahanSosialEkonomi::options(),
'pihakMembantuKonflikOptions' => PihakMembantuKonflik::options(),
'pihakMembantuTanpaBantuanValue' => PihakMembantuKonflik::TIDAK_ADA_SELESAIKAN_SENDIRI->value,
'statusKonflikOptions' => StatusKonflik::options(),
];
}
}
+14 -4
View File
@@ -2,6 +2,13 @@
namespace App\Models\Pertanian;
use App\Enums\PihakMembantuKonflik;
use App\Enums\SkorKecukupanPenghasilan;
use App\Enums\SkorKejelasanStatusLahan;
use App\Enums\SkorKemampuanMenabung;
use App\Enums\SkorPeriodePaceklik;
use App\Enums\StatusKepemilikanLahanSosialEkonomi;
use App\Enums\StatusKonflik;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
@@ -45,15 +52,18 @@ class SosialEkonomi extends Model
'jumlah_tanggungan' => 'integer',
'anak_masih_sekolah' => 'integer',
'yang_ikut_bekerja' => 'integer',
'skor_periode_paceklik' => 'integer',
'skor_periode_paceklik' => SkorPeriodePaceklik::class,
'total_estimasi_biaya_kebun_per_musim' => 'integer',
'skor_kemampuan_menabung' => 'integer',
'skor_kemampuan_menabung' => SkorKemampuanMenabung::class,
'estimasi_tabungan_per_bulan' => 'integer',
'skor_kecukupan_penghasilan' => 'integer',
'skor_kejelasan_status_lahan' => 'integer',
'skor_kecukupan_penghasilan' => SkorKecukupanPenghasilan::class,
'status_kepemilikan_lahan' => StatusKepemilikanLahanSosialEkonomi::class,
'skor_kejelasan_status_lahan' => SkorKejelasanStatusLahan::class,
'ada_sertifikat_dokumen' => 'boolean',
'ada_sengketa' => 'boolean',
'pihak_membantu_konflik' => PihakMembantuKonflik::class,
'tahun_bantuan_konflik' => 'integer',
'status_konflik' => StatusKonflik::class,
];
public function petani(): BelongsTo
@@ -0,0 +1,16 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header border-bottom">
<h5 class="card-title mb-0">{{ $title }}</h5>
</div>
<div class="card-body">
<p class="text-muted mb-0">
Dashboard distribusi sedang disiapkan.
</p>
</div>
</div>
</div>
@endsection
@@ -32,7 +32,7 @@
<div class="card-body pt-12">
<h5 class="pb-3 border-bottom mb-4">Pengalaman Saluran Lain</h5>
<div class="row">
<div class="col-md-12 mb-4 form-control-validation">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="skor-pengalaman">Pengalaman & akses ke saluran lain</label>
<select class="form-control select2-init @error('skor_pengalaman') is-invalid @enderror" id="skor-pengalaman" name="skor_pengalaman">
<option value="">Pilih Skala</option>
@@ -45,7 +45,13 @@
@error('skor_pengalaman')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-8 mb-4 form-control-validation">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="alasan-berhenti">Alasan berhenti</label>
<input type="text" class="form-control @error('alasan_berhenti') is-invalid @enderror" id="alasan-berhenti" name="alasan_berhenti" value="{{ old('alasan_berhenti', $aksesPasar?->alasan_berhenti) }}" placeholder="Opsional (jika sudah berhenti)...">
@error('alasan_berhenti')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="saluran-terdahulu">Dulu pernah jual ke?</label>
@php($saluran = old('saluran_terdahulu', $aksesPasar?->saluran_terdahulu ?? []))
<select multiple class="form-control select2-init @error('saluran_terdahulu') is-invalid @enderror" id="saluran-terdahulu" name="saluran_terdahulu[]">
@@ -59,15 +65,9 @@
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="saluran-lainnya">Lainnya</label>
<input type="text" class="form-control @error('saluran_terdahulu_lainnya') is-invalid @enderror" id="saluran-lainnya" name="saluran_terdahulu_lainnya" value="{{ old('saluran_terdahulu_lainnya', $aksesPasar?->saluran_terdahulu_lainnya) }}">
<input type="text" class="form-control @error('saluran_terdahulu_lainnya') is-invalid @enderror" id="saluran-lainnya" name="saluran_terdahulu_lainnya" value="{{ old('saluran_terdahulu_lainnya', $aksesPasar?->saluran_terdahulu_lainnya) }}" placeholder="Sebutkan saluran lainnya...">
@error('saluran_terdahulu_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-12 mb-4 form-control-validation">
<label class="form-label" for="alasan-berhenti">Alasan berhenti</label>
<input type="text" class="form-control @error('alasan_berhenti') is-invalid @enderror" id="alasan-berhenti" name="alasan_berhenti" value="{{ old('alasan_berhenti', $aksesPasar?->alasan_berhenti) }}">
@error('alasan_berhenti')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-3 border-bottom mb-4 mt-4">HARGA DI SETIAP TITIK</h5>
@@ -124,40 +124,58 @@
</div>
<h5 class="pb-3 border-bottom mb-4 mt-4">PELUANG NILAI TAMBAH</h5>
<h6 class="mb-2">Praktik Fermentasi</h6>
<p class="mb-4">Apakah sudah ada praktik fermentasi atau pengolahan pascapanen yang Ibu/Bapak lakukan, bagaimana prosesnya dilakukan?</p>
<div class="row">
<div class="col-md-12 mb-4 form-control-validation">
<label class="form-label" for="praktik-fermentasi">Praktik fermentasi yang dilakukan</label>
<select class="form-control select2-init @error('praktik_fermentasi') is-invalid @enderror" id="praktik-fermentasi" name="praktik_fermentasi">
<option value="">Pilih</option>
<option value="Ya, rutin — dilakukan sendiri/individual" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Ya, rutin — dilakukan sendiri/individual' ? 'selected' : '' }}>Ya, rutin — dilakukan sendiri/individual</option>
<option value="Ya, rutin — bersama kelompok tani/kolektif" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Ya, rutin — bersama kelompok tani/kolektif' ? 'selected' : '' }}>Ya, rutin — bersama kelompok tani/kolektif</option>
<option value="Pernah mencoba — sendiri" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Pernah mencoba — sendiri' ? 'selected' : '' }}>Pernah mencoba — sendiri</option>
<option value="Pernah mencoba — bersama kelompok" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Pernah mencoba — bersama kelompok' ? 'selected' : '' }}>Pernah mencoba — bersama kelompok</option>
<option value="Belum pernah" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Belum pernah' ? 'selected' : '' }}>Belum pernah</option>
</select>
@error('praktik_fermentasi')<div class="invalid-feedback">{{ $message }}</div>@enderror
<div class="border rounded p-4 mb-4" style="background-color: #fbfbfc;">
<div class="mb-4">
<h6 class="mb-1 text-primary">Detail Praktik Fermentasi</h6>
<p class="text-muted small mb-0">Apakah sudah ada praktik fermentasi atau pengolahan pascapanen yang Ibu/Bapak lakukan?</p>
</div>
<div class="col-md-12 mb-4 form-control-validation">
<label class="form-label" for="proses-fermentasi">Jika ya, bagaimana prosesnya? </label>
<textarea class="form-control @error('proses_fermentasi') is-invalid @enderror" id="proses-fermentasi" name="proses_fermentasi" rows="2">{{ old('proses_fermentasi', $aksesPasar?->proses_fermentasi) }}</textarea>
@error('proses_fermentasi')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="row">
<div class="col-md-4 mb-9 form-control-validation d-flex flex-column">
<div class="mb-2 d-flex align-items-end h-100">
<label class="form-label mb-0" for="praktik-fermentasi">Praktik fermentasi yang dilakukan</label>
</div>
<div>
<select class="form-control select2-init @error('praktik_fermentasi') is-invalid @enderror" id="praktik-fermentasi" name="praktik_fermentasi">
<option value="">Pilih</option>
<option value="Ya, rutin — dilakukan sendiri/individual" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Ya, rutin — dilakukan sendiri/individual' ? 'selected' : '' }}>Ya, rutin — dilakukan sendiri/individual</option>
<option value="Ya, rutin — bersama kelompok tani/kolektif" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Ya, rutin — bersama kelompok tani/kolektif' ? 'selected' : '' }}>Ya, rutin — bersama kelompok tani/kolektif</option>
<option value="Pernah mencoba — sendiri" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Pernah mencoba — sendiri' ? 'selected' : '' }}>Pernah mencoba — sendiri</option>
<option value="Pernah mencoba — bersama kelompok" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Pernah mencoba — bersama kelompok' ? 'selected' : '' }}>Pernah mencoba — bersama kelompok</option>
<option value="Belum pernah" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Belum pernah' ? 'selected' : '' }}>Belum pernah</option>
</select>
@error('praktik_fermentasi')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="col-md-12 mb-4 form-control-validation">
<label class="form-label" for="model-fermentasi">Menurut Bapak/Ibu, apa model fermentasi yang paling memungkinkan dilakukan?</label>
<textarea class="form-control @error('model_fermentasi_memungkinkan') is-invalid @enderror" id="model-fermentasi" name="model_fermentasi_memungkinkan" rows="2">{{ old('model_fermentasi_memungkinkan', $aksesPasar?->model_fermentasi_memungkinkan) }}</textarea>
@error('model_fermentasi_memungkinkan')<div class="invalid-feedback">{{ $message }}</div>@enderror
<div class="col-md-4 mb-4 form-control-validation d-flex flex-column">
<div class="mb-2 d-flex align-items-end h-100">
<label class="form-label mb-0" for="proses-fermentasi">Jika ya, bagaimana prosesnya?</label>
</div>
<div>
<textarea class="form-control @error('proses_fermentasi') is-invalid @enderror" id="proses-fermentasi" name="proses_fermentasi" rows="2" placeholder="Ceritakan prosesnya di sini...">{{ old('proses_fermentasi', $aksesPasar?->proses_fermentasi) }}</textarea>
@error('proses_fermentasi')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="col-md-4 mb-4 form-control-validation d-flex flex-column">
<div class="mb-2 d-flex align-items-end h-100">
<label class="form-label mb-0" for="model-fermentasi">Menurut Bapak/Ibu, apa model yang paling memungkinkan?</label>
</div>
<div>
<textarea class="form-control @error('model_fermentasi_memungkinkan') is-invalid @enderror" id="model-fermentasi" name="model_fermentasi_memungkinkan" rows="2" placeholder="Model fermentasinya...">{{ old('model_fermentasi_memungkinkan', $aksesPasar?->model_fermentasi_memungkinkan) }}</textarea>
@error('model_fermentasi_memungkinkan')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</div>
</div>
<h5 class="pb-3 border-bottom mb-4 mt-4">AKSES PASAR PREMIUM</h5>
<h6 class="mb-3">Kesadaran Pasar Premium*</h6>
<div class="row">
<div class="col-md-8 mb-4 form-control-validation">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="skor-premium">Pengetahuan & akses pasar premium</label>
<select class="form-control select2-init @error('skor_kesadaran_premium') is-invalid @enderror" id="skor-premium" name="skor_kesadaran_premium">
<option value="">Pilih Skala</option>
@@ -170,7 +188,7 @@
@error('skor_kesadaran_premium')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="sumber-info">Sumber informasi utama</label>
<input type="text" class="form-control @error('sumber_info_premium') is-invalid @enderror" id="sumber-info" name="sumber_info_premium" value="{{ old('sumber_info_premium', $aksesPasar?->sumber_info_premium) }}">
@error('sumber_info_premium')<div class="invalid-feedback">{{ $message }}</div>@enderror
@@ -1,33 +1,33 @@
<div class="row">
<div class="col-md-4">
<div class="card mb-6">
<div class="card-header">
<h5 class="card-title m-0">Profil Petani</h5>
</div>
<div class="card-body">
<div class="d-flex justify-content-start align-items-center mb-6">
<div class="avatar me-3">
<img src="../../assets/img/avatars/1.png" alt="Avatar" class="rounded-circle" />
<div class="row mb-4">
<div class="col-md-4 mb-2 mb-md-0">
<div class="card h-100">
<div class="card-body p-3">
<h6 class="card-title mb-2">Profil Petani</h6>
<div class="d-flex justify-content-start align-items-center mb-3">
<div class="avatar me-2">
<img src="../../assets/img/avatars/1.png" alt="Avatar" class="rounded-circle" />
</div>
<div class="d-flex flex-column">
<h6 class="mb-0">{{ $petani ? $petani->nama : 'Tambah Petani Baru' }}</h6>
<span>{{ $petani ? ($petani->jenis_kelamin == 1 ? 'Laki-laki' : 'Perempuan') : 'Jenis Kelamin' }}</span>
<span>Komoditas: {{ $petani ? $petani->komoditas?->nama : 'Komoditas' }}</span>
<h6 class="mb-0" style="font-size: 0.9rem;">{{ $petani ? $petani->nama : 'Tambah Petani Baru' }}</h6>
<span class="text-muted" style="font-size: 0.75rem;">{{ $petani ? ($petani->jenis_kelamin == 1 ? 'Laki-laki' : 'Perempuan') : 'Jenis Kelamin' }}</span>
<span class="text-muted" style="font-size: 0.75rem;">Komoditas: {{ $petani ? $petani->komoditas?->nama : 'Komoditas' }}</span>
</div>
</div>
<h6 class="mb-1">Domisili</h6>
<p class=" mb-1">Alamat: {{ $petani ? $petani->alamat : 'Alamat' }}</p>
<p class=" mb-0">{{ $petani ? $petani->desaKelurahan->nama : 'Desa/Kelurahan' }}, {{ $petani ? $petani->desaKelurahan->kecamatan->nama : 'Kecamatan' }}, {{ $petani ? $petani->desaKelurahan->kecamatan->kabupatenKota->nama : 'Kabupaten/Kota' }}, {{ $petani ? $petani->desaKelurahan->kecamatan->kabupatenKota->provinsi->nama : 'Provinsi' }}</p>
<hr class="my-2"> <h6 class="mb-1" style="font-size: 0.85rem;">Domisili</h6>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Alamat: {{ $petani ? $petani->alamat : 'Alamat' }}</p>
<p class="mb-0 text-muted" style="font-size: 0.75rem; line-height: 1.3;">{{ $petani ? $petani->desaKelurahan->nama : 'Desa/Kelurahan' }}, {{ $petani ? $petani->desaKelurahan->kecamatan->nama : 'Kecamatan' }}, {{ $petani ? $petani->desaKelurahan->kecamatan->kabupatenKota->nama : 'Kabupaten/Kota' }}, {{ $petani ? $petani->desaKelurahan->kecamatan->kabupatenKota->provinsi->nama : 'Provinsi' }}</p>
</div>
</div>
</div>
<div class="col-md-8">
<div class="card mb-2">
<div class="card-widget-separator-wrapper">
<div class="card-body card-widget-separator">
<div class="row gy-4 gy-sm-1">
<div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-start card-widget-1 border-end pb-4 pb-sm-0">
<div class="col-md-8 d-flex flex-column">
<div class="card mb-2 flex-grow-1"> <div class="card-widget-separator-wrapper h-100">
<div class="card-body card-widget-separator py-2 h-100 d-flex flex-column justify-content-center">
<div class="row gy-2"> <div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 pe-3">
<div>
<p class="mb-1">In-store Sales</p>
<h4 class="mb-1">$5,345.43</h4>
@@ -41,37 +41,30 @@
</span>
</span>
</div>
<hr class="d-none d-sm-block d-lg-none me-6" />
</div>
<div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-start card-widget-1 border-end pb-4 pb-sm-0">
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 px-3">
<div>
<p class="mb-1">In-store Sales</p>
<h4 class="mb-1">$5,345.43</h4>
<p class="mb-0">
<span class="me-2">5k orders</span><span class="badge bg-label-success">+5.7%</span>
</p>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">In-store Sales</p>
<h5 class="mb-0">$5,345.43</h5>
<p class="mb-0" style="font-size: 0.75rem;"><span class="me-1">5k orders</span><span class="text-success fw-medium">+5.7%</span></p>
</div>
<span class="avatar me-sm-6">
<span class="avatar-initial rounded">
<i class="icon-base ti tabler-smart-home icon-28px text-heading"></i>
</span>
</span>
<span class="avatar"><span class="avatar-initial rounded"><i class="icon-base ti tabler-smart-home icon-22px"></i></span></span>
</div>
<hr class="d-none d-sm-block d-lg-none me-6" />
</div>
<div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-start card-widget-1 border-end pb-4 pb-sm-0">
<div class="d-flex justify-content-between align-items-center card-widget-1 h-100 ps-3">
<div>
<p class="mb-1">In-store Sales</p>
<h4 class="mb-1">$5,345.43</h4>
<p class="mb-1">Praktik Budidaya</p>
<h4 class="mb-1">2 kali</h4>
<p class="mb-0">
<span class="me-2">5k orders</span><span class="badge bg-label-success">+5.7%</span>
<span class="me-2">2 sertifikasi</span><span class="badge bg-label-success">+5.7%</span>
</p>
</div>
<span class="avatar me-sm-6">
<span class="avatar-initial rounded">
<i class="icon-base ti tabler-smart-home icon-28px text-heading"></i>
<i class="icon-base ti tabler-seedling icon-28px text-heading"></i>
</span>
</span>
</div>
@@ -89,15 +82,32 @@
<div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-start card-widget-1 border-end pb-4 pb-sm-0">
<div>
<p class="mb-1">In-store Sales</p>
<h4 class="mb-1">$5,345.43</h4>
<p class="mb-1">Pendidikan</p>
<h4 class="mb-1">3 kali</h4>
<p class="mb-0">
<span class="me-2">5k orders</span><span class="badge bg-label-success">+5.7%</span>
<span class="me-2">2 sertifikasi</span><span class="badge bg-label-success">+5.7%</span>
</p>
</div>
<span class="avatar me-sm-6">
<span class="avatar-initial rounded">
<i class="icon-base ti tabler-smart-home icon-28px text-heading"></i>
<i class="icon-base ti tabler-books icon-28px text-heading"></i>
</span>
</span>
</div>
<hr class="d-none d-sm-block d-lg-none me-6" />
</div>
<div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-start card-widget-1 border-end pb-4 pb-sm-0">
<div>
<p class="mb-1">Pendidikan</p>
<h4 class="mb-1">3 kali</h4>
<p class="mb-0">
<span class="me-2">2 sertifikasi</span><span class="badge bg-label-success">+5.7%</span>
</p>
</div>
<span class="avatar me-sm-6">
<span class="avatar-initial rounded">
<i class="icon-base ti tabler-social icon-28px text-heading"></i>
</span>
</span>
</div>
@@ -114,24 +124,7 @@
</div>
<span class="avatar me-sm-6">
<span class="avatar-initial rounded">
<i class="icon-base ti tabler-smart-home icon-28px text-heading"></i>
</span>
</span>
</div>
<hr class="d-none d-sm-block d-lg-none me-6" />
</div>
<div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-start card-widget-1 border-end pb-4 pb-sm-0">
<div>
<p class="mb-1">In-store Sales</p>
<h4 class="mb-1">$5,345.43</h4>
<p class="mb-0">
<span class="me-2">5k orders</span><span class="badge bg-label-success">+5.7%</span>
</p>
</div>
<span class="avatar me-sm-6">
<span class="avatar-initial rounded">
<i class="icon-base ti tabler-smart-home icon-28px text-heading"></i>
<i class="icon-base ti tabler-building-store icon-28px text-heading"></i>
</span>
</span>
</div>
@@ -141,8 +134,48 @@
</div>
</div>
</div>
<div class="card flex-grow-1">
<div class="card-widget-separator-wrapper h-100">
<div class="card-body card-widget-separator py-2 h-100 d-flex flex-column justify-content-center">
<div class="row gy-2">
<div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 pe-3">
<div>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">In-store Sales</p>
<h5 class="mb-0">$5,345.43</h5>
<p class="mb-0" style="font-size: 0.75rem;"><span class="me-1">5k orders</span><span class="text-success fw-medium">+5.7%</span></p>
</div>
<span class="avatar"><span class="avatar-initial rounded"><i class="icon-base ti tabler-smart-home icon-22px"></i></span></span>
</div>
</div>
<div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 px-3">
<div>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">In-store Sales</p>
<h5 class="mb-0">$5,345.43</h5>
<p class="mb-0" style="font-size: 0.75rem;"><span class="me-1">5k orders</span><span class="text-success fw-medium">+5.7%</span></p>
</div>
<span class="avatar"><span class="avatar-initial rounded"><i class="icon-base ti tabler-smart-home icon-22px"></i></span></span>
</div>
</div>
<div class="col-sm-6 col-lg-4">
<div class="d-flex justify-content-between align-items-center card-widget-1 h-100 ps-3">
<div>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">In-store Sales</p>
<h5 class="mb-0">$5,345.43</h5>
<p class="mb-0" style="font-size: 0.75rem;"><span class="me-1">5k orders</span><span class="text-success fw-medium">+5.7%</span></p>
</div>
<span class="avatar"><span class="avatar-initial rounded"><i class="icon-base ti tabler-smart-home icon-22px"></i></span></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="nav-align-top">
@if(!$petani)
@@ -196,7 +229,7 @@
</a>
</li>
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('petani.pendidikan-pelatihan.*') ? 'active' : '' }}" href="{{ route('petani.pendidikan-pelatihan.index', $petani->id) }}">
<a class="nav-link" href="{{ route('petani.edit', $petani->id) }}">
<i class="icon-base ti tabler-books me-1_5 icon-sm"></i>Pendidikan & Pelatihan
</a>
</li>
@@ -213,3 +246,29 @@
</ul>
@endif
</div>
@push('scripts')
<script>
$(document).ready(function() {
@if($petani)
$.ajax({
url: "{{ route('petani.lahan-tanaman.summary', $petani->id) }}",
type: 'GET',
dataType: 'json',
success: function(response) {
console.log(response);
var status = response.status;
if (status == 'success') {
$('#luas-lahan').text(response.data.lahan + ' m2');
$('#tanaman').html(`
<span class="me-2">${response.data.tanaman} tanaman ${response.data.komoditas}</span>
<span class="badge bg-label-success">${response.data.kondisi_lahan}</span>
`);
}
}
});
@endif
});
</script>
@endpush
@@ -202,15 +202,14 @@
<h5 class="pb-4 border-bottom mb-4 mt-4">Stabilitas Penghasilan</h5>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="skor-periode-paceklik">Periode Paceklik</label>
<select class="form-control @error('skor_periode_paceklik') is-invalid @enderror" id="skor-periode-paceklik" name="skor_periode_paceklik">
<option value="">Pilih Periode Paceklik</option>
<option value="1" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 1 ? 'selected' : '' }}>&gt;4 bulan</option>
<option value="2" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 2 ? 'selected' : '' }}>3-4 bulan</option>
<option value="3" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 3 ? 'selected' : '' }}>1-2 bulan</option>
<option value="4" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 4 ? 'selected' : '' }}>Sebentar & tidak menentu</option>
<option value="5" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 5 ? 'selected' : '' }}>Tidak ada, stabil</option>
</select>
@php $skorPeriodePaceklikValue = old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik?->value); @endphp
<label class="form-label d-block">Periode Paceklik</label>
@foreach($periodePaceklikOptions as $option)
<div class="form-check mb-2">
<input class="form-check-input @error('skor_periode_paceklik') is-invalid @enderror" type="radio" id="skor-periode-paceklik-{{ $option['value'] }}" name="skor_periode_paceklik" value="{{ $option['value'] }}" {{ (string) $skorPeriodePaceklikValue === (string) $option['value'] ? 'checked' : '' }}>
<label class="form-check-label" for="skor-periode-paceklik-{{ $option['value'] }}">{{ $option['label'] }}</label>
</div>
@endforeach
@error('skor_periode_paceklik')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
@@ -237,15 +236,14 @@
@error('total_estimasi_biaya_kebun_per_musim')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="skor-menabung">Kemampuan Menabung</label>
<select class="form-control @error('skor_kemampuan_menabung') is-invalid @enderror" id="skor-menabung" name="skor_kemampuan_menabung">
<option value="">Pilih Kemampuan Menabung</option>
<option value="1" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 1 ? 'selected' : '' }}>Tidak bisa sama sekali</option>
<option value="2" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 2 ? 'selected' : '' }}>Pernah tapi selalu terpakai</option>
<option value="3" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 3 ? 'selected' : '' }}>Kadang-kadang</option>
<option value="4" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 4 ? 'selected' : '' }}>Bisa tapi tidak tetap</option>
<option value="5" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 5 ? 'selected' : '' }}>Rutin & jumlah tetap</option>
</select>
@php $skorKemampuanMenabungValue = old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung?->value); @endphp
<label class="form-label d-block">Kemampuan Menabung</label>
@foreach($kemampuanMenabungOptions as $option)
<div class="form-check mb-2">
<input class="form-check-input @error('skor_kemampuan_menabung') is-invalid @enderror" type="radio" id="skor-menabung-{{ $option['value'] }}" name="skor_kemampuan_menabung" value="{{ $option['value'] }}" {{ (string) $skorKemampuanMenabungValue === (string) $option['value'] ? 'checked' : '' }}>
<label class="form-check-label" for="skor-menabung-{{ $option['value'] }}">{{ $option['label'] }}</label>
</div>
@endforeach
@error('skor_kemampuan_menabung')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
@@ -262,15 +260,14 @@
<h5 class="pb-4 border-bottom mb-4 mt-4">Persepsi Kecukupan Penghasilan</h5>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="skor-kecukupan">Kecukupan Penghasilan untuk Keluarga</label>
<select class="form-control @error('skor_kecukupan_penghasilan') is-invalid @enderror" id="skor-kecukupan" name="skor_kecukupan_penghasilan">
<option value="">Pilih Kecukupan Penghasilan</option>
<option value="1" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 1 ? 'selected' : '' }}>Sangat tidak cukup</option>
<option value="2" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 2 ? 'selected' : '' }}>Kurang, sering berhutang</option>
<option value="3" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 3 ? 'selected' : '' }}>Cukup pas-pasan</option>
<option value="4" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 4 ? 'selected' : '' }}>Cukup, kadang ada sisa</option>
<option value="5" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 5 ? 'selected' : '' }}>Lebih dari cukup</option>
</select>
@php $skorKecukupanPenghasilanValue = old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan?->value); @endphp
<label class="form-label d-block">Kecukupan Penghasilan untuk Keluarga</label>
@foreach($kecukupanPenghasilanOptions as $option)
<div class="form-check mb-2">
<input class="form-check-input @error('skor_kecukupan_penghasilan') is-invalid @enderror" type="radio" id="skor-kecukupan-{{ $option['value'] }}" name="skor_kecukupan_penghasilan" value="{{ $option['value'] }}" {{ (string) $skorKecukupanPenghasilanValue === (string) $option['value'] ? 'checked' : '' }}>
<label class="form-check-label" for="skor-kecukupan-{{ $option['value'] }}">{{ $option['label'] }}</label>
</div>
@endforeach
@error('skor_kecukupan_penghasilan')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-8 mb-4 form-control-validation">
@@ -286,22 +283,21 @@
<label class="form-label" for="status-kepemilikan-lahan">Status Kepemilikan Lahan</label>
<select class="form-control @error('status_kepemilikan_lahan') is-invalid @enderror" id="status-kepemilikan-lahan" name="status_kepemilikan_lahan">
<option value="">Pilih Status Kepemilikan Lahan</option>
@foreach(['Milik pribadi', 'Milik orang tua-keluarga', 'Sewa-bagi hasil', 'Lahan adat', 'Perhutanan sosial'] as $status)
<option value="{{ $status }}" {{ old('status_kepemilikan_lahan', $sosialEkonomi?->status_kepemilikan_lahan) === $status ? 'selected' : '' }}>{{ $status }}</option>
@foreach($statusKepemilikanLahanOptions as $option)
<option value="{{ $option['value'] }}" {{ old('status_kepemilikan_lahan', $sosialEkonomi?->status_kepemilikan_lahan?->value) === $option['value'] ? 'selected' : '' }}>{{ $option['label'] }}</option>
@endforeach
</select>
@error('status_kepemilikan_lahan')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="skor-kejelasan-lahan">Kejelasan Status Lahan</label>
<select class="form-control @error('skor_kejelasan_status_lahan') is-invalid @enderror" id="skor-kejelasan-lahan" name="skor_kejelasan_status_lahan">
<option value="">Pilih Kejelasan Status Lahan</option>
<option value="1" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 1 ? 'selected' : '' }}>Tidak ada dokumen & ada sengketa</option>
<option value="2" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 2 ? 'selected' : '' }}>Ada dokumen tapi masih sengketa</option>
<option value="3" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 3 ? 'selected' : '' }}>Pernah sengketa, sudah selesai</option>
<option value="4" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 4 ? 'selected' : '' }}>Lahan adat/keluarga/perhutanan sosial tanpa sengketa</option>
<option value="5" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 5 ? 'selected' : '' }}>Bersertifikat & tidak ada sengketa</option>
</select>
@php $skorKejelasanStatusLahanValue = old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan?->value); @endphp
<label class="form-label d-block">Kejelasan Status Lahan</label>
@foreach($kejelasanStatusLahanOptions as $option)
<div class="form-check mb-2">
<input class="form-check-input @error('skor_kejelasan_status_lahan') is-invalid @enderror" type="radio" id="skor-kejelasan-lahan-{{ $option['value'] }}" name="skor_kejelasan_status_lahan" value="{{ $option['value'] }}" {{ (string) $skorKejelasanStatusLahanValue === (string) $option['value'] ? 'checked' : '' }}>
<label class="form-check-label" for="skor-kejelasan-lahan-{{ $option['value'] }}">{{ $option['label'] }}</label>
</div>
@endforeach
@error('skor_kejelasan_status_lahan')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-2 mb-4 form-control-validation">
@@ -345,8 +341,9 @@
<label class="form-label" for="pihak-membantu">Pihak yang Membantu</label>
<select class="form-control @error('pihak_membantu_konflik') is-invalid @enderror" id="pihak-membantu" name="pihak_membantu_konflik">
<option value="">Pilih</option>
<option value="Tidak ada-selesaikan sendiri" {{ old('pihak_membantu_konflik', $sosialEkonomi?->pihak_membantu_konflik) === 'Tidak ada-selesaikan sendiri' ? 'selected' : '' }}>Tidak ada-selesaikan sendiri</option>
<option value="Ada" {{ old('pihak_membantu_konflik', $sosialEkonomi?->pihak_membantu_konflik) === 'Ada' ? 'selected' : '' }}>Ada</option>
@foreach($pihakMembantuKonflikOptions as $option)
<option value="{{ $option['value'] }}" {{ old('pihak_membantu_konflik', $sosialEkonomi?->pihak_membantu_konflik?->value) === $option['value'] ? 'selected' : '' }}>{{ $option['label'] }}</option>
@endforeach
</select>
@error('pihak_membantu_konflik')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -364,8 +361,9 @@
<label class="form-label" for="status-konflik">Status Konflik</label>
<select class="form-control @error('status_konflik') is-invalid @enderror" id="status-konflik" name="status_konflik">
<option value="">Pilih</option>
<option value="Sudah selesai" {{ old('status_konflik', $sosialEkonomi?->status_konflik) === 'Sudah selesai' ? 'selected' : '' }}>Sudah selesai</option>
<option value="Belum, masih berlanjut" {{ old('status_konflik', $sosialEkonomi?->status_konflik) === 'Belum, masih berlanjut' ? 'selected' : '' }}>Belum, masih berlanjut</option>
@foreach($statusKonflikOptions as $option)
<option value="{{ $option['value'] }}" {{ old('status_konflik', $sosialEkonomi?->status_konflik?->value) === $option['value'] ? 'selected' : '' }}>{{ $option['label'] }}</option>
@endforeach
</select>
@error('status_konflik')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -373,7 +371,7 @@
<div class="mt-4 text-end">
<button type="submit" class="btn btn-success">
<i class="icon-base ti tabler-device-floppy me-1_5 icon-sm"></i>Simpan Sosial Ekonomi
Simpan Sosial Ekonomi
</button>
</div>
</div>
@@ -388,7 +386,9 @@
<script>
'use strict';
$(document).ready(function () {
$('#skor-periode-paceklik, #skor-menabung, #skor-kecukupan, #status-kepemilikan-lahan, #skor-kejelasan-lahan, #pihak-membantu, #status-konflik, .sosial-ekonomi-komoditas').select2();
const pihakMembantuTanpaBantuan = @json($pihakMembantuTanpaBantuanValue);
$('#status-kepemilikan-lahan, #pihak-membantu, #status-konflik, .sosial-ekonomi-komoditas').select2();
function syncKomoditasLainnyaOptions() {
const selectedUtama = $('.sosial-ekonomi-komoditas-utama')
@@ -594,7 +594,7 @@
}
function syncPihakMembantuFields() {
const isTidakAda = $('#pihak-membantu').val() === 'Tidak ada-selesaikan sendiri';
const isTidakAda = $('#pihak-membantu').val() === pihakMembantuTanpaBantuan;
const $fields = $('#pihak-membantu-nama, #tahun-bantuan');
$fields.prop('disabled', isTidakAda);
@@ -202,15 +202,14 @@
<h5 class="pb-4 border-bottom mb-4 mt-4">Stabilitas Penghasilan</h5>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="skor-periode-paceklik">Periode Paceklik</label>
<select class="form-control @error('skor_periode_paceklik') is-invalid @enderror" id="skor-periode-paceklik" name="skor_periode_paceklik">
<option value="">Pilih Periode Paceklik</option>
<option value="1" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 1 ? 'selected' : '' }}>&gt;4 bulan</option>
<option value="2" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 2 ? 'selected' : '' }}>3-4 bulan</option>
<option value="3" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 3 ? 'selected' : '' }}>1-2 bulan</option>
<option value="4" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 4 ? 'selected' : '' }}>Sebentar & tidak menentu</option>
<option value="5" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 5 ? 'selected' : '' }}>Tidak ada, stabil</option>
</select>
@php $skorPeriodePaceklikValue = old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik?->value); @endphp
<label class="form-label d-block">Periode Paceklik</label>
@foreach($periodePaceklikOptions as $option)
<div class="form-check mb-2">
<input class="form-check-input @error('skor_periode_paceklik') is-invalid @enderror" type="radio" id="skor-periode-paceklik-{{ $option['value'] }}" name="skor_periode_paceklik" value="{{ $option['value'] }}" {{ (string) $skorPeriodePaceklikValue === (string) $option['value'] ? 'checked' : '' }}>
<label class="form-check-label" for="skor-periode-paceklik-{{ $option['value'] }}">{{ $option['label'] }}</label>
</div>
@endforeach
@error('skor_periode_paceklik')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
@@ -237,15 +236,14 @@
@error('total_estimasi_biaya_kebun_per_musim')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="skor-menabung">Kemampuan Menabung</label>
<select class="form-control @error('skor_kemampuan_menabung') is-invalid @enderror" id="skor-menabung" name="skor_kemampuan_menabung">
<option value="">Pilih Kemampuan Menabung</option>
<option value="1" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 1 ? 'selected' : '' }}>Tidak bisa sama sekali</option>
<option value="2" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 2 ? 'selected' : '' }}>Pernah tapi selalu terpakai</option>
<option value="3" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 3 ? 'selected' : '' }}>Kadang-kadang</option>
<option value="4" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 4 ? 'selected' : '' }}>Bisa tapi tidak tetap</option>
<option value="5" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 5 ? 'selected' : '' }}>Rutin & jumlah tetap</option>
</select>
@php $skorKemampuanMenabungValue = old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung?->value); @endphp
<label class="form-label d-block">Kemampuan Menabung</label>
@foreach($kemampuanMenabungOptions as $option)
<div class="form-check mb-2">
<input class="form-check-input @error('skor_kemampuan_menabung') is-invalid @enderror" type="radio" id="skor-menabung-{{ $option['value'] }}" name="skor_kemampuan_menabung" value="{{ $option['value'] }}" {{ (string) $skorKemampuanMenabungValue === (string) $option['value'] ? 'checked' : '' }}>
<label class="form-check-label" for="skor-menabung-{{ $option['value'] }}">{{ $option['label'] }}</label>
</div>
@endforeach
@error('skor_kemampuan_menabung')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
@@ -262,15 +260,14 @@
<h5 class="pb-4 border-bottom mb-4 mt-4">Persepsi Kecukupan Penghasilan</h5>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="skor-kecukupan">Kecukupan Penghasilan untuk Keluarga</label>
<select class="form-control @error('skor_kecukupan_penghasilan') is-invalid @enderror" id="skor-kecukupan" name="skor_kecukupan_penghasilan">
<option value="">Pilih Kecukupan Penghasilan</option>
<option value="1" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 1 ? 'selected' : '' }}>Sangat tidak cukup</option>
<option value="2" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 2 ? 'selected' : '' }}>Kurang, sering berhutang</option>
<option value="3" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 3 ? 'selected' : '' }}>Cukup pas-pasan</option>
<option value="4" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 4 ? 'selected' : '' }}>Cukup, kadang ada sisa</option>
<option value="5" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 5 ? 'selected' : '' }}>Lebih dari cukup</option>
</select>
@php $skorKecukupanPenghasilanValue = old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan?->value); @endphp
<label class="form-label d-block">Kecukupan Penghasilan untuk Keluarga</label>
@foreach($kecukupanPenghasilanOptions as $option)
<div class="form-check mb-2">
<input class="form-check-input @error('skor_kecukupan_penghasilan') is-invalid @enderror" type="radio" id="skor-kecukupan-{{ $option['value'] }}" name="skor_kecukupan_penghasilan" value="{{ $option['value'] }}" {{ (string) $skorKecukupanPenghasilanValue === (string) $option['value'] ? 'checked' : '' }}>
<label class="form-check-label" for="skor-kecukupan-{{ $option['value'] }}">{{ $option['label'] }}</label>
</div>
@endforeach
@error('skor_kecukupan_penghasilan')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-8 mb-4 form-control-validation">
@@ -286,22 +283,21 @@
<label class="form-label" for="status-kepemilikan-lahan">Status Kepemilikan Lahan</label>
<select class="form-control @error('status_kepemilikan_lahan') is-invalid @enderror" id="status-kepemilikan-lahan" name="status_kepemilikan_lahan">
<option value="">Pilih Status Kepemilikan Lahan</option>
@foreach(['Milik pribadi', 'Milik orang tua-keluarga', 'Sewa-bagi hasil', 'Lahan adat', 'Perhutanan sosial'] as $status)
<option value="{{ $status }}" {{ old('status_kepemilikan_lahan', $sosialEkonomi?->status_kepemilikan_lahan) === $status ? 'selected' : '' }}>{{ $status }}</option>
@foreach($statusKepemilikanLahanOptions as $option)
<option value="{{ $option['value'] }}" {{ old('status_kepemilikan_lahan', $sosialEkonomi?->status_kepemilikan_lahan?->value) === $option['value'] ? 'selected' : '' }}>{{ $option['label'] }}</option>
@endforeach
</select>
@error('status_kepemilikan_lahan')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="skor-kejelasan-lahan">Kejelasan Status Lahan</label>
<select class="form-control @error('skor_kejelasan_status_lahan') is-invalid @enderror" id="skor-kejelasan-lahan" name="skor_kejelasan_status_lahan">
<option value="">Pilih Kejelasan Status Lahan</option>
<option value="1" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 1 ? 'selected' : '' }}>Tidak ada dokumen & ada sengketa</option>
<option value="2" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 2 ? 'selected' : '' }}>Ada dokumen tapi masih sengketa</option>
<option value="3" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 3 ? 'selected' : '' }}>Pernah sengketa, sudah selesai</option>
<option value="4" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 4 ? 'selected' : '' }}>Lahan adat/keluarga/perhutanan sosial tanpa sengketa</option>
<option value="5" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 5 ? 'selected' : '' }}>Bersertifikat & tidak ada sengketa</option>
</select>
@php $skorKejelasanStatusLahanValue = old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan?->value); @endphp
<label class="form-label d-block">Kejelasan Status Lahan</label>
@foreach($kejelasanStatusLahanOptions as $option)
<div class="form-check mb-2">
<input class="form-check-input @error('skor_kejelasan_status_lahan') is-invalid @enderror" type="radio" id="skor-kejelasan-lahan-{{ $option['value'] }}" name="skor_kejelasan_status_lahan" value="{{ $option['value'] }}" {{ (string) $skorKejelasanStatusLahanValue === (string) $option['value'] ? 'checked' : '' }}>
<label class="form-check-label" for="skor-kejelasan-lahan-{{ $option['value'] }}">{{ $option['label'] }}</label>
</div>
@endforeach
@error('skor_kejelasan_status_lahan')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-2 mb-4 form-control-validation">
@@ -345,8 +341,9 @@
<label class="form-label" for="pihak-membantu">Pihak yang Membantu</label>
<select class="form-control @error('pihak_membantu_konflik') is-invalid @enderror" id="pihak-membantu" name="pihak_membantu_konflik">
<option value="">Pilih</option>
<option value="Tidak ada-selesaikan sendiri" {{ old('pihak_membantu_konflik', $sosialEkonomi?->pihak_membantu_konflik) === 'Tidak ada-selesaikan sendiri' ? 'selected' : '' }}>Tidak ada-selesaikan sendiri</option>
<option value="Ada" {{ old('pihak_membantu_konflik', $sosialEkonomi?->pihak_membantu_konflik) === 'Ada' ? 'selected' : '' }}>Ada</option>
@foreach($pihakMembantuKonflikOptions as $option)
<option value="{{ $option['value'] }}" {{ old('pihak_membantu_konflik', $sosialEkonomi?->pihak_membantu_konflik?->value) === $option['value'] ? 'selected' : '' }}>{{ $option['label'] }}</option>
@endforeach
</select>
@error('pihak_membantu_konflik')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -364,8 +361,9 @@
<label class="form-label" for="status-konflik">Status Konflik</label>
<select class="form-control @error('status_konflik') is-invalid @enderror" id="status-konflik" name="status_konflik">
<option value="">Pilih</option>
<option value="Sudah selesai" {{ old('status_konflik', $sosialEkonomi?->status_konflik) === 'Sudah selesai' ? 'selected' : '' }}>Sudah selesai</option>
<option value="Belum, masih berlanjut" {{ old('status_konflik', $sosialEkonomi?->status_konflik) === 'Belum, masih berlanjut' ? 'selected' : '' }}>Belum, masih berlanjut</option>
@foreach($statusKonflikOptions as $option)
<option value="{{ $option['value'] }}" {{ old('status_konflik', $sosialEkonomi?->status_konflik?->value) === $option['value'] ? 'selected' : '' }}>{{ $option['label'] }}</option>
@endforeach
</select>
@error('status_konflik')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -373,7 +371,7 @@
<div class="mt-4 text-end">
<button type="submit" class="btn btn-success">
<i class="icon-base ti tabler-device-floppy me-1_5 icon-sm"></i>Simpan Sosial Ekonomi
Simpan Sosial Ekonomi
</button>
</div>
</div>
@@ -388,7 +386,9 @@
<script>
'use strict';
$(document).ready(function () {
$('#skor-periode-paceklik, #skor-menabung, #skor-kecukupan, #status-kepemilikan-lahan, #skor-kejelasan-lahan, #pihak-membantu, #status-konflik, .sosial-ekonomi-komoditas').select2();
const pihakMembantuTanpaBantuan = @json($pihakMembantuTanpaBantuanValue);
$('#status-kepemilikan-lahan, #pihak-membantu, #status-konflik, .sosial-ekonomi-komoditas').select2();
function syncKomoditasLainnyaOptions() {
const selectedUtama = $('.sosial-ekonomi-komoditas-utama')
@@ -594,7 +594,7 @@
}
function syncPihakMembantuFields() {
const isTidakAda = $('#pihak-membantu').val() === 'Tidak ada-selesaikan sendiri';
const isTidakAda = $('#pihak-membantu').val() === pihakMembantuTanpaBantuan;
const $fields = $('#pihak-membantu-nama, #tahun-bantuan');
$fields.prop('disabled', isTidakAda);
+1
View File
@@ -191,6 +191,7 @@ Route::middleware('auth')
// Petani
Route::resource('petani', App\Http\Controllers\Web\Produktivitas\PetaniController::class)->whereNumber('petani');
Route::get('petani/{petani}/akses-pasar', [App\Http\Controllers\Web\Produktivitas\AksesPasarController::class, 'editByPetani'])->name('petani.akses-pasar.edit');
Route::get('petani/{petani}/lahan-tanaman/summary', [App\Http\Controllers\Web\Produktivitas\PetaniLahanController::class, 'summary'])->name('petani.lahan-tanaman.summary');
Route::resource('petani.lahan-tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanController::class)->whereNumber('petani');
Route::resource('petani.lahan-tanaman.tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanTanamanController::class)->only(['show', 'update', 'destroy'])->whereNumber('petani');
Route::resource('petani.praktik-budidaya', App\Http\Controllers\Web\Produktivitas\PraktikBudidayaController::class)->whereNumber('petani');