Compare commits
4
Commits
50c9adfdc7
...
690b53e5a2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
690b53e5a2 | ||
|
|
5967e7d6f3 | ||
|
|
4c66d72dc5 | ||
|
|
e02a34a527 |
@@ -77,10 +77,11 @@ class PendidikanPelatihanController extends Controller
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return back()->with('success', 'Riwayat pelatihan berhasil disimpan.');
|
return $this->redirectBackToFragment($request, 'section-sertifikasi')
|
||||||
|
->with('success', 'Riwayat pelatihan berhasil disimpan.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroyPelatihan(Petani $petani, SurveyPelatihan $surveyPelatihan)
|
public function destroyPelatihan(Request $request, Petani $petani, SurveyPelatihan $surveyPelatihan)
|
||||||
{
|
{
|
||||||
$this->authorizeAccess();
|
$this->authorizeAccess();
|
||||||
|
|
||||||
@@ -92,7 +93,8 @@ class PendidikanPelatihanController extends Controller
|
|||||||
|
|
||||||
$surveyPelatihan->delete();
|
$surveyPelatihan->delete();
|
||||||
|
|
||||||
return back()->with('success', 'Riwayat pelatihan berhasil dihapus.');
|
return $this->redirectBackToFragment($request, 'section-pelatihan')
|
||||||
|
->with('success', 'Riwayat pelatihan berhasil dihapus.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function storeSertifikasi(Request $request, Petani $petani)
|
public function storeSertifikasi(Request $request, Petani $petani)
|
||||||
@@ -155,10 +157,11 @@ class PendidikanPelatihanController extends Controller
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return back()->with('success', 'Sertifikasi berhasil disimpan.');
|
return $this->redirectBackToFragment($request, 'section-sertifikasi')
|
||||||
|
->with('success', 'Sertifikasi berhasil disimpan.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroySertifikasi(Petani $petani, SurveySertifikasi $surveySertifikasi)
|
public function destroySertifikasi(Request $request, Petani $petani, SurveySertifikasi $surveySertifikasi)
|
||||||
{
|
{
|
||||||
$this->authorizeAccess();
|
$this->authorizeAccess();
|
||||||
|
|
||||||
@@ -170,6 +173,18 @@ class PendidikanPelatihanController extends Controller
|
|||||||
|
|
||||||
$surveySertifikasi->delete();
|
$surveySertifikasi->delete();
|
||||||
|
|
||||||
return back()->with('success', 'Sertifikasi berhasil dihapus.');
|
return $this->redirectBackToFragment($request, 'section-sertifikasi')
|
||||||
|
->with('success', 'Sertifikasi berhasil dihapus.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function redirectBackToFragment(Request $request, string $defaultFragment)
|
||||||
|
{
|
||||||
|
$fragment = $request->input('redirect_fragment', $defaultFragment);
|
||||||
|
|
||||||
|
if (!is_string($fragment) || !preg_match('/^[A-Za-z0-9_-]+$/', $fragment)) {
|
||||||
|
$fragment = $defaultFragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect()->to(Str::before(url()->previous(), '#') . '#' . $fragment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -178,7 +178,7 @@ class PetaniController extends Controller
|
|||||||
'created_by' => auth()->id(),
|
'created_by' => auth()->id(),
|
||||||
'updated_by' => auth()->id()]);
|
'updated_by' => auth()->id()]);
|
||||||
|
|
||||||
return redirect()->route('petani.index')->with('success', 'Data petani berhasil ditambahkan.');
|
return redirect()->route('petani.edit', $petani->id)->with('success', 'Data petani berhasil ditambahkan.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show(string $id)
|
public function show(string $id)
|
||||||
@@ -253,7 +253,7 @@ class PetaniController extends Controller
|
|||||||
$petani->update([...$validatedData,
|
$petani->update([...$validatedData,
|
||||||
'updated_by' => auth()->id()]);
|
'updated_by' => auth()->id()]);
|
||||||
|
|
||||||
return redirect()->route('petani.index')->with('success', 'Data petani berhasil diupdate.');
|
return redirect()->route('petani.edit', $petani->id)->with('success', 'Data petani berhasil diupdate.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -224,15 +224,15 @@ class PetaniLahanController extends Controller
|
|||||||
if ($request->ajax()) {
|
if ($request->ajax()) {
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'redirect' => route('petani.lahan-tanaman.index', $petaniId),
|
'redirect' => route('petani.lahan-tanaman.edit', [$petaniId, $lahan->id]),
|
||||||
'message' => 'Lahan berhasil ditambahkan.'
|
'message' => 'Lahan berhasil ditambahkan.'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('petani.lahan-tanaman.index', $petaniId)->with('success', 'Lahan berhasil ditambahkan.');
|
return redirect()->route('petani.lahan-tanaman.edit', [$petaniId, $lahan->id])->with('success', 'Lahan berhasil ditambahkan.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('petani.lahan-tanaman.index', $petaniId)->with('success', 'Lahan berhasil ditambahkan.');
|
return redirect()->route('petani.lahan-tanaman.edit', [$petaniId, $lahan->id])->with('success', 'Lahan berhasil ditambahkan.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show(string $petaniId, string $id)
|
public function show(string $petaniId, string $id)
|
||||||
@@ -371,12 +371,12 @@ class PetaniLahanController extends Controller
|
|||||||
if ($request->ajax()) {
|
if ($request->ajax()) {
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'redirect' => route('petani.lahan-tanaman.index', $petaniId),
|
'redirect' => route('petani.lahan-tanaman.edit', [$petaniId, $lahan->id]),
|
||||||
'message' => 'Lahan berhasil diupdate.'
|
'message' => 'Lahan berhasil diupdate.'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('petani.lahan-tanaman.index', $petaniId)->with('success', 'Lahan berhasil diperbarui.');
|
return redirect()->route('petani.lahan-tanaman.edit', [$petaniId, $lahan->id])->with('success', 'Lahan berhasil diperbarui.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(string $id)
|
public function destroy(string $id)
|
||||||
|
|||||||
@@ -178,8 +178,14 @@ class PraktikBudidayaController extends Controller
|
|||||||
|
|
||||||
$teknik_pemangkasan = array_values($teknik_pemangkasan);
|
$teknik_pemangkasan = array_values($teknik_pemangkasan);
|
||||||
|
|
||||||
|
if ((int) ($validatedData['frekuensi_pemangkasan_komoditas_utama'] ?? 0) === FrekuensiPemangkasanUtama::TIDAK_PERNAH->value) {
|
||||||
|
$teknik_pemangkasan = [];
|
||||||
|
}
|
||||||
|
|
||||||
$petani = Petani::findOrFail($petaniId);
|
$petani = Petani::findOrFail($petaniId);
|
||||||
|
|
||||||
|
$pemupukanTidakPernah = (int) ($validatedData['pemberian_pupuk'] ?? 0) === PemberianPupuk::TIDAK_PERNAH->value;
|
||||||
|
|
||||||
$praktikBudidaya = $petani->praktikBudidaya()->create([
|
$praktikBudidaya = $petani->praktikBudidaya()->create([
|
||||||
'petani_id' => $petani->id,
|
'petani_id' => $petani->id,
|
||||||
'uid' => 'PB-' . strtoupper(Str::random(10)),
|
'uid' => 'PB-' . strtoupper(Str::random(10)),
|
||||||
@@ -193,12 +199,12 @@ class PraktikBudidayaController extends Controller
|
|||||||
'deskripsi_penyerbukan_manual' => $validatedData['alasan_tidak_penyerbukan'] ?? null,
|
'deskripsi_penyerbukan_manual' => $validatedData['alasan_tidak_penyerbukan'] ?? null,
|
||||||
'tingkat_keberhasilan_penyerbukan' => $validatedData['tingkat_keberhasilan_penyerbukan'] ?? null,
|
'tingkat_keberhasilan_penyerbukan' => $validatedData['tingkat_keberhasilan_penyerbukan'] ?? null,
|
||||||
'pemberian_pupuk' => $validatedData['pemberian_pupuk'] ?? null,
|
'pemberian_pupuk' => $validatedData['pemberian_pupuk'] ?? null,
|
||||||
'jenis_pupuk' => $validatedData['jenis_pupuk'] ?? null,
|
'jenis_pupuk' => $pemupukanTidakPernah ? null : ($validatedData['jenis_pupuk'] ?? null),
|
||||||
'frekuensi_pemberian_pupuk' => ($validatedData['frekuensi_pemupukan'] ?? null) === 'Lainnya' ? ($validatedData['frekuensi_pemupukan_lainnya'] ?? null) : ($validatedData['frekuensi_pemupukan'] ?? null),
|
'frekuensi_pemberian_pupuk' => $pemupukanTidakPernah ? null : (($validatedData['frekuensi_pemupukan'] ?? null) === 'Lainnya' ? ($validatedData['frekuensi_pemupukan_lainnya'] ?? null) : ($validatedData['frekuensi_pemupukan'] ?? null)),
|
||||||
'estimasi_dosis_pupuk_organik' => $validatedData['estimasi_dosis_pupuk_organik'] ?? null,
|
'estimasi_dosis_pupuk_organik' => $pemupukanTidakPernah ? null : ($validatedData['estimasi_dosis_pupuk_organik'] ?? null),
|
||||||
'estimasi_dosis_pupuk_anorganik' => $validatedData['estimasi_dosis_pupuk_anorganik'] ?? null,
|
'estimasi_dosis_pupuk_anorganik' => $pemupukanTidakPernah ? null : ($validatedData['estimasi_dosis_pupuk_anorganik'] ?? null),
|
||||||
'waktu_pemberian_pupuk' => ($validatedData['waktu_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['waktu_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['waktu_pemberian_pupuk'] ?? null),
|
'waktu_pemberian_pupuk' => $pemupukanTidakPernah ? null : (($validatedData['waktu_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['waktu_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['waktu_pemberian_pupuk'] ?? null)),
|
||||||
'cara_pemberian_pupuk' => ($validatedData['cara_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['cara_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['cara_pemberian_pupuk'] ?? null),
|
'cara_pemberian_pupuk' => $pemupukanTidakPernah ? null : (($validatedData['cara_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['cara_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['cara_pemberian_pupuk'] ?? null)),
|
||||||
'created_by' => auth()->id(),
|
'created_by' => auth()->id(),
|
||||||
'updated_by' => auth()->id(),
|
'updated_by' => auth()->id(),
|
||||||
], [
|
], [
|
||||||
@@ -555,6 +561,12 @@ class PraktikBudidayaController extends Controller
|
|||||||
}
|
}
|
||||||
$teknikPemangkasan = array_values($teknik_pemangkasan);
|
$teknikPemangkasan = array_values($teknik_pemangkasan);
|
||||||
|
|
||||||
|
if ((int) ($validatedData['frekuensi_pemangkasan_komoditas_utama'] ?? 0) === FrekuensiPemangkasanUtama::TIDAK_PERNAH->value) {
|
||||||
|
$teknikPemangkasan = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$pemupukanTidakPernah = (int) ($validatedData['pemberian_pupuk'] ?? 0) === PemberianPupuk::TIDAK_PERNAH->value;
|
||||||
|
|
||||||
$dataPraktikBudidaya = [
|
$dataPraktikBudidaya = [
|
||||||
'tenaga_kerja' => $validatedData['tenaga_kerja'],
|
'tenaga_kerja' => $validatedData['tenaga_kerja'],
|
||||||
'frekuensi_pemangkasan_utama' => $validatedData['frekuensi_pemangkasan_komoditas_utama'],
|
'frekuensi_pemangkasan_utama' => $validatedData['frekuensi_pemangkasan_komoditas_utama'],
|
||||||
@@ -566,12 +578,12 @@ class PraktikBudidayaController extends Controller
|
|||||||
'deskripsi_penyerbukan_manual' => $validatedData['alasan_tidak_penyerbukan'] ?? null,
|
'deskripsi_penyerbukan_manual' => $validatedData['alasan_tidak_penyerbukan'] ?? null,
|
||||||
'tingkat_keberhasilan_penyerbukan' => $validatedData['tingkat_keberhasilan_penyerbukan'] ?? null,
|
'tingkat_keberhasilan_penyerbukan' => $validatedData['tingkat_keberhasilan_penyerbukan'] ?? null,
|
||||||
'pemberian_pupuk' => $validatedData['pemberian_pupuk'] ?? null,
|
'pemberian_pupuk' => $validatedData['pemberian_pupuk'] ?? null,
|
||||||
'jenis_pupuk' => $validatedData['jenis_pupuk'] ?? null,
|
'jenis_pupuk' => $pemupukanTidakPernah ? null : ($validatedData['jenis_pupuk'] ?? null),
|
||||||
'frekuensi_pemberian_pupuk' => ($validatedData['frekuensi_pemupukan'] ?? null) === 'Lainnya' ? ($validatedData['frekuensi_pemupukan_lainnya'] ?? null) : ($validatedData['frekuensi_pemupukan'] ?? null),
|
'frekuensi_pemberian_pupuk' => $pemupukanTidakPernah ? null : (($validatedData['frekuensi_pemupukan'] ?? null) === 'Lainnya' ? ($validatedData['frekuensi_pemupukan_lainnya'] ?? null) : ($validatedData['frekuensi_pemupukan'] ?? null)),
|
||||||
'estimasi_dosis_pupuk_organik' => $validatedData['estimasi_dosis_pupuk_organik'] ?? null,
|
'estimasi_dosis_pupuk_organik' => $pemupukanTidakPernah ? null : ($validatedData['estimasi_dosis_pupuk_organik'] ?? null),
|
||||||
'estimasi_dosis_pupuk_anorganik' => $validatedData['estimasi_dosis_pupuk_anorganik'] ?? null,
|
'estimasi_dosis_pupuk_anorganik' => $pemupukanTidakPernah ? null : ($validatedData['estimasi_dosis_pupuk_anorganik'] ?? null),
|
||||||
'waktu_pemberian_pupuk' => ($validatedData['waktu_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['waktu_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['waktu_pemberian_pupuk'] ?? null),
|
'waktu_pemberian_pupuk' => $pemupukanTidakPernah ? null : (($validatedData['waktu_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['waktu_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['waktu_pemberian_pupuk'] ?? null)),
|
||||||
'cara_pemberian_pupuk' => ($validatedData['cara_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['cara_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['cara_pemberian_pupuk'] ?? null),
|
'cara_pemberian_pupuk' => $pemupukanTidakPernah ? null : (($validatedData['cara_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['cara_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['cara_pemberian_pupuk'] ?? null)),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -675,6 +687,17 @@ class PraktikBudidayaController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return back()->with('success', 'Data berhasil diperbarui.');
|
return $this->redirectBackToFragment($request)->with('success', 'Data berhasil diperbarui.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function redirectBackToFragment(Request $request)
|
||||||
|
{
|
||||||
|
$fragment = $request->input('redirect_fragment');
|
||||||
|
|
||||||
|
if (!is_string($fragment) || !preg_match('/^[A-Za-z0-9_-]+$/', $fragment)) {
|
||||||
|
return back();
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect()->to(Str::before(url()->previous(), '#') . '#' . $fragment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ class SurveyProduktivitasController extends Controller
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return back()->with('success', 'Data produktivitas berhasil disimpan.');
|
return $this->redirectBackToFragment($request)->with('success', 'Data produktivitas berhasil disimpan.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy($petaniId, $surveyProduktivitasId)
|
public function destroy($petaniId, $surveyProduktivitasId, Request $request)
|
||||||
{
|
{
|
||||||
$surveyProduktivitas = SurveyProduktivitas::where('petani_id', $petaniId)
|
$surveyProduktivitas = SurveyProduktivitas::where('petani_id', $petaniId)
|
||||||
->where('id', $surveyProduktivitasId)
|
->where('id', $surveyProduktivitasId)
|
||||||
@@ -44,6 +44,17 @@ class SurveyProduktivitasController extends Controller
|
|||||||
$surveyProduktivitas->save();
|
$surveyProduktivitas->save();
|
||||||
$surveyProduktivitas->delete();
|
$surveyProduktivitas->delete();
|
||||||
|
|
||||||
return back()->with('success', 'Data produktivitas berhasil dihapus.');
|
return $this->redirectBackToFragment($request)->with('success', 'Data produktivitas berhasil dihapus.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function redirectBackToFragment(Request $request)
|
||||||
|
{
|
||||||
|
$fragment = $request->input('redirect_fragment');
|
||||||
|
|
||||||
|
if (!is_string($fragment) || !preg_match('/^[A-Za-z0-9_-]+$/', $fragment)) {
|
||||||
|
return back();
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect()->to(Str::before(url()->previous(), '#') . '#' . $fragment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -940,7 +940,7 @@
|
|||||||
showConfirmButton: false,
|
showConfirmButton: false,
|
||||||
timer: 1500
|
timer: 1500
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
window.location.href = "{{ route('petani.lahan-tanaman.index', ['petani' => $petani->id]) }}";
|
window.location.href = res.redirect || window.location.href;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
error: function(xhr) {
|
error: function(xhr) {
|
||||||
|
|||||||
@@ -1017,7 +1017,7 @@
|
|||||||
showConfirmButton: false,
|
showConfirmButton: false,
|
||||||
timer: 1500
|
timer: 1500
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
window.location.href = "{{ route('petani.index') }}";
|
window.location.href = res.redirect || window.location.href;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
error: function(xhr) {
|
error: function(xhr) {
|
||||||
|
|||||||
@@ -29,6 +29,11 @@
|
|||||||
white-space: nowrap !important;
|
white-space: nowrap !important;
|
||||||
line-height: 1.5 !important;
|
line-height: 1.5 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#section-pelatihan,
|
||||||
|
#section-sertifikasi {
|
||||||
|
scroll-margin-top: 96px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@endpush
|
@endpush
|
||||||
|
|
||||||
@@ -51,7 +56,7 @@
|
|||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
|
|
||||||
@include('produktivitas.petani.header', ['petani' => $petani])
|
@include('produktivitas.petani.header', ['petani' => $petani])
|
||||||
<div class="card mb-6">
|
<div class="card mb-6" id="section-pelatihan">
|
||||||
<div class="card-body pt-12">
|
<div class="card-body pt-12">
|
||||||
<h5 class="pb-4 border-bottom mb-4">
|
<h5 class="pb-4 border-bottom mb-4">
|
||||||
Riwayat Pelatihan
|
Riwayat Pelatihan
|
||||||
@@ -83,6 +88,7 @@
|
|||||||
class="delete-db-form">
|
class="delete-db-form">
|
||||||
@csrf
|
@csrf
|
||||||
@method('DELETE')
|
@method('DELETE')
|
||||||
|
<input type="hidden" name="redirect_fragment" value="section-pelatihan">
|
||||||
|
|
||||||
<button type="submit" class="btn btn-outline-danger">
|
<button type="submit" class="btn btn-outline-danger">
|
||||||
<i class="icon-base ti tabler-trash icon-sm"></i>
|
<i class="icon-base ti tabler-trash icon-sm"></i>
|
||||||
@@ -101,6 +107,7 @@
|
|||||||
action="{{ route('petani.pendidikan-pelatihan.pelatihan.store', $petani->id) }}"
|
action="{{ route('petani.pendidikan-pelatihan.pelatihan.store', $petani->id) }}"
|
||||||
class="form-repeater-pelatihan">
|
class="form-repeater-pelatihan">
|
||||||
@csrf
|
@csrf
|
||||||
|
<input type="hidden" name="redirect_fragment" value="section-sertifikasi">
|
||||||
|
|
||||||
<div data-repeater-list="riwayat_pelatihan">
|
<div data-repeater-list="riwayat_pelatihan">
|
||||||
<div data-repeater-item>
|
<div data-repeater-item>
|
||||||
@@ -170,7 +177,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- SERTIFIKASI KEAHLIAN --}}
|
{{-- SERTIFIKASI KEAHLIAN --}}
|
||||||
<div class="card mb-6">
|
<div class="card mb-6" id="section-sertifikasi">
|
||||||
<div class="card-body pt-12">
|
<div class="card-body pt-12">
|
||||||
<h5 class="pb-4 border-bottom mb-4">
|
<h5 class="pb-4 border-bottom mb-4">
|
||||||
Sertifikasi Keahlian
|
Sertifikasi Keahlian
|
||||||
@@ -234,6 +241,7 @@
|
|||||||
class="delete-db-form">
|
class="delete-db-form">
|
||||||
@csrf
|
@csrf
|
||||||
@method('DELETE')
|
@method('DELETE')
|
||||||
|
<input type="hidden" name="redirect_fragment" value="section-sertifikasi">
|
||||||
|
|
||||||
<button type="submit" class="btn btn-outline-danger">
|
<button type="submit" class="btn btn-outline-danger">
|
||||||
<i class="icon-base ti tabler-trash icon-sm"></i>
|
<i class="icon-base ti tabler-trash icon-sm"></i>
|
||||||
@@ -252,6 +260,7 @@
|
|||||||
action="{{ route('petani.pendidikan-pelatihan.sertifikasi.store', $petani->id) }}"
|
action="{{ route('petani.pendidikan-pelatihan.sertifikasi.store', $petani->id) }}"
|
||||||
class="form-repeater-sertifikasi">
|
class="form-repeater-sertifikasi">
|
||||||
@csrf
|
@csrf
|
||||||
|
<input type="hidden" name="redirect_fragment" value="section-sertifikasi">
|
||||||
|
|
||||||
<div data-repeater-list="sertifikasi">
|
<div data-repeater-list="sertifikasi">
|
||||||
<div data-repeater-item>
|
<div data-repeater-item>
|
||||||
|
|||||||
@@ -518,6 +518,57 @@
|
|||||||
|
|
||||||
$('#tenaga-kerja, #frekuensi-pemangkasan-komoditas-utama, #frekuensi-pemangkasan-pohon-penaung, #penyerbukan-manual, #pemberian-pupuk, #jenis-pupuk').select2();
|
$('#tenaga-kerja, #frekuensi-pemangkasan-komoditas-utama, #frekuensi-pemangkasan-pohon-penaung, #penyerbukan-manual, #pemberian-pupuk, #jenis-pupuk').select2();
|
||||||
|
|
||||||
|
function syncTeknikPemangkasanState() {
|
||||||
|
const tidakPernahMemangkas = $('#frekuensi-pemangkasan-komoditas-utama').val() === '{{ \App\Enums\PraktikBudidaya\FrekuensiPemangkasanUtama::TIDAK_PERNAH->value }}';
|
||||||
|
const $teknikInputs = $('input[name="teknik_pemangkasan[]"]');
|
||||||
|
const $lainnyaInput = $('#input-teknik-pemangkasan-lainnya');
|
||||||
|
|
||||||
|
$teknikInputs
|
||||||
|
.prop('disabled', tidakPernahMemangkas)
|
||||||
|
.closest('.form-check')
|
||||||
|
.toggleClass('opacity-50', tidakPernahMemangkas);
|
||||||
|
|
||||||
|
if (tidakPernahMemangkas) {
|
||||||
|
$teknikInputs.prop('checked', false);
|
||||||
|
$lainnyaInput.val('');
|
||||||
|
}
|
||||||
|
|
||||||
|
$lainnyaInput.prop('disabled', tidakPernahMemangkas || !$('#teknik-pemangkasan-lainnya').is(':checked'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#frekuensi-pemangkasan-komoditas-utama, #teknik-pemangkasan-lainnya').on('change select2:select select2:clear', syncTeknikPemangkasanState);
|
||||||
|
syncTeknikPemangkasanState();
|
||||||
|
|
||||||
|
function syncPemupukanState() {
|
||||||
|
const tidakPernahMemberiPupuk = $('#pemberian-pupuk').val() === '{{ \App\Enums\PraktikBudidaya\PemberianPupuk::TIDAK_PERNAH->value }}';
|
||||||
|
const $pemupukanFields = $(
|
||||||
|
'#jenis-pupuk, ' +
|
||||||
|
'input[name="frekuensi_pemupukan"], #input-frekuensi-pemupukan-lainnya, ' +
|
||||||
|
'#estimasi-dosis-pupuk-organik, #estimasi-dosis-pupuk-anorganik, ' +
|
||||||
|
'input[name="waktu_pemberian_pupuk"], #input-waktu-pemberian-pupuk-lainnya, ' +
|
||||||
|
'input[name="cara_pemberian_pupuk"], #input-cara-pemberian-pupuk-lainnya'
|
||||||
|
);
|
||||||
|
|
||||||
|
$pemupukanFields
|
||||||
|
.prop('disabled', tidakPernahMemberiPupuk)
|
||||||
|
.closest('.form-check, .form-control-validation')
|
||||||
|
.toggleClass('opacity-50', tidakPernahMemberiPupuk);
|
||||||
|
|
||||||
|
if (tidakPernahMemberiPupuk) {
|
||||||
|
$('#jenis-pupuk').val('').trigger('change.select2');
|
||||||
|
$('input[name="frekuensi_pemupukan"], input[name="waktu_pemberian_pupuk"], input[name="cara_pemberian_pupuk"]').prop('checked', false);
|
||||||
|
$('#input-frekuensi-pemupukan-lainnya, #estimasi-dosis-pupuk-organik, #estimasi-dosis-pupuk-anorganik, #input-waktu-pemberian-pupuk-lainnya, #input-cara-pemberian-pupuk-lainnya').val('');
|
||||||
|
} else {
|
||||||
|
$('#input-frekuensi-pemupukan-lainnya').prop('disabled', !$('input[data-target="#input-frekuensi-pemupukan-lainnya"]').is(':checked'));
|
||||||
|
$('#input-waktu-pemberian-pupuk-lainnya').prop('disabled', !$('input[data-target="#input-waktu-pemberian-pupuk-lainnya"]').is(':checked'));
|
||||||
|
$('#input-cara-pemberian-pupuk-lainnya').prop('disabled', !$('input[data-target="#input-cara-pemberian-pupuk-lainnya"]').is(':checked'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#pemberian-pupuk').on('change select2:select select2:clear', syncPemupukanState);
|
||||||
|
syncPemupukanState();
|
||||||
|
setTimeout(syncPemupukanState, 0);
|
||||||
|
|
||||||
const $switch = $('input[name="disimpan_untuk_diri_sendiri"]');
|
const $switch = $('input[name="disimpan_untuk_diri_sendiri"]');
|
||||||
const $text = $('#switch-text');
|
const $text = $('#switch-text');
|
||||||
|
|
||||||
@@ -636,6 +687,35 @@
|
|||||||
trigger.addEventListener('change', toggleInput);
|
trigger.addEventListener('change', toggleInput);
|
||||||
toggleInput();
|
toggleInput();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const frekuensiPemangkasan = document.getElementById('frekuensi-pemangkasan-komoditas-utama');
|
||||||
|
const teknikPemangkasanInputs = document.querySelectorAll('input[name="teknik_pemangkasan[]"]');
|
||||||
|
const teknikPemangkasanLainnya = document.getElementById('input-teknik-pemangkasan-lainnya');
|
||||||
|
|
||||||
|
function toggleTeknikPemangkasan() {
|
||||||
|
const tidakPernahMemangkas = frekuensiPemangkasan && frekuensiPemangkasan.value === '{{ \App\Enums\PraktikBudidaya\FrekuensiPemangkasanUtama::TIDAK_PERNAH->value }}';
|
||||||
|
|
||||||
|
teknikPemangkasanInputs.forEach(function (input) {
|
||||||
|
input.disabled = tidakPernahMemangkas;
|
||||||
|
input.closest('.form-check')?.classList.toggle('opacity-50', tidakPernahMemangkas);
|
||||||
|
|
||||||
|
if (tidakPernahMemangkas) {
|
||||||
|
input.checked = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (teknikPemangkasanLainnya) {
|
||||||
|
teknikPemangkasanLainnya.disabled = tidakPernahMemangkas || !document.getElementById('teknik-pemangkasan-lainnya')?.checked;
|
||||||
|
|
||||||
|
if (tidakPernahMemangkas) {
|
||||||
|
teknikPemangkasanLainnya.value = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
frekuensiPemangkasan?.addEventListener('change', toggleTeknikPemangkasan);
|
||||||
|
document.getElementById('teknik-pemangkasan-lainnya')?.addEventListener('change', toggleTeknikPemangkasan);
|
||||||
|
toggleTeknikPemangkasan();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@endpush
|
@endpush
|
||||||
@@ -39,7 +39,8 @@
|
|||||||
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
<div class="card mb-6">
|
<input type="hidden" name="redirect_fragment" value="section-opt">
|
||||||
|
<div class="card mb-6" id="section-praktik-pemupukan">
|
||||||
<div class="card-body pt-12">
|
<div class="card-body pt-12">
|
||||||
<h5 class="pb-4 border-bottom mb-4">Persiapan Lahan & Tanaman</h5>
|
<h5 class="pb-4 border-bottom mb-4">Persiapan Lahan & Tanaman</h5>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -541,8 +542,9 @@
|
|||||||
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
|
<input type="hidden" name="redirect_fragment" value="section-biaya-produksi">
|
||||||
|
|
||||||
<div class="card mb-6">
|
<div class="card mb-6" id="section-opt">
|
||||||
<div class="card-body pt-12">
|
<div class="card-body pt-12">
|
||||||
<!-- INFORMASI PETANI -->
|
<!-- INFORMASI PETANI -->
|
||||||
<h5 class="pb-4 border-bottom mb-4">Pengendalian Organisme Pengganggu Tumbuhan (OPT)</h5>
|
<h5 class="pb-4 border-bottom mb-4">Pengendalian Organisme Pengganggu Tumbuhan (OPT)</h5>
|
||||||
@@ -1048,7 +1050,8 @@
|
|||||||
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
<div class="card mb-6">
|
<input type="hidden" name="redirect_fragment" value="section-penanganan-panen">
|
||||||
|
<div class="card mb-6" id="section-biaya-produksi">
|
||||||
<div class="card-body pt-12">
|
<div class="card-body pt-12">
|
||||||
<h5 class="pb-4 border-bottom mb-4">Struktur Biaya Produksi Permusim</h5>
|
<h5 class="pb-4 border-bottom mb-4">Struktur Biaya Produksi Permusim</h5>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -1360,7 +1363,8 @@
|
|||||||
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
<div class="card mb-6">
|
<input type="hidden" name="redirect_fragment" value="section-produktivitas">
|
||||||
|
<div class="card mb-6" id="section-penanganan-panen">
|
||||||
<div class="card-body pt-12">
|
<div class="card-body pt-12">
|
||||||
<h5 class="pb-4 border-bottom mb-4">Penanganan Awal Setelah Panen</h5>
|
<h5 class="pb-4 border-bottom mb-4">Penanganan Awal Setelah Panen</h5>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -1546,7 +1550,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="card mb-6">
|
<div class="card mb-6" id="section-produktivitas">
|
||||||
<div class="card-body pt-12">
|
<div class="card-body pt-12">
|
||||||
<h5 class="pb-4 border-bottom mb-4">
|
<h5 class="pb-4 border-bottom mb-4">
|
||||||
Produktivitas Rata-rata 3 Musim Panen Terakhir per Komoditas
|
Produktivitas Rata-rata 3 Musim Panen Terakhir per Komoditas
|
||||||
@@ -1579,6 +1583,7 @@
|
|||||||
<form method="POST" action="{{ route('petani.survey-produktivitas.destroy', [$petani->id, $row->id]) }}">
|
<form method="POST" action="{{ route('petani.survey-produktivitas.destroy', [$petani->id, $row->id]) }}">
|
||||||
@csrf
|
@csrf
|
||||||
@method('DELETE')
|
@method('DELETE')
|
||||||
|
<input type="hidden" name="redirect_fragment" value="section-produktivitas">
|
||||||
<button type="submit" class="btn btn-outline-danger">
|
<button type="submit" class="btn btn-outline-danger">
|
||||||
<i class="icon-base ti tabler-trash icon-sm"></i>
|
<i class="icon-base ti tabler-trash icon-sm"></i>
|
||||||
</button>
|
</button>
|
||||||
@@ -1593,6 +1598,7 @@
|
|||||||
action="{{ route('petani.survey-produktivitas.store', $petani->id) }}"
|
action="{{ route('petani.survey-produktivitas.store', $petani->id) }}"
|
||||||
class="form-repeater">
|
class="form-repeater">
|
||||||
@csrf
|
@csrf
|
||||||
|
<input type="hidden" name="redirect_fragment" value="section-kehilangan-hasil">
|
||||||
|
|
||||||
<div data-repeater-list="produktivitas_komoditas">
|
<div data-repeater-list="produktivitas_komoditas">
|
||||||
<div data-repeater-item>
|
<div data-repeater-item>
|
||||||
@@ -1657,7 +1663,8 @@
|
|||||||
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
<form id="praktikBudidayaForm" action="{{ route('petani.praktik-budidaya.update', [$petani->id, $praktikBudidaya->id]) }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
<div class="card mb-6">
|
<input type="hidden" name="redirect_fragment" value="section-kehilangan-hasil">
|
||||||
|
<div class="card mb-6" id="section-kehilangan-hasil">
|
||||||
<div class="card-body pt-12">
|
<div class="card-body pt-12">
|
||||||
<h5 class="pb-4 border-bottom mb-4">Kehilangan Hasil Akibat Organisme Pengganggu Tumbuhan (OPT)</h5>
|
<h5 class="pb-4 border-bottom mb-4">Kehilangan Hasil Akibat Organisme Pengganggu Tumbuhan (OPT)</h5>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -1706,6 +1713,19 @@
|
|||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
|
@push('scripts-head')
|
||||||
|
<style>
|
||||||
|
#section-praktik-pemupukan,
|
||||||
|
#section-opt,
|
||||||
|
#section-biaya-produksi,
|
||||||
|
#section-penanganan-panen,
|
||||||
|
#section-produktivitas,
|
||||||
|
#section-kehilangan-hasil {
|
||||||
|
scroll-margin-top: 96px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
@endpush
|
||||||
|
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
<script>
|
<script>
|
||||||
'use strict';
|
'use strict';
|
||||||
@@ -1713,6 +1733,57 @@
|
|||||||
|
|
||||||
$('#tenaga-kerja, #frekuensi-pemangkasan-komoditas-utama, #frekuensi-pemangkasan-pohon-penaung, #penyerbukan-manual, #pemberian-pupuk, #jenis-pupuk, #metode-penanganan-hama-penyakit, #intensitas-serangan, #waktu-kemunculan-terparah, #frekuensi-sanitasi-lahan, #penanganan-sisa-buah-ranting, #penanganan-gulma, #kondisi-pengelolaan-air-irigasi, #kebutuhan-air-permusim, #pemahaman-manfaat-konservasi, #dasar-penentuan-panen, #praktik-sortasi, #bentuk-sortasi, #estimasi-kehilangan-akibat-opt, #tingkat-reject, #tindakan-hasil-reject, #estimasi-kehilangan-akibat-hama, #komoditas-id').select2();
|
$('#tenaga-kerja, #frekuensi-pemangkasan-komoditas-utama, #frekuensi-pemangkasan-pohon-penaung, #penyerbukan-manual, #pemberian-pupuk, #jenis-pupuk, #metode-penanganan-hama-penyakit, #intensitas-serangan, #waktu-kemunculan-terparah, #frekuensi-sanitasi-lahan, #penanganan-sisa-buah-ranting, #penanganan-gulma, #kondisi-pengelolaan-air-irigasi, #kebutuhan-air-permusim, #pemahaman-manfaat-konservasi, #dasar-penentuan-panen, #praktik-sortasi, #bentuk-sortasi, #estimasi-kehilangan-akibat-opt, #tingkat-reject, #tindakan-hasil-reject, #estimasi-kehilangan-akibat-hama, #komoditas-id').select2();
|
||||||
|
|
||||||
|
function syncTeknikPemangkasanState() {
|
||||||
|
const tidakPernahMemangkas = $('#frekuensi-pemangkasan-komoditas-utama').val() === '{{ \App\Enums\PraktikBudidaya\FrekuensiPemangkasanUtama::TIDAK_PERNAH->value }}';
|
||||||
|
const $teknikInputs = $('input[name="teknik_pemangkasan[]"]');
|
||||||
|
const $lainnyaInput = $('#input-teknik-pemangkasan-lainnya');
|
||||||
|
|
||||||
|
$teknikInputs
|
||||||
|
.prop('disabled', tidakPernahMemangkas)
|
||||||
|
.closest('.form-check')
|
||||||
|
.toggleClass('opacity-50', tidakPernahMemangkas);
|
||||||
|
|
||||||
|
if (tidakPernahMemangkas) {
|
||||||
|
$teknikInputs.prop('checked', false);
|
||||||
|
$lainnyaInput.val('');
|
||||||
|
}
|
||||||
|
|
||||||
|
$lainnyaInput.prop('disabled', tidakPernahMemangkas || !$('#teknik-pemangkasan-lainnya').is(':checked'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#frekuensi-pemangkasan-komoditas-utama, #teknik-pemangkasan-lainnya').on('change select2:select select2:clear', syncTeknikPemangkasanState);
|
||||||
|
syncTeknikPemangkasanState();
|
||||||
|
|
||||||
|
function syncPemupukanState() {
|
||||||
|
const tidakPernahMemberiPupuk = $('#pemberian-pupuk').val() === '{{ \App\Enums\PraktikBudidaya\PemberianPupuk::TIDAK_PERNAH->value }}';
|
||||||
|
const $pemupukanFields = $(
|
||||||
|
'#jenis-pupuk, ' +
|
||||||
|
'input[name="frekuensi_pemupukan"], #input-frekuensi-pemupukan-lainnya, ' +
|
||||||
|
'#estimasi-dosis-pupuk-organik, #estimasi-dosis-pupuk-anorganik, ' +
|
||||||
|
'input[name="waktu_pemberian_pupuk"], #input-waktu-pemberian-pupuk-lainnya, ' +
|
||||||
|
'input[name="cara_pemberian_pupuk"], #input-cara-pemberian-pupuk-lainnya'
|
||||||
|
);
|
||||||
|
|
||||||
|
$pemupukanFields
|
||||||
|
.prop('disabled', tidakPernahMemberiPupuk)
|
||||||
|
.closest('.form-check, .form-control-validation')
|
||||||
|
.toggleClass('opacity-50', tidakPernahMemberiPupuk);
|
||||||
|
|
||||||
|
if (tidakPernahMemberiPupuk) {
|
||||||
|
$('#jenis-pupuk').val('').trigger('change.select2');
|
||||||
|
$('input[name="frekuensi_pemupukan"], input[name="waktu_pemberian_pupuk"], input[name="cara_pemberian_pupuk"]').prop('checked', false);
|
||||||
|
$('#input-frekuensi-pemupukan-lainnya, #estimasi-dosis-pupuk-organik, #estimasi-dosis-pupuk-anorganik, #input-waktu-pemberian-pupuk-lainnya, #input-cara-pemberian-pupuk-lainnya').val('');
|
||||||
|
} else {
|
||||||
|
$('#input-frekuensi-pemupukan-lainnya').prop('disabled', !$('input[data-target="#input-frekuensi-pemupukan-lainnya"]').is(':checked'));
|
||||||
|
$('#input-waktu-pemberian-pupuk-lainnya').prop('disabled', !$('input[data-target="#input-waktu-pemberian-pupuk-lainnya"]').is(':checked'));
|
||||||
|
$('#input-cara-pemberian-pupuk-lainnya').prop('disabled', !$('input[data-target="#input-cara-pemberian-pupuk-lainnya"]').is(':checked'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#pemberian-pupuk').on('change select2:select select2:clear', syncPemupukanState);
|
||||||
|
syncPemupukanState();
|
||||||
|
setTimeout(syncPemupukanState, 0);
|
||||||
|
|
||||||
const $switch = $('input[name="disimpan_untuk_diri_sendiri"]');
|
const $switch = $('input[name="disimpan_untuk_diri_sendiri"]');
|
||||||
const $text = $('#switch-text');
|
const $text = $('#switch-text');
|
||||||
|
|
||||||
@@ -1822,6 +1893,35 @@
|
|||||||
toggleInput();
|
toggleInput();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const frekuensiPemangkasan = document.getElementById('frekuensi-pemangkasan-komoditas-utama');
|
||||||
|
const teknikPemangkasanInputs = document.querySelectorAll('input[name="teknik_pemangkasan[]"]');
|
||||||
|
const teknikPemangkasanLainnya = document.getElementById('input-teknik-pemangkasan-lainnya');
|
||||||
|
|
||||||
|
function toggleTeknikPemangkasan() {
|
||||||
|
const tidakPernahMemangkas = frekuensiPemangkasan && frekuensiPemangkasan.value === '{{ \App\Enums\PraktikBudidaya\FrekuensiPemangkasanUtama::TIDAK_PERNAH->value }}';
|
||||||
|
|
||||||
|
teknikPemangkasanInputs.forEach(function (input) {
|
||||||
|
input.disabled = tidakPernahMemangkas;
|
||||||
|
input.closest('.form-check')?.classList.toggle('opacity-50', tidakPernahMemangkas);
|
||||||
|
|
||||||
|
if (tidakPernahMemangkas) {
|
||||||
|
input.checked = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (teknikPemangkasanLainnya) {
|
||||||
|
teknikPemangkasanLainnya.disabled = tidakPernahMemangkas || !document.getElementById('teknik-pemangkasan-lainnya')?.checked;
|
||||||
|
|
||||||
|
if (tidakPernahMemangkas) {
|
||||||
|
teknikPemangkasanLainnya.value = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
frekuensiPemangkasan?.addEventListener('change', toggleTeknikPemangkasan);
|
||||||
|
document.getElementById('teknik-pemangkasan-lainnya')?.addEventListener('change', toggleTeknikPemangkasan);
|
||||||
|
toggleTeknikPemangkasan();
|
||||||
|
|
||||||
const biayaProduksiFields = [
|
const biayaProduksiFields = [
|
||||||
'upah-tenaga-kerja',
|
'upah-tenaga-kerja',
|
||||||
'biaya-bibit',
|
'biaya-bibit',
|
||||||
|
|||||||
Reference in New Issue
Block a user