Update BUMDes
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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 & Akses Pasar
|
||||
</a>
|
||||
@else
|
||||
<span class="nav-link disabled" aria-disabled="true" data-bs-original-title="Rantai Nilai & 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 & Akses Pasar
|
||||
</span>
|
||||
@endif
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user