Update BUMDes

This commit is contained in:
2026-11-05 19:20:05 +07:00
parent 9cdd178297
commit c55ff109a0
73 changed files with 6699 additions and 1548 deletions
@@ -1,530 +1,107 @@
@extends('layout.main')
@php
$fieldValue = function (string $field, $default = null) use ($kelembagaanAktor) {
return old($field, data_get($kelembagaanAktor, $field, $default));
};
$arrayValue = function (string $field) use ($fieldValue) {
return (array) $fieldValue($field, []);
};
$rowValue = function (string $field, string $keyName, string $key) use ($fieldValue) {
return collect((array) $fieldValue($field, []))->firstWhere($keyName, $key) ?? [];
};
$rupiahValue = function ($value) {
if (! filled($value)) {
return '';
}
if (is_numeric($value)) {
return number_format((float) $value, 0, ',', '.');
}
return preg_replace('/\D/', '', (string) $value);
};
$fieldValue = fn (string $field, $default = null) => old($field, data_get($kelembagaanAktor, $field, $default));
$unitUsahaSelected = (array) $fieldValue('unit_usaha', []);
$hasBadanHukum = $fieldValue('status_badan_hukum') === 'sudah_berbadan_hukum';
$hasUnitKomoditas = $fieldValue('status_unit_komoditas') === 'ya';
$hasAdArtLengkap = $fieldValue('status_ad_art') === 'ada_lengkap';
@endphp
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
@if (session('success'))
<div class="alert alert-success">{{ session('success') }}</div>
@endif
@if ($errors->any())
<div class="alert alert-danger">
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="container-xxl flex-grow-1 container-p-y bumdes-page">
@include('bumdes.profil.header', ['pengurus' => $pengurus])
<form method="POST" action="{{ route('bumdes.kelembagaan-aktor.store', $pengurus->id) }}" id="kelembagaanAktorForm">
@csrf
<div class="card mb-6">
<div class="card-header border-bottom">
<h5 class="card-title mb-0">Status Keberadaan, Keaktifan, Kepengurusan dan Modal BUMDes</h5>
</div>
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Status Keberadaan dan Keaktifan</h5>
<div class="mb-5 form-control-validation">
<label class="form-label d-block fw-semibold">Apakah BUMDes sudah berbadan hukum?</label>
<div class="d-flex flex-column">
@foreach($statusBadanHukumOptions as $value => $label)
<div>
<div class="form-check">
<input class="form-check-input" type="radio" id="status-badan-hukum-{{ $value }}" name="status_badan_hukum" value="{{ $value }}" @checked($fieldValue('status_badan_hukum') === $value)>
<label class="form-check-label" for="status-badan-hukum-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('status_badan_hukum')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="card mb-6">
<div class="card-body pt-6">
<form novalidate method="POST" action="{{ route('bumdes.kelembagaan-aktor.store', $pengurus->id) }}" id="kelembagaanAktorForm">
@csrf
<h5 class="pb-4 border-bottom mb-4">Status Legalitas BUMDes</h5>
<div class="row">
<div class="col-md-6 mb-5 form-control-validation">
<label class="form-label" for="nomor-dasar-hukum">Dasar hukum pendirian BUMDes (Peraturan Desa/SK) - Nomor</label>
<input type="text" class="form-control @error('nomor_dasar_hukum') is-invalid @enderror" id="nomor-dasar-hukum" name="nomor_dasar_hukum" value="{{ $fieldValue('nomor_dasar_hukum') }}" placeholder="Contoh: Perdes No. 02/2024">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="status-badan-hukum">Status Badan Hukum</label>
<select class="form-select @error('status_badan_hukum') is-invalid @enderror" id="status-badan-hukum" name="status_badan_hukum">
<option value="">Pilih Status Badan Hukum</option>
@foreach($statusBadanHukumOptions as $value => $label)
<option value="{{ $value }}" @selected($fieldValue('status_badan_hukum') === $value)>{{ $label }}</option>
@endforeach
</select>
@error('status_badan_hukum')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="nomor-dasar-hukum">Nomor Peraturan Desa/SK<span class="text-danger {{ $hasBadanHukum ? '' : 'd-none' }}" data-required-for="nomor-dasar-hukum">*</span></label>
<input type="text" class="form-control @error('nomor_dasar_hukum') is-invalid @enderror" id="nomor-dasar-hukum" name="nomor_dasar_hukum" value="{{ $fieldValue('nomor_dasar_hukum') }}" placeholder="Contoh: Perdes No. 02/2024" @disabled(!$hasBadanHukum) @required($hasBadanHukum)>
@error('nomor_dasar_hukum')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-5 form-control-validation">
<label class="form-label" for="tahun-dasar-hukum">Tahun ditetapkan</label>
<input type="number" class="form-control @error('tahun_dasar_hukum') is-invalid @enderror" id="tahun-dasar-hukum" name="tahun_dasar_hukum" value="{{ $fieldValue('tahun_dasar_hukum') }}" placeholder="Contoh: 2024">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="tahun-dasar-hukum">Tahun Penetapan<span class="text-danger {{ $hasBadanHukum ? '' : 'd-none' }}" data-required-for="tahun-dasar-hukum">*</span></label>
<input type="number" class="form-control @error('tahun_dasar_hukum') is-invalid @enderror" id="tahun-dasar-hukum" name="tahun_dasar_hukum" value="{{ $fieldValue('tahun_dasar_hukum') }}" placeholder="Contoh: 2024" @disabled(!$hasBadanHukum) @required($hasBadanHukum)>
@error('tahun_dasar_hukum')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="mb-5 form-control-validation">
<label class="form-label d-block fw-semibold">Bagaimana status keaktifan BUMDes?</label>
<div class="d-flex flex-column">
@foreach($statusKeaktifanOptions as $value => $label)
<div>
<div class="form-check">
<input class="form-check-input" type="radio" id="status-keaktifan-{{ $value }}" name="status_keaktifan" value="{{ $value }}" @checked($fieldValue('status_keaktifan') === $value)>
<label class="form-check-label" for="status-keaktifan-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('status_keaktifan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="mb-5 form-control-validation" id="alasan-tidak-aktif-wrapper">
<label class="form-label" for="alasan-tidak-aktif">Jika tidak aktif/vakum, apa alasan utamanya?</label>
<textarea class="form-control @error('alasan_tidak_aktif') is-invalid @enderror" id="alasan-tidak-aktif" name="alasan_tidak_aktif" rows="2" placeholder="Tuliskan alasan utama BUMDes tidak aktif/vakum">{{ $fieldValue('alasan_tidak_aktif') }}</textarea>
@error('alasan_tidak_aktif')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Unit Usaha dan Dokumen Kelembagaan</h5>
<div class="mb-5 form-control-validation">
<label class="form-label d-block fw-semibold">Unit usaha yang dimiliki BUMDes saat ini (boleh pilih lebih dari satu)</label>
<div class="d-flex flex-column">
@foreach($unitUsahaOptions as $value => $label)
<div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="unit-usaha-{{ $value }}" name="unit_usaha[]" value="{{ $value }}" @checked(in_array($value, $arrayValue('unit_usaha'), true))>
<label class="form-check-label" for="unit-usaha-{{ $value }}">{{ $label }}</label>
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label d-block" id="unit-usaha-label">Unit Usaha BUMDes</label>
<p class="text-muted small mb-3" id="unit-usaha-help">Boleh pilih lebih dari satu unit usaha.</p>
<div class="row g-2" role="group" aria-labelledby="unit-usaha-label" aria-describedby="unit-usaha-help">
@foreach($unitUsahaOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input type="checkbox" class="form-check-input @error('unit_usaha') is-invalid @enderror" id="unit-usaha-{{ $value }}" name="unit_usaha[]" value="{{ $value }}" @checked(in_array($value, $unitUsahaSelected, true))>
<label class="form-check-label" for="unit-usaha-{{ $value }}">{{ $label }}</label>
</div>
</div>
</div>
@endforeach
@endforeach
</div>
@error('unit_usaha')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
@error('unit_usaha')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="row" id="unit-usaha-jasa-lainnya-wrapper">
<div class="col-md-6 mb-5 form-control-validation">
<label class="form-label" for="unit-usaha-jasa-lainnya">Jasa lainnya</label>
<div class="col-md-6 mb-4 form-control-validation" id="unit-usaha-jasa-lainnya-wrapper">
<label class="form-label" for="unit-usaha-jasa-lainnya">Jasa Lainnya</label>
<input type="text" class="form-control @error('unit_usaha_jasa_lainnya') is-invalid @enderror" id="unit-usaha-jasa-lainnya" name="unit_usaha_jasa_lainnya" value="{{ $fieldValue('unit_usaha_jasa_lainnya') }}" placeholder="Sebutkan jasa lainnya">
@error('unit_usaha_jasa_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="mb-5 form-control-validation">
<label class="form-label d-block fw-semibold">Apakah ada unit usaha khusus yang menangani komoditas kopi/kakao/vanili/kemiri?</label>
<div class="d-flex flex-column">
@foreach($statusUnitKomoditasOptions as $value => $label)
<div>
<div class="form-check">
<input class="form-check-input" type="radio" id="status-unit-komoditas-{{ $value }}" name="status_unit_komoditas" value="{{ $value }}" @checked($fieldValue('status_unit_komoditas') === $value)>
<label class="form-check-label" for="status-unit-komoditas-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="status-unit-komoditas">Unit Khusus Kopi/Kakao/Vanili/Kemiri</label>
<select class="form-select @error('status_unit_komoditas') is-invalid @enderror" id="status-unit-komoditas" name="status_unit_komoditas">
<option value="">Pilih Status Unit Usaha Komoditas</option>
@foreach($statusUnitKomoditasOptions as $value => $label)
<option value="{{ $value }}" @selected($fieldValue('status_unit_komoditas') === $value)>{{ $label }}</option>
@endforeach
</select>
@error('status_unit_komoditas')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
@error('status_unit_komoditas')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="row" id="nama-unit-komoditas-wrapper">
<div class="col-md-6 mb-5 form-control-validation">
<label class="form-label" for="nama-unit-komoditas">Nama unit usaha komoditas</label>
<input type="text" class="form-control @error('nama_unit_komoditas') is-invalid @enderror" id="nama-unit-komoditas" name="nama_unit_komoditas" value="{{ $fieldValue('nama_unit_komoditas') }}" placeholder="Contoh: Unit Pengolahan Kopi">
<div class="col-md-6 mb-4 form-control-validation" id="nama-unit-komoditas-wrapper">
<label class="form-label" for="nama-unit-komoditas">Nama Unit Usaha Komoditas<span class="text-danger {{ $hasUnitKomoditas ? '' : 'd-none' }}" data-required-for="nama-unit-komoditas">*</span></label>
<input type="text" class="form-control @error('nama_unit_komoditas') is-invalid @enderror" id="nama-unit-komoditas" name="nama_unit_komoditas" value="{{ $fieldValue('nama_unit_komoditas') }}" placeholder="Contoh: Unit Pengolahan Kopi" @disabled(!$hasUnitKomoditas) @required($hasUnitKomoditas)>
@error('nama_unit_komoditas')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="mb-5 form-control-validation">
<label class="form-label d-block fw-semibold">Apakah ada dokumen kelembagaan (AD/ART)?</label>
<div class="d-flex flex-column">
@foreach($statusAdArtOptions as $value => $label)
<div>
<div class="form-check">
<input class="form-check-input" type="radio" id="status-ad-art-{{ $value }}" name="status_ad_art" value="{{ $value }}" @checked($fieldValue('status_ad_art') === $value)>
<label class="form-check-label" for="status-ad-art-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="status-ad-art">Dokumen Kelembagaan (AD/ART)</label>
<select class="form-select @error('status_ad_art') is-invalid @enderror" id="status-ad-art" name="status_ad_art">
<option value="">Pilih Status Dokumen Kelembagaan</option>
@foreach($statusAdArtOptions as $value => $label)
<option value="{{ $value }}" @selected($fieldValue('status_ad_art') === $value)>{{ $label }}</option>
@endforeach
</select>
@error('status_ad_art')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
@error('status_ad_art')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="row" id="tahun-ad-art-wrapper">
<div class="col-md-3 mb-5 form-control-validation">
<label class="form-label" for="tahun-ad-art">Terakhir diperbarui tahun</label>
<input type="number" class="form-control @error('tahun_ad_art') is-invalid @enderror" id="tahun-ad-art" name="tahun_ad_art" value="{{ $fieldValue('tahun_ad_art') }}" placeholder="Contoh: 2024">
<div class="col-md-3 mb-4 form-control-validation" id="tahun-ad-art-wrapper">
<label class="form-label" for="tahun-ad-art">Tahun Pembaruan Terakhir<span class="text-danger {{ $hasAdArtLengkap ? '' : 'd-none' }}" data-required-for="tahun-ad-art">*</span></label>
<input type="number" class="form-control @error('tahun_ad_art') is-invalid @enderror" id="tahun-ad-art" name="tahun_ad_art" value="{{ $fieldValue('tahun_ad_art') }}" placeholder="Contoh: 2024" @disabled(!$hasAdArtLengkap) @required($hasAdArtLengkap)>
@error('tahun_ad_art')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Kepengurusan dan Staf</h5>
<label class="form-label d-block fw-semibold">Catat pengurus inti yang aktif menjabat saat ini</label>
<div class="table-responsive mb-5">
<table class="table table-bordered align-middle">
<thead>
<tr>
<th style="width: 30%;">Jabatan</th>
<th>Nama</th>
<th style="width: 22%;">Keaktifan</th>
</tr>
</thead>
<tbody>
@foreach($pengurusIntiRows as $key => $label)
@php
$savedRow = $rowValue('pengurus_inti', 'jabatan', $key);
$aktifValue = old("pengurus_inti.$loop->index.aktif", data_get($savedRow, 'aktif'));
@endphp
<tr>
<td>
<input type="hidden" name="pengurus_inti[{{ $loop->index }}][jabatan]" value="{{ $key }}">
{{ $label }}
</td>
<td>
<input type="text" class="form-control" name="pengurus_inti[{{ $loop->index }}][nama]" value="{{ old("pengurus_inti.$loop->index.nama", data_get($savedRow, 'nama')) }}">
</td>
<td>
<div class="d-flex flex-column">
<div class="form-check mb-0">
<input class="form-check-input" type="radio" id="pengurus-inti-{{ $key }}-aktif" name="pengurus_inti[{{ $loop->index }}][aktif]" value="1" @checked((string) $aktifValue === '1')>
<label class="form-check-label" for="pengurus-inti-{{ $key }}-aktif">Aktif</label>
</div>
<div class="form-check mb-0">
<input class="form-check-input" type="radio" id="pengurus-inti-{{ $key }}-tidak" name="pengurus_inti[{{ $loop->index }}][aktif]" value="0" @checked((string) $aktifValue === '0')>
<label class="form-check-label" for="pengurus-inti-{{ $key }}-tidak">Tidak</label>
</div>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="mb-5 form-control-validation">
<label class="form-label d-block fw-semibold">Apakah BUMDes memiliki staf/karyawan di luar pengurus inti?</label>
<div class="d-flex flex-column">
<div class="form-check">
<input class="form-check-input" type="radio" id="memiliki-staf-ya" name="memiliki_staf" value="1" @checked((string) $fieldValue('memiliki_staf') === '1')>
<label class="form-check-label" for="memiliki-staf-ya">Ya</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" id="memiliki-staf-tidak" name="memiliki_staf" value="0" @checked((string) $fieldValue('memiliki_staf') === '0')>
<label class="form-check-label" for="memiliki-staf-tidak">Tidak ada, dikelola langsung pengurus</label>
</div>
</div>
@error('memiliki_staf')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="row" id="staf-detail-wrapper">
<div class="col-md-3 mb-5 form-control-validation">
<label class="form-label" for="jumlah-staf">Jumlah staf</label>
<div class="input-group">
<input type="number" min="0" class="form-control @error('jumlah_staf') is-invalid @enderror" id="jumlah-staf" name="jumlah_staf" value="{{ $fieldValue('jumlah_staf') }}">
<span class="input-group-text">orang</span>
</div>
@error('jumlah_staf')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="col-md-9 mb-5 form-control-validation">
<label class="form-label" for="unit-usaha-staf">Jika ada, untuk unit usaha apa staf tersebut bekerja?</label>
<input type="text" class="form-control @error('unit_usaha_staf') is-invalid @enderror" id="unit-usaha-staf" name="unit_usaha_staf" value="{{ $fieldValue('unit_usaha_staf') }}" placeholder="Contoh: Unit perdagangan/toko desa">
@error('unit_usaha_staf')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Modal dan Aset</h5>
<div class="row">
<div class="col-md-4 mb-5 form-control-validation">
<label class="form-label" for="modal-awal">Besaran modal awal BUMDes (jika diketahui)</label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input type="text" inputmode="numeric" class="form-control rupiah-input @error('modal_awal') is-invalid @enderror" id="modal-awal" name="modal_awal" value="{{ $rupiahValue($fieldValue('modal_awal')) }}">
</div>
@error('modal_awal')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-5 form-control-validation">
<label class="form-label" for="tahun-modal-awal">Tahun diterima</label>
<input type="number" class="form-control @error('tahun_modal_awal') is-invalid @enderror" id="tahun-modal-awal" name="tahun_modal_awal" value="{{ $fieldValue('tahun_modal_awal') }}" placeholder="Contoh: 2024">
@error('tahun_modal_awal')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="mb-5 form-control-validation">
<label class="form-label d-block fw-semibold">Apakah BUMDes pernah menerima penambahan modal sejak pertama kali berdiri?</label>
<div class="d-flex flex-column">
<div class="form-check">
<input class="form-check-input" type="radio" id="penambahan-modal-ya" name="pernah_penambahan_modal" value="1" @checked((string) $fieldValue('pernah_penambahan_modal') === '1')>
<label class="form-check-label" for="penambahan-modal-ya">Ya, pernah</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" id="penambahan-modal-tidak" name="pernah_penambahan_modal" value="0" @checked((string) $fieldValue('pernah_penambahan_modal') === '0')>
<label class="form-check-label" for="penambahan-modal-tidak">Tidak pernah menerima penambahan modal</label>
</div>
</div>
@error('pernah_penambahan_modal')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div id="penambahan-modal-wrapper">
<label class="form-label d-block fw-semibold">Jika BUMDes pernah menerima penambahan modal, isi rincian penambahan modal 3 tahun terakhir</label>
<div class="table-responsive mb-5">
<table class="table table-bordered align-middle">
<thead>
<tr>
<th>Tahun</th>
<th>Jumlah (Rp)</th>
</tr>
</thead>
<tbody>
@for($i = 0; $i < 3; $i++)
@php $savedRow = data_get($fieldValue('penambahan_modal', []), $i, []); @endphp
<tr>
<td>
<input type="number" class="form-control" name="penambahan_modal[{{ $i }}][tahun]" value="{{ old("penambahan_modal.$i.tahun", data_get($savedRow, 'tahun')) }}" placeholder="Contoh: 2024">
</td>
<td>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input type="text" inputmode="numeric" class="form-control rupiah-input" name="penambahan_modal[{{ $i }}][jumlah]" value="{{ $rupiahValue(old("penambahan_modal.$i.jumlah", data_get($savedRow, 'jumlah'))) }}">
</div>
</td>
</tr>
@endfor
</tbody>
</table>
</div>
</div>
<label class="form-label d-block fw-semibold">Aset produktif yang dimiliki BUMDes (boleh pilih lebih dari satu, lewati jika tidak ada)</label>
<div class="table-responsive mb-5">
<table class="table table-bordered align-middle">
<thead>
<tr>
<th style="width: 34%;">Aset Produktif</th>
<th>Jumlah</th>
<th>Kondisi</th>
</tr>
</thead>
<tbody>
@foreach($asetProduktifRows as $key => $label)
@php
$savedRow = $rowValue('aset_produktif', 'aset', $key);
$dipilih = old("aset_produktif.$loop->index.dipilih", data_get($savedRow, 'dipilih'));
@endphp
<tr>
<td>
<input type="hidden" name="aset_produktif[{{ $loop->index }}][aset]" value="{{ $key }}">
<div class="form-check">
<input class="form-check-input aset-produktif-check" type="checkbox" id="aset-produktif-{{ $key }}" name="aset_produktif[{{ $loop->index }}][dipilih]" value="1" data-target="{{ $key }}" @checked((string) $dipilih === '1')>
<label class="form-check-label" for="aset-produktif-{{ $key }}">{{ $label }}</label>
</div>
@if($key === 'lainnya')
<input type="text" class="form-control mt-2" id="aset-produktif-lainnya" name="aset_produktif_lainnya" value="{{ $fieldValue('aset_produktif_lainnya') }}" placeholder="Sebutkan aset lainnya">
@endif
</td>
<td>
<input type="text" class="form-control" name="aset_produktif[{{ $loop->index }}][jumlah]" value="{{ old("aset_produktif.$loop->index.jumlah", data_get($savedRow, 'jumlah')) }}">
</td>
<td>
<input type="text" class="form-control" name="aset_produktif[{{ $loop->index }}][kondisi]" value="{{ old("aset_produktif.$loop->index.kondisi", data_get($savedRow, 'kondisi')) }}" placeholder="Contoh: Baik, rusak ringan">
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="mb-5 form-control-validation">
<label class="form-label d-block fw-semibold">Status kepemilikan aset (lewati jika tidak ada)</label>
<div class="d-flex flex-column">
@foreach($statusKepemilikanAsetOptions as $value => $label)
<div>
<div class="form-check">
<input class="form-check-input" type="radio" id="status-kepemilikan-aset-{{ $value }}" name="status_kepemilikan_aset" value="{{ $value }}" @checked($fieldValue('status_kepemilikan_aset') === $value)>
<label class="form-check-label" for="status-kepemilikan-aset-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('status_kepemilikan_aset')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<label class="form-label d-block fw-semibold">Ketersediaan infrastruktur pascapanen untuk komoditas kopi/kakao/vanili/kemiri</label>
<div class="table-responsive mb-5">
<table class="table table-bordered align-middle">
<thead>
<tr>
<th style="width: 34%;">Infrastruktur Pascapanen</th>
<th>Jumlah</th>
<th style="width: 34%;">Kondisi</th>
</tr>
</thead>
<tbody>
@foreach($infrastrukturPascapanenRows as $key => $label)
@php
$savedRow = $rowValue('infrastruktur_pascapanen', 'infrastruktur', $key);
$dipilih = old("infrastruktur_pascapanen.$loop->index.dipilih", data_get($savedRow, 'dipilih'));
$kondisiValue = old("infrastruktur_pascapanen.$loop->index.kondisi", data_get($savedRow, 'kondisi'));
@endphp
<tr>
<td>
<input type="hidden" name="infrastruktur_pascapanen[{{ $loop->index }}][infrastruktur]" value="{{ $key }}">
<div class="form-check">
<input class="form-check-input infrastruktur-check" type="checkbox" id="infrastruktur-{{ $key }}" name="infrastruktur_pascapanen[{{ $loop->index }}][dipilih]" value="1" data-target="{{ $key }}" @checked((string) $dipilih === '1')>
<label class="form-check-label" for="infrastruktur-{{ $key }}">{{ $label }}</label>
</div>
@if($key === 'lainnya')
<input type="text" class="form-control mt-2" id="infrastruktur-pascapanen-lainnya" name="infrastruktur_pascapanen_lainnya" value="{{ $fieldValue('infrastruktur_pascapanen_lainnya') }}" placeholder="Sebutkan infrastruktur lainnya">
@endif
</td>
<td>
<input type="text" class="form-control" name="infrastruktur_pascapanen[{{ $loop->index }}][jumlah]" value="{{ old("infrastruktur_pascapanen.$loop->index.jumlah", data_get($savedRow, 'jumlah')) }}">
</td>
<td>
<div class="d-flex flex-column">
@foreach($kondisiInfrastrukturOptions as $kondisi => $kondisiLabel)
<div class="form-check mb-0">
<input class="form-check-input" type="radio" id="infrastruktur-{{ $key }}-{{ $kondisi }}" name="infrastruktur_pascapanen[{{ $loop->parent->index }}][kondisi]" value="{{ $kondisi }}" @checked($kondisiValue === $kondisi)>
<label class="form-check-label" for="infrastruktur-{{ $key }}-{{ $kondisi }}">{{ $kondisiLabel }}</label>
</div>
@endforeach
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="mt-4 text-end">
<a href="{{ route('bumdes.index') }}" class="btn btn-secondary me-2 wave-effect wave-light">Kembali</a>
<button type="submit" class="btn btn-success data-submit wave-effect wave-light">
<i class="ti tabler-device-floppy me-2"></i>Simpan Kelembagaan dan Aktor
</button>
</div>
</div>
<x-bumdes-form-actions />
</form>
</div>
</form>
</div>
</div>
@endsection
@push('scripts')
<script>
'use strict';
$(document).ready(function () {
function onlyDigits(value) {
return String(value || '').replace(/\D/g, '');
}
function formatRupiah(value) {
return onlyDigits(value).replace(/\B(?=(\d{3})+(?!\d))/g, '.');
}
function toggleWrapper($wrapper, enabled) {
$wrapper.toggleClass('d-none', !enabled);
setFieldsEnabled($wrapper, enabled);
}
function setFieldsEnabled($wrapper, enabled) {
$wrapper.find('input, textarea, select').prop('disabled', !enabled);
if (!enabled) {
$wrapper.find('input:not([type="radio"]):not([type="checkbox"]), textarea').val('');
$wrapper.find('input[type="radio"], input[type="checkbox"]').prop('checked', false);
}
}
function syncStatusKeaktifan() {
setFieldsEnabled($('#alasan-tidak-aktif-wrapper'), $('input[name="status_keaktifan"]:checked').val() === 'tidak_aktif_vakum');
}
function syncUnitUsahaLainnya() {
toggleWrapper($('#unit-usaha-jasa-lainnya-wrapper'), $('input[name="unit_usaha[]"][value="jasa_lainnya"]').is(':checked'));
}
function syncUnitKomoditas() {
toggleWrapper($('#nama-unit-komoditas-wrapper'), $('input[name="status_unit_komoditas"]:checked').val() === 'ya');
}
function syncAdArt() {
toggleWrapper($('#tahun-ad-art-wrapper'), $('input[name="status_ad_art"]:checked').val() === 'ada_lengkap');
}
function syncStaf() {
setFieldsEnabled($('#staf-detail-wrapper'), $('input[name="memiliki_staf"]:checked').val() === '1');
}
function syncPenambahanModal() {
setFieldsEnabled($('#penambahan-modal-wrapper'), $('input[name="pernah_penambahan_modal"]:checked').val() === '1');
}
function syncAsetLainnya() {
$('#aset-produktif-lainnya').prop('disabled', !$('input.aset-produktif-check[data-target="lainnya"]').is(':checked'));
if ($('#aset-produktif-lainnya').prop('disabled')) {
$('#aset-produktif-lainnya').val('');
}
}
function syncInfrastrukturLainnya() {
$('#infrastruktur-pascapanen-lainnya').prop('disabled', !$('input.infrastruktur-check[data-target="lainnya"]').is(':checked'));
if ($('#infrastruktur-pascapanen-lainnya').prop('disabled')) {
$('#infrastruktur-pascapanen-lainnya').val('');
}
}
$(document).on('input', '.rupiah-input', function () {
const cursorAtEnd = this.selectionStart === this.value.length;
this.value = formatRupiah(this.value);
if (cursorAtEnd) {
this.setSelectionRange(this.value.length, this.value.length);
}
});
$('.rupiah-input').each(function () {
this.value = formatRupiah(this.value);
});
$('input[name="status_keaktifan"]').on('change', syncStatusKeaktifan);
$('input[name="unit_usaha[]"]').on('change', syncUnitUsahaLainnya);
$('input[name="status_unit_komoditas"]').on('change', syncUnitKomoditas);
$('input[name="status_ad_art"]').on('change', syncAdArt);
$('input[name="memiliki_staf"]').on('change', syncStaf);
$('input[name="pernah_penambahan_modal"]').on('change', syncPenambahanModal);
$('.aset-produktif-check').on('change', syncAsetLainnya);
$('.infrastruktur-check').on('change', syncInfrastrukturLainnya);
$('#kelembagaanAktorForm').on('submit', function () {
$(this).find('.rupiah-input').each(function () {
this.value = onlyDigits(this.value);
});
});
syncStatusKeaktifan();
syncUnitUsahaLainnya();
syncUnitKomoditas();
syncAdArt();
syncStaf();
syncPenambahanModal();
syncAsetLainnya();
syncInfrastrukturLainnya();
});
</script>
@endpush
@@ -0,0 +1,656 @@
@extends('layout.main')
@php
$fieldValue = function (string $field, $default = null) use ($kelembagaanAktor) {
return old($field, data_get($kelembagaanAktor, $field, $default));
};
$hasPenambahanModal = (string) $fieldValue('pernah_penambahan_modal') === '1';
$rowValue = function (string $field, string $keyName, string $key) use ($fieldValue) {
return collect((array) $fieldValue($field, []))->firstWhere($keyName, $key) ?? [];
};
$rupiahValue = function ($value) {
if (! filled($value) || ! is_scalar($value)) {
return '';
}
if (is_numeric($value)) {
return number_format((float) $value, 0, ',', '.');
}
return preg_replace('/\D/', '', (string) $value);
};
$textValue = fn (string $field) => is_scalar($value = $fieldValue($field)) ? (string) $value : '';
$hasAlokasi = in_array($fieldValue('ada_alokasi_desa'), [true, 1, '1'], true);
$dukunganSelected = (array) $fieldValue('dukungan_desa', []);
$kemitraanSelected = (array) $fieldValue('kemitraan_eksternal', []);
$hasDukunganLainnya = in_array(\App\Enums\Bumdes\DukunganDesaBumdes::LAINNYA->value, $dukunganSelected, true);
$hasKemitraanLainnya = in_array(\App\Enums\Bumdes\KemitraanEksternalBumdes::LAINNYA->value, $kemitraanSelected, true);
$alokasi = $fieldValue('jumlah_alokasi_desa');
$alokasi = is_scalar($alokasi) ? (string) $alokasi : '';
if (preg_match('/^\d+(\.00)?$/D', $alokasi)) {
$alokasi = preg_replace('/\B(?=(\d{3})+(?!\d))/', '.', explode('.', $alokasi)[0]);
}
$hasAudit = in_array($fieldValue('pernah_audit'), [true, 1, '1'], true);
$auditSelected = (array) $fieldValue('sifat_audit', []);
$annualReport = $fieldValue('pertanggungjawaban_musdes') === \App\Enums\Bumdes\PertanggungjawabanMusdesBumdes::TAHUNAN->value;
$hasPades = in_array($fieldValue('kontribusi_pades'), [\App\Enums\Bumdes\KontribusiPadesBumdes::RUTIN->value, \App\Enums\Bumdes\KontribusiPadesBumdes::TIDAK_RUTIN->value], true);
$otherVillage = $fieldValue('cakupan_layanan') === \App\Enums\Bumdes\CakupanLayananBumdes::DESA_LAIN->value;
$servicesSelected = (array) $fieldValue('layanan_petani', []);
$obstaclesSelected = (array) $fieldValue('hambatan_usaha', []);
$hasOtherService = in_array(\App\Enums\Bumdes\LayananPetaniBumdes::LAINNYA->value, $servicesSelected, true);
$hasOtherObstacle = in_array(\App\Enums\Bumdes\HambatanUsahaBumdes::LAINNYA->value, $obstaclesSelected, true);
$activePartnership = $fieldValue('pengalaman_offtaker') === \App\Enums\Bumdes\PengalamanOfftakerBumdes::BERJALAN->value;
$stoppedPartnership = $fieldValue('pengalaman_offtaker') === \App\Enums\Bumdes\PengalamanOfftakerBumdes::BERHENTI->value;
$nominalPades = $textValue('nominal_kontribusi_pades');
if (preg_match('/^\d+(\.00)?$/D', $nominalPades)) {
$nominalPades = preg_replace('/\B(?=(\d{3})+(?!\d))/', '.', explode('.', $nominalPades)[0]);
}
@endphp
@section('content')
<div class="container-xxl flex-grow-1 container-p-y bumdes-page">
@include('bumdes.profil.header', ['pengurus' => $pengurus])
<form novalidate method="POST" action="{{ route('bumdes.operasional.store', $pengurus->id) }}" id="operasionalBumdesForm">
@csrf
<div class="card mb-6">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Modal dan Aset</h5>
<div class="row">
<div class="col-md-4 mb-5 form-control-validation">
<label class="form-label" for="modal-awal">Modal Awal</label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input type="text" inputmode="numeric" class="form-control rupiah-input @error('modal_awal') is-invalid @enderror" id="modal-awal" name="modal_awal" value="{{ $rupiahValue($fieldValue('modal_awal')) }}">
</div>
@error('modal_awal')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-5 form-control-validation">
<label class="form-label" for="tahun-modal-awal">Tahun Penerimaan Modal</label>
<input type="number" class="form-control @error('tahun_modal_awal') is-invalid @enderror" id="tahun-modal-awal" name="tahun_modal_awal" value="{{ $fieldValue('tahun_modal_awal') }}" placeholder="Contoh: 2024">
@error('tahun_modal_awal')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="mb-5 form-control-validation">
<label class="form-label d-block">Riwayat Penambahan Modal</label>
<div class="d-flex flex-column">
<div class="form-check">
<input class="form-check-input" type="radio" id="penambahan-modal-ya" name="pernah_penambahan_modal" value="1" @checked((string) $fieldValue('pernah_penambahan_modal') === '1')>
<label class="form-check-label" for="penambahan-modal-ya">Ya, pernah</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" id="penambahan-modal-tidak" name="pernah_penambahan_modal" value="0" @checked((string) $fieldValue('pernah_penambahan_modal') === '0')>
<label class="form-check-label" for="penambahan-modal-tidak">Tidak pernah menerima penambahan modal</label>
</div>
</div>
@error('pernah_penambahan_modal')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div id="penambahan-modal-wrapper">
<label class="form-label d-block">Penambahan Modal Tiga Tahun Terakhir</label>
<div class="table-responsive mb-5">
<table class="table table-bordered align-middle">
<thead>
<tr>
<th>Tahun</th>
<th>Jumlah (Rp)</th>
</tr>
</thead>
<tbody>
@for($i = 0; $i < 3; $i++)
@php $savedRow = data_get($fieldValue('penambahan_modal', []), $i, []); @endphp
<tr>
<td>
<input type="number" class="form-control @error("penambahan_modal.$i.tahun") is-invalid @enderror" name="penambahan_modal[{{ $i }}][tahun]" value="{{ old("penambahan_modal.$i.tahun", data_get($savedRow, 'tahun')) }}" placeholder="Contoh: 2024" @disabled(!$hasPenambahanModal)>
@error("penambahan_modal.$i.tahun")<div class="invalid-feedback">{{ $message }}</div>@enderror
</td>
<td>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input type="text" inputmode="numeric" class="form-control rupiah-input @error("penambahan_modal.$i.jumlah") is-invalid @enderror" name="penambahan_modal[{{ $i }}][jumlah]" value="{{ $rupiahValue(old("penambahan_modal.$i.jumlah", data_get($savedRow, 'jumlah'))) }}" @disabled(!$hasPenambahanModal)>
</div>
@error("penambahan_modal.$i.jumlah")<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</td>
</tr>
@endfor
</tbody>
</table>
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Aset Produktif Milik BUMDes</h5>
<p class="text-muted small"><span class="text-danger">*</span> Wajib diisi untuk aset yang dipilih Ada.</p>
<div class="table-responsive mb-5" id="bumdes-aset-produktif">
<table class="table table-bordered align-middle">
<thead>
<tr>
<th style="min-width: 180px;">Jenis Aset</th>
<th style="min-width: 120px;">Ada/Tidak</th>
<th style="min-width: 120px;">Jumlah</th>
<th style="min-width: 230px;">Status Kepemilikan <span class="text-danger" aria-hidden="true">*</span></th>
<th style="min-width: 220px;">Kondisi <span class="text-danger" aria-hidden="true">*</span></th>
</tr>
</thead>
<tbody>
@foreach($asetProduktifRows as $key => $label)
@php
$index = $loop->index;
$savedRow = $rowValue('aset_produktif', 'aset', $key);
$ada = (string) old("aset_produktif.$index.dipilih", data_get($savedRow, 'dipilih', '0')) === '1';
$kepemilikan = old("aset_produktif.$index.status_kepemilikan_aset", data_get($savedRow, 'status_kepemilikan_aset', $fieldValue('status_kepemilikan_aset')));
$kondisi = \App\Enums\Bumdes\KondisiAsetProduktifBumdes::normalizeLegacy(old("aset_produktif.$index.kondisi", data_get($savedRow, 'kondisi')));
@endphp
<tr data-bumdes-aset="{{ $key }}">
<td>
<input type="hidden" name="aset_produktif[{{ $index }}][aset]" value="{{ $key }}">
{{ $label }}
@if($key === 'lainnya')
<input type="text" class="form-control mt-2 bumdes-inventaris-detail bumdes-inventaris-required @error('aset_produktif_lainnya') is-invalid @enderror" id="aset-produktif-lainnya" name="aset_produktif_lainnya" value="{{ $fieldValue('aset_produktif_lainnya') }}" placeholder="Sebutkan aset lainnya" aria-label="Nama aset lainnya" @disabled(!$ada) @required($ada)>
@error('aset_produktif_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
@endif
</td>
<td>
<div class="form-check">
<input class="form-check-input bumdes-inventaris-status-radio" type="radio" id="aset-produktif-{{ $key }}-ada" name="aset_produktif[{{ $index }}][dipilih]" value="1" @checked($ada)>
<label class="form-check-label" for="aset-produktif-{{ $key }}-ada">Ada</label>
</div>
<div class="form-check">
<input class="form-check-input bumdes-inventaris-status-radio" type="radio" id="aset-produktif-{{ $key }}-tidak" name="aset_produktif[{{ $index }}][dipilih]" value="0" @checked(!$ada)>
<label class="form-check-label" for="aset-produktif-{{ $key }}-tidak">Tidak</label>
</div>
</td>
<td>
<input type="number" min="0" class="form-control bumdes-inventaris-detail @error("aset_produktif.$index.jumlah") is-invalid @enderror" name="aset_produktif[{{ $index }}][jumlah]" value="{{ old("aset_produktif.$index.jumlah", data_get($savedRow, 'jumlah')) }}" aria-label="Jumlah {{ $label }}" @disabled(!$ada)>
@error("aset_produktif.$index.jumlah")<div class="invalid-feedback">{{ $message }}</div>@enderror
</td>
<td>
<select class="form-select bumdes-inventaris-detail bumdes-inventaris-required @error("aset_produktif.$index.status_kepemilikan_aset") is-invalid @enderror" name="aset_produktif[{{ $index }}][status_kepemilikan_aset]" aria-label="Status Kepemilikan {{ $label }}" @disabled(!$ada) @required($ada)>
<option value="">Pilih status kepemilikan</option>
@foreach($statusKepemilikanAsetOptions as $value => $text)
<option value="{{ $value }}" @selected($kepemilikan === $value)>{{ $text }}</option>
@endforeach
</select>
@error("aset_produktif.$index.status_kepemilikan_aset")<div class="invalid-feedback">{{ $message }}</div>@enderror
</td>
<td>
<select class="form-select bumdes-inventaris-detail bumdes-inventaris-required @error("aset_produktif.$index.kondisi") is-invalid @enderror" name="aset_produktif[{{ $index }}][kondisi]" aria-label="Kondisi {{ $label }}" @disabled(!$ada) @required($ada)>
<option value="">Pilih kondisi</option>
@foreach($kondisiAsetProduktifOptions as $value => $text)
<option value="{{ $value }}" @selected($kondisi === $value)>{{ $text }}</option>
@endforeach
@if($kondisi !== null && !array_key_exists($kondisi, $kondisiAsetProduktifOptions))
<option value="{{ $kondisi }}" selected>{{ $kondisi }}</option>
@endif
</select>
@error("aset_produktif.$index.kondisi")<div class="invalid-feedback">{{ $message }}</div>@enderror
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Ketersediaan Infrastruktur Pascapanen</h5>
<p class="text-muted mb-2">Untuk komoditas kopi/kakao/vanili/kemiri.</p>
<p class="text-muted small"><span class="text-danger">*</span> Wajib diisi untuk infrastruktur yang dipilih Ada.</p>
<div class="table-responsive mb-5" id="bumdes-infrastruktur-pascapanen">
<table class="table table-bordered align-middle">
<thead>
<tr>
<th style="min-width: 180px;">Infrastruktur Pascapanen</th>
<th style="min-width: 120px;">Ada/Tidak</th>
<th style="min-width: 120px;">Jumlah</th>
<th style="min-width: 220px;">Kondisi <span class="text-danger" aria-hidden="true">*</span></th>
</tr>
</thead>
<tbody>
@foreach($infrastrukturPascapanenRows as $key => $label)
@php
$index = $loop->index;
$savedRow = $rowValue('infrastruktur_pascapanen', 'infrastruktur', $key);
$ada = (string) old("infrastruktur_pascapanen.$index.dipilih", data_get($savedRow, 'dipilih', '0')) === '1';
$kondisiValue = old("infrastruktur_pascapanen.$index.kondisi", data_get($savedRow, 'kondisi'));
@endphp
<tr data-bumdes-infrastruktur="{{ $key }}">
<td>
<input type="hidden" name="infrastruktur_pascapanen[{{ $index }}][infrastruktur]" value="{{ $key }}">
{{ $label }}
@if($key === 'lainnya')
<input type="text" class="form-control mt-2 bumdes-inventaris-detail bumdes-inventaris-required @error('infrastruktur_pascapanen_lainnya') is-invalid @enderror" id="infrastruktur-pascapanen-lainnya" name="infrastruktur_pascapanen_lainnya" value="{{ $fieldValue('infrastruktur_pascapanen_lainnya') }}" placeholder="Sebutkan infrastruktur lainnya" aria-label="Nama infrastruktur lainnya" @disabled(!$ada) @required($ada)>
@error('infrastruktur_pascapanen_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
@endif
</td>
<td>
<div class="form-check">
<input class="form-check-input bumdes-inventaris-status-radio" type="radio" id="infrastruktur-{{ $key }}-ada" name="infrastruktur_pascapanen[{{ $index }}][dipilih]" value="1" @checked($ada)>
<label class="form-check-label" for="infrastruktur-{{ $key }}-ada">Ada</label>
</div>
<div class="form-check">
<input class="form-check-input bumdes-inventaris-status-radio" type="radio" id="infrastruktur-{{ $key }}-tidak" name="infrastruktur_pascapanen[{{ $index }}][dipilih]" value="0" @checked(!$ada)>
<label class="form-check-label" for="infrastruktur-{{ $key }}-tidak">Tidak</label>
</div>
</td>
<td>
<input type="number" min="0" class="form-control bumdes-inventaris-detail @error("infrastruktur_pascapanen.$index.jumlah") is-invalid @enderror" name="infrastruktur_pascapanen[{{ $index }}][jumlah]" value="{{ old("infrastruktur_pascapanen.$index.jumlah", data_get($savedRow, 'jumlah')) }}" aria-label="Jumlah {{ $label }}" @disabled(!$ada)>
@error("infrastruktur_pascapanen.$index.jumlah")<div class="invalid-feedback">{{ $message }}</div>@enderror
</td>
<td>
<select class="form-select bumdes-inventaris-detail bumdes-inventaris-required @error("infrastruktur_pascapanen.$index.kondisi") is-invalid @enderror" name="infrastruktur_pascapanen[{{ $index }}][kondisi]" aria-label="Kondisi {{ $label }}" @disabled(!$ada) @required($ada)>
<option value="">Pilih kondisi</option>
@foreach($kondisiInfrastrukturOptions as $kondisi => $kondisiLabel)
<option value="{{ $kondisi }}" @selected($kondisiValue === $kondisi)>{{ $kondisiLabel }}</option>
@endforeach
</select>
@error("infrastruktur_pascapanen.$index.kondisi")<div class="invalid-feedback">{{ $message }}</div>@enderror
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<x-bumdes-form-actions />
</div>
</div>
<div class="card mb-6">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Dukungan Ekosistem</h5>
<fieldset class="mb-5">
<legend class="form-label">Alokasi APBDes/Dana Desa Tahun Berjalan</legend>
<div class="form-check mb-2">
<input class="form-check-input @error('ada_alokasi_desa') is-invalid @enderror" type="radio" name="ada_alokasi_desa" id="alokasi-desa-ada" value="1" @checked($hasAlokasi)>
<label class="form-check-label" for="alokasi-desa-ada">Ada alokasi APBDes/Dana Desa tahun berjalan</label>
</div>
<div class="form-check mb-3">
<input class="form-check-input @error('ada_alokasi_desa') is-invalid @enderror" type="radio" name="ada_alokasi_desa" id="alokasi-desa-tidak" value="0" @checked(in_array($fieldValue('ada_alokasi_desa'), [false, 0, '0'], true))>
<label class="form-check-label" for="alokasi-desa-tidak">Tidak ada alokasi tahun ini</label>
</div>
@error('ada_alokasi_desa')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
<div class="row">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="jumlah-alokasi-desa">Nilai Alokasi APBDes/Dana Desa<span class="text-danger {{ $hasAlokasi ? '' : 'd-none' }}" data-required-for="jumlah-alokasi-desa">*</span></label>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input type="text" inputmode="numeric" class="form-control rupiah-input @error('jumlah_alokasi_desa') is-invalid @enderror" id="jumlah-alokasi-desa" name="jumlah_alokasi_desa" value="{{ $alokasi }}" placeholder="Contoh: 10.000.000" @disabled(!$hasAlokasi) @required($hasAlokasi)>
</div>
@error('jumlah_alokasi_desa')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<fieldset class="mb-5" data-bumdes-choices="dukungan_desa" data-exclusive-value="{{ \App\Enums\Bumdes\DukunganDesaBumdes::TIDAK_ADA->value }}">
<legend class="form-label">Dukungan Lain dari Pemerintah Desa</legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3 mb-3">
@foreach($dukunganDesaOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('dukungan_desa') || $errors->has('dukungan_desa.*') ? 'is-invalid' : '' }}" type="checkbox" name="dukungan_desa[]" id="dukungan-desa-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $dukunganSelected, true))>
<label class="form-check-label" for="dukungan-desa-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('dukungan_desa')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('dukungan_desa.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
<div class="row">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="dukungan-desa-lainnya-detail">Dukungan Lainnya<span class="text-danger {{ $hasDukunganLainnya ? '' : 'd-none' }}" data-required-for="dukungan-desa-lainnya-detail">*</span></label>
<input type="text" class="form-control @error('dukungan_desa_lainnya') is-invalid @enderror" id="dukungan-desa-lainnya-detail" name="dukungan_desa_lainnya" value="{{ $textValue('dukungan_desa_lainnya') }}" placeholder="Sebutkan bentuk dukungan lainnya" data-ekosistem-other-value="{{ \App\Enums\Bumdes\DukunganDesaBumdes::LAINNYA->value }}" @disabled(!$hasDukunganLainnya) @required($hasDukunganLainnya)>
@error('dukungan_desa_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<fieldset class="mb-5">
<legend class="form-label">Keterlibatan dalam Rapat Desa Terkait Komoditas</legend>
<div class="d-flex flex-wrap gap-3">
@foreach($keterlibatanKoordinasiOptions as $value => $label)
<div class="form-check">
<input class="form-check-input @error('keterlibatan_koordinasi_desa') is-invalid @enderror" type="radio" name="keterlibatan_koordinasi_desa" id="koordinasi-desa-{{ $value }}" value="{{ $value }}" @checked($fieldValue('keterlibatan_koordinasi_desa') === $value)>
<label class="form-check-label" for="koordinasi-desa-{{ $value }}">{{ $label }}</label>
</div>
@endforeach
</div>
@error('keterlibatan_koordinasi_desa')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<fieldset class="mb-5" data-bumdes-choices="kemitraan_eksternal" data-exclusive-value="{{ \App\Enums\Bumdes\KemitraanEksternalBumdes::BELUM_ADA->value }}">
<legend class="form-label">Kemitraan Eksternal</legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3 mb-3">
@foreach($kemitraanEksternalOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('kemitraan_eksternal') || $errors->has('kemitraan_eksternal.*') ? 'is-invalid' : '' }}" type="checkbox" name="kemitraan_eksternal[]" id="kemitraan-eksternal-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $kemitraanSelected, true))>
<label class="form-check-label" for="kemitraan-eksternal-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('kemitraan_eksternal')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('kemitraan_eksternal.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
<div class="row">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="kemitraan-eksternal-lainnya-detail">Jenis Kemitraan Lainnya<span class="text-danger {{ $hasKemitraanLainnya ? '' : 'd-none' }}" data-required-for="kemitraan-eksternal-lainnya-detail">*</span></label>
<input type="text" class="form-control @error('kemitraan_eksternal_lainnya') is-invalid @enderror" id="kemitraan-eksternal-lainnya-detail" name="kemitraan_eksternal_lainnya" value="{{ $textValue('kemitraan_eksternal_lainnya') }}" placeholder="Sebutkan jenis kemitraan lainnya" data-ekosistem-other-value="{{ \App\Enums\Bumdes\KemitraanEksternalBumdes::LAINNYA->value }}" @disabled(!$hasKemitraanLainnya) @required($hasKemitraanLainnya)>
@error('kemitraan_eksternal_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<x-bumdes-form-actions />
</div>
</div>
<div class="card mb-6" id="section-kapasitas-keuangan">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Kapasitas Pengelolaan Keuangan</h5>
<fieldset class="mb-5">
<legend class="form-label">Pembukuan dan Laporan Keuangan</legend>
<div class="row row-gap-3">
@foreach($statusPembukuanOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('status_pembukuan') is-invalid @enderror" type="radio" name="status_pembukuan" id="status-pembukuan-{{ $value }}" value="{{ $value }}" @checked($fieldValue('status_pembukuan') === $value)>
<label class="form-check-label" for="status-pembukuan-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('status_pembukuan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<fieldset class="mb-5">
<legend class="form-label">Format Pembukuan</legend>
<div class="row row-gap-3">
@foreach($formatPembukuanOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('format_pembukuan') is-invalid @enderror" type="radio" name="format_pembukuan" id="format-pembukuan-{{ $value }}" value="{{ $value }}" @checked($fieldValue('format_pembukuan') === $value)>
<label class="form-check-label" for="format-pembukuan-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('format_pembukuan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<fieldset class="mb-5">
<legend class="form-label">Audit/Pemeriksaan Keuangan</legend>
<div class="d-flex flex-wrap gap-3">
<div class="form-check">
<input class="form-check-input @error('pernah_audit') is-invalid @enderror" type="radio" name="pernah_audit" id="pernah-audit-ya" value="1" @checked($hasAudit)>
<label class="form-check-label" for="pernah-audit-ya">Ya, ada</label>
</div>
<div class="form-check">
<input class="form-check-input @error('pernah_audit') is-invalid @enderror" type="radio" name="pernah_audit" id="pernah-audit-belum" value="0" @checked(in_array($fieldValue('pernah_audit'), [false, 0, '0'], true))>
<label class="form-check-label" for="pernah-audit-belum">Belum pernah</label>
</div>
</div>
@error('pernah_audit')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div class="row" data-operasional-condition data-condition-field="pernah_audit" data-condition-values="{{ json_encode(['1']) }}">
<fieldset class="col-12 mb-4">
<legend class="form-label">Jenis Audit/Pemeriksaan<span class="text-danger {{ $hasAudit ? '' : 'd-none' }}" data-operasional-required>*</span></legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3">
@foreach($sifatAuditOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('sifat_audit') || $errors->has('sifat_audit.*') ? 'is-invalid' : '' }}" type="checkbox" name="sifat_audit[]" id="sifat-audit-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $auditSelected, true)) @disabled(!$hasAudit) @required($hasAudit && $loop->first && count($auditSelected) === 0)>
<label class="form-check-label" for="sifat-audit-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('sifat_audit')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('sifat_audit.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="pelaksana-audit">Pelaksana Audit/Pemeriksaan<span class="text-danger {{ $hasAudit ? '' : 'd-none' }}" data-operasional-required>*</span></label>
<input type="text" class="form-control @error('pelaksana_audit') is-invalid @enderror" id="pelaksana-audit" name="pelaksana_audit" value="{{ $textValue('pelaksana_audit') }}" placeholder="Nama pihak yang melakukan audit/pemeriksaan" @disabled(!$hasAudit) @required($hasAudit)>
@error('pelaksana_audit')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="tahun-audit">Tahun Audit/Pemeriksaan Terakhir<span class="text-danger {{ $hasAudit ? '' : 'd-none' }}" data-operasional-required>*</span></label>
<input type="number" min="1900" max="{{ now()->year }}" class="form-control @error('tahun_audit') is-invalid @enderror" id="tahun-audit" name="tahun_audit" value="{{ $textValue('tahun_audit') }}" placeholder="" @disabled(!$hasAudit) @required($hasAudit)>
@error('tahun_audit')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
<fieldset class="mb-5">
<legend class="form-label">Pertanggungjawaban ke Musyawarah Desa</legend>
<div class="row row-gap-3">
@foreach($pertanggungjawabanMusdesOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('pertanggungjawaban_musdes') is-invalid @enderror" type="radio" name="pertanggungjawaban_musdes" id="pertanggungjawaban-musdes-{{ $value }}" value="{{ $value }}" @checked($fieldValue('pertanggungjawaban_musdes') === $value)>
<label class="form-check-label" for="pertanggungjawaban-musdes-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('pertanggungjawaban_musdes')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div class="row" data-operasional-condition data-condition-field="pertanggungjawaban_musdes" data-condition-values="{{ json_encode([\App\Enums\Bumdes\PertanggungjawabanMusdesBumdes::TAHUNAN->value]) }}">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="tahun-laporan-musdes">Tahun Laporan Terakhir<span class="text-danger {{ $annualReport ? '' : 'd-none' }}" data-operasional-required>*</span></label>
<input type="number" min="1900" max="{{ now()->year }}" class="form-control @error('tahun_laporan_musdes') is-invalid @enderror" id="tahun-laporan-musdes" name="tahun_laporan_musdes" value="{{ $textValue('tahun_laporan_musdes') }}" placeholder="" @disabled(!$annualReport) @required($annualReport)>
@error('tahun_laporan_musdes')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
<fieldset class="mb-5">
<legend class="form-label">Kondisi Keuangan Saat Ini</legend>
<div class="row row-gap-3">
@foreach($kondisiKeuanganOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('kondisi_keuangan') is-invalid @enderror" type="radio" name="kondisi_keuangan" id="kondisi-keuangan-{{ $value }}" value="{{ $value }}" @checked($fieldValue('kondisi_keuangan') === $value)>
<label class="form-check-label" for="kondisi-keuangan-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('kondisi_keuangan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<fieldset class="mb-5">
<legend class="form-label">Kontribusi ke Pendapatan Asli Desa (PADes)</legend>
<div class="row row-gap-3">
@foreach($kontribusiPadesOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('kontribusi_pades') is-invalid @enderror" type="radio" name="kontribusi_pades" id="kontribusi-pades-{{ $value }}" value="{{ $value }}" @checked($fieldValue('kontribusi_pades') === $value)>
<label class="form-check-label" for="kontribusi-pades-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('kontribusi_pades')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div class="row" data-operasional-condition data-condition-field="kontribusi_pades" data-condition-values="{{ json_encode([\App\Enums\Bumdes\KontribusiPadesBumdes::RUTIN->value, \App\Enums\Bumdes\KontribusiPadesBumdes::TIDAK_RUTIN->value]) }}">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="nominal-kontribusi-pades">Nominal Kontribusi ke PADes<span class="text-danger {{ $hasPades ? '' : 'd-none' }}" data-operasional-required>*</span></label>
<div class="input-group"><span class="input-group-text">Rp</span><input type="text" inputmode="numeric" class="form-control rupiah-input @error('nominal_kontribusi_pades') is-invalid @enderror" id="nominal-kontribusi-pades" name="nominal_kontribusi_pades" value="{{ $nominalPades }}" placeholder="Contoh: 1.000.000" @disabled(!$hasPades) @required($hasPades)></div>
@error('nominal_kontribusi_pades')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
<x-bumdes-form-actions />
</div>
</div>
<div class="card mb-6" id="section-jangkauan-layanan">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Jangkauan Layanan</h5>
<fieldset class="mb-5">
<legend class="form-label">Wilayah Layanan Komoditas</legend>
<div class="row row-gap-3">
@foreach($cakupanLayananOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('cakupan_layanan') is-invalid @enderror" type="radio" name="cakupan_layanan" id="cakupan-layanan-{{ $value }}" value="{{ $value }}" @checked($fieldValue('cakupan_layanan') === $value)>
<label class="form-check-label" for="cakupan-layanan-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('cakupan_layanan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div class="row" data-operasional-condition data-condition-field="cakupan_layanan" data-condition-values="{{ json_encode([\App\Enums\Bumdes\CakupanLayananBumdes::DESA_LAIN->value]) }}">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="desa-lain-dilayani">Desa Lain yang Dilayani<span class="text-danger {{ $otherVillage ? '' : 'd-none' }}" data-operasional-required>*</span></label>
<textarea class="form-control @error('desa_lain_dilayani') is-invalid @enderror" id="desa-lain-dilayani" name="desa_lain_dilayani" rows="3" placeholder="Sebutkan desa lain yang dilayani" @disabled(!$otherVillage) @required($otherVillage)>{{ $textValue('desa_lain_dilayani') }}</textarea>
@error('desa_lain_dilayani')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
<p class="form-label">Perkiraan Jumlah Petani yang Dilayani</p>
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="jumlah-petani-desa-sendiri">Dari Desa Sendiri</label>
<div class="input-group"><input type="number" min="0" class="form-control @error('jumlah_petani_desa_sendiri') is-invalid @enderror" id="jumlah-petani-desa-sendiri" name="jumlah_petani_desa_sendiri" value="{{ $textValue('jumlah_petani_desa_sendiri') }}" placeholder=""><span class="input-group-text">orang</span></div>
@error('jumlah_petani_desa_sendiri')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
<div class="row" data-operasional-condition data-condition-field="cakupan_layanan" data-condition-values="{{ json_encode([\App\Enums\Bumdes\CakupanLayananBumdes::DESA_LAIN->value]) }}">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="jumlah-petani-desa-lain">Dari Desa Lain<span class="text-danger {{ $otherVillage ? '' : 'd-none' }}" data-operasional-required>*</span></label>
<div class="input-group"><input type="number" min="0" class="form-control @error('jumlah_petani_desa_lain') is-invalid @enderror" id="jumlah-petani-desa-lain" name="jumlah_petani_desa_lain" value="{{ $textValue('jumlah_petani_desa_lain') }}" placeholder="" @disabled(!$otherVillage) @required($otherVillage)><span class="input-group-text">orang</span></div>
@error('jumlah_petani_desa_lain')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
<fieldset class="mb-5">
<legend class="form-label">Pencatatan Petani yang Dilayani</legend>
<div class="row row-gap-3">
@foreach($pencatatanPetaniOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('pencatatan_petani') is-invalid @enderror" type="radio" name="pencatatan_petani" id="pencatatan-petani-{{ $value }}" value="{{ $value }}" @checked($fieldValue('pencatatan_petani') === $value)>
<label class="form-check-label" for="pencatatan-petani-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('pencatatan_petani')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<x-bumdes-form-actions />
</div>
</div>
<div class="card mb-6" id="section-layanan-petani">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Layanan bagi Petani Terkait Komoditas</h5>
<fieldset class="mb-5" data-bumdes-choices="layanan_petani" data-exclusive-value="{{ \App\Enums\Bumdes\LayananPetaniBumdes::BELUM_ADA->value }}">
<legend class="form-label">Layanan untuk Petani Kopi/Kakao/Vanili/Kemiri</legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3 mb-3">
@foreach($layananPetaniOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('layanan_petani') || $errors->has('layanan_petani.*') ? 'is-invalid' : '' }}" type="checkbox" name="layanan_petani[]" id="layanan-petani-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $servicesSelected, true))>
<label class="form-check-label" for="layanan-petani-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('layanan_petani')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('layanan_petani.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
<div class="row">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="layanan-petani-lainnya-detail">Layanan Lainnya<span class="text-danger {{ $hasOtherService ? '' : 'd-none' }}" data-required-for="layanan-petani-lainnya-detail">*</span></label>
<input type="text" class="form-control @error('layanan_petani_lainnya') is-invalid @enderror" id="layanan-petani-lainnya-detail" name="layanan_petani_lainnya" value="{{ $textValue('layanan_petani_lainnya') }}" placeholder="Sebutkan lainnya" data-ekosistem-other-value="{{ \App\Enums\Bumdes\LayananPetaniBumdes::LAINNYA->value }}" @disabled(!$hasOtherService) @required($hasOtherService)>
@error('layanan_petani_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<x-bumdes-form-actions />
</div>
</div>
<div class="card mb-6" id="section-rantai-nilai">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Pengalaman dalam Mengelola Rantai Nilai Komoditas Pertanian</h5>
<fieldset class="mb-5">
<legend class="form-label">Peran dalam Rantai Nilai Komoditas</legend>
<div class="row row-gap-3">
@foreach($peranRantaiNilaiOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('peran_rantai_nilai') is-invalid @enderror" type="radio" name="peran_rantai_nilai" id="peran-rantai-nilai-{{ $value }}" value="{{ $value }}" @checked($fieldValue('peran_rantai_nilai') === $value)>
<label class="form-check-label" for="peran-rantai-nilai-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('peran_rantai_nilai')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<fieldset class="mb-5">
<legend class="form-label">Pengalaman Kemitraan Offtaker</legend>
<div class="row row-gap-3">
@foreach($pengalamanOfftakerOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('pengalaman_offtaker') is-invalid @enderror" type="radio" name="pengalaman_offtaker" id="pengalaman-offtaker-{{ $value }}" value="{{ $value }}" @checked($fieldValue('pengalaman_offtaker') === $value)>
<label class="form-check-label" for="pengalaman-offtaker-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('pengalaman_offtaker')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div class="row" data-operasional-condition data-condition-field="pengalaman_offtaker" data-condition-values="{{ json_encode([\App\Enums\Bumdes\PengalamanOfftakerBumdes::BERJALAN->value]) }}">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="nama-offtaker">Nama Offtaker<span class="text-danger {{ $activePartnership ? '' : 'd-none' }}" data-operasional-required>*</span></label>
<input type="text" class="form-control @error('nama_offtaker') is-invalid @enderror" id="nama-offtaker" name="nama_offtaker" value="{{ $textValue('nama_offtaker') }}" placeholder="Nama mitra offtaker" @disabled(!$activePartnership) @required($activePartnership)>
@error('nama_offtaker')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="tahun-mulai-offtaker">Tahun Mulai Kemitraan<span class="text-danger {{ $activePartnership ? '' : 'd-none' }}" data-operasional-required>*</span></label>
<input type="number" min="1900" max="{{ now()->year }}" class="form-control @error('tahun_mulai_offtaker') is-invalid @enderror" id="tahun-mulai-offtaker" name="tahun_mulai_offtaker" value="{{ $textValue('tahun_mulai_offtaker') }}" placeholder="" @disabled(!$activePartnership) @required($activePartnership)>
@error('tahun_mulai_offtaker')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
<div class="row" data-operasional-condition data-condition-field="pengalaman_offtaker" data-condition-values="{{ json_encode([\App\Enums\Bumdes\PengalamanOfftakerBumdes::BERHENTI->value]) }}">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="alasan-berhenti-offtaker">Alasan Kemitraan Berhenti<span class="text-danger {{ $stoppedPartnership ? '' : 'd-none' }}" data-operasional-required>*</span></label>
<textarea class="form-control @error('alasan_berhenti_offtaker') is-invalid @enderror" id="alasan-berhenti-offtaker" name="alasan_berhenti_offtaker" rows="3" placeholder="Jelaskan alasan kemitraan berhenti" @disabled(!$stoppedPartnership) @required($stoppedPartnership)>{{ $textValue('alasan_berhenti_offtaker') }}</textarea>
@error('alasan_berhenti_offtaker')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
<x-bumdes-form-actions />
</div>
</div>
<div class="card mb-6" id="section-hambatan-usaha">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Hambatan yang Dihadapi BUMDes</h5>
<fieldset class="mb-5" data-bumdes-choices="hambatan_usaha">
<legend class="form-label">Hambatan Usaha</legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3 mb-3">
@foreach($hambatanUsahaOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('hambatan_usaha') || $errors->has('hambatan_usaha.*') ? 'is-invalid' : '' }}" type="checkbox" name="hambatan_usaha[]" id="hambatan-usaha-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $obstaclesSelected, true))>
<label class="form-check-label" for="hambatan-usaha-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('hambatan_usaha')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('hambatan_usaha.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
<div class="row">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="hambatan-usaha-lainnya-detail">Hambatan Lainnya<span class="text-danger {{ $hasOtherObstacle ? '' : 'd-none' }}" data-required-for="hambatan-usaha-lainnya-detail">*</span></label>
<input type="text" class="form-control @error('hambatan_usaha_lainnya') is-invalid @enderror" id="hambatan-usaha-lainnya-detail" name="hambatan_usaha_lainnya" value="{{ $textValue('hambatan_usaha_lainnya') }}" placeholder="Sebutkan lainnya" data-ekosistem-other-value="{{ \App\Enums\Bumdes\HambatanUsahaBumdes::LAINNYA->value }}" @disabled(!$hasOtherObstacle) @required($hasOtherObstacle)>
@error('hambatan_usaha_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<x-bumdes-form-actions />
</div>
</div>
</form>
</div>
@endsection
+31 -189
View File
@@ -1,23 +1,23 @@
@php
$prefix = $mode . '-bumdes';
$currentProvinsiId = old('provinsi_id', $pengurus?->desaKelurahan?->kecamatan?->kabupatenKota?->provinsi_id);
$currentKabupaten = $pengurus?->desaKelurahan?->kecamatan?->kabupatenKota;
$currentKecamatan = $pengurus?->desaKelurahan?->kecamatan;
$currentDesa = $pengurus?->desaKelurahan;
$currentKabupatenId = old('kabupaten_id', $pengurus?->desaKelurahan?->kecamatan?->kabupaten_kota_id);
$currentKecamatanId = old('kecamatan_id', $pengurus?->desaKelurahan?->kecamatan_id);
$currentDesaId = old('desa_kelurahan_id', $pengurus?->desa_kelurahan_id);
$currentJabatan = $pengurus?->jabatan instanceof \App\Enums\Bumdes\JabatanBumdes ? $pengurus->jabatan->value : $pengurus?->jabatan;
$currentPendidikan = $pengurus?->pendidikan_terakhir instanceof \App\Enums\Pendidikan ? $pengurus->pendidikan_terakhir->value : $pengurus?->pendidikan_terakhir;
@endphp
<h5 class="pb-4 border-bottom mb-4">Data Pribadi</h5>
<h5 class="pb-4 border-bottom mb-4">Data Responden</h5>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-nama">Nama Pengurus BUMDes<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('nama') is-invalid @enderror" id="{{ $prefix }}-nama" name="nama" placeholder="Contoh: John Doe" value="{{ old('nama', $pengurus?->nama) }}" />
<label class="form-label" for="{{ $prefix }}-nama">Nama Responden<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('nama') is-invalid @enderror" id="{{ $prefix }}-nama" name="nama" required placeholder="Contoh: John Doe" value="{{ old('nama', $pengurus?->nama) }}" />
@error('nama')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-jenis-kelamin">Jenis Kelamin<span class="text-danger">*</span></label>
<select class="form-control @error('jenis_kelamin') is-invalid @enderror" id="{{ $prefix }}-jenis-kelamin" name="jenis_kelamin">
<select class="form-control @error('jenis_kelamin') is-invalid @enderror" id="{{ $prefix }}-jenis-kelamin" name="jenis_kelamin" required>
<option value="">Pilih Jenis Kelamin</option>
<option value="1" {{ old('jenis_kelamin', $pengurus?->jenis_kelamin) == '1' ? 'selected' : '' }}>Laki-laki</option>
<option value="0" {{ old('jenis_kelamin', $pengurus?->jenis_kelamin) == '0' ? 'selected' : '' }}>Perempuan</option>
@@ -26,19 +26,17 @@
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-tempat-lahir">Tempat Lahir<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('tempat_lahir') is-invalid @enderror" id="{{ $prefix }}-tempat-lahir" name="tempat_lahir" placeholder="Contoh: Ngada" value="{{ old('tempat_lahir', $pengurus?->tempat_lahir) }}" />
<input type="text" class="form-control @error('tempat_lahir') is-invalid @enderror" id="{{ $prefix }}-tempat-lahir" name="tempat_lahir" required placeholder="Contoh: Ngada" value="{{ old('tempat_lahir', $pengurus?->tempat_lahir) }}" />
@error('tempat_lahir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-tanggal-lahir">Tanggal Lahir<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('tanggal_lahir') is-invalid @enderror" id="{{ $prefix }}-tanggal-lahir" name="tanggal_lahir" value="{{ old('tanggal_lahir', $pengurus?->tanggal_lahir?->format('d-m-Y')) }}" />
<input type="text" class="form-control @error('tanggal_lahir') is-invalid @enderror" id="{{ $prefix }}-tanggal-lahir" name="tanggal_lahir" required value="{{ old('tanggal_lahir', $pengurus?->tanggal_lahir?->format('d-m-Y')) }}" />
@error('tanggal_lahir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-pendidikan-terakhir">Pendidikan Terakhir<span class="text-danger">*</span></label>
<select class="form-control @error('pendidikan_terakhir') is-invalid @enderror" id="{{ $prefix }}-pendidikan-terakhir" name="pendidikan_terakhir">
<select class="form-control @error('pendidikan_terakhir') is-invalid @enderror" id="{{ $prefix }}-pendidikan-terakhir" name="pendidikan_terakhir" required>
<option value="">Pilih Pendidikan Terakhir</option>
@foreach($pendidikan as $value)
<option value="{{ $value['value'] }}" {{ old('pendidikan_terakhir', $currentPendidikan) == $value['value'] ? 'selected' : '' }}>{{ $value['label'] }}</option>
@@ -46,13 +44,9 @@
</select>
@error('pendidikan_terakhir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Peran Kepengurusan BUMDes</h5>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-jabatan">Jabatan/Peran<span class="text-danger">*</span></label>
<select class="form-control @error('jabatan') is-invalid @enderror" id="{{ $prefix }}-jabatan" name="jabatan">
<select class="form-control @error('jabatan') is-invalid @enderror" id="{{ $prefix }}-jabatan" name="jabatan" required>
<option value="">Pilih Jabatan/Peran</option>
@foreach($jabatan as $value)
<option value="{{ $value['value'] }}" {{ old('jabatan', $currentJabatan) == $value['value'] ? 'selected' : '' }}>{{ $value['label'] }}</option>
@@ -67,23 +61,27 @@
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-lama-menjabat">Lama Menjabat (Tahun)<span class="text-danger">*</span></label>
<input type="number" min="0" max="80" class="form-control @error('lama_menjabat_tahun') is-invalid @enderror" id="{{ $prefix }}-lama-menjabat" name="lama_menjabat_tahun" placeholder="Contoh: 2" value="{{ old('lama_menjabat_tahun', $pengurus?->lama_menjabat_tahun) }}" />
<input type="number" min="0" max="80" class="form-control @error('lama_menjabat_tahun') is-invalid @enderror" id="{{ $prefix }}-lama-menjabat" name="lama_menjabat_tahun" required placeholder="Contoh: 2" value="{{ old('lama_menjabat_tahun', $pengurus?->lama_menjabat_tahun) }}" />
@error('lama_menjabat_tahun')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-nomor-telepon">Nomor HP</label>
<input type="text" class="form-control @error('nomor_telepon') is-invalid @enderror" id="{{ $prefix }}-nomor-telepon" name="nomor_telepon" placeholder="Contoh: 081234567890" value="{{ old('nomor_telepon', $pengurus?->nomor_telepon) }}" minlength="11" maxlength="13" />
@error('nomor_telepon')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Domisili dan Kontak</h5>
<div class="row">
<div class="col-md-12 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-alamat">Alamat<span class="text-danger">*</span></label>
<textarea class="form-control @error('alamat') is-invalid @enderror" id="{{ $prefix }}-alamat" name="alamat" rows="2" placeholder="Contoh: Jl. Nama Jalan, Nama Dusun">{{ old('alamat', $pengurus?->alamat) }}</textarea>
<textarea class="form-control @error('alamat') is-invalid @enderror" id="{{ $prefix }}-alamat" name="alamat" required rows="2" placeholder="Contoh: Jl. Nama Jalan, Nama Dusun">{{ old('alamat', $pengurus?->alamat) }}</textarea>
@error('alamat')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-provinsi">Provinsi<span class="text-danger">*</span></label>
<select class="form-control @error('provinsi_id') is-invalid @enderror" id="{{ $prefix }}-provinsi" name="provinsi_id">
<select class="form-control @error('provinsi_id') is-invalid @enderror" id="{{ $prefix }}-provinsi" name="provinsi_id" required>
<option value="">Pilih Provinsi</option>
@foreach($provinsi as $p)
<option value="{{ $p->id }}" {{ $currentProvinsiId == $p->id ? 'selected' : '' }}>{{ $p->nama }}</option>
@@ -93,188 +91,32 @@
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-kabupaten">Kabupaten/Kota<span class="text-danger">*</span></label>
<select class="form-control @error('kabupaten_id') is-invalid @enderror" id="{{ $prefix }}-kabupaten" name="kabupaten_id">
<select class="form-control @error('kabupaten_id') is-invalid @enderror" id="{{ $prefix }}-kabupaten" name="kabupaten_id" required>
<option value="">Pilih Kabupaten/Kota</option>
@if($currentKabupaten)
<option value="{{ $currentKabupaten->id }}" selected>{{ $currentKabupaten->nama }}</option>
@endif
@foreach($kabupatenOptions as $option)
<option value="{{ $option->id }}" @selected($currentKabupatenId == $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
@error('kabupaten_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-kecamatan">Kecamatan<span class="text-danger">*</span></label>
<select class="form-control @error('kecamatan_id') is-invalid @enderror" id="{{ $prefix }}-kecamatan" name="kecamatan_id">
<select class="form-control @error('kecamatan_id') is-invalid @enderror" id="{{ $prefix }}-kecamatan" name="kecamatan_id" required>
<option value="">Pilih Kecamatan</option>
@if($currentKecamatan)
<option value="{{ $currentKecamatan->id }}" selected>{{ $currentKecamatan->nama }}</option>
@endif
@foreach($kecamatanOptions as $option)
<option value="{{ $option->id }}" @selected($currentKecamatanId == $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
@error('kecamatan_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-desa">Desa/Kelurahan<span class="text-danger">*</span></label>
<select class="form-control @error('desa_kelurahan_id') is-invalid @enderror" id="{{ $prefix }}-desa" name="desa_kelurahan_id">
<select class="form-control @error('desa_kelurahan_id') is-invalid @enderror" id="{{ $prefix }}-desa" name="desa_kelurahan_id" required>
<option value="">Pilih Desa/Kelurahan</option>
@if($currentDesa)
<option value="{{ $currentDesa->id }}" selected>{{ $currentDesa->nama }}</option>
@endif
@foreach($desaOptions as $option)
<option value="{{ $option->id }}" @selected($currentDesaId == $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
@error('desa_kelurahan_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="{{ $prefix }}-nomor-telepon">No HP</label>
<input type="text" class="form-control @error('nomor_telepon') is-invalid @enderror" id="{{ $prefix }}-nomor-telepon" name="nomor_telepon" placeholder="Contoh: 081234567890" value="{{ old('nomor_telepon', $pengurus?->nomor_telepon) }}" minlength="11" maxlength="13" />
@error('nomor_telepon')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
@push('scripts')
<script>
'use strict';
$(document).ready(function () {
const prefix = '#{{ $prefix }}';
const lainnyaValue = '{{ \App\Enums\Bumdes\JabatanBumdes::LAINNYA->value }}';
$(`${prefix}-jenis-kelamin, ${prefix}-pendidikan-terakhir, ${prefix}-jabatan`).select2();
$(`${prefix}-tanggal-lahir`).flatpickr({
dateFormat: 'd-m-Y'
});
function toggleJabatanLainnya() {
const isLainnya = $(`${prefix}-jabatan`).val() === lainnyaValue;
$(`${prefix}-jabatan-lainnya-wrapper`).toggleClass('d-none', !isLainnya);
if (!isLainnya) {
$(`${prefix}-jabatan-lainnya`).val('');
}
}
$(`${prefix}-jabatan`).on('change', toggleJabatanLainnya);
toggleJabatanLainnya();
$(`${prefix}-provinsi`).select2().change(function(e) {
e.preventDefault();
const provinsiId = $(this).val();
$(`${prefix}-kabupaten`).prop('disabled', !provinsiId).val('').trigger('change');
$(`${prefix}-kecamatan`).prop('disabled', true).val('').trigger('change');
$(`${prefix}-desa`).prop('disabled', true).val('').trigger('change');
if (provinsiId) {
$.ajax({
url: '{{ route("kabupatenkota.byprovinsi", ":id") }}'.replace(':id', provinsiId) + '?all_wilayah=1',
method: 'GET',
success: function(data) {
$(`${prefix}-kabupaten`).empty().append('<option value="">Pilih Kabupaten/Kota</option>');
data.forEach(function(kabupaten) {
$(`${prefix}-kabupaten`).append('<option value="' + kabupaten.id + '">' + kabupaten.nama + '</option>');
});
}
});
}
});
$(`${prefix}-kabupaten`).select2().change(function(e) {
e.preventDefault();
const kabupatenId = $(this).val();
$(`${prefix}-kecamatan`).prop('disabled', !kabupatenId).val('').trigger('change');
$(`${prefix}-desa`).prop('disabled', true).val('').trigger('change');
if (kabupatenId) {
$.ajax({
url: '{{ route("kecamatan.bykabupatenkota", ":id") }}'.replace(':id', kabupatenId) + '?all_wilayah=1',
method: 'GET',
success: function(data) {
$(`${prefix}-kecamatan`).empty().append('<option value="">Pilih Kecamatan</option>');
data.forEach(function(kecamatan) {
$(`${prefix}-kecamatan`).append('<option value="' + kecamatan.id + '">' + kecamatan.nama + '</option>');
});
}
});
}
});
$(`${prefix}-kecamatan`).select2().change(function(e) {
e.preventDefault();
const kecamatanId = $(this).val();
$(`${prefix}-desa`).prop('disabled', !kecamatanId).val('').trigger('change');
if (kecamatanId) {
$.ajax({
url: '{{ route("desakelurahan.bykecamatan", ":id") }}'.replace(':id', kecamatanId) + '?all_wilayah=1',
method: 'GET',
success: function(data) {
$(`${prefix}-desa`).empty().append('<option value="">Pilih Desa/Kelurahan</option>');
data.forEach(function(desa) {
$(`${prefix}-desa`).append('<option value="' + desa.id + '">' + desa.nama + '</option>');
});
}
});
}
});
$(`${prefix}-desa`).select2();
$('#{{ $mode }}BumdesForm').validate({
rules: {
nama: { required: true },
jenis_kelamin: { required: true },
tempat_lahir: { required: true },
tanggal_lahir: { required: true },
pendidikan_terakhir: { required: true },
jabatan: { required: true },
jabatan_lainnya: {
required: function() {
return $(`${prefix}-jabatan`).val() === lainnyaValue;
}
},
lama_menjabat_tahun: { required: true, digits: true, min: 0, max: 80 },
alamat: { required: true },
provinsi_id: { required: true },
kabupaten_id: { required: true },
kecamatan_id: { required: true },
desa_kelurahan_id: { required: true },
nomor_telepon: { required: false, digits: true, minlength: 11, maxlength: 13 }
},
messages: {
nama: { required: 'Nama pengurus BUMDes wajib diisi' },
jenis_kelamin: { required: 'Jenis kelamin wajib dipilih' },
tempat_lahir: { required: 'Tempat lahir wajib diisi' },
tanggal_lahir: { required: 'Tanggal lahir wajib diisi' },
pendidikan_terakhir: { required: 'Pendidikan terakhir wajib dipilih' },
jabatan: { required: 'Jabatan/peran wajib dipilih' },
jabatan_lainnya: { required: 'Jabatan lainnya wajib diisi' },
lama_menjabat_tahun: {
required: 'Lama menjabat wajib diisi',
digits: 'Lama menjabat harus berupa angka tahun',
min: 'Lama menjabat tidak boleh kurang dari 0 tahun',
max: 'Lama menjabat tidak boleh lebih dari 80 tahun'
},
alamat: { required: 'Alamat wajib diisi' },
provinsi_id: { required: 'Provinsi wajib dipilih' },
kabupaten_id: { required: 'Kabupaten/Kota wajib dipilih' },
kecamatan_id: { required: 'Kecamatan wajib dipilih' },
desa_kelurahan_id: { required: 'Desa/Kelurahan wajib dipilih' },
nomor_telepon: {
digits: 'Nomor telepon harus berupa angka',
minlength: 'Nomor telepon minimal 11 digit',
maxlength: 'Nomor telepon maksimal 13 digit'
}
},
errorElement: 'div',
errorPlacement: function (error, element) {
error.addClass('invalid-feedback');
element.closest('.form-control-validation').append(error);
},
highlight: function (element) {
$(element).addClass('is-invalid');
},
unhighlight: function (element) {
$(element).removeClass('is-invalid');
}
});
});
</script>
@endpush
@@ -0,0 +1,26 @@
@php
$fieldValue = fn (string $field, $default = null) => old($field, data_get($kelembagaanAktor, $field, $default));
@endphp
<h5 class="pb-4 border-bottom mb-4 mt-4">Status Keaktifan BUMDes</h5>
<div class="mb-5 form-control-validation">
<label class="form-label d-block">Status Keaktifan</label>
<div class="d-flex flex-column">
@foreach($statusKeaktifanOptions as $value => $label)
<div>
<div class="form-check">
<input class="form-check-input" type="radio" id="status-keaktifan-{{ $value }}" name="status_keaktifan" value="{{ $value }}" @checked($fieldValue('status_keaktifan') === $value)>
<label class="form-check-label" for="status-keaktifan-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('status_keaktifan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="mb-5 form-control-validation" id="alasan-tidak-aktif-wrapper">
<label class="form-label" for="alasan-tidak-aktif">Alasan Tidak Aktif/Vakum</label>
<textarea class="form-control @error('alasan_tidak_aktif') is-invalid @enderror" id="alasan-tidak-aktif" name="alasan_tidak_aktif" rows="2" placeholder="Tuliskan alasan utama BUMDes tidak aktif/vakum">{{ $fieldValue('alasan_tidak_aktif') }}</textarea>
@error('alasan_tidak_aktif')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -0,0 +1,89 @@
@php
$fieldValue = function (string $field, $default = null) use ($kelembagaanAktor) {
return old($field, data_get($kelembagaanAktor, $field, $default));
};
$rowValue = function (string $field, string $keyName, string $key) use ($fieldValue) {
return collect((array) $fieldValue($field, []))->firstWhere($keyName, $key) ?? [];
};
@endphp
<div class="card mb-6" id="section-kepengurusan">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Kepengurusan dan Staf</h5>
<label class="form-label d-block">Daftar Pengurus</label>
<div class="table-responsive mb-5">
<table class="table table-bordered align-middle">
<thead>
<tr>
<th style="width: 30%;">Jabatan</th>
<th>Nama</th>
<th style="width: 22%;">Keaktifan</th>
</tr>
</thead>
<tbody>
@foreach($pengurusIntiRows as $key => $label)
@php
$savedRow = $rowValue('pengurus_inti', 'jabatan', $key);
$aktifValue = old("pengurus_inti.$loop->index.aktif", data_get($savedRow, 'aktif'));
@endphp
<tr>
<td>
<input type="hidden" name="pengurus_inti[{{ $loop->index }}][jabatan]" value="{{ $key }}">
{{ $label }}
</td>
<td>
<input type="text" class="form-control" name="pengurus_inti[{{ $loop->index }}][nama]" value="{{ old("pengurus_inti.$loop->index.nama", data_get($savedRow, 'nama')) }}">
</td>
<td>
<div class="pengurus-status-switch-row">
<input type="hidden" name="pengurus_inti[{{ $loop->index }}][aktif]" value="0">
<label class="switch switch-lg">
<input type="checkbox" class="switch-input" role="switch" id="pengurus-inti-{{ $key }}-aktif" name="pengurus_inti[{{ $loop->index }}][aktif]" value="1" aria-label="Status {{ $label }}" @checked((string) $aktifValue === '1')>
<span class="switch-toggle-slider">
<span class="switch-on"><i class="icon-base ti tabler-check"></i></span>
<span class="switch-off"><i class="icon-base ti tabler-x"></i></span>
</span>
</label>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="mb-5 form-control-validation">
<label class="form-label d-block">Staf di Luar Pengurus Inti</label>
<div class="d-flex flex-column">
<div class="form-check">
<input class="form-check-input" type="radio" id="memiliki-staf-ya" name="memiliki_staf" value="1" @checked((string) $fieldValue('memiliki_staf') === '1')>
<label class="form-check-label" for="memiliki-staf-ya">Ya</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" id="memiliki-staf-tidak" name="memiliki_staf" value="0" @checked((string) $fieldValue('memiliki_staf') === '0')>
<label class="form-check-label" for="memiliki-staf-tidak">Tidak ada, dikelola langsung pengurus</label>
</div>
</div>
@error('memiliki_staf')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="row" id="staf-detail-wrapper">
<div class="col-md-3 mb-5 form-control-validation">
<label class="form-label" for="jumlah-staf">Jumlah Staf</label>
<div class="input-group">
<input type="number" min="0" class="form-control @error('jumlah_staf') is-invalid @enderror" id="jumlah-staf" name="jumlah_staf" value="{{ $fieldValue('jumlah_staf') }}">
<span class="input-group-text">orang</span>
</div>
@error('jumlah_staf')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
<div class="col-md-9 mb-5 form-control-validation">
<label class="form-label" for="unit-usaha-staf">Unit Usaha Tempat Staf Bekerja</label>
<input type="text" class="form-control @error('unit_usaha_staf') is-invalid @enderror" id="unit-usaha-staf" name="unit_usaha_staf" value="{{ $fieldValue('unit_usaha_staf') }}" placeholder="Contoh: Unit perdagangan/toko desa">
@error('unit_usaha_staf')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<x-bumdes-form-actions />
</div>
</div>
@@ -1,34 +0,0 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
@if ($errors->any())
<div class="alert alert-danger">
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@include('bumdes.profil.header', ['pengurus' => null])
<div class="card mb-6">
<div class="card-header border-bottom">
<h5 class="card-title mb-0">Tambah Profil Pengurus BUMDes</h5>
</div>
<div class="card-body pt-6">
<form id="addBumdesForm" action="{{ route('bumdes.store') }}" method="POST">
@csrf
@include('bumdes.profil._form', ['pengurus' => null, 'mode' => 'add'])
<div class="mt-4 text-end">
<a href="{{ route('bumdes.index') }}" class="btn btn-secondary me-2 wave-effect wave-light">Kembali</a>
<button type="submit" class="btn btn-success data-submit wave-effect wave-light"><i class="ti tabler-device-floppy me-2"></i> Simpan Profil</button>
</div>
</form>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,27 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y bumdes-page">
@include('bumdes.profil.header', ['pengurus' => null])
<form data-bumdes-profile data-prefix="add-bumdes"
data-jabatan-lainnya="{{ \App\Enums\Bumdes\JabatanBumdes::LAINNYA->value }}"
data-kabupaten-url="{{ route('kabupatenkota.byprovinsi', ':id') }}"
data-kecamatan-url="{{ route('kecamatan.bykabupatenkota', ':id') }}"
data-desa-url="{{ route('desakelurahan.bykecamatan', ':id') }}"
novalidate id="addBumdesForm" action="{{ route('bumdes.store') }}" method="POST">
@csrf
<div class="card mb-6">
<div class="card-body pt-6">
@include('bumdes.profil._form', ['pengurus' => null, 'mode' => 'add'])
@include('bumdes.profil._keaktifan')
<x-bumdes-form-actions redirect-fragment="section-kepengurusan" />
</div>
</div>
@include('bumdes.profil._kepengurusan')
</form>
</div>
@endsection
+19 -30
View File
@@ -1,39 +1,28 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
@if (session('success'))
<div class="alert alert-success">{{ session('success') }}</div>
@endif
@if ($errors->any())
<div class="alert alert-danger">
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="container-xxl flex-grow-1 container-p-y bumdes-page">
@include('bumdes.profil.header', ['pengurus' => $pengurus])
<div class="card mb-6">
<div class="card-header border-bottom">
<h5 class="card-title mb-0">Edit Profil Pengurus BUMDes</h5>
</div>
<div class="card-body pt-6">
<form id="editBumdesForm" action="{{ route('bumdes.update', $pengurus->id) }}" method="POST">
@csrf
@method('PUT')
@include('bumdes.profil._form', ['pengurus' => $pengurus, 'mode' => 'edit'])
<form data-bumdes-profile data-prefix="edit-bumdes"
data-jabatan-lainnya="{{ \App\Enums\Bumdes\JabatanBumdes::LAINNYA->value }}"
data-kabupaten-url="{{ route('kabupatenkota.byprovinsi', ':id') }}"
data-kecamatan-url="{{ route('kecamatan.bykabupatenkota', ':id') }}"
data-desa-url="{{ route('desakelurahan.bykecamatan', ':id') }}"
novalidate id="editBumdesForm" action="{{ route('bumdes.update', $pengurus->id) }}" method="POST">
@csrf
@method('PUT')
<div class="mt-4 text-end">
<a href="{{ route('bumdes.index') }}" class="btn btn-secondary me-2 wave-effect wave-light">Kembali</a>
<button type="submit" class="btn btn-success data-submit wave-effect wave-light"><i class="ti tabler-device-floppy me-2"></i> Simpan Profil</button>
</div>
</form>
<div class="card mb-6">
<div class="card-body pt-6">
@include('bumdes.profil._form', ['pengurus' => $pengurus, 'mode' => 'edit'])
@include('bumdes.profil._keaktifan')
<x-bumdes-form-actions redirect-fragment="section-kepengurusan" />
</div>
</div>
</div>
@include('bumdes.profil._kepengurusan')
</form>
</div>
@endsection
+130 -135
View File
@@ -1,144 +1,117 @@
<style>
@media (min-width: 768px) {
.nav-pills-custom-spacing {
display: flex;
width: 100%;
gap: 0.5rem;
flex-wrap: nowrap !important;
overflow-x: auto;
}
<x-bumdes-alert />
.nav-pills-custom-spacing::-webkit-scrollbar {
display: none;
}
.nav-pills-custom-spacing .nav-item {
margin-right: 0 !important;
flex: 1;
}
.nav-pills-custom-spacing .nav-link {
display: flex;
justify-content: center;
align-items: center;
padding-left: 0.5rem !important;
padding-right: 0.5rem !important;
width: 100%;
white-space: nowrap;
font-size: 0.9375rem !important;
}
.nav-pills-custom-spacing .nav-link i {
margin-right: 0.4rem !important;
}
}
</style>
@php
$jenisKelamin = isset($pengurus)
? ($pengurus->jenis_kelamin ? 'Laki-laki' : 'Perempuan')
: 'Jenis Kelamin';
$jabatanLabel = isset($pengurus) ? $pengurus->nama_jabatan : 'Jabatan/Peran';
$domisili = isset($pengurus) && $pengurus->desaKelurahan
? $pengurus->desaKelurahan->nama . ', ' . $pengurus->desaKelurahan->kecamatan?->nama . ', ' . $pengurus->desaKelurahan->kecamatan?->kabupatenKota?->nama . ', ' . $pengurus->desaKelurahan->kecamatan?->kabupatenKota?->provinsi?->nama
: 'Desa/Kelurahan, Kecamatan, Kabupaten/Kota, Provinsi';
@endphp
<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 Pengurus BUMDes</h6>
<div class="d-flex justify-content-start align-items-center mb-3">
<div class="avatar me-2">
<section class="card bumdes-profile-summary mb-4" id="bumdes-profile-summary" aria-label="Ringkasan profil BUMDes">
<div class="card-body p-3 p-lg-4">
<div class="row g-3 align-items-start">
<div class="col-12 col-lg-5">
<div class="d-flex align-items-start gap-3">
<span class="avatar flex-shrink-0" aria-hidden="true">
<span class="avatar-initial rounded bg-label-primary">
<i class="icon-base ti tabler-user-check icon-22px"></i>
<i class="icon-base ti tabler-building-community icon-22px"></i>
</span>
</div>
<div class="d-flex flex-column">
<h6 class="mb-0" style="font-size: 0.9rem;">{{ isset($pengurus) ? $pengurus->nama : 'Tambah Pengurus BUMDes Baru' }}</h6>
<span class="text-muted" style="font-size: 0.75rem;">{{ $jenisKelamin }}</span>
<span class="text-muted" style="font-size: 0.75rem;">Jabatan: {{ $jabatanLabel }}</span>
</div>
</div>
<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: {{ isset($pengurus) ? $pengurus->alamat : 'Alamat' }}</p>
<p class="mb-0 text-muted" style="font-size: 0.75rem; line-height: 1.3;">{{ $domisili }}</p>
</div>
</div>
</div>
<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-0 text-muted" style="font-size: 0.75rem;">Jenis Kelamin</p>
<h5 class="mb-0">{{ $jenisKelamin }}</h5>
<p class="mb-0" style="font-size: 0.75rem;">
<span class="me-1">{{ isset($pengurus) ? ($pengurus->usia . ' tahun') : 'Belum terisi' }}</span>
</p>
</div>
<span class="avatar">
<span class="avatar-initial rounded">
<i class="icon-base ti tabler-users icon-22px text-heading"></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;">Jabatan</p>
<h5 class="mb-0">{{ $jabatanLabel }}</h5>
<p class="mb-0" style="font-size: 0.75rem;">
<span class="me-1">{{ isset($pengurus) ? $pengurus->lama_menjabat : 'Belum terisi' }}</span>
</p>
</div>
<span class="avatar">
<span class="avatar-initial rounded">
<i class="icon-base ti tabler-briefcase icon-22px text-heading"></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;">Domisili</p>
<h5 class="mb-0">{{ isset($pengurus) ? ($pengurus->desaKelurahan?->nama ?? '-') : '-' }}</h5>
<p class="mb-0" style="font-size: 0.75rem;">
<span class="me-1">{{ isset($pengurus) ? ($pengurus->desaKelurahan?->kecamatan?->nama ?? '-') : 'Belum terisi' }}</span>
</p>
</div>
<span class="avatar">
<span class="avatar-initial rounded">
<i class="icon-base ti tabler-map-pin icon-22px text-heading"></i>
</span>
</span>
</div>
</div>
</span>
<div class="bumdes-summary-content">
<h5 class="mb-1 text-break">{{ $ringkasanProfil['judul'] }}</h5>
<p class="small text-muted mb-1 text-break">
<i class="icon-base ti tabler-map-pin icon-16px me-1" aria-hidden="true"></i>{{ $ringkasanProfil['lokasi'] }}
</p>
<p class="small mb-0 text-break"><span class="text-muted">Alamat:</span> {{ $ringkasanProfil['alamat'] }}</p>
</div>
</div>
</div>
</div>
<div class="card flex-grow-1">
<div class="card-body py-3 d-flex align-items-center">
<div class="w-100">
<p class="mb-1 text-muted" style="font-size: 0.75rem;">Alamat Domisili</p>
<h6 class="mb-0">{{ isset($pengurus) ? ($pengurus->alamat ?: '-') : '-' }}</h6>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">{{ $domisili }}</p>
<div class="col-12 col-lg-7">
<div class="row g-3">
<div class="col-12 col-sm-6">
<p class="bumdes-summary-label mb-1">Keaktifan</p>
<span class="badge bg-label-{{ $ringkasanProfil['keaktifan']['warna'] }}">{{ $ringkasanProfil['keaktifan']['label'] }}</span>
</div>
<div class="col-12 col-sm-6">
<p class="bumdes-summary-label mb-1">Badan Hukum</p>
<span class="badge bg-label-{{ $ringkasanProfil['hukum']['warna'] }}">{{ $ringkasanProfil['hukum']['label'] }}</span>
</div>
<div class="col-12">
<p class="bumdes-summary-label mb-1">Unit Usaha</p>
@if(count($ringkasanProfil['unit_usaha']))
<div class="d-flex flex-wrap align-items-start gap-2">
@foreach(array_slice($ringkasanProfil['unit_usaha'], 0, 2) as $unit)
<span class="badge bg-label-primary">{{ $unit }}</span>
@endforeach
@if(count($ringkasanProfil['unit_usaha']) > 2)
<button class="btn btn-sm btn-text-primary p-0 bumdes-summary-more" type="button" data-bs-toggle="collapse" data-bs-target="#bumdes-summary-extra-units" aria-expanded="false" aria-controls="bumdes-summary-extra-units">+{{ count($ringkasanProfil['unit_usaha']) - 2 }} lainnya</button>
@endif
</div>
@if(count($ringkasanProfil['unit_usaha']) > 2)
<div class="collapse" id="bumdes-summary-extra-units">
<div class="d-flex flex-wrap gap-2 pt-2">
@foreach(array_slice($ringkasanProfil['unit_usaha'], 2) as $unit)
<span class="badge bg-label-primary">{{ $unit }}</span>
@endforeach
</div>
</div>
@endif
@else
<p class="small mb-0 text-muted">Belum terisi</p>
@endif
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card-footer p-3 py-lg-2 px-lg-4">
<div class="row gy-3">
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
<span class="avatar avatar-sm me-2 flex-shrink-0" aria-hidden="true">
<span class="avatar-initial rounded-circle bg-label-primary">
<i class="icon-base ti tabler-user icon-16px"></i>
</span>
</span>
<div class="bumdes-summary-content">
<p class="bumdes-summary-label mb-0">Nama Responden</p>
<span class="fw-medium small text-break">{{ $ringkasanProfil['responden'] }}</span>
</div>
</div>
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
<span class="avatar avatar-sm me-2 flex-shrink-0" aria-hidden="true">
<span class="avatar-initial rounded-circle bg-label-primary">
<i class="icon-base ti tabler-briefcase icon-16px"></i>
</span>
</span>
<div class="bumdes-summary-content">
<p class="bumdes-summary-label mb-0">Jabatan Responden</p>
<span class="fw-medium small text-break">{{ $ringkasanProfil['jabatan'] }}</span>
</div>
</div>
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
<span class="avatar avatar-sm me-2 flex-shrink-0" aria-hidden="true">
<span class="avatar-initial rounded-circle bg-label-primary">
<i class="icon-base ti tabler-phone icon-16px"></i>
</span>
</span>
<div class="bumdes-summary-content">
<p class="bumdes-summary-label mb-0">Kontak Responden</p>
<span class="fw-medium small text-break">{{ $ringkasanProfil['nomor_telepon'] }}</span>
</div>
</div>
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
<span class="avatar avatar-sm me-2 flex-shrink-0" aria-hidden="true">
<span class="avatar-initial rounded-circle bg-label-primary">
<i class="icon-base ti tabler-calendar-event icon-16px"></i>
</span>
</span>
<div class="bumdes-summary-content">
<p class="bumdes-summary-label mb-0">Diperbarui</p>
<span class="fw-medium small">
@if($ringkasanProfil['diperbarui'])
<time datetime="{{ $ringkasanProfil['diperbarui']->toIso8601String() }}">{{ $ringkasanProfil['diperbarui']->locale('id')->translatedFormat('d M Y, H:i') }}</time>
@else
{{ isset($pengurus) ? 'Belum terisi' : 'Belum tersimpan' }}
@endif
</span>
</div>
</div>
</div>
</div>
</section>
<div class="nav-align-top">
<ul class="nav nav-pills flex-column flex-md-row mb-6 row-gap-2 nav-pills-custom-spacing">
@@ -148,15 +121,37 @@
</a>
</li>
<li class="nav-item">
@if(isset($pengurus))
@if($pengurus?->profilLengkap())
<a class="nav-link {{ request()->routeIs('bumdes.kelembagaan-aktor.*') ? 'active' : '' }}" href="{{ route('bumdes.kelembagaan-aktor.index', $pengurus->id) }}">
<i class="icon-base ti tabler-building-community icon-sm"></i>Kelembagaan dan Aktor
<i class="icon-base ti tabler-building-community me-1_5 icon-sm"></i>Kelembagaan
</a>
@else
<a class="nav-link" href="#" disabled data-bs-original-title="Kelembagaan dan Aktor, isi profil terlebih dahulu" data-bs-toggle="tooltip" data-bs-placement="top">
<i class="icon-base ti tabler-building-community icon-sm"></i>Kelembagaan dan Aktor
<a class="nav-link disabled" href="#" aria-disabled="true" data-bs-original-title="Kelembagaan, isi profil terlebih dahulu" data-bs-toggle="tooltip" data-bs-placement="top">
<i class="icon-base ti tabler-building-community me-1_5 icon-sm"></i>Kelembagaan
</a>
@endif
</li>
<li class="nav-item">
@if($pengurus?->profilLengkap())
<a class="nav-link {{ request()->routeIs('bumdes.operasional.*') ? 'active' : '' }}" href="{{ route('bumdes.operasional.index', $pengurus->id) }}">
<i class="icon-base ti tabler-clipboard-list me-1_5 icon-sm"></i>Operasional
</a>
@else
<span class="nav-link disabled" aria-disabled="true" data-bs-original-title="Operasional, isi profil terlebih dahulu" data-bs-toggle="tooltip" data-bs-placement="top">
<i class="icon-base ti tabler-clipboard-list me-1_5 icon-sm"></i>Operasional
</span>
@endif
</li>
<li class="nav-item">
@if($pengurus?->profilLengkap())
<a class="nav-link {{ request()->routeIs('bumdes.rantai-nilai.*') ? 'active' : '' }}" href="{{ route('bumdes.rantai-nilai.index', $pengurus->id) }}">
<i class="icon-base ti tabler-arrows-exchange me-1_5 icon-sm"></i>Rantai Nilai &amp; Akses Pasar
</a>
@else
<span class="nav-link disabled" aria-disabled="true" data-bs-original-title="Rantai Nilai &amp; Akses Pasar, isi profil terlebih dahulu" data-bs-toggle="tooltip" data-bs-placement="top">
<i class="icon-base ti tabler-arrows-exchange me-1_5 icon-sm"></i>Rantai Nilai &amp; Akses Pasar
</span>
@endif
</li>
</ul>
</div>
+135 -87
View File
@@ -1,59 +1,132 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="d-flex flex-row gap-3 mb-4">
<div class="w-25">
<div class="container-fluid flex-grow-1 container-p-y bumdes-page">
<x-bumdes-alert />
<div class="row g-3 mb-4" id="bumdes-overview" aria-label="Ringkasan BUMDes">
<div class="col-12 col-md-4">
<x-summary-card
title="Pengurus BUMDes"
count="{{ $totalPengurus }}"
subtitle="{{ $totalLakiLaki }} Laki-laki, {{ $totalPerempuan }} Perempuan"
icon="user-check"
title="Total BUMDes"
count="{{ number_format($totalBumdes, 0, ',', '.') }}"
subtitle="{{ number_format($totalDesaKelurahan, 0, ',', '.') }} desa/kelurahan terdata"
icon="building-community"
color="primary"
/>
</div>
<div class="w-25">
<div class="col-12 col-md-4">
<x-summary-card
title="Desa/Kelurahan"
count="{{ $totalDesaKelurahan }}"
subtitle="desa/kelurahan memiliki data pengurus"
icon="map-pin"
title="BUMDes Aktif"
count="{{ number_format($totalBumdesAktif, 0, ',', '.') }}"
subtitle="beroperasi penuh atau terbatas"
icon="activity"
color="success"
/>
</div>
<div class="w-25">
<div class="col-12 col-md-4">
<x-summary-card
title="Jabatan/Peran"
count="{{ $totalJabatan }}"
subtitle="jenis jabatan/peran terdata"
icon="briefcase"
title="Berbadan Hukum"
count="{{ number_format($totalBerbadanHukum, 0, ',', '.') }}"
subtitle="terdaftar di Kemenkumham"
icon="certificate"
color="info"
/>
</div>
</div>
<div class="row g-6 bumdes-filter-row">
<div class="col-12">
<div class="card card-border-shadow-primary">
<div class="card-body py-3">
<form method="GET" action="{{ route('bumdes.index') }}" id="bumdes-filter-form" data-desa-url="{{ route('desakelurahan.bykecamatan', ':id') }}" aria-label="Filter data BUMDes">
<input type="hidden" name="per_page" value="{{ $pengurus->perPage() }}">
<div class="bumdes-filter-line">
<div class="bumdes-filter-label">
<i class="icon-base ti tabler-map-2 me-2"></i><span>Wilayah</span>
</div>
<div>
<input type="hidden" name="kabupaten_kota_id" value="{{ $filters['kabupaten_kota_id'] }}">
<div class="bumdes-filter-static" aria-label="Kabupaten/Kota" role="text">
{{ preg_replace('/^(kabupaten|kota)\s+/i', '', $selectedKabupaten?->nama ?? 'Semua Kabupaten/Kota') }}
</div>
</div>
<div>
<select name="kecamatan_id" id="filter-kecamatan" class="form-select form-select-sm" aria-label="Filter Kecamatan" @disabled(empty($filters['kabupaten_kota_id']))>
<option value="">Semua Kecamatan</option>
@foreach($kecamatanOptions as $option)
<option value="{{ $option->id }}" @selected((string) $filters['kecamatan_id'] === (string) $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
</div>
<div>
<select name="desa_kelurahan_id" id="filter-desa" class="form-select form-select-sm" aria-label="Filter Desa" @disabled(empty($filters['kecamatan_id']))>
<option value="">Semua Desa</option>
@foreach($desaOptions as $option)
<option value="{{ $option->id }}" @selected((string) $filters['desa_kelurahan_id'] === (string) $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
</div>
</div>
<hr class="my-3">
<div class="bumdes-filter-line bumdes-data-filters">
<div class="bumdes-filter-label">
<i class="icon-base ti tabler-adjustments-horizontal me-2"></i><span>Data</span>
</div>
<div>
<select name="status_keaktifan" class="form-select form-select-sm" aria-label="Filter Keaktifan BUMDes">
<option value="">Semua Keaktifan</option>
@foreach($statusKeaktifanOptions as $value => $label)
<option value="{{ $value }}" @selected($filters['status_keaktifan'] === $value)>{{ $label }}</option>
@endforeach
</select>
</div>
<div>
<select name="sort_by" class="form-select form-select-sm" aria-label="Urutkan data BUMDes">
<option value="">Urut Terbaru</option>
<option value="nama_asc" @selected($filters['sort_by'] === 'nama_asc')>Desa A-Z</option>
<option value="nama_desc" @selected($filters['sort_by'] === 'nama_desc')>Desa Z-A</option>
</select>
</div>
<div>
<div class="input-group input-group-sm">
<input type="text" name="search" class="form-control" placeholder="Cari desa / responden..." value="{{ $filters['search'] }}" aria-label="Cari desa, kecamatan, atau responden BUMDes">
<button type="submit" class="btn btn-outline-secondary" aria-label="Cari data BUMDes"><i class="icon-base ti tabler-search"></i></button>
</div>
</div>
<button type="submit" class="btn btn-outline-secondary btn-sm"><i class="icon-base ti tabler-filter me-1"></i>Filter</button>
<a href="{{ route('bumdes.index') }}" class="btn btn-outline-secondary btn-sm"><i class="icon-base ti tabler-refresh me-1"></i>Reset</a>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header border-bottom">
<h5 class="card-title mb-0">Data Pengurus BUMDes</h5>
<h5 class="card-title mb-0">Data BUMDes</h5>
</div>
<div class="card-body border-bottom pt-4">
<form method="GET" action="{{ route('bumdes.index') }}" class="d-flex justify-content-between align-items-center row gap-3 gap-md-0">
<form method="GET" action="{{ route('bumdes.index') }}" class="row g-3 align-items-end">
@foreach($filters as $field => $value)
<input type="hidden" name="{{ $field }}" value="{{ $value }}">
@endforeach
<div class="col-md-auto">
<div class="d-flex align-items-center">
<label class="me-2 text-nowrap">Show</label>
<select name="per_page" class="form-select form-select-sm w-auto" onchange="this.form.submit()">
<option value="10" {{ request('per_page') == 10 ? 'selected' : '' }}>10</option>
<option value="25" {{ request('per_page') == 25 ? 'selected' : '' }}>25</option>
<option value="10" @selected($pengurus->perPage() === 10)>10</option>
<option value="25" @selected($pengurus->perPage() === 25)>25</option>
</select>
<label class="ms-2 text-nowrap">entries</label>
</div>
</div>
<div class="col-md-auto d-flex gap-2">
<div class="input-group input-group-sm w-auto">
<input type="text" name="search" class="form-control" placeholder="Cari Nama..." value="{{ request('search') }}">
<button type="submit" class="btn btn-outline-primary"><i class="ti tabler-search"></i></button>
</div>
<div class="col-md-auto ms-md-auto">
<a href="{{ route('bumdes.create') }}" class="btn btn-sm btn-primary">
<i class="ti tabler-plus me-1"></i> Tambah
</a>
@@ -62,16 +135,15 @@
</div>
<div class="table-responsive text-nowrap">
<table class="table table-hover">
<table class="table table-hover align-middle bumdes-list-table">
<thead class="border-top">
<tr>
<th>No</th>
<th>Nama</th>
<th>Jenis Kelamin</th>
<th>Usia</th>
<th>Desa/Kelurahan</th>
<th>Jabatan/Peran</th>
<th>Lama Menjabat</th>
<th>BUMDes</th>
<th>Keaktifan</th>
<th>Badan Hukum</th>
<th>Unit Usaha</th>
<th>Nama Responden</th>
@if($showEnumerator)
<th>Nama Enumerator</th>
@endif
@@ -80,79 +152,55 @@
</thead>
<tbody>
@forelse($pengurus as $item)
<tr>
@php($ringkasan = $ringkasanBumdes[$item->id])
<tr class="bumdes-row">
<td>{{ ($pengurus->firstItem() ?? 0) + $loop->index }}</td>
<td><span class="text-heading">{{ $item->nama }}</span></td>
<td><span class="text-muted">{{ $item->jenis_kelamin ? 'Laki-laki' : 'Perempuan' }}</span></td>
<td><span class="text-muted">{{ $item->usia }} tahun</span></td>
<td>
<span class="text-muted">
{{ $item->desaKelurahan?->nama }},
{{ $item->desaKelurahan?->kecamatan?->nama }},
{{ $item->desaKelurahan?->kecamatan?->kabupatenKota?->nama }},
{{ $item->desaKelurahan?->kecamatan?->kabupatenKota?->provinsi?->nama }}
</span>
<td class="text-wrap bumdes-list-identity">
<a href="{{ route('bumdes.edit', $item->id) }}" class="text-heading d-block fw-medium">{{ $ringkasan['judul'] }}</a>
<span class="small text-muted">{{ $item->desaKelurahan?->kecamatan?->nama ?? 'Kecamatan belum terisi' }}</span>
</td>
<td>{{ $item->nama_jabatan }}</td>
<td><span class="text-muted">{{ $item->lama_menjabat }}</span></td>
<td class="bumdes-list-status">
<span class="badge bg-label-{{ $ringkasan['keaktifan']['warna'] }}">{{ $ringkasan['keaktifan']['label'] }}</span>
</td>
<td class="bumdes-list-status">
<span class="badge bg-label-{{ $ringkasan['hukum']['warna'] }}">{{ $ringkasan['hukum']['label'] }}</span>
</td>
<td class="bumdes-list-units">
@if(count($ringkasan['unit_usaha']))
<div class="small text-muted text-wrap" title="{{ implode(', ', $ringkasan['unit_usaha']) }}">{{ implode(', ', array_slice($ringkasan['unit_usaha'], 0, 2)) }}</div>
@if(count($ringkasan['unit_usaha']) > 2)
<span class="small text-muted">+{{ count($ringkasan['unit_usaha']) - 2 }} lainnya</span>
@endif
@else
<span class="small text-muted">Belum terisi</span>
@endif
</td>
<td class="text-wrap"><span class="text-muted">{{ $ringkasan['responden'] }}</span></td>
@if($showEnumerator)
<td><span class="text-muted">{{ $item->creator?->name ?? '-' }}</span></td>
@endif
<td>
<div class="d-flex align-items-center">
<a href="{{ route('bumdes.edit', $item->id) }}" class="btn btn-icon btn-text-secondary rounded-pill edit-record"><i class="ti tabler-edit ti-md"></i></a>
<a href="javascript:;" class="btn btn-icon btn-text-secondary rounded-pill delete-record" data-id="{{ $item->id }}" data-nama="{{ $item->nama }}"><i class="ti tabler-trash ti-md"></i></a>
<a href="{{ route('bumdes.edit', $item->id) }}" class="btn btn-icon btn-text-secondary rounded-pill edit-record" aria-label="Ubah {{ $ringkasan['judul'] }}"><i class="ti tabler-edit ti-md"></i></a>
<form method="POST" action="{{ route('bumdes.destroy', $item) }}" class="bumdes-delete-form" data-nama="{{ $ringkasan['judul'] }}">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-icon btn-text-secondary rounded-pill" aria-label="Hapus {{ $ringkasan['judul'] }}"><i class="ti tabler-trash ti-md"></i></button>
</form>
</div>
</td>
</tr>
@empty
<tr>
<td colspan="{{ $showEnumerator ? 9 : 8 }}" class="text-center py-4">Tidak ada data ditemukan.</td>
<td colspan="{{ $showEnumerator ? 8 : 7 }}" class="text-center py-4">Tidak ada data ditemukan.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
<div class="card-footer d-flex justify-content-center justify-content-md-end border-top">
{{ $pengurus->appends(request()->query())->links('pagination::bootstrap-5') }}
{{ $pengurus->links('pagination::bootstrap-5') }}
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
'use strict';
const csrfToken = "{{ csrf_token() }}";
$(document).ready(function () {
$(document).on('click', '.delete-record', function () {
const id = $(this).data('id');
const name = $(this).data('nama');
Swal.fire({
title: 'Apakah Anda yakin?',
text: `Profile "${name}" akan dihapus secara permanen!`,
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'Ya, Hapus!',
customClass: { confirmButton: 'btn btn-primary me-3', cancelButton: 'btn btn-label-secondary' },
buttonsStyling: false
}).then(function (result) {
if (result.value) {
$.ajax({
url: '{{ route('bumdes.destroy', ':id') }}'.replace(':id', id),
type: 'DELETE',
headers: { 'X-CSRF-TOKEN': csrfToken },
success: function (res) {
Swal.fire({ icon: 'success', title: 'Terhapus!', text: res.message, showConfirmButton: false, timer: 1500 })
.then(() => window.location.reload());
},
error: () => Swal.fire({ icon: 'error', title: 'Gagal!', text: 'Terjadi kesalahan sistem.' })
});
}
});
});
});
</script>
@endpush
@@ -0,0 +1,449 @@
@extends('layout.main')
@php
$fieldValue = fn (string $field, $default = null) => old($field, data_get($kelembagaanAktor, $field, $default));
$textValue = fn (string $field) => is_scalar($value = $fieldValue($field)) ? (string) $value : '';
$moneyValue = function (string $field) use ($textValue) {
$value = $textValue($field);
return preg_match('/^\d+(\.00)?$/D', $value) ? preg_replace('/\B(?=(\d{3})+(?!\d))/', '.', explode('.', $value)[0]) : $value;
};
$trading = in_array($fieldValue('melakukan_jual_beli'), [true, 1, '1'], true);
$sourcesSelected = (array) $fieldValue('sumber_pasokan', []);
$purchasedSelected = (array) $fieldValue('bentuk_produk_dibeli', []);
$channelsSelected = (array) $fieldValue('saluran_penjualan', []);
$soldSelected = (array) $fieldValue('bentuk_produk_dijual', []);
$relationshipsSelected = (array) $fieldValue('hubungan_petani_pemasok', []);
$notSold = in_array(\App\Enums\Bumdes\SaluranPenjualanBumdes::BELUM_MENJUAL->value, $channelsSelected, true);
$otherSource = $trading && in_array(\App\Enums\Bumdes\SumberPasokanBumdes::LAINNYA->value, $sourcesSelected, true);
$otherChannel = $trading && in_array(\App\Enums\Bumdes\SaluranPenjualanBumdes::LAINNYA->value, $channelsSelected, true);
$otherRelationship = $trading && in_array(\App\Enums\Bumdes\HubunganPemasokBumdes::LAINNYA->value, $relationshipsSelected, true);
$otherPayment = $trading && $fieldValue('mekanisme_pembayaran_petani') === \App\Enums\Bumdes\MekanismePembayaranBumdes::LAINNYA->value;
$otherPrice = $trading && $fieldValue('penetapan_harga_beli') === \App\Enums\Bumdes\PenetapanHargaBeliBumdes::LAINNYA->value;
$processing = in_array($fieldValue('melakukan_pengolahan_pascapanen'), [true, 1, '1'], true);
$sortingActive = $processing && in_array($fieldValue('status_sortasi'), [\App\Enums\Bumdes\StatusSortasiBumdes::RUTIN_STANDAR->value, \App\Enums\Bumdes\StatusSortasiBumdes::TIDAK_KONSISTEN->value], true);
$dryingActive = $processing && in_array($fieldValue('status_pengeringan'), [\App\Enums\Bumdes\StatusPengeringanBumdes::RUTIN->value, \App\Enums\Bumdes\StatusPengeringanBumdes::KADANG->value], true);
$fermentingActive = $processing && in_array($fieldValue('status_fermentasi'), [\App\Enums\Bumdes\StatusFermentasiBumdes::RUTIN->value, \App\Enums\Bumdes\StatusFermentasiBumdes::PERNAH_MENCOBA->value], true);
$fermentationSelected = (array) $fieldValue('model_fermentasi', []);
@endphp
@section('content')
<div class="container-xxl flex-grow-1 container-p-y bumdes-page">
@include('bumdes.profil.header', ['pengurus' => $pengurus])
<form novalidate method="POST" action="{{ route('bumdes.rantai-nilai.store', $pengurus->id) }}" id="rantaiNilaiBumdesForm" data-belum-menjual-value="{{ \App\Enums\Bumdes\SaluranPenjualanBumdes::BELUM_MENJUAL->value }}">
@csrf
<div class="card mb-6" id="section-rantai-pembelian">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Saluran Pembelian/Sumber Pasokan</h5>
<fieldset class="mb-5">
<legend class="form-label">Kegiatan Jual Beli Komoditas<span class="text-danger">*</span></legend>
<div class="d-flex flex-wrap gap-3">
<div class="form-check">
<input class="form-check-input @error('melakukan_jual_beli') is-invalid @enderror" type="radio" name="melakukan_jual_beli" id="jual-beli-ya" value="1" @checked($trading) required>
<label class="form-check-label" for="jual-beli-ya">Ya</label>
</div>
<div class="form-check">
<input class="form-check-input @error('melakukan_jual_beli') is-invalid @enderror" type="radio" name="melakukan_jual_beli" id="jual-beli-tidak" value="0" @checked(in_array($fieldValue('melakukan_jual_beli'), [false, 0, '0'], true)) required>
<label class="form-check-label" for="jual-beli-tidak">Tidak</label>
</div>
</div>
@error('melakukan_jual_beli')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<fieldset @class(['d-none' => !$trading]) data-rantai-section @disabled(!$trading)>
<fieldset class="mb-5" data-bumdes-choices="sumber_pasokan">
<legend class="form-label">Sumber Pasokan Komoditas</legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3 mb-3">
@foreach($sumberPasokanOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('sumber_pasokan') || $errors->has('sumber_pasokan.*') ? 'is-invalid' : '' }}" type="checkbox" name="sumber_pasokan[]" id="sumber-pasokan-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $sourcesSelected, true))>
<label class="form-check-label" for="sumber-pasokan-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('sumber_pasokan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('sumber_pasokan.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
<div class="row">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="sumber-pasokan-lainnya-detail">Sumber Pasokan Lainnya<span class="text-danger {{ $otherSource ? '' : 'd-none' }}" data-required-for="sumber-pasokan-lainnya-detail">*</span></label>
<input type="text" class="form-control @error('sumber_pasokan_lainnya') is-invalid @enderror" id="sumber-pasokan-lainnya-detail" name="sumber_pasokan_lainnya" value="{{ $textValue('sumber_pasokan_lainnya') }}" placeholder="Sebutkan lainnya" data-ekosistem-other-value="{{ \App\Enums\Bumdes\SumberPasokanBumdes::LAINNYA->value }}" @disabled(!$otherSource) @required($otherSource)>
@error('sumber_pasokan_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<fieldset class="mb-5">
<legend class="form-label">Bentuk Produk yang Dibeli</legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3 mb-3">
@foreach($bentukProdukOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('bentuk_produk_dibeli') || $errors->has('bentuk_produk_dibeli.*') ? 'is-invalid' : '' }}" type="checkbox" name="bentuk_produk_dibeli[]" id="bentuk-produk-dibeli-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $purchasedSelected, true))>
<label class="form-check-label" for="bentuk-produk-dibeli-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('bentuk_produk_dibeli')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('bentuk_produk_dibeli.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<fieldset class="mb-5">
<legend class="form-label">Perkiraan Volume Pembelian Tiga Panen Terakhir</legend>
<div class="row">
@foreach($periodePanenOptions as $period => $label)
<div class="col-md-4 mb-3 form-control-validation">
<label class="form-label" for="volume-pembelian-{{ $period }}">{{ $label }}</label>
<div class="input-group">
<input type="number" min="0" max="999999999999.999" step="0.001" class="form-control @error("volume_pembelian.$period") is-invalid @enderror" id="volume-pembelian-{{ $period }}" name="volume_pembelian[{{ $period }}]" value="{{ $textValue("volume_pembelian.$period") }}">
<span class="input-group-text">kg</span>
</div>
@error("volume_pembelian.$period")<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
@endforeach
</div>
@error('volume_pembelian')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
</fieldset>
<x-bumdes-form-actions redirect-fragment="section-rantai-penjualan" />
</div>
</div>
<div class="card mb-6 {{ $trading ? '' : 'd-none' }}" id="section-rantai-penjualan">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Saluran Penjualan Utama</h5>
<fieldset @class(['d-none' => !$trading]) data-rantai-section @disabled(!$trading)>
<fieldset class="mb-5" data-bumdes-choices="saluran_penjualan" data-exclusive-value="{{ \App\Enums\Bumdes\SaluranPenjualanBumdes::BELUM_MENJUAL->value }}">
<legend class="form-label">Tujuan Penjualan</legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3 mb-3">
@foreach($saluranPenjualanOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('saluran_penjualan') || $errors->has('saluran_penjualan.*') ? 'is-invalid' : '' }}" type="checkbox" name="saluran_penjualan[]" id="saluran-penjualan-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $channelsSelected, true))>
<label class="form-check-label" for="saluran-penjualan-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('saluran_penjualan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('saluran_penjualan.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
<div class="row">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="saluran-penjualan-lainnya-detail">Saluran Penjualan Lainnya<span class="text-danger {{ $otherChannel ? '' : 'd-none' }}" data-required-for="saluran-penjualan-lainnya-detail">*</span></label>
<input type="text" class="form-control @error('saluran_penjualan_lainnya') is-invalid @enderror" id="saluran-penjualan-lainnya-detail" name="saluran_penjualan_lainnya" value="{{ $textValue('saluran_penjualan_lainnya') }}" placeholder="Sebutkan lainnya" data-ekosistem-other-value="{{ \App\Enums\Bumdes\SaluranPenjualanBumdes::LAINNYA->value }}" @disabled(!$otherChannel) @required($otherChannel)>
@error('saluran_penjualan_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<fieldset id="rantai-penjualan-details" @disabled(!$trading || $notSold)>
<fieldset class="mb-5">
<legend class="form-label">Bentuk Produk yang Dijual</legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3 mb-3">
@foreach($bentukProdukOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('bentuk_produk_dijual') || $errors->has('bentuk_produk_dijual.*') ? 'is-invalid' : '' }}" type="checkbox" name="bentuk_produk_dijual[]" id="bentuk-produk-dijual-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $soldSelected, true))>
<label class="form-check-label" for="bentuk-produk-dijual-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('bentuk_produk_dijual')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('bentuk_produk_dijual.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<fieldset class="mb-5">
<legend class="form-label">Perkiraan Volume Penjualan Tiga Panen Terakhir</legend>
<div class="row">
@foreach($periodePanenOptions as $period => $label)
<div class="col-md-4 mb-3 form-control-validation">
<label class="form-label" for="volume-penjualan-{{ $period }}">{{ $label }}</label>
<div class="input-group">
<input type="number" min="0" max="999999999999.999" step="0.001" class="form-control @error("volume_penjualan.$period") is-invalid @enderror" id="volume-penjualan-{{ $period }}" name="volume_penjualan[{{ $period }}]" value="{{ $textValue("volume_penjualan.$period") }}">
<span class="input-group-text">kg</span>
</div>
@error("volume_penjualan.$period")<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
@endforeach
</div>
@error('volume_penjualan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
</fieldset>
</fieldset>
<x-bumdes-form-actions redirect-fragment="section-rantai-hubungan-pemasok" />
</div>
</div>
<div class="card mb-6 {{ $trading ? '' : 'd-none' }}" id="section-rantai-hubungan-pemasok">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Sifat Hubungan dengan Petani Pemasok</h5>
<fieldset @class(['d-none' => !$trading]) data-rantai-section @disabled(!$trading)>
<fieldset class="mb-5" data-bumdes-choices="hubungan_petani_pemasok">
<legend class="form-label">Pola Hubungan dengan Petani Pemasok</legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3 mb-3">
@foreach($hubunganPemasokOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('hubungan_petani_pemasok') || $errors->has('hubungan_petani_pemasok.*') ? 'is-invalid' : '' }}" type="checkbox" name="hubungan_petani_pemasok[]" id="hubungan-petani-pemasok-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $relationshipsSelected, true))>
<label class="form-check-label" for="hubungan-petani-pemasok-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('hubungan_petani_pemasok')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('hubungan_petani_pemasok.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
<div class="row">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="hubungan-petani-pemasok-lainnya-detail">Hubungan dengan Pemasok Lainnya<span class="text-danger {{ $otherRelationship ? '' : 'd-none' }}" data-required-for="hubungan-petani-pemasok-lainnya-detail">*</span></label>
<input type="text" class="form-control @error('hubungan_petani_pemasok_lainnya') is-invalid @enderror" id="hubungan-petani-pemasok-lainnya-detail" name="hubungan_petani_pemasok_lainnya" value="{{ $textValue('hubungan_petani_pemasok_lainnya') }}" placeholder="Sebutkan lainnya" data-ekosistem-other-value="{{ \App\Enums\Bumdes\HubunganPemasokBumdes::LAINNYA->value }}" @disabled(!$otherRelationship) @required($otherRelationship)>
@error('hubungan_petani_pemasok_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<fieldset class="mb-5">
<legend class="form-label">Cara Pembayaran kepada Petani</legend>
<div class="row row-gap-3">
@foreach($mekanismePembayaranOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('mekanisme_pembayaran_petani') is-invalid @enderror" type="radio" name="mekanisme_pembayaran_petani" id="mekanisme-pembayaran-petani-{{ $value }}" value="{{ $value }}" @checked($fieldValue('mekanisme_pembayaran_petani') === $value)>
<label class="form-check-label" for="mekanisme-pembayaran-petani-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('mekanisme_pembayaran_petani')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div class="row mb-5" data-rantai-other-field="mekanisme_pembayaran_petani" data-rantai-other-value="{{ \App\Enums\Bumdes\MekanismePembayaranBumdes::LAINNYA->value }}">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="mekanisme-pembayaran-lainnya-detail">Cara Pembayaran Lainnya<span class="text-danger {{ $otherPayment ? '' : 'd-none' }}" data-required-for="mekanisme-pembayaran-lainnya-detail">*</span></label>
<input type="text" class="form-control @error('mekanisme_pembayaran_lainnya') is-invalid @enderror" id="mekanisme-pembayaran-lainnya-detail" name="mekanisme_pembayaran_lainnya" value="{{ $textValue('mekanisme_pembayaran_lainnya') }}" placeholder="Sebutkan lainnya" @disabled(!$otherPayment) @required($otherPayment)>
@error('mekanisme_pembayaran_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<fieldset class="mb-5">
<legend class="form-label">Perjanjian Pembelian dengan Petani</legend>
<div class="row row-gap-3">
@foreach($perjanjianPetaniOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('perjanjian_petani') is-invalid @enderror" type="radio" name="perjanjian_petani" id="perjanjian-petani-{{ $value }}" value="{{ $value }}" @checked($fieldValue('perjanjian_petani') === $value)>
<label class="form-check-label" for="perjanjian-petani-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('perjanjian_petani')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
</fieldset>
<x-bumdes-form-actions redirect-fragment="section-rantai-harga-beli" />
</div>
</div>
<div class="card mb-6 {{ $trading ? '' : 'd-none' }}" id="section-rantai-harga-beli">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Harga Beli BUMDes dari Petani</h5>
<fieldset @class(['d-none' => !$trading]) data-rantai-section @disabled(!$trading)>
<p class="form-label">Harga Beli per Bentuk Produk (Tiga Panen Terakhir)</p>
<p class="text-muted small">Isi harga per kg sesuai bentuk produk yang dibeli.</p>
@error('harga_beli_petani')<div class="invalid-feedback d-block mb-3">{{ $message }}</div>@enderror
<div class="table-responsive mb-5">
<table class="table table-bordered align-middle">
<thead>
<tr>
<th scope="col" style="min-width: 180px;">Bentuk Produk</th>
@foreach($periodePanenOptions as $period => $label)
<th scope="col" style="min-width: 230px;">{{ $label }}</th>
@endforeach
</tr>
</thead>
<tbody>
@foreach($bentukProdukOptions as $product => $productLabel)
<tr data-rantai-price-product="{{ $product }}">
<th scope="row">
{{ $productLabel }}
@error("harga_beli_petani.$product")<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</th>
@foreach($periodePanenOptions as $period => $periodLabel)
<td>
<div class="input-group">
<span class="input-group-text">Rp</span>
<input type="text" inputmode="numeric" class="form-control rupiah-input @error("harga_beli_petani.$product.$period") is-invalid @enderror" name="harga_beli_petani[{{ $product }}][{{ $period }}]" value="{{ $moneyValue("harga_beli_petani.$product.$period") }}" aria-label="Harga beli {{ $productLabel }} {{ $periodLabel }}" @disabled(!$trading || !in_array($product, $purchasedSelected, true))>
<span class="input-group-text">/kg</span>
</div>
@error("harga_beli_petani.$product.$period")<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</td>
@endforeach
</tr>
@endforeach
</tbody>
</table>
</div>
<fieldset class="mb-5">
<legend class="form-label">Dasar Penetapan Harga Beli</legend>
<div class="row row-gap-3">
@foreach($penetapanHargaBeliOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('penetapan_harga_beli') is-invalid @enderror" type="radio" name="penetapan_harga_beli" id="penetapan-harga-beli-{{ $value }}" value="{{ $value }}" @checked($fieldValue('penetapan_harga_beli') === $value)>
<label class="form-check-label" for="penetapan-harga-beli-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('penetapan_harga_beli')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div class="row mb-5" data-rantai-other-field="penetapan_harga_beli" data-rantai-other-value="{{ \App\Enums\Bumdes\PenetapanHargaBeliBumdes::LAINNYA->value }}">
<div class="col-md-6 form-control-validation">
<label class="form-label" for="penetapan-harga-beli-lainnya-detail">Dasar Penetapan Harga Lainnya<span class="text-danger {{ $otherPrice ? '' : 'd-none' }}" data-required-for="penetapan-harga-beli-lainnya-detail">*</span></label>
<input type="text" class="form-control @error('penetapan_harga_beli_lainnya') is-invalid @enderror" id="penetapan-harga-beli-lainnya-detail" name="penetapan_harga_beli_lainnya" value="{{ $textValue('penetapan_harga_beli_lainnya') }}" placeholder="Sebutkan lainnya" @disabled(!$otherPrice) @required($otherPrice)>
@error('penetapan_harga_beli_lainnya')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<x-bumdes-form-actions redirect-fragment="section-rantai-sortasi" />
</div>
</div>
<div class="card mb-6" id="section-rantai-sortasi" data-postharvest-card>
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Sortasi &amp; Pemilihan Kualitas</h5>
<p class="text-muted small mb-3">Peluang Nilai Tambah</p>
<fieldset class="mb-5">
<legend class="form-label">Kegiatan Pengolahan Pascapanen<span class="text-danger">*</span></legend>
<div class="d-flex flex-wrap gap-3">
<div class="form-check">
<input class="form-check-input @error('melakukan_pengolahan_pascapanen') is-invalid @enderror" type="radio" name="melakukan_pengolahan_pascapanen" id="pengolahan-pascapanen-ya" value="1" @checked($processing) required>
<label class="form-check-label" for="pengolahan-pascapanen-ya">Ya</label>
</div>
<div class="form-check">
<input class="form-check-input @error('melakukan_pengolahan_pascapanen') is-invalid @enderror" type="radio" name="melakukan_pengolahan_pascapanen" id="pengolahan-pascapanen-tidak" value="0" @checked(in_array($fieldValue('melakukan_pengolahan_pascapanen'), [false, 0, '0'], true)) required>
<label class="form-check-label" for="pengolahan-pascapanen-tidak">Tidak</label>
</div>
</div>
@error('melakukan_pengolahan_pascapanen')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<fieldset @class(['d-none' => !$processing]) data-postharvest-section @disabled(!$processing)>
<fieldset class="mb-5">
<legend class="form-label">Sortasi Hasil Panen Sebelum Dijual</legend>
<div class="row row-gap-3">
@foreach($statusSortasiOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('status_sortasi') is-invalid @enderror" type="radio" name="status_sortasi" id="status-sortasi-{{ $value }}" value="{{ $value }}" @checked($fieldValue('status_sortasi') === $value)>
<label class="form-check-label" for="status-sortasi-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('status_sortasi')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div data-postharvest-detail data-condition-field="status_sortasi" data-condition-values="{{ json_encode([\App\Enums\Bumdes\StatusSortasiBumdes::RUTIN_STANDAR->value, \App\Enums\Bumdes\StatusSortasiBumdes::TIDAK_KONSISTEN->value]) }}">
<div class="mb-4 form-control-validation">
<label class="form-label" for="kriteria-sortasi">Standar/Kriteria Sortasi<span class="text-danger {{ $sortingActive ? '' : 'd-none' }}" data-postharvest-required>*</span></label>
<textarea class="form-control @error('kriteria_sortasi') is-invalid @enderror" id="kriteria-sortasi" name="kriteria_sortasi" rows="3" maxlength="2000" placeholder="Jelaskan standar atau kriteria sortasi yang digunakan" @disabled(!$sortingActive) @required($sortingActive)>{{ $textValue('kriteria_sortasi') }}</textarea>
@error('kriteria_sortasi')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<x-bumdes-form-actions redirect-fragment="section-rantai-pengeringan" />
</div>
</div>
<div class="card mb-6 {{ $processing ? '' : 'd-none' }}" id="section-rantai-pengeringan" data-postharvest-card>
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Praktik Pengeringan</h5>
<fieldset @class(['d-none' => !$processing]) data-postharvest-section @disabled(!$processing)>
<fieldset class="mb-5">
<legend class="form-label">Pengeringan Hasil Panen</legend>
<div class="row row-gap-3">
@foreach($statusPengeringanOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('status_pengeringan') is-invalid @enderror" type="radio" name="status_pengeringan" id="status-pengeringan-{{ $value }}" value="{{ $value }}" @checked($fieldValue('status_pengeringan') === $value)>
<label class="form-check-label" for="status-pengeringan-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('status_pengeringan')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div data-postharvest-detail data-condition-field="status_pengeringan" data-condition-values="{{ json_encode([\App\Enums\Bumdes\StatusPengeringanBumdes::RUTIN->value, \App\Enums\Bumdes\StatusPengeringanBumdes::KADANG->value]) }}">
<div class="mb-4 form-control-validation">
<label class="form-label" for="cara-tempat-pengeringan">Cara dan Tempat Pengeringan<span class="text-danger {{ $dryingActive ? '' : 'd-none' }}" data-postharvest-required>*</span></label>
<textarea class="form-control @error('cara_tempat_pengeringan') is-invalid @enderror" id="cara-tempat-pengeringan" name="cara_tempat_pengeringan" rows="3" maxlength="2000" placeholder="Jelaskan cara dan tempat pengeringan" @disabled(!$dryingActive) @required($dryingActive)>{{ $textValue('cara_tempat_pengeringan') }}</textarea>
@error('cara_tempat_pengeringan')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<x-bumdes-form-actions redirect-fragment="section-rantai-fermentasi" />
</div>
</div>
<div class="card mb-6 {{ $processing ? '' : 'd-none' }}" id="section-rantai-fermentasi" data-postharvest-card>
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Praktik Fermentasi</h5>
<fieldset @class(['d-none' => !$processing]) data-postharvest-section @disabled(!$processing)>
<fieldset class="mb-5">
<legend class="form-label">Fermentasi/Pengepresan Hasil Panen</legend>
<div class="row row-gap-3">
@foreach($statusFermentasiOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input @error('status_fermentasi') is-invalid @enderror" type="radio" name="status_fermentasi" id="status-fermentasi-{{ $value }}" value="{{ $value }}" @checked($fieldValue('status_fermentasi') === $value)>
<label class="form-check-label" for="status-fermentasi-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('status_fermentasi')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div data-postharvest-detail data-condition-field="status_fermentasi" data-condition-values="{{ json_encode([\App\Enums\Bumdes\StatusFermentasiBumdes::RUTIN->value, \App\Enums\Bumdes\StatusFermentasiBumdes::PERNAH_MENCOBA->value]) }}">
<fieldset class="mb-5">
<legend class="form-label">Model Fermentasi<span class="text-danger {{ $fermentingActive ? '' : 'd-none' }}" data-postharvest-required>*</span></legend>
<p class="text-muted small mb-3">Boleh pilih lebih dari satu.</p>
<div class="row row-gap-3">
@foreach($modelFermentasiOptions as $value => $label)
<div class="col-md-6">
<div class="form-check">
<input class="form-check-input {{ $errors->has('model_fermentasi') || $errors->has('model_fermentasi.*') ? 'is-invalid' : '' }}" type="checkbox" name="model_fermentasi[]" id="model-fermentasi-{{ $value }}" value="{{ $value }}" @checked(in_array($value, $fermentationSelected, true)) @disabled(!$fermentingActive) @required($fermentingActive && $loop->first && count($fermentationSelected) === 0)>
<label class="form-check-label" for="model-fermentasi-{{ $value }}">{{ $label }}</label>
</div>
</div>
@endforeach
</div>
@error('model_fermentasi')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
@error('model_fermentasi.*')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</fieldset>
<div class="mb-4 form-control-validation">
<label class="form-label" for="proses-fermentasi">Proses Fermentasi/Pengepresan<span class="text-danger {{ $fermentingActive ? '' : 'd-none' }}" data-postharvest-required>*</span></label>
<textarea class="form-control @error('proses_fermentasi') is-invalid @enderror" id="proses-fermentasi" name="proses_fermentasi" rows="3" maxlength="2000" placeholder="Jelaskan proses fermentasi atau pengepresan yang dilakukan" @disabled(!$fermentingActive) @required($fermentingActive)>{{ $textValue('proses_fermentasi') }}</textarea>
@error('proses_fermentasi')<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
</fieldset>
<x-bumdes-form-actions redirect-fragment="section-rantai-premium-harga" />
</div>
</div>
<div class="card mb-6 {{ $processing ? '' : 'd-none' }}" id="section-rantai-premium-harga" data-postharvest-card>
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Besaran Premium Harga</h5>
<fieldset @class(['d-none' => !$processing]) data-postharvest-section @disabled(!$processing)>
<div class="mb-4 form-control-validation">
<label class="form-label" for="premium-harga-pascapanen">Perkiraan Kenaikan Harga</label>
<p class="text-muted small mb-3">Dibandingkan hasil panen tanpa sortasi, pengeringan, atau fermentasi standar.</p>
<div class="row">
<div class="col-md-6">
<div class="input-group">
<span class="input-group-text">Rp</span>
<input type="text" inputmode="numeric" class="form-control rupiah-input @error('premium_harga_pascapanen') is-invalid @enderror" id="premium-harga-pascapanen" name="premium_harga_pascapanen" value="{{ $moneyValue('premium_harga_pascapanen') }}" placeholder="Contoh: 2.500">
<span class="input-group-text">/kg</span>
</div>
@error('premium_harga_pascapanen')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
</div>
</fieldset>
<x-bumdes-form-actions />
</div>
</div>
</form>
</div>
@endsection