resolve user create

This commit is contained in:
2026-07-09 18:15:12 +07:00
66 changed files with 5452 additions and 391 deletions
+26 -3
View File
@@ -56,13 +56,20 @@
type="text"
class="form-control"
id="username"
name="name"
name="username"
value="{{ old('username') }}"
placeholder="Enter your username"
autofocus />
@error('username')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="mb-6 form-control-validation">
<label for="email" class="form-label">Email</label>
<input type="text" class="form-control" id="email" name="email" placeholder="Enter your email" />
<input type="text" class="form-control" id="email" name="email" value="{{ old('email') }}" placeholder="Enter your email" />
@error('email')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="mb-6 form-password-toggle form-control-validation">
<label class="form-label" for="password">Password</label>
@@ -76,6 +83,22 @@
aria-describedby="password" />
<span class="input-group-text cursor-pointer"><i class="icon-base ti tabler-eye-off"></i></span>
</div>
@error('password')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="mb-6 form-password-toggle form-control-validation">
<label class="form-label" for="password_confirmation">Confirm Password</label>
<div class="input-group input-group-merge">
<input
type="password"
id="password_confirmation"
class="form-control"
name="password_confirmation"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password_confirmation" />
<span class="input-group-text cursor-pointer"><i class="icon-base ti tabler-eye-off"></i></span>
</div>
</div>
<div class="my-8 form-control-validation">
<div class="form-check mb-0 ms-2">
@@ -119,4 +142,4 @@
</div>
</div>
</div>
@endsection
@endsection
+1
View File
@@ -70,6 +70,7 @@
<script src="{{ asset('assets/vendor/libs/@form-validation/bootstrap5.js') }}"></script>
<script src="{{ asset('assets/vendor/libs/@form-validation/auto-focus.js') }}"></script>
<script src="{{ asset('assets/vendor/libs/cleave-zen/cleave-zen.js') }}"></script>
<script src="{{ asset('assets/vendor/libs/jquery-repeater/jquery-repeater.js') }}"></script>
<!-- Main JS -->
@@ -23,6 +23,37 @@
</div>
<div class="col-md-8 d-flex flex-column">
@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 = $lahanPetani->sum('luas_lahan');
$totalTanaman = $lahanPetani->sum('jumlah_tanaman');
$pendidikanLabel = isset($petani) ? $petani->pendidikan_terakhir?->label() : null;
@endphp
<div class="card mb-2 flex-grow-1">
<div class="card-widget-separator-wrapper h-100">
@@ -31,9 +62,13 @@
<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;">Segmen Petani</p>
<h5 class="mb-0">Penggerak</h5>
<h5 class="mb-0">{{ $segmenPetani ?? '-' }}</h5>
<p class="mb-0" style="font-size: 0.75rem;">
<span class="me-1">Skor 4.2</span></span>
@if(!is_null($skorSegmenPetani))
<span class="me-1">Skor {{ number_format($skorSegmenPetani, 1) }}</span>
@else
<span class="me-1">Belum isi</span>
@endif
</p>
</div>
<span class="avatar">
@@ -47,9 +82,19 @@
<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;">Lahan & Tanaman</p>
<h5 class="mb-0">12000 m<sup>2</sup></h5>
<h5 class="mb-0">
@if($lahanPetani->isNotEmpty())
{{ number_format($totalLuasLahan, 0, ',', '.') }} m<sup>2</sup>
@else
-
@endif
</h5>
<p class="mb-0" style="font-size: 0.75rem;">
<span class="me-1">120 tanaman kopi</span><span class="text-success fw-medium">sehat</span>
@if(!is_null($skorLahanTanaman))
<span class="me-1">Skor {{ number_format($skorLahanTanaman, 1) }}</span><span class="text-success fw-medium">{{ number_format($totalTanaman, 0, ',', '.') }} tanaman</span>
@else
<span class="me-1">Belum isi</span>
@endif
</p>
</div>
<span class="avatar">
@@ -63,9 +108,19 @@
<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;">Praktik Budidaya</p>
<h5 class="mb-0">$5,345.43</h5>
<h5 class="mb-0">
@if(!is_null($skorPraktikBudidaya))
{{ number_format(round($skorPraktikBudidaya), 0, ',', '.') }}%
@else
-
@endif
</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>
@if(!is_null($skorPraktikBudidaya))
<span class="me-1">Skor {{ number_format($skorPraktikBudidaya, 1) }}</span>
@else
<span class="me-1">Belum isi</span>
@endif
</p>
</div>
<span class="avatar">
@@ -88,9 +143,13 @@
<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;">Pendidikan</p>
<h5 class="mb-0">$5,345.43</h5>
<h5 class="mb-0">{{ $pendidikanLabel ?? '-' }}</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>
@if(!is_null($skorPendidikan))
<span class="me-1">Skor {{ number_format($skorPendidikan, 1) }}</span>
@else
<span class="me-1">Belum isi</span>
@endif
</p>
</div>
<span class="avatar">
@@ -104,9 +163,24 @@
<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;">Sosial Ekonomi</p>
<h5 class="mb-0">$5,345.43</h5>
@php
$sosialEkonomi = isset($petani) ? $petani->sosialEkonomi : null;
$skorSosialEkonomi = isset($petani) ? $petani->skorSosialEkonomi() : null;
$skorSosialEkonomiBulat = is_null($skorSosialEkonomi) ? null : (int) round($skorSosialEkonomi);
@endphp
<h5 class="mb-0">
@if(!is_null($skorSosialEkonomi))
{{ number_format($skorSosialEkonomiBulat, 0, ',', '.') }}%
@else
-
@endif
</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>
@if(!is_null($skorSosialEkonomi))
<span class="me-1">Skor {{ number_format($skorSosialEkonomi, 1) }}</span>
@else
<span class="me-1">Belum isi</span>
@endif
</p>
</div>
<span class="avatar">
@@ -120,9 +194,28 @@
<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;">Akses Pasar</p>
<h5 class="mb-0">$5,345.43</h5>
@php
$aksesPasar = isset($petani) ? $petani->aksesPasar : null;
$skorAksesPasar = isset($petani) ? $petani->skorAksesPasar() : null;
$skorAksesPasarBulat = null;
if(!is_null($skorAksesPasar)) {
$skorAksesPasarBulat = (int) round($skorAksesPasar);
}
@endphp
<h5 class="mb-0">
@if(!is_null($skorAksesPasar))
{{ number_format($skorAksesPasarBulat, 0, ',', '.') }}%
@else
-
@endif
</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>
@if(!is_null($skorAksesPasar))
<span class="me-1">Skor {{ number_format($skorAksesPasar, 1) }}</span>
@else
<span class="me-1">Belum isi</span>
@endif
</p>
</div>
<span class="avatar">
@@ -31,7 +31,7 @@
<select class="form-control @error('tenaga_kerja') is-invalid @enderror" id="tenaga-kerja" name="tenaga_kerja">
<option value="">Pilih Tenaga Kerja</option>
@foreach (TenagaKerja::options() as $option)
<option value="{{ $option['value'] }}" {{ old('tenaga_kerja', $praktikBudidya->tenaga_kerja) == $option['value'] ? 'selected' : '' }}>
<option value="{{ $option['value'] }}" {{ old('tenaga_kerja') == $option['value'] ? 'selected' : '' }}>
{{ $option['label'] }}
</option>
@endforeach
@@ -93,11 +93,12 @@
</div>
<div class="form-check d-flex align-items-center gap-2 mt-1">
<input
class="form-check-input @error('teknik_pemangkasan') is-invalid @enderror"
class="form-check-input lainnya-checkbox @error('teknik_pemangkasan') is-invalid @enderror"
type="checkbox"
name="teknik_pemangkasan[]"
value="Lainnya"
id="teknik-pemangkasan-lainnya">
id="teknik-pemangkasan-lainnya"
data-target="#input-teknik-pemangkasan-lainnya">
<label class="form-check-label text-nowrap" for="teknik-pemangkasan-lainnya">Lainnya:</label>
<input type="text" name="teknik_pemangkasan_lainnya" id="input-teknik-pemangkasan-lainnya" class="form-control form-control-sm w-50" value="{{ old('teknik_pemangkasan_lainnya', $teknikPemangkasanLainnya) }}" placeholder="Sebutkan jenis pemangkasan lain...">
</div>
@@ -167,16 +168,18 @@
</div>
<div class="form-check d-flex align-items-center gap-2 mt-1">
<input class="form-check-input @error('alasan_tidak_penyerbukan') is-invalid @enderror"
<input class="form-check-input lainnya-radio @error('alasan_tidak_penyerbukan') is-invalid @enderror"
type="radio"
name="alasan_tidak_penyerbukan"
value="lainnya"
id="alasan-lainnya"
data-target="#input-alasan-lainnya"
{{ old('alasan_tidak_penyerbukan', $alasanTidakPenyerbukanLainnya) ? 'checked' : '' }}>
<label class="form-check-label text-nowrap" for="alasan-lainnya">Lainnya:</label>
<input type="text"
id="input-alasan-lainnya"
name="alasan_tidak_penyerbukan_lainnya"
class="form-control form-control-sm w-50"
value="{{ old('alasan_tidak_penyerbukan_lainnya', $alasanTidakPenyerbukanLainnya ?? '') }}"
@@ -285,16 +288,18 @@
</div>
<div class="form-check d-flex align-items-center gap-2 mt-1">
<input class="form-check-input @error('frekuensi_pemupukan') is-invalid @enderror"
<input class="form-check-input lainnya-radio @error('frekuensi_pemupukan') is-invalid @enderror"
type="radio"
name="frekuensi_pemupukan"
value="Lainnya"
id="frekuensi-pemupukan-lainnya"
data-target="#input-frekuensi-pemupukan-lainnya"
{{ old('frekuensi_pemupukan', $frekuensiPemupukanLainnya) ? 'checked' : '' }}>
<label class="form-check-label text-nowrap" for="frekuensi-pemupukan-lainnya">Berapa kali:</label>
<input type="text"
id="input-frekuensi-pemupukan-lainnya"
name="frekuensi_pemupukan_lainnya"
class="form-control form-control-sm w-50"
value="{{ old('frekuensi_pemupukan_lainnya', $frekuensiPemupukanLainnya ?? '') }}"
@@ -404,16 +409,18 @@
</div>
<div class="form-check d-flex align-items-center gap-2 mt-1">
<input class="form-check-input @error('waktu_pemberian_pupuk') is-invalid @enderror"
<input class="form-check-input lainnya-radio @error('waktu_pemberian_pupuk') is-invalid @enderror"
type="radio"
name="waktu_pemberian_pupuk"
value="lainnya"
id="alasan-lainnya"
data-target="#input-waktu-lainnya"
{{ old('waktu_pemberian_pupuk', $waktuPemberianPupukLainnya) ? 'checked' : '' }}>
<label class="form-check-label text-nowrap" for="alasan-lainnya">Lainnya:</label>
<input type="text"
<input type="text"
id="input-waktu-lainnya"
name="waktu_pemberian_pupuk_lainnya"
class="form-control form-control-sm w-50"
value="{{ old('waktu_pemberian_pupuk_lainnya', $waktuPemberianPupukLainnya) }}"
@@ -468,16 +475,18 @@
</div>
<div class="form-check d-flex align-items-center gap-2 mt-1">
<input class="form-check-input @error('cara_pemberian_pupuk') is-invalid @enderror"
<input class="form-check-input lainnya-radio @error('cara_pemberian_pupuk') is-invalid @enderror"
type="radio"
name="cara_pemberian_pupuk"
value="lainnya"
value="Lainnya"
id="cara-lainnya"
data-target="#input-cara-pemberian-pupuk-lainnya"
{{ old('cara_pemberian_pupuk', $caraPemberianPupukLainnya) ? 'checked' : '' }}>
<label class="form-check-label text-nowrap" for="cara-lainnya">Lainnya:</label>
<input type="text"
id="input-cara-pemberian-pupuk-lainnya"
name="cara_pemberian_pupuk_lainnya"
class="form-control form-control-sm w-50"
value="{{ old('cara_pemberian_pupuk_lainnya', $caraPemberianPupukLainnya ?? '') }}"
@@ -561,5 +570,72 @@
}
});
});
document.addEventListener('DOMContentLoaded', function () {
function toggleInput(trigger) {
const target = document.querySelector(trigger.dataset.target);
if (!target) return;
if (trigger.type === 'checkbox') {
target.disabled = !trigger.checked;
if (!trigger.checked) {
target.value = '';
}
} else if (trigger.type === 'radio') {
const radios = document.querySelectorAll(
`input[name="${trigger.name}"].lainnya-radio`
);
radios.forEach(radio => {
const input = document.querySelector(radio.dataset.target);
if (!input) return;
input.disabled = !radio.checked;
if (!radio.checked) {
input.value = '';
}
});
}
}
document.querySelectorAll('input[type="radio"][data-target]').forEach(function (lainnyaRadio) {
const target = document.querySelector(lainnyaRadio.dataset.target);
function toggleInput() {
target.disabled = !lainnyaRadio.checked;
if (!lainnyaRadio.checked) {
target.value = '';
}
}
document.querySelectorAll(`input[name="${lainnyaRadio.name}"]`).forEach(function (radio) {
radio.addEventListener('change', toggleInput);
});
toggleInput();
});
document.querySelectorAll('.lainnya-checkbox').forEach(function (trigger) {
const target = document.querySelector(trigger.dataset.target);
if (!target) return;
function toggleInput() {
target.disabled = !trigger.checked;
if (!trigger.checked) {
target.value = '';
}
}
trigger.addEventListener('change', toggleInput);
toggleInput();
});
});
</script>
@endpush
@@ -16,6 +16,13 @@
@use('App\Enums\PraktikBudidaya\KondisiPengelolaanAir')
@use('App\Enums\PraktikBudidaya\KebutuhanAirPermusim')
@use('App\Enums\PraktikBudidaya\PemahamanManfaatKonservasi')
@use('App\Enums\PraktikBudidaya\DasarPenentuanPanen')
@use('App\Enums\PraktikBudidaya\Bulan')
@use('App\Enums\PraktikBudidaya\PraktikSortasi')
@use('App\Enums\PraktikBudidaya\CaraSortasi')
@use('App\Enums\PraktikBudidaya\EstimasiKehilanganHasil')
@use('App\Enums\PraktikBudidaya\TingkatPanenReject')
@use('App\Enums\PraktikBudidaya\TindakanPanenReject')
<div class="container-xxl flex-grow-1 container-p-y">
@if ($errors->any())
<div class="alert alert-danger">
@@ -554,7 +561,7 @@
@error('metode_penanganan_hama_penyakit')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label d-block fw-medium">Jenis Hama<span class="text-danger">*</span></label>
<label class="form-label d-block fw-medium">Jenis Hama</label>
<div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror"
@@ -610,7 +617,7 @@
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label d-block fw-medium">Jenis Penyakit<span class="text-danger">*</span></label>
<label class="form-label d-block fw-medium">Jenis Penyakit</label>
<div class="form-check mt-2">
<input class="form-check-input @error('jenis_penyakit') is-invalid @enderror"
@@ -704,7 +711,7 @@
<div class="input-group">
<input
type="text"
type="number"
class="form-control @error('volume_obat_obatan_permusim') is-invalid @enderror"
id="volume-obat-obatan-permusim"
name="volume_obat_obatan_permusim"
@@ -811,16 +818,18 @@
</div>
<div class="form-check d-flex align-items-center gap-2 mt-1">
<input class="form-check-input @error('sumber_air') is-invalid @enderror"
<input class="form-check-input lainnya-radio @error('sumber_air') is-invalid @enderror"
type="radio"
name="sumber_air"
value="Lainnya"
id="sumber-air-lainnya"
data-target="#input-sumber-air"
{{ old('sumber_air', $sumberAirLainnya) ? 'checked' : '' }}>
<label class="form-check-label text-nowrap" for="cara-lainnya">Lainnya:</label>
<input type="text"
id="input-sumber-air"
name="sumber_air_lainnya"
class="form-control form-control-sm w-50"
value="{{ old('sumber_air_lainnya', $sumberAirLainnya ?? '') }}"
@@ -875,16 +884,18 @@
</div>
<div class="form-check d-flex align-items-center gap-2 mt-1">
<input class="form-check-input @error('sistem_irigasi') is-invalid @enderror"
<input class="form-check-input lainnya-radio @error('sistem_irigasi') is-invalid @enderror"
type="radio"
name="sistem_irigasi"
value="Lainnya"
id="sumber-air-lainnya"
id="sistem-irigasi-lainnya"
data-target="#input-sistem-irigasi"
{{ old('sistem_irigasi', $sistemIrigasiLainnya) ? 'checked' : '' }}>
<label class="form-check-label text-nowrap" for="cara-lainnya">Lainnya:</label>
<input type="text"
id="input-sistem-irigasi"
name="sistem_irigasi_lainnya"
class="form-control form-control-sm w-50"
value="{{ old('sistem_irigasi_lainnya', $sistemIrigasiLainnya ?? '') }}"
@@ -915,7 +926,7 @@
<label class="form-label d-block fw-medium">Kebiasaan Konservasi Tanah<span class="text-danger">*</span></label>
<div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror"
<input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox"
name="kebiasaan_konservasi_tanah[]"
value="Membuat pematang atau tanggul tanah di lahan miring supaya tanah tidak longsor ke bawah"
@@ -925,7 +936,7 @@
</div>
<div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror"
<input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox"
name="kebiasaan_konservasi_tanah[]"
value="Menumpuk daun kering/sisa tanaman di sekitar pohon"
@@ -935,7 +946,7 @@
</div>
<div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror"
<input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox"
name="kebiasaan_konservasi_tanah[]"
value="Menanam tanaman lain di sela-sela komoditas utama untuk menutupi tanah"
@@ -945,7 +956,7 @@
</div>
<div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror"
<input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox"
name="kebiasaan_konservasi_tanah[]"
value="Membuat lubang atau parit kecil untuk menampung air hujan"
@@ -955,7 +966,7 @@
</div>
<div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror"
<input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox"
name="kebiasaan_konservasi_tanah[]"
value="Tidak ada yang seperti itu di kebun saya"
@@ -963,7 +974,7 @@
{{ in_array('Tidak ada yang seperti itu di kebun saya', old('kebiasaan_konservasi_tanah', $praktikBudidaya->kebiasaan_konservasi_tanah ?? [])) ? 'checked' : '' }}>
<label class="form-check-label" for="konservasi_tanah_tidak_ada">Tidak ada yang seperti itu di kebun saya</label>
</div>
@error('jenis_hama')
@error('kebiasaan_konservasi_tanah')
<div class="error invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
@@ -1055,7 +1066,7 @@
class="form-control rupiah-input @error('biaya_pestisida') is-invalid @enderror"
id="biaya-pestisida"
name="biaya_pestisida"
value="{{ old('biaya_pestisida', filled($praktikBudidaya->biaya_pestisida) ? number_format($praktikBudidaya->biaya_pestisida, 0, ',', '.') : '') }}"
value="{{ old('biaya_pestisida', filled($praktikBudidaya->biaya_obat_obatan) ? number_format($praktikBudidaya->biaya_obat_obatan, 0, ',', '.') : '') }}"
placeholder="Contoh: 150.000">
</div>
@error('biaya_pestisida')
@@ -1072,7 +1083,7 @@
class="form-control rupiah-input @error('biaya_sewa_alat') is-invalid @enderror"
id="biaya-sewa-alat"
name="biaya_sewa_alat"
value="{{ old('biaya_sewa_alat', filled($praktikBudidaya->biaya_sewa_alat) ? number_format($praktikBudidaya->biaya_sewa_alat, 0, ',', '.') : '') }}"
value="{{ old('biaya_sewa_alat', filled($praktikBudidaya->biaya_sewa_alat_produksi) ? number_format($praktikBudidaya->biaya_sewa_alat_produksi, 0, ',', '.') : '') }}"
placeholder="Contoh: 150.000">
</div>
@error('biaya_sewa_alat')
@@ -1106,7 +1117,7 @@
class="form-control rupiah-input @error('biaya_lainnya') is-invalid @enderror"
id="biaya-lainnya"
name="biaya_lainnya"
value="{{ old('biaya_lainnya', filled($praktikBudidaya->biaya_lainnya) ? number_format($praktikBudidaya->biaya_lainnya, 0, ',', '.') : '') }}"
value="{{ old('biaya_lainnya', filled($praktikBudidaya->biaya_produksi_lainnya) ? number_format($praktikBudidaya->biaya_produksi_lainnya, 0, ',', '.') : '') }}"
placeholder="Contoh: 150.000">
</div>
@error('biaya_lainnya')
@@ -1124,7 +1135,8 @@
id="total-estimasi-biaya-produksi"
name="total_estimasi_biaya_produksi"
value="{{ old('total_estimasi_biaya_produksi', filled($praktikBudidaya->total_estimasi_biaya_produksi) ? number_format($praktikBudidaya->total_estimasi_biaya_produksi, 0, ',', '.') : '') }}"
placeholder="Contoh: 150.000">
placeholder="Otomatis terhitung"
readonly>
</div>
@error('total_estimasi_biaya_produksi')
<div class="invalid-feedback d-block">{{ $message }}</div>
@@ -1135,11 +1147,14 @@
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="dasar_penentuan_panen">Dasar Penentuan Panen<span class="text-danger">*</span></label>
<select class="form-control @error('dasar_penentuan_panen') is-invalid @enderror" id="dasar_penentuan_panen" name="dasar_penentuan_panen">
<select class="form-control @error('dasar_penentuan_panen') is-invalid @enderror" id="dasar-penentuan-panen" name="dasar_penentuan_panen">
<option value="">Pilih Dasar</option>
<option value="kurang">Kurang</option>
<option value="cukup">Cukup</option>
<option value="lebih">Lebih</option>
@foreach (DasarPenentuanPanen::options() as $option)
<option value="{{ $option['value'] }}"
{{ old('dasar_penentuan_panen', $surveyPanen?->dasar_penentuan_panen) == $option['value'] ? 'selected' : '' }}>
{{ $option['label'] }}
</option>
@endforeach
</select>
@error('dasar_penentuan_panen')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -1150,15 +1165,15 @@
<label class="form-label" for="frekuensi-panen-pertahun">
Frekuensi Panen Per Tahun<span class="text-danger">*</span>
</label>
<div class="input-group">
<input
type="number"
class="form-control @error('frekuensi_panen_pertahun') is-invalid @enderror"
id="frekuensi-panen-pertahun"
name="frekuensi_panen_pertahun"
value="{{ old('frekuensi_panen_pertahun', $petani->frekuensi_panen_pertahun) }}">
value="{{ old('frekuensi_panen_pertahun', $surveyPanen?->frekuensi_panen_pertahun) }}"
step="0.01"
min="0">
<span class="input-group-text">Panen/Tahun</span>
</div>
@@ -1168,62 +1183,82 @@
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="bulan-panen-utama">Bulan Panen Utama<span class="text-danger">*</span></label>
<input class="form-control @error('bulan_panen_utama') is-invalid @enderror" type="date" id="bulan-panen-utama" name="bulan_panen_utama" value="{{ old('bulan_panen_utama', $petani->bulan_panen_utama) }}">
@error('bulan_panen_utama')<div class="error invalid-feedback">{{ $message }}</div>@enderror
<select name="bulan_panen_utama" class="form-select">
<option value="">Pilih Bulan</option>
@foreach (Bulan::options() as $option)
<option value="{{ $option['value'] }}"
{{ old('bulan_panen_utama', $surveyPanen?->bulan_panen_utama) == $option['value'] ? 'selected' : '' }}>
{{ $option['label'] }}
</option>
@endforeach
</select>
@error('bulan_panen_utama')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4">Hasil Panen Aktual</h5>
<div class="row border-bottom mb-4 pb-4">
<div class="col-md-4 mb-4 row form-control-validation">
<label class="form-label" for="hasil-panen-komoditas-utama">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="hasil_komoditas_utama_permusim">
Hasil Panen Komoditas Utama<span class="text-danger">*</span>
</label>
<div class="input-group">
<input
type="number"
class="form-control @error('hasil_panen_komoditas_utama') is-invalid @enderror"
id="hasil-panen-komoditas-utama"
name="hasil_panen_komoditas_utama"
value="{{ old('hasil_panen_komoditas_utama', $petani->hasil_panen_komoditas_utama) }}">
<span class="input-group-text">Kg/Tahun</span>
class="form-control @error('hasil_komoditas_utama_permusim') is-invalid @enderror"
id="hasil-komoditas-utama-permusim"
name="hasil_komoditas_utama_permusim"
value="{{ old('hasil_komoditas_utama_permusim', $surveyPanen?->hasil_komoditas_utama_permusim) }}"
step="0.01"
min="0">
<span class="input-group-text">Kg/Musim</span>
</div>
@error('hasil_panen_komoditas_utama')
@error('hasil_komoditas_utama_permusim')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="hasil-panen-komoditas-lainnya">
<label class="form-label" for="hasil_komoditas_lainnya_permusim">
Hasil Panen Komoditas Lainnya<span class="text-danger">*</span>
</label>
<div class="input-group">
<input
type="number"
class="form-control @error('hasil_panen_komoditas_lainnya') is-invalid @enderror"
id="hasil-panen-komoditas-lainnya"
name="hasil_panen_komoditas_lainnya"
value="{{ old('hasil_panen_komoditas_lainnya', $petani->hasil_panen_komoditas_lainnya) }}">
<span class="input-group-text">Kg/Tahun</span>
class="form-control @error('hasil_komoditas_lainnya_permusim') is-invalid @enderror"
id="hasil-komoditas-lainnya-permusim"
name="hasil_komoditas_lainnya_permusim"
value="{{ old('hasil_komoditas_lainnya_permusim', $surveyPanen?->hasil_komoditas_lainnya_permusim) }}"
step="0.01"
min="0">
<span class="input-group-text">Kg/Musim</span>
</div>
@error('hasil_panen_komoditas_lainnya')
@error('hasil_komoditas_lainnya_permusim')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
@php
$disimpanUntukSendiri = old(
'disimpan_untuk_sendiri',
$surveyPanen?->disimpan_untuk_sendiri
) == 1;
@endphp
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label d-block">Disimpan Untuk Diri Sendiri<span class="text-danger">*</span></label>
<label class="switch switch-lg">
<input type="hidden" name="disimpan_untuk_sendiri" value="0">
<input
type="checkbox"
class="switch-input"
name="disimpan_untuk_diri_sendiri"
id="disimpan-untuk-sendiri"
name="disimpan_untuk_sendiri"
value="1"
{{ old('disimpan_untuk_diri_sendiri', false) ? 'checked' : '' }}>
{{ old('disimpan_untuk_sendiri', $surveyPanen?->disimpan_untuk_sendiri) ? 'checked' : '' }}>
<span class="switch-toggle-slider">
<span class="switch-on">
@@ -1235,24 +1270,28 @@
</span>
<span class="switch-label">
<span id="switch-text">Tidak, Semua di Jual</span>
<span id="switch-text">
{{ $disimpanUntukSendiri ? 'Ya, Sebagian Disimpan' : 'Tidak, Semua Dijual' }}
</span>
</span>
</label>
</div>
</div>
<div class="row">
<div class="col-md-4 mb-4 row form-control-validation">
<label class="form-label" for="hasil-panen-disimpan">Hasil Panen Disimpan<span class="text-danger">*</span></label>
<div class="row{{ $disimpanUntukSendiri ? '' : 'd-none' }}" id="detail-disimpan-wrapper">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="hasil_panen_disimpan">
Hasil Panen Disimpan<span class="text-danger">*</span>
</label>
<div class="input-group">
<input
type="number"
class="form-control @error('hasil_panen_disimpan') is-invalid @enderror"
id="hasil-panen-disimpan"
name="hasil_panen_disimpan"
value="{{ old('hasil_panen_disimpan', $petani->hasil_panen_disimpan) }}">
<span class="input-group-text">Kg/Tahun</span>
value="{{ old('hasil_panen_disimpan', $surveyPanen?->hasil_panen_disimpan) }}"
step="0.01"
min="0">
<span class="input-group-text">Kg/Musim</span>
</div>
@error('hasil_panen_disimpan')
@@ -1260,8 +1299,8 @@
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="tujuan-disimpan">Tujuan Disimpan<span class="text-danger">*</span></label>
<input class="form-control @error('tujuan_disimpan') is-invalid @enderror" id="tujuan-disimpan" name="tujuan_disimpan" value="{{ old('tujuan_disimpan', $petani->tujuan_disimpan) }}">
<label class="form-label" for="tujuan_disimpan">Tujuan Disimpan<span class="text-danger">*</span></label>
<input class="form-control @error('tujuan_disimpan') is-invalid @enderror" id="tujuan-disimpan" name="tujuan_disimpan" value="{{ old('tujuan_disimpan', $surveyPanen?->tujuan_disimpan) }}">
@error('tujuan_disimpan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
@@ -1283,19 +1322,27 @@
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="praktik_sortasi">Praktik Sortasi<span class="text-danger">*</span></label>
<select class="form-control @error('praktik_sortasi') is-invalid @enderror" id="praktik_sortasi" name="praktik_sortasi">
<select class="form-control @error('praktik_sortasi') is-invalid @enderror" id="praktik-sortasi" name="praktik_sortasi">
<option value="">Pilih Praktik</option>
<option value="tidak_melakukan">Tidak Melakukan</option>
<option value="melakukan">Melakukan</option>
@foreach (PraktikSortasi::options() as $option)
<option value="{{ $option['value'] }}"
{{ old('praktik_sortasi', $surveyPanen?->praktik_sortasi) == $option['value'] ? 'selected' : '' }}>
{{ $option['label'] }}
</option>
@endforeach
</select>
@error('praktik_sortasi')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="bentuk_sortasi">Bentuk Sortasi Yang Dilakukan<span class="text-danger">*</span></label>
<select class="form-control @error('bentuk_sortasi') is-invalid @enderror" id="bentuk_sortasi" name="bentuk_sortasi">
<select class="form-control @error('bentuk_sortasi') is-invalid @enderror" id="bentuk-sortasi" name="bentuk_sortasi">
<option value="">Pilih Bentuk</option>
<option value="tidak_melakukan">Tidak Melakukan</option>
<option value="melakukan">Melakukan</option>
@foreach (CaraSortasi::options() as $option)
<option value="{{ $option['value'] }}"
{{ old('bentuk_sortasi', $surveyPanen?->bentuk_sortasi) == $option['value'] ? 'selected' : '' }}>
{{ $option['label'] }}
</option>
@endforeach
</select>
@error('bentuk_sortasi')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -1303,34 +1350,146 @@
<h5 class="pb-4 border-bottom mb-4">Hasil Panen Reject & Estimasi Biaya Panen</h5>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="upah-tenaga-panen">Upah Tenaga Panen<span class="text-danger">*</span></label>
<input class="form-control @error('upah_tenaga_panen') is-invalid @enderror" id="upah-tenaga-panen" name="upah_tenaga_panen" value="{{ old('upah_tenaga_panen', $petani->upah_tenaga_panen) }}">
@error('upah_tenaga_panen')<div class="error invalid-feedback">{{ $message }}</div>@enderror
<label class="form-label" for="tingkat_reject">Tingkat hasil panen ditolak pembeli<span class="text-danger">*</span></label>
<select class="form-control @error('tingkat_reject') is-invalid @enderror" id="tingkat-reject" name="tingkat_reject">
<option value="">Pilih tingkat hasil panen</option>
@foreach (TingkatPanenReject::options() as $option)
<option value="{{ $option['value'] }}"
{{ old('praktik_sortasi', $surveyPanen?->praktik_sortasi) == $option['value'] ? 'selected' : '' }}>
{{ $option['label'] }}
</option>
@endforeach
</select>
@error('praktik_sortasi')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="biaya-pengangkutan">Biaya Pengangkutan<span class="text-danger">*</span></label>
<input class="form-control @error('biaya_pengangkutan') is-invalid @enderror" id="biaya-pengangkutan" name="biaya_pengangkutan" value="{{ old('biaya_pengangkutan', $petani->biaya_pengangkutan) }}">
@error('biaya_pengangkutan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
<label class="form-label" for="hasil_panen_reject">
Hasil Panen Reject<span class="text-danger">*</span>
</label>
<div class="input-group">
<input
type="number"
class="form-control @error('hasil_panen_reject') is-invalid @enderror"
id="hasil-panen-reject"
name="hasil_panen_reject"
value="{{ old('hasil_panen_reject', $surveyPanen?->hasil_panen_reject) }}"
step="0.01"
min="0">
<span class="input-group-text">Kg/Musim</span>
</div>
@error('hasil_panen_reject')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="biaya-wadah-kemasan">Biaya Wadah & kemasan<span class="text-danger">*</span></label>
<input class="form-control @error('biaya_wadah_kemasan') is-invalid @enderror" id="biaya-wadah-kemasan" name="biaya_wadah_kemasan" value="{{ old('biaya_wadah_kemasan', $petani->biaya_wadah_kemasan) }}">
@error('biaya_wadah_kemasan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
<label class="form-label" for="tindakan_hasil_reject">Tidakan Terhadap Hasil Reject<span class="text-danger">*</span></label>
<select class="form-control @error('tindakan_hasil_reject') is-invalid @enderror" id="tindakan-hasil-reject" name="tindakan_hasil_reject">
<option value="">Pilih Tindakan</option>
@foreach (TindakanPanenReject::options() as $option)
<option value="{{ $option['value'] }}"
{{ old('tindakan_hasil_reject', $surveyPanen?->tindakan_panen_reject) == $option['value'] ? 'selected' : '' }}>
{{ $option['label'] }}
</option>
@endforeach
</select>
@error('bentuk_sortasi')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="biaya-sewa-alat-panen">Biaya Sewa Alat Panen<span class="text-danger">*</span></label>
<input class="form-control @error('biaya_sewa_alat_panen') is-invalid @enderror" id="biaya-sewa-alat-panen" name="biaya_sewa_alat_panen" value="{{ old('biaya_sewa_alat_panen', $petani->biaya_sewa_alat_panen) }}">
@error('biaya_sewa_alat_panen')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="biaya-panen-lainnya">Biaya Lain-lainnya<span class="text-danger">*</span></label>
<input class="form-control @error('biaya_panen_lainnya') is-invalid @enderror" id="biaya-panen-lainnya" name="biaya_panen_lainnya" value="{{ old('biaya_panen_lainnya', $petani->biaya_panen_lainnya) }}">
@error('biaya_panen_lainnya')<div class="error invalid-feedback">{{ $message }}</div>@enderror
<label class="form-label" for="upah_tenaga_panen">Upah Tenaga Panen<span class="text-danger">*</span></label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input
type="text"
class="form-control rupiah-input @error('upah_tenaga_panen') is-invalid @enderror"
id="upah-tenaga-panen"
name="upah_tenaga_panen"
value="{{ old('upah_tenaga_panen', filled($surveyPanen?->upah_tenaga_panen) ? number_format($surveyPanen?->upah_tenaga_panen, 0, ',', '.') : '' ) }}"
placeholder="Contoh: 150.000">
</div>
@error('upah_tenaga_panen')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="total-estimasi-biaya-panen">Total Estimasi Biaya Panen<span class="text-danger">*</span></label>
<input class="form-control @error('total_estimasi_biaya_panen') is-invalid @enderror" id="total-estimasi-biaya-panen" name="total_estimasi_biaya_panen" value="{{ old('total_estimasi_biaya_panen', $petani->total_estimasi_biaya_panen) }}">
@error('total_estimasi_biaya_panen')<div class="error invalid-feedback">{{ $message }}</div>@enderror
<label class="form-label" for="biaya_pengangkutan">Biaya Pengangkutan<span class="text-danger">*</span></label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input
type="text"
class="form-control rupiah-input @error('biaya_pengangkutan') is-invalid @enderror"
id="biaya-pengangkutan"
name="biaya_pengangkutan"
value="{{ old('biaya_pengangkutan', filled($surveyPanen?->biaya_pengangkutan_panen) ? number_format($surveyPanen?->biaya_pengangkutan_panen, 0, ',', '.') : '' ) }}"
placeholder="Contoh: 150.000">
</div>
@error('biaya_pengangkutan')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="biaya_wadah_kemasan">Biaya Wadah & kemasan<span class="text-danger">*</span></label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input
type="text"
class="form-control rupiah-input @error('biaya_wadah_kemasan') is-invalid @enderror"
id="biaya-wadah-kemasan"
name="biaya_wadah_kemasan"
value="{{ old('biaya_wadah_kemasan', filled($surveyPanen?->biaya_wadah_panen) ? number_format($surveyPanen?->biaya_wadah_panen, 0, ',', '.') : '' ) }}"
placeholder="Contoh: 150.000">
</div>
@error('biaya_wadah_kemasan')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="biaya_sewa_alat_panen">Biaya Sewa Alat Panen<span class="text-danger">*</span></label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input
type="text"
class="form-control rupiah-input @error('biaya_sewa_alat_panen') is-invalid @enderror"
id="biaya-sewa-alat-panen"
name="biaya_sewa_alat_panen"
value="{{ old('biaya_sewa_alat_panen', filled($surveyPanen?->biaya_sewa_alat_panen) ? number_format($surveyPanen?->biaya_sewa_alat_panen, 0, ',', '.') : '' ) }}"
placeholder="Contoh: 150.000">
</div>
@error('biaya_sewa_alat_panen')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="biaya_panen_lainnya">Biaya Lain-lainnya<span class="text-danger">*</span></label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input
type="text"
class="form-control rupiah-input @error('biaya_sewa_alat_panen') is-invalid @enderror"
id="biaya-panen-lainnya"
name="biaya_panen_lainnya"
value="{{ old('biaya_panen_lainnya', filled($surveyPanen?->biaya_panen_lainnya) ? number_format($surveyPanen?->biaya_panen_lainnya, 0, ',', '.') : '' ) }}"
placeholder="Contoh: 150.000">
</div>
@error('biaya_panen_lainnya')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="total_estimasi_biaya_panen">Total Estimasi Biaya Panen<span class="text-danger">*</span></label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input
type="text"
class="form-control rupiah-input @error('total_estimasi_biaya_panen') is-invalid @enderror"
id="total-estimasi-biaya-panen"
name="total_estimasi_biaya_panen"
value="{{ old('total_estimasi_biaya_panen', filled($surveyPanen?->total_estimasi_biaya_panen) ? number_format($surveyPanen?->total_estimasi_biaya_panen, 0, ',', '.') : '' ) }}"
placeholder="Contoh: 150.000">
</div>
@error('total_estimasi_biaya_panen')
<div class="invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
</div>
<div class="mt-4 text-end">
@@ -1347,48 +1506,105 @@
<h5 class="pb-4 border-bottom mb-4">
Produktivitas Rata-rata 3 Musim Panen Terakhir per Komoditas
</h5>
<form class="form-repeater">
{{-- DATA LAMA --}}
@if ($surveyProduktivitas->count() > 0)
@foreach ($surveyProduktivitas as $row)
<div class="row align-items-end border-bottom pb-3 mb-3">
<div class="col-md-4">
<label class="form-label">Komoditas</label>
<input type="text" class="form-control"
value="{{ optional($komoditas->firstWhere('id', $row->komoditas_id))->nama ?? '-' }}"
disabled>
</div>
<div class="col-md-3">
<label class="form-label">Hasil</label>
<div class="input-group">
<input type="text" class="form-control" value="{{ $row->kuantitas }}" disabled>
<span class="input-group-text">Kg</span>
</div>
</div>
<div class="col-md-3">
<label class="form-label">Satuan</label>
<input type="text" class="form-control" value="{{ $row->satuan }}" disabled>
</div>
<div class="col-md-2">
<form method="POST" action="{{ route('petani.survey-produktivitas.destroy', [$petani->id, $row->id]) }}">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-outline-danger">
<i class="icon-base ti tabler-trash icon-sm"></i>
</button>
</form>
</div>
</div>
@endforeach
@endif
{{-- FORM TAMBAH DATA BARU --}}
<form method="POST"
action="{{ route('petani.survey-produktivitas.store', $petani->id) }}"
class="form-repeater">
@csrf
<div data-repeater-list="produktivitas_komoditas">
<div data-repeater-item>
<div class="row align-items-end">
<div class="col-md-4 mb-3">
<label class="form-label">Komoditas</label>
<select name="komoditas_id" class="form-control select2" data-placeholder="Pilih Komoditas">
<select name="komoditas_id" class="form-select">
<option value="">Pilih Komoditas</option>
@foreach ($komoditas as $item)
<option value="{{ $item->id }}">{{ $item->nama }}</option>
@endforeach
</select>
</div>
<div class="col-md-3 mb-3">
<label class="form-label">Hasil</label>
<div class="input-group">
<input type="number" class="form-control @error('hasil_panen_3_musim') is-invalid @enderror" id="hasil-panen-3-musim" name="hasil_panen_3_musim" value="{{ old('hasil_panen_3_musim', $petani->hasil_panen_3_musim) }}">
<input type="number" name="hasil_panen_3_musim" class="form-control" step="0.01" min="0">
<span class="input-group-text">Kg</span>
</div>
</div>
<div class="col-md-3 mb-3">
<label class="form-label d-block">Satuan</label>
<div class="form-check form-check-inline">
<label class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="satuan" value="ha_tahun">
<label class="form-check-label">Ha/Tahun</label>
</div>
<div class="form-check form-check-inline">
<span class="form-check-label">Ha/Tahun</span>
</label>
<label class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="satuan" value="pohon_tahun">
<label class="form-check-label">Pohon/Tahun</label>
</div>
<span class="form-check-label">Pohon/Tahun</span>
</label>
</div>
<div class="col-md-2 mb-3">
<button type="button" class="btn btn-outline-success" data-repeater-save><i class="icon-base ti tabler-check me-1_5 icon-sm"></i></button>
<button type="button" class="btn btn-outline-danger" data-repeater-delete><i class="icon-base ti tabler-trash me-1_5 icon-sm"></i></button>
<button type="button" class="btn btn-outline-danger" data-repeater-delete>
<i class="icon-base ti tabler-trash icon-sm"></i>
</button>
</div>
</div>
<hr>
</div>
</div>
<div class="mt-4 text-end">
<button type="button" class="btn btn-success" data-repeater-create>
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i>
Tambah Komoditas
</button>
</div>
<div class="mt-4 d-flex justify-content-between">
<button type="button" class="btn btn-outline-success" data-repeater-create>
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i>
Tambah Komoditas
</button>
<button type="submit" class="btn btn-success">
Simpan Produktivitas
</button>
</div>
</form>
</div>
@@ -1401,56 +1617,32 @@
<h5 class="pb-4 border-bottom mb-4">Kehilangan Hasil Akibat Organisme Pengganggu Tumbuhan (OPT)</h5>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label d-block fw-medium">Estimasi Kehilangan Hasil<span class="text-danger">*</span></label>
<div class="form-check mt-2">
<input class="form-check-input @error('estimasi_kehilangan_hasil') is-invalid @enderror"
type="radio"
name="estimasi_kehilangan_hasil"
value="Selalu, setiap musim berbunga"
id="estimasi-kehilangan-selalu"
{{ old('estimasi_kehilangan_hasil', $petani->estimasi_kehilangan_hasil) == 'Selalu, setiap musim berbunga' ? 'checked' : '' }}>
<label class="form-check-label" for="estimasi-kehilangan-selalu">Selalu, setiap musim berbunga</label>
</div>
<div class="form-check">
<input class="form-check-input @error('estimasi_kehilangan_hasil') is-invalid @enderror"
type="radio"
name="estimasi_kehilangan_hasil"
value="Kadang-kadang, tergantung kondisi"
id="estimasi-kehilangan-kadang"
{{ old('estimasi_kehilangan_hasil', $petani->estimasi_kehilangan_hasil) == 'Kadang-kadang, tergantung kondisi' ? 'checked' : '' }}>
<label class="form-check-label" for="estimasi-kehilangan-kadang">Kadang-kadang, tergantung kondisi</label>
</div>
<div class="form-check">
<input class="form-check-input @error('estimasi_kehilangan_hasil') is-invalid @enderror"
type="radio"
name="estimasi_kehilangan_hasil"
value="Tidak pernah"
id="estimasi-kehilangan-tidak-pernah"
{{ old('estimasi_kehilangan_hasil', $petani->estimasi_kehilangan_hasil) == 'Tidak pernah' ? 'checked' : '' }}>
<label class="form-check-label" for="estimasi-kehilangan-tidak-pernah">Tidak pernah</label>
</div>
<div class="form-check d-flex align-items-center gap-2 mt-1">
<input class="form-check-input @error('estimasi_kehilangan_hasil') is-invalid @enderror"
type="radio"
name="estimasi_kehilangan_hasil"
value="Lainnya"
id="estimasi-kehilangan-lainnya"
{{ old('estimasi_kehilangan_hasil', $petani->estimasi_kehilangan_hasil) == 'Lainnya' ? 'checked' : '' }}>
<label class="form-check-label text-nowrap" for="estimasi-kehilangan-lainnya">Lainnya:</label>
<input type="text"
name="estimasi_kehilangan_hasil_lainnya"
class="form-control form-control-sm w-50"
value="{{ old('estimasi_kehilangan_hasil_lainnya', $petani->estimasi_kehilangan_hasil_lainnya ?? '') }}"
placeholder="Sebutkan alasan lain...">
</div>
@error('estimasi_kehilangan_hasil')
<label class="form-label d-block fw-medium">Estimasi Kehilangan Hasil Akibat OPT<span class="text-danger">*</span></label>
<select class="form-control @error('estimasi_kehilangan_akibat_opt') is-invalid @enderror" id="estimasi-kehilangan-akibat-opt" name="estimasi_kehilangan_akibat_opt">
<option value="">Pilih Kehilangan Hasil</option>
@foreach (EstimasiKehilanganHasil::options() as $option)
<option value="{{ $option['value'] }}"
{{ old('estimasi_kehilangan_akibat_opt', $surveyPanen?->estimasi_kehilangan_akibat_opt) == $option['value'] ? 'selected' : '' }}>
{{ $option['label'] }}
</option>
@endforeach
</select>
@error('estimasi_kehilangan_akibat_opt')
<div class="error invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label d-block fw-medium">Estimasi Kehilangan Hasil Akibat Hama & Penyakit<span class="text-danger">*</span></label>
<select class="form-control @error('estimasi_kehilangan_akibat_hama') is-invalid @enderror" id="estimasi-kehilangan-akibat-hama" name="estimasi_kehilangan_akibat_hama">
<option value="">Pilih Kehilangan Hasil</option>
@foreach (EstimasiKehilanganHasil::options() as $option)
<option value="{{ $option['value'] }}"
{{ old('estimasi_kehilangan_akibat_hama', $surveyPanen?->estimasi_kehilangan_akibat_hama_penyakit) == $option['value'] ? 'selected' : '' }}>
{{ $option['label'] }}
</option>
@endforeach
</select>
@error('estimasi_kehilangan_akibat_hama')
<div class="error invalid-feedback d-block">{{ $message }}</div>
@enderror
</div>
@@ -1474,7 +1666,7 @@
'use strict';
$(document).ready(function () {
$('#tenaga-kerja, #frekuensi-pemangkasan-komoditas-utama, #frekuensi-pemangkasan-pohon-penaung, #penyerbukan-manual, #pemberian-pupuk, #jenis-pupuk, #metode-penanganan-hama-penyakit, #intensitas-serangan, #waktu-kemunculan-terparah, #frekuensi-sanitasi-lahan, #penanganan-sisa-buah-ranting, #penanganan-gulma, #kondisi-pengelolaan-air-irigasi, #kebutuhan-air-permusim, #pemahaman-manfaat-konservasi').select2();
$('#tenaga-kerja, #frekuensi-pemangkasan-komoditas-utama, #frekuensi-pemangkasan-pohon-penaung, #penyerbukan-manual, #pemberian-pupuk, #jenis-pupuk, #metode-penanganan-hama-penyakit, #intensitas-serangan, #waktu-kemunculan-terparah, #frekuensi-sanitasi-lahan, #penanganan-sisa-buah-ranting, #penanganan-gulma, #kondisi-pengelolaan-air-irigasi, #kebutuhan-air-permusim, #pemahaman-manfaat-konservasi, #dasar-penentuan-panen, #praktik-sortasi, #bentuk-sortasi, #estimasi-kehilangan-akibat-opt, #tingkat-reject, #tindakan-hasil-reject, #estimasi-kehilangan-akibat-hama, #komoditas-id').select2();
const $switch = $('input[name="disimpan_untuk_diri_sendiri"]');
const $text = $('#switch-text');
@@ -1584,6 +1776,128 @@
trigger.addEventListener('change', toggleInput);
toggleInput();
});
const biayaProduksiFields = [
'upah-tenaga-kerja',
'biaya-bibit',
'biaya-pupuk',
'biaya-pestisida',
'biaya-sewa-alat',
'biaya-penyediaan-air',
'biaya-lainnya'
];
const biayaPanenFields = [
'upah-tenaga-panen',
'biaya-pengangkutan',
'biaya-wadah-kemasan',
'biaya-sewa-alat-panen',
'biaya-panen-lainnya'
];
const totalBiayaProduksiField = document.getElementById('total-estimasi-biaya-produksi');
const totalBiayaPanenField = document.getElementById('total-estimasi-biaya-panen');
function parseRupiah(value) {
if (!value) return 0;
return parseInt(value.replace(/[^0-9]/g, '')) || 0;
}
function formatRupiah(value) {
return value.toLocaleString('id-ID');
}
function hitungTotal(fields, totalField) {
if (!totalField) return;
let total = 0;
fields.forEach(function (id) {
const field = document.getElementById(id);
if (field) {
total += parseRupiah(field.value);
}
});
totalField.value = total > 0 ? formatRupiah(total) : '';
}
function hitungTotalBiayaProduksi() {
hitungTotal(biayaProduksiFields, totalBiayaProduksiField);
}
function hitungTotalBiayaPanen() {
hitungTotal(biayaPanenFields, totalBiayaPanenField);
}
biayaProduksiFields.forEach(function (id) {
const field = document.getElementById(id);
if (field) {
field.addEventListener('input', hitungTotalBiayaProduksi);
field.addEventListener('change', hitungTotalBiayaProduksi);
}
});
biayaPanenFields.forEach(function (id) {
const field = document.getElementById(id);
if (field) {
field.addEventListener('input', hitungTotalBiayaPanen);
field.addEventListener('change', hitungTotalBiayaPanen);
}
});
hitungTotalBiayaProduksi();
hitungTotalBiayaPanen();
const switchInput = document.getElementById('disimpan-untuk-sendiri');
const switchText = document.getElementById('switch-text');
const detailWrapper = document.getElementById('detail-disimpan-wrapper');
const hasilPanenDisimpan = document.getElementById('hasil-panen-disimpan');
const tujuanDisimpan = document.getElementById('tujuan-disimpan');
function toggleDetailDisimpan() {
const isChecked = switchInput.checked;
if (isChecked) {
detailWrapper.classList.remove('d-none');
hasilPanenDisimpan.disabled = false;
tujuanDisimpan.disabled = false;
switchText.textContent = 'Ya, Sebagian Disimpan';
} else {
detailWrapper.classList.add('d-none');
hasilPanenDisimpan.disabled = true;
tujuanDisimpan.disabled = true;
hasilPanenDisimpan.value = '';
tujuanDisimpan.value = '';
switchText.textContent = 'Tidak, Semua Dijual';
}
}
switchInput.addEventListener('change', toggleDetailDisimpan);
toggleDetailDisimpan();
});
</script>
<script>
$(function () {
$('.form-repeater').repeater({
show: function () {
$(this).slideDown();
},
hide: function (deleteElement) {
$(this).slideUp(deleteElement);
}
});
});
</script>
@endpush
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff