Compare commits
4
Commits
1fd47b517b
...
11d836713a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
11d836713a | ||
|
|
6ddf978ba7 | ||
|
|
13c71d2612 | ||
|
|
d0e41dc1d2 |
@@ -7,5 +7,6 @@ enum KondisiTanaman: string
|
||||
case BAIK = 'baik';
|
||||
case SEDANG = 'sedang';
|
||||
case BURUK = 'buruk';
|
||||
case SAKIT= 'sakit';
|
||||
case MATI = 'mati';
|
||||
}
|
||||
|
||||
@@ -100,18 +100,20 @@ class PetaniLahanController extends Controller
|
||||
$lahanCount = Lahan::where('petani_id', $petaniId)
|
||||
->count();
|
||||
|
||||
$lahanUid = strtoupper(Str::random(10));
|
||||
$lahan = Lahan::create([...$validated,
|
||||
'nama' => 'Lahan ' . $komoditas->nama . ' #' . ($lahanCount + 1),
|
||||
'uid' => 'LHN-' . $petani->uid . '-' . strtoupper(Str::random(10)),
|
||||
'uid' => 'LHN-' . $petani->uid . '-' . $lahanUid,
|
||||
'petani_id' => $petaniId,
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by' => auth()->id()]
|
||||
);
|
||||
|
||||
if ($lahan) {
|
||||
$data = collect(range(1, $lahan->jumlah_tanaman))->map(function ($i) use ($lahan, $komoditas) {
|
||||
$data = collect(range(1, $lahan->jumlah_tanaman))->map(function ($i) use ($lahan, $komoditas, $lahanUid) {
|
||||
return [
|
||||
'lahan_id' => $lahan->id,
|
||||
'uid' => 'TNM-' . $lahanUid . '-' . strtoupper(Str::random(10)),
|
||||
'komoditas_id' => $lahan->komoditas_id,
|
||||
'jenis_komoditas_id' => $lahan->jenis_komoditas_id,
|
||||
'varietas_id' => $lahan->varietas_id,
|
||||
@@ -121,7 +123,11 @@ class PetaniLahanController extends Controller
|
||||
'kondisi_tanaman' => $lahan->kondisi_tanaman,
|
||||
'serangan_hama' => $lahan->serangan_hama,
|
||||
'penyakit_tanaman' => $lahan->penyakit_tanaman,
|
||||
'keparahan_serangan' => $lahan->keparahan_serangan
|
||||
'keparahan_serangan' => $lahan->keparahan_serangan,
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by' => auth()->id(),
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
];
|
||||
});
|
||||
|
||||
@@ -209,20 +215,33 @@ class PetaniLahanController extends Controller
|
||||
|
||||
$lahan->update([...$validated,
|
||||
'nama' => 'Lahan ' . $komoditas->nama . ' #' . ($lahanCount + 1),
|
||||
'uid' => 'LHN-' . $petani->uid . '-' . strtoupper(Str::random(10)),
|
||||
'petani_id' => $petaniId,
|
||||
'updated_by' => auth()->id()]
|
||||
);
|
||||
|
||||
$lahanUid = $lahan->uid;
|
||||
$lahanUidParts = explode('LHN-', $lahanUid);
|
||||
$lahanUid = end($lahanUidParts);
|
||||
|
||||
if ($lahan) {
|
||||
$data = collect(range($lahanCount, $lahan->jumlah_tanaman))->map(function ($i) use ($lahan, $komoditas) {
|
||||
$data = collect(range($lahanCount, $lahan->jumlah_tanaman))->map(function ($i) use ($lahan, $komoditas, $lahanUid) {
|
||||
return [
|
||||
'lahan_id' => $lahan->id,
|
||||
'komoditas_id' => $lahan->komoditas_id,
|
||||
'jenis_komoditas_id' => $lahan->jenis_komoditas_id,
|
||||
'varietas_id' => $lahan->varietas_id,
|
||||
'petani_id' => $lahan->petani_id,
|
||||
'uid' => 'TMN-' . $lahanUid . '-' . strtoupper(Str::random(10)),
|
||||
'nama' => 'Tanaman ' . $komoditas->nama . ' #' . $i,
|
||||
'umur_tanaman' => $lahan->umur_tanaman,
|
||||
'kondisi_tanaman' => $lahan->kondisi_tanaman,
|
||||
'serangan_hama' => $lahan->serangan_hama,
|
||||
'penyakit_tanaman' => $lahan->penyakit_tanaman,
|
||||
'keparahan_serangan' => $lahan->keparahan_serangan,
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by' => auth()->id(),
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
];
|
||||
});
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@ use App\Models\Pertanian\Lahan;
|
||||
use App\Models\Pertanian\Tanaman;
|
||||
|
||||
use App\Enums\KondisiTanaman;
|
||||
use App\Enums\SeranganHama;
|
||||
use App\Enums\PenyakitTanaman;
|
||||
use App\Enums\KeparahanSerangan;
|
||||
|
||||
class PetaniLahanTanamanController extends Controller
|
||||
{
|
||||
@@ -68,12 +71,24 @@ class PetaniLahanTanamanController extends Controller
|
||||
$lahan = Lahan::where('petani_id', $petaniId)->findOrFail($lahanId);
|
||||
$lahanTanaman = Tanaman::where('lahan_id', $lahanId)->findOrFail($id);
|
||||
|
||||
$validated = $request->validate([
|
||||
$validator = Validator::make($request->all(), [
|
||||
'latitude' => ['nullable', 'numeric', 'between:-90,90', 'required_with:longitude'],
|
||||
'longitude' => ['nullable', 'numeric', 'between:-180,180', 'required_with:latitude'],
|
||||
'kondisi_tanaman' => ['nullable', 'string', new Enum(KondisiTanaman::class)],
|
||||
'serangan_hama' => ['nullable', 'string', new Enum(SeranganHama::class)],
|
||||
'penyakit_tanaman' => ['nullable', 'string', new Enum(PenyakitTanaman::class)],
|
||||
'keparahan_serangan' => ['nullable', 'string', new Enum(KeparahanSerangan::class)],
|
||||
]);
|
||||
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json([
|
||||
'status' => 'error',
|
||||
'message' => 'Validasi gagal',
|
||||
'errors' => $validator->errors()
|
||||
], 422);
|
||||
}
|
||||
|
||||
$validated = $validator->validated();
|
||||
$lahanTanaman->update([...$validated, 'updated_by' => auth()->id()]);
|
||||
|
||||
return response()->json([
|
||||
@@ -94,7 +109,7 @@ class PetaniLahanTanamanController extends Controller
|
||||
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
$lahan = Lahan::where('petani_id', $petaniId)->findOrFail($lahanId);
|
||||
$lahanTanaman = LahanTanaman::where('lahan_id', $lahanId)->findOrFail($id);
|
||||
$lahanTanaman = Tanaman::where('lahan_id', $lahanId)->findOrFail($id);
|
||||
|
||||
$lahanTanaman->updated_by = auth()->id();
|
||||
$lahanTanaman->save();
|
||||
|
||||
@@ -43,40 +43,66 @@ class SosialEkonomiController extends Controller
|
||||
}
|
||||
|
||||
public function index(Request $request, Petani $petani)
|
||||
{
|
||||
$sosialEkonomi = SosialEkonomi::with([
|
||||
'pendapatanKomoditas',
|
||||
'pendapatanLuarPertanian',
|
||||
])
|
||||
->where('petani_id', $petani->id)
|
||||
->first();
|
||||
{
|
||||
$sosialEkonomi = SosialEkonomi::with([
|
||||
'pendapatanKomoditas',
|
||||
'pendapatanLuarPertanian',
|
||||
])
|
||||
->where('petani_id', $petani->id)
|
||||
->first();
|
||||
|
||||
$komoditasPetani = collect();
|
||||
if ($sosialEkonomi && !$request->expectsJson()) {
|
||||
return redirect()->route('petani.sosial-ekonomi.edit', [$petani->id, $sosialEkonomi->id]);
|
||||
}
|
||||
|
||||
$pendapatanKomoditasUtama = $sosialEkonomi?->pendapatanKomoditas
|
||||
->where('kategori', 'utama') ?? collect();
|
||||
|
||||
$pendapatanKomoditasLainnya = $sosialEkonomi?->pendapatanKomoditas
|
||||
->where('kategori', 'lainnya') ?? collect();
|
||||
|
||||
$pendapatanLuarPertanian = $sosialEkonomi?->pendapatanLuarPertanian ?? collect();
|
||||
|
||||
if ($request->expectsJson()) {
|
||||
return response()->json($sosialEkonomi);
|
||||
return $this->formView($request, $petani, $sosialEkonomi, 'produktivitas.petani.sosial-ekonomi.index');
|
||||
}
|
||||
|
||||
return view('produktivitas.petani.sosial-ekonomi.index', compact(
|
||||
'petani',
|
||||
'sosialEkonomi',
|
||||
'komoditasPetani',
|
||||
'pendapatanKomoditasUtama',
|
||||
'pendapatanKomoditasLainnya',
|
||||
'pendapatanLuarPertanian',
|
||||
));
|
||||
}
|
||||
|
||||
public function store(Request $request): JsonResponse|RedirectResponse
|
||||
public function edit(Request $request, string $petani, string $sosial_ekonomi)
|
||||
{
|
||||
$petani = Petani::findOrFail($petani);
|
||||
$sosialEkonomi = SosialEkonomi::findOrFail($sosial_ekonomi);
|
||||
|
||||
if ($sosialEkonomi->petani_id !== $petani->id) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
$sosialEkonomi->load([
|
||||
'pendapatanKomoditas',
|
||||
'pendapatanLuarPertanian',
|
||||
]);
|
||||
|
||||
return $this->formView($request, $petani, $sosialEkonomi, 'produktivitas.petani.sosial-ekonomi.edit');
|
||||
}
|
||||
|
||||
private function formView(Request $request, Petani $petani, ?SosialEkonomi $sosialEkonomi, string $view)
|
||||
{
|
||||
$pendapatanKomoditas = $sosialEkonomi?->pendapatanKomoditas ?? collect();
|
||||
$pendapatanKomoditasUtama = $pendapatanKomoditas->where('kategori', 'utama')->values();
|
||||
$pendapatanKomoditasLainnya = $pendapatanKomoditas->where('kategori', 'lainnya')->values();
|
||||
$pendapatanLuarPertanian = $sosialEkonomi?->pendapatanLuarPertanian?->values() ?? collect();
|
||||
$komoditasPetani = $this->komoditasPetani($petani);
|
||||
|
||||
if ($request->expectsJson()) {
|
||||
return response()->json($sosialEkonomi);
|
||||
}
|
||||
|
||||
return view($view, compact(
|
||||
'petani',
|
||||
'sosialEkonomi',
|
||||
'komoditasPetani',
|
||||
'pendapatanKomoditasUtama',
|
||||
'pendapatanKomoditasLainnya',
|
||||
'pendapatanLuarPertanian',
|
||||
));
|
||||
}
|
||||
|
||||
public function store(Request $request, ?Petani $petani = null): JsonResponse|RedirectResponse
|
||||
{
|
||||
if ($petani) {
|
||||
$request->merge(['petani_id' => $petani->id]);
|
||||
}
|
||||
|
||||
$validated = $this->validateData($request);
|
||||
|
||||
$sosialEkonomi = DB::transaction(function () use ($validated) {
|
||||
@@ -97,7 +123,7 @@ class SosialEkonomiController extends Controller
|
||||
|
||||
if (!$request->expectsJson()) {
|
||||
return redirect()
|
||||
->route('petani.sosial-ekonomi.edit', $sosialEkonomi->petani_id)
|
||||
->route('petani.sosial-ekonomi.edit', [$sosialEkonomi->petani_id, $sosialEkonomi->id])
|
||||
->with('success', 'Data sosial ekonomi berhasil disimpan.');
|
||||
}
|
||||
|
||||
@@ -122,9 +148,9 @@ class SosialEkonomiController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(Request $request, string $id): JsonResponse|RedirectResponse
|
||||
public function update(Request $request, string $petani, string $sosial_ekonomi): JsonResponse|RedirectResponse
|
||||
{
|
||||
$sosialEkonomi = SosialEkonomi::findOrFail($id);
|
||||
$sosialEkonomi = SosialEkonomi::where('petani_id', $petani)->findOrFail($sosial_ekonomi);
|
||||
$validated = $this->validateData($request, $sosialEkonomi->id);
|
||||
|
||||
$sosialEkonomi = DB::transaction(function () use ($request, $validated, $sosialEkonomi) {
|
||||
@@ -149,7 +175,7 @@ class SosialEkonomiController extends Controller
|
||||
|
||||
if (!$request->expectsJson()) {
|
||||
return redirect()
|
||||
->route('petani.sosial-ekonomi.edit', $sosialEkonomi->petani_id)
|
||||
->route('petani.sosial-ekonomi.edit', [$sosialEkonomi->petani_id, $sosialEkonomi->id])
|
||||
->with('success', 'Data sosial ekonomi berhasil diperbarui.');
|
||||
}
|
||||
|
||||
@@ -306,4 +332,5 @@ class SosialEkonomiController extends Controller
|
||||
->orderBy('nama')
|
||||
->get();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -42,6 +42,9 @@ class Lahan extends Model
|
||||
'penyakit_tanaman',
|
||||
'keparahan_serangan',
|
||||
|
||||
'umur_tanaman',
|
||||
'umur_lahan',
|
||||
|
||||
'created_by',
|
||||
'updated_by',
|
||||
'deleted_by',
|
||||
|
||||
@@ -19,7 +19,7 @@ return new class extends Migration
|
||||
$table->foreignId('varietas_id')->nullable()->constrained('master_varietas')->onDelete('set null');
|
||||
|
||||
$table->float('umur_tanaman', 8)->nullable();
|
||||
$table->float('umur_kebun', 8)->nullable();
|
||||
$table->float('umur_lahan', 8)->nullable();
|
||||
|
||||
$table->integer('jumlah_tanaman')->nullable();
|
||||
|
||||
|
||||
@@ -107,12 +107,12 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-3 form-control-validation">
|
||||
<label class="form-label">Kondisi Umum Tanaman</label>
|
||||
<label class="form-label">Kondisi Umum Tanaman {{ $lahanSelected->kondisi_tanaman }}</label>
|
||||
<select id="kondisi_tanaman" name="kondisi_tanaman" class="form-select @error('kondisi_tanaman') is-invalid @enderror">
|
||||
<option value="">Pilih Kondisi Tanaman</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::BAIK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BAIK ? 'selected' : '' }}>Baik</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::SEDANG }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::SEDANG ? 'selected' : '' }}>Sedang</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::BURUK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BURUK ? 'selected' : '' }}>Buruk</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::BAIK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BAIK->value ? 'selected' : '' }}>Baik</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::SEDANG }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::SEDANG->value ? 'selected' : '' }}>Sedang</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::BURUK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BURUK->value ? 'selected' : '' }}>Buruk</option>
|
||||
</select>
|
||||
@error('kondisi_tanaman')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
@@ -120,9 +120,9 @@
|
||||
<label class="form-label">Serangan Hama</label>
|
||||
<select id="serangan_hama" name="serangan_hama" class="form-select @error('serangan_hama') is-invalid @enderror">
|
||||
<option value="">Pilih Serangan Hama</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::ULAT }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::ULAT ? 'selected' : '' }}>Ulat</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::BELALANG }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::BELALANG ? 'selected' : '' }}>Belalang</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::KUTU }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::KUTU ? 'selected' : '' }}>Kutu</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::ULAT }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::ULAT->value ? 'selected' : '' }}>Ulat</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::BELALANG }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::BELALANG->value ? 'selected' : '' }}>Belalang</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::KUTU }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::KUTU->value ? 'selected' : '' }}>Kutu</option>
|
||||
</select>
|
||||
@error('serangan_hama')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
@@ -130,19 +130,19 @@
|
||||
<label class="form-label">Serangan Penyakit</label>
|
||||
<select id="penyakit_tanaman" name="penyakit_tanaman" class="form-select @error('penyakit_tanaman') is-invalid @enderror">
|
||||
<option value="">Pilih Penyakit</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::BUSUK_BUAH }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::BUSUK_BUAH ? 'selected' : '' }}>Busuk Buah</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_MENGUNING }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_MENGUNING ? 'selected' : '' }}>Daun Menguning</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_BERCAK }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_BERCAK ? 'selected' : '' }}>Daun Bercak</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::TANAMAN_LAYU }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::TANAMAN_LAYU ? 'selected' : '' }}>Tanaman Layu</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::BUSUK_BUAH }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::BUSUK_BUAH->value ? 'selected' : '' }}>Busuk Buah</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_MENGUNING }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_MENGUNING->value ? 'selected' : '' }}>Daun Menguning</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_BERCAK }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_BERCAK->value ? 'selected' : '' }}>Daun Bercak</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::TANAMAN_LAYU }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::TANAMAN_LAYU->value ? 'selected' : '' }}>Tanaman Layu</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-3 mb-3 form-control-validation">
|
||||
<label class="form-label">Keparahan Serangan Hama/Penyakit</label>
|
||||
<select id="keparahan_serangan" name="keparahan_serangan" class="form-select @error('keparahan_serangan') is-invalid @enderror">
|
||||
<option value="">Pilih Keparahan Serangan</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::RINGAN }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::RINGAN ? 'selected' : '' }}>Ringan</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::SEDANG }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::SEDANG ? 'selected' : '' }}>Sedang</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::BERAT }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::BERAT ? 'selected' : '' }}>Berat</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::RINGAN }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::RINGAN->value ? 'selected' : '' }}>Ringan</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::SEDANG }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::SEDANG->value ? 'selected' : '' }}>Sedang</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::BERAT }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::BERAT->value ? 'selected' : '' }}>Berat</option>
|
||||
</select>
|
||||
@error('keparahan_serangan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
@@ -303,8 +303,7 @@
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<button data-id="{{ $item->id }}" class="btn btn-icon btn-text-secondary rounded-pill edit-tanaman"><i class="ti tabler-edit ti-md"></i></button>
|
||||
<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('petani.show', $item->id) }}" class="btn btn-icon btn-text-secondary rounded-pill view-record"><i class="ti tabler-eye ti-md"></i></a>
|
||||
<a href="javascript:;" class="btn btn-icon btn-text-secondary rounded-pill delete-tanaman" data-id="{{ $item->id }}" data-nama="{{ $item->nama }}"><i class="ti tabler-trash ti-md"></i></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -322,6 +321,7 @@
|
||||
</div>
|
||||
</div>
|
||||
@include('produktivitas.petani.lahan.tanaman.edit')
|
||||
@include('produktivitas.petani.lahan.tanaman.delete')
|
||||
|
||||
@endsection
|
||||
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
<div class="modal fade" id="deleteTanamanModal" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="tanamanModalLabel">Ubah Data Tanaman</h5>
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close"
|
||||
data-bs-dismiss="modal"
|
||||
aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id="deleteTanamanForm" method="POST" action="{{ route('petani.lahan-tanaman.tanaman.destroy', ['petani' => $petani->id, 'lahan_tanaman' => $lahanSelected->id, 'tanaman' => ':id']) }}">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<input type="hidden" name="id" id="deleteTanamanFormId">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label for="komoditas" class="form-label">Komoditas</label>
|
||||
<input type="text" class="form-control" id="delete-komoditas" name="komoditas" disabled>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="jenis_komoditas" class="form-label">Jenis Komoditas</label>
|
||||
<input type="text" class="form-control" id="delete-jenis_komoditas" name="jenis_komoditas" disabled>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label for="varietas" class="form-label">Varietas</label>
|
||||
<input type="text" class="form-control" id="delete-varietas" name="varietas" disabled>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label for="latitude" class="form-label">Latitude</label>
|
||||
<input type="number" class="form-control" id="delete-latitude" name="latitude">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="longitude" class="form-label">Longitude</label>
|
||||
<input type="number" class="form-control" id="delete-longitude" name="longitude">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<label for="kondisi" class="form-label">Kondisi Tanaman</label>
|
||||
<select class="form-select" id="kondisi" name="kondisi_tanaman" required>
|
||||
<option value="">Pilih Kondisi Tanaman</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::BAIK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BAIK->value ? 'selected' : '' }}>Baik</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::SEDANG }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::SEDANG->value ? 'selected' : '' }}>Sedang</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::BURUK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BURUK->value ? 'selected' : '' }}>Buruk</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 form-control-validation">
|
||||
<label class="form-label">Serangan Hama</label>
|
||||
<select id="serangan_hama" name="serangan_hama" class="form-select @error('serangan_hama') is-invalid @enderror">
|
||||
<option value="">Pilih Serangan Hama</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::ULAT }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::ULAT->value ? 'selected' : '' }}>Ulat</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::BELALANG }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::BELALANG->value ? 'selected' : '' }}>Belalang</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::KUTU }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::KUTU->value ? 'selected' : '' }}>Kutu</option>
|
||||
</select>
|
||||
@error('serangan_hama')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6 form-control-validation">
|
||||
<label class="form-label">Penyakit Tanaman</label>
|
||||
<select id="penyakit_tanaman" name="penyakit_tanaman" class="form-select @error('penyakit_tanaman') is-invalid @enderror">
|
||||
<option value="">Pilih Penyakit</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::BUSUK_BUAH }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::BUSUK_BUAH->value ? 'selected' : '' }}>Busuk Buah</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_MENGUNING }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_MENGUNING->value ? 'selected' : '' }}>Daun Menguning</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_BERCAK }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_BERCAK->value ? 'selected' : '' }}>Daun Bercak</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::TANAMAN_LAYU }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::TANAMAN_LAYU->value ? 'selected' : '' }}>Tanaman Layu</option>
|
||||
</select>
|
||||
@error('penyakit_tanaman')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-6 form-control-validation">
|
||||
<label class="form-label">Keparahan Serangan</label>
|
||||
<select id="keparahan_serangan" name="keparahan_serangan" class="form-select @error('keparahan_serangan') is-invalid @enderror">
|
||||
<option value="">Pilih Keparahan Serangan</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::RINGAN }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::RINGAN->value ? 'selected' : '' }}>Ringan</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::SEDANG }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::SEDANG->value ? 'selected' : '' }}>Sedang</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::BERAT }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::BERAT->value ? 'selected' : '' }}>Berat</option>
|
||||
</select>
|
||||
@error('keparahan_serangan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<button type="submit" class="btn btn-danger">Hapus Tanaman</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
let currentRow = null;
|
||||
|
||||
$('.delete-tanaman').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
currentRow = $(this).closest('tr');
|
||||
|
||||
var url = "{{ route('petani.lahan-tanaman.tanaman.show', ['petani' => $petani->id, 'lahan_tanaman' => $lahanSelected->id, 'tanaman' => ':id']) }}".replace(':id', $(this).data('id'));
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: 'GET',
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
$('#delete-komoditas').val(response.data.komoditas.nama);
|
||||
$('#delete-jenis_komoditas').val(response.data.jenis_komoditas.nama);
|
||||
$('#delete-varietas').val(response.data.varietas.nama);
|
||||
$('#delete-latitude').val(response.data.latitude);
|
||||
$('#delete-longitude').val(response.data.longitude);
|
||||
$('#delete-kondisi').val(response.data.kondisi_tanaman);
|
||||
$('#delete-serangan_hama').val(response.data.serangan_hama);
|
||||
$('#delete-penyakit_tanaman').val(response.data.penyakit_tanaman);
|
||||
$('#delete-keparahan_serangan').val(response.data.keparahan_serangan);
|
||||
$('#deleteTanamanFormId').val(response.data.id);
|
||||
|
||||
$('#deleteTanamanModal').modal('show');
|
||||
},
|
||||
error: function(xhr) {
|
||||
console.log(xhr.responseText);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#deleteTanamanForm').on('submit', function(e) {
|
||||
e.preventDefault();
|
||||
var form = $(this);
|
||||
var url = form.attr('action').replace(':id', $('#deleteTanamanFormId').val());
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: 'POST',
|
||||
data: form.serialize(),
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
$('#deleteTanamanModal').modal('hide');
|
||||
if (currentRow) {
|
||||
currentRow.remove();
|
||||
}
|
||||
},
|
||||
error: function(xhr) {
|
||||
console.log(xhr.responseText);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
@@ -44,12 +44,47 @@
|
||||
<div class="col-md-6">
|
||||
<label for="kondisi" class="form-label">Kondisi Tanaman</label>
|
||||
<select class="form-select" id="kondisi" name="kondisi_tanaman" required>
|
||||
@foreach (\App\Enums\KondisiTanaman::cases() as $kondisi)
|
||||
<option value="{{ $kondisi->value }}">{{ $kondisi->name }}</option>
|
||||
@endforeach
|
||||
<option value="">Pilih Kondisi Tanaman</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::BAIK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BAIK->value ? 'selected' : '' }}>Baik</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::SEDANG }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::SEDANG->value ? 'selected' : '' }}>Sedang</option>
|
||||
<option value="{{ \App\Enums\KondisiTanaman::BURUK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BURUK->value ? 'selected' : '' }}>Buruk</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 form-control-validation">
|
||||
<label class="form-label">Serangan Hama</label>
|
||||
<select id="serangan_hama" name="serangan_hama" class="form-select @error('serangan_hama') is-invalid @enderror">
|
||||
<option value="">Pilih Serangan Hama</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::ULAT }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::ULAT->value ? 'selected' : '' }}>Ulat</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::BELALANG }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::BELALANG->value ? 'selected' : '' }}>Belalang</option>
|
||||
<option value="{{ \App\Enums\SeranganHama::KUTU }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::KUTU->value ? 'selected' : '' }}>Kutu</option>
|
||||
</select>
|
||||
@error('serangan_hama')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6 form-control-validation">
|
||||
<label class="form-label">Penyakit Tanaman</label>
|
||||
<select id="penyakit_tanaman" name="penyakit_tanaman" class="form-select @error('penyakit_tanaman') is-invalid @enderror">
|
||||
<option value="">Pilih Penyakit</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::BUSUK_BUAH }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::BUSUK_BUAH->value ? 'selected' : '' }}>Busuk Buah</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_MENGUNING }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_MENGUNING->value ? 'selected' : '' }}>Daun Menguning</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_BERCAK }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_BERCAK->value ? 'selected' : '' }}>Daun Bercak</option>
|
||||
<option value="{{ \App\Enums\PenyakitTanaman::TANAMAN_LAYU }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::TANAMAN_LAYU->value ? 'selected' : '' }}>Tanaman Layu</option>
|
||||
</select>
|
||||
@error('penyakit_tanaman')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-6 form-control-validation">
|
||||
<label class="form-label">Keparahan Serangan</label>
|
||||
<select id="keparahan_serangan" name="keparahan_serangan" class="form-select @error('keparahan_serangan') is-invalid @enderror">
|
||||
<option value="">Pilih Keparahan Serangan</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::RINGAN }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::RINGAN->value ? 'selected' : '' }}>Ringan</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::SEDANG }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::SEDANG->value ? 'selected' : '' }}>Sedang</option>
|
||||
<option value="{{ \App\Enums\KeparahanSerangan::BERAT }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::BERAT->value ? 'selected' : '' }}>Berat</option>
|
||||
</select>
|
||||
@error('keparahan_serangan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<button type="submit" class="btn btn-primary">Simpan Perubahan</button>
|
||||
</div>
|
||||
@@ -81,6 +116,9 @@
|
||||
$('#latitude').val(response.data.latitude);
|
||||
$('#longitude').val(response.data.longitude);
|
||||
$('#kondisi').val(response.data.kondisi_tanaman);
|
||||
$('#serangan_hama').val(response.data.serangan_hama);
|
||||
$('#penyakit_tanaman').val(response.data.penyakit_tanaman);
|
||||
$('#keparahan_serangan').val(response.data.keparahan_serangan);
|
||||
$('#editTanamanFormId').val(response.data.id);
|
||||
|
||||
$('#tanamanModal').modal('show');
|
||||
|
||||
@@ -0,0 +1,628 @@
|
||||
@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="row">
|
||||
<div class="col-md-12">
|
||||
@include('produktivitas.petani.header', ['petani' => $petani])
|
||||
|
||||
<form method="POST" action="{{ $sosialEkonomi ? route('petani.sosial-ekonomi.update', [$petani->id, $sosialEkonomi->id]) : route('petani.sosial-ekonomi.store', $petani->id) }}">
|
||||
@csrf
|
||||
@if($sosialEkonomi)
|
||||
@method('PUT')
|
||||
@endif
|
||||
|
||||
<input type="hidden" name="petani_id" value="{{ $petani->id }}">
|
||||
|
||||
<div class="card mb-6">
|
||||
<div class="card-body pt-12">
|
||||
<h5 class="pb-4 border-bottom mb-4">Komposisi Anggota Keluarga</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="jumlah-tanggungan">Jumlah Tanggungan</label>
|
||||
<input type="number" min="0" class="form-control @error('jumlah_tanggungan') is-invalid @enderror" id="jumlah-tanggungan" name="jumlah_tanggungan" value="{{ old('jumlah_tanggungan', $sosialEkonomi?->jumlah_tanggungan) }}">
|
||||
@error('jumlah_tanggungan')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="anak-masih-sekolah">Anak Masih Sekolah</label>
|
||||
<input type="number" min="0" class="form-control @error('anak_masih_sekolah') is-invalid @enderror" id="anak-masih-sekolah" name="anak_masih_sekolah" value="{{ old('anak_masih_sekolah', $sosialEkonomi?->anak_masih_sekolah) }}">
|
||||
@error('anak_masih_sekolah')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="yang-ikut-bekerja">Yang Ikut Bekerja</label>
|
||||
<input type="number" min="0" class="form-control @error('yang_ikut_bekerja') is-invalid @enderror" id="yang-ikut-bekerja" name="yang_ikut_bekerja" value="{{ old('yang_ikut_bekerja', $sosialEkonomi?->yang_ikut_bekerja) }}">
|
||||
@error('yang_ikut_bekerja')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="mb-4 mt-4">Pendapatan dari Komoditas Utama</h5>
|
||||
@if($komoditasPetani->isEmpty())
|
||||
<div class="alert alert-warning">
|
||||
Petani ini belum memiliki komoditas pada data lahan. Tambahkan data Lahan & Tanaman terlebih dahulu agar pilihan komoditas tersedia.
|
||||
</div>
|
||||
@endif
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table table-bordered align-middle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Komoditas</th>
|
||||
<th>Pendapatan</th>
|
||||
<th>Periode</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@for($i = 0; $i < 2; $i++)
|
||||
@php($item = $pendapatanKomoditasUtama->get($i))
|
||||
<tr class="pendapatan-row" data-group="komoditas-utama" data-row-index="{{ $i }}">
|
||||
<td>
|
||||
<input type="hidden" name="pendapatan_komoditas[{{ $i }}][kategori]" value="utama">
|
||||
@php($selectedKomoditas = old("pendapatan_komoditas.$i.komoditas", $item?->komoditas))
|
||||
<select class="form-control sosial-ekonomi-komoditas sosial-ekonomi-komoditas-utama pendapatan-trigger" data-kategori="utama" name="pendapatan_komoditas[{{ $i }}][komoditas]">
|
||||
<option value="">Pilih Komoditas</option>
|
||||
@foreach($komoditasPetani as $komoditas)
|
||||
<option value="{{ $komoditas->nama }}" {{ $selectedKomoditas === $komoditas->nama ? 'selected' : '' }}>{{ $komoditas->nama }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
@php($pendapatanValue = old("pendapatan_komoditas.$i.pendapatan", $item?->pendapatan))
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_komoditas[{{ $i }}][pendapatan]" value="{{ filled($pendapatanValue) ? number_format((int) preg_replace('/\D/', '', $pendapatanValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
@php($periodeValue = old("pendapatan_komoditas.$i.periode", $item?->periode))
|
||||
<div class="d-flex align-items-center gap-4">
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="periode-utama-{{ $i }}-musim" name="pendapatan_komoditas[{{ $i }}][periode]" value="musim" {{ $periodeValue === 'musim' ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="periode-utama-{{ $i }}-musim">Musim</label>
|
||||
</div>
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="periode-utama-{{ $i }}-tahun" name="pendapatan_komoditas[{{ $i }}][periode]" value="tahun" {{ $periodeValue === 'tahun' ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="periode-utama-{{ $i }}-tahun">Tahun</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<button type="button" class="btn btn-sm btn-primary add-pendapatan-row" data-group="komoditas-utama">
|
||||
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i>Tambah Pendapatan Komoditas Utama
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h5 class="mb-4 mt-4">Pendapatan dari Komoditas Lain</h5>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table table-bordered align-middle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Komoditas</th>
|
||||
<th>Pendapatan</th>
|
||||
<th>Periode</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@for($i = 0; $i < 2; $i++)
|
||||
@php($item = $pendapatanKomoditasLainnya->get($i))
|
||||
@php($index = $i + 2)
|
||||
<tr class="pendapatan-row" data-group="komoditas-lainnya" data-row-index="{{ $i }}">
|
||||
<td>
|
||||
<input type="hidden" name="pendapatan_komoditas[{{ $index }}][kategori]" value="lainnya">
|
||||
@php($selectedKomoditas = old("pendapatan_komoditas.$index.komoditas", $item?->komoditas))
|
||||
<select class="form-control sosial-ekonomi-komoditas sosial-ekonomi-komoditas-lainnya pendapatan-trigger" data-kategori="lainnya" name="pendapatan_komoditas[{{ $index }}][komoditas]">
|
||||
<option value="">Pilih Komoditas</option>
|
||||
@foreach($komoditasPetani as $komoditas)
|
||||
<option value="{{ $komoditas->nama }}" {{ $selectedKomoditas === $komoditas->nama ? 'selected' : '' }}>{{ $komoditas->nama }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
@php($pendapatanValue = old("pendapatan_komoditas.$index.pendapatan", $item?->pendapatan))
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_komoditas[{{ $index }}][pendapatan]" value="{{ filled($pendapatanValue) ? number_format((int) preg_replace('/\D/', '', $pendapatanValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
@php($periodeValue = old("pendapatan_komoditas.$index.periode", $item?->periode))
|
||||
<div class="d-flex align-items-center gap-4">
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="periode-lainnya-{{ $i }}-musim" name="pendapatan_komoditas[{{ $index }}][periode]" value="musim" {{ $periodeValue === 'musim' ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="periode-lainnya-{{ $i }}-musim">Musim</label>
|
||||
</div>
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="periode-lainnya-{{ $i }}-tahun" name="pendapatan_komoditas[{{ $index }}][periode]" value="tahun" {{ $periodeValue === 'tahun' ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="periode-lainnya-{{ $i }}-tahun">Tahun</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<button type="button" class="btn btn-sm btn-primary add-pendapatan-row" data-group="komoditas-lainnya">
|
||||
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i>Tambah Pendapatan Komoditas Lain
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h5 class="mb-4 mt-4">Pendapatan di Luar Pertanian</h5>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table table-bordered align-middle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Jenis Pekerjaan</th>
|
||||
<th>Estimasi per Bulan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@for($i = 0; $i < 2; $i++)
|
||||
@php($item = $pendapatanLuarPertanian->get($i))
|
||||
<tr class="pendapatan-row" data-group="luar-pertanian" data-row-index="{{ $i }}">
|
||||
<td>
|
||||
<input type="text" class="form-control pendapatan-trigger" name="pendapatan_luar_pertanian[{{ $i }}][jenis_pekerjaan]" value="{{ old("pendapatan_luar_pertanian.$i.jenis_pekerjaan", $item?->jenis_pekerjaan) }}">
|
||||
</td>
|
||||
<td>
|
||||
@php($estimasiValue = old("pendapatan_luar_pertanian.$i.estimasi_per_bulan", $item?->estimasi_per_bulan))
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_luar_pertanian[{{ $i }}][estimasi_per_bulan]" value="{{ filled($estimasiValue) ? number_format((int) preg_replace('/\D/', '', $estimasiValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<button type="button" class="btn btn-sm btn-primary add-pendapatan-row" data-group="luar-pertanian">
|
||||
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i>Tambah Pendapatan di Luar Pertanian
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Stabilitas Penghasilan</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="skor-periode-paceklik">Periode Paceklik</label>
|
||||
<select class="form-control @error('skor_periode_paceklik') is-invalid @enderror" id="skor-periode-paceklik" name="skor_periode_paceklik">
|
||||
<option value="">Pilih Periode Paceklik</option>
|
||||
<option value="1" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 1 ? 'selected' : '' }}>>4 bulan</option>
|
||||
<option value="2" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 2 ? 'selected' : '' }}>3-4 bulan</option>
|
||||
<option value="3" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 3 ? 'selected' : '' }}>1-2 bulan</option>
|
||||
<option value="4" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 4 ? 'selected' : '' }}>Sebentar & tidak menentu</option>
|
||||
<option value="5" {{ old('skor_periode_paceklik', $sosialEkonomi?->skor_periode_paceklik) == 5 ? 'selected' : '' }}>Tidak ada, stabil</option>
|
||||
</select>
|
||||
@error('skor_periode_paceklik')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="bulan-paceklik">Bulan Paceklik Biasanya</label>
|
||||
<input type="text" class="form-control @error('bulan_paceklik') is-invalid @enderror" id="bulan-paceklik" name="bulan_paceklik" value="{{ old('bulan_paceklik', $sosialEkonomi?->bulan_paceklik) }}">
|
||||
@error('bulan_paceklik')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="sumber-penghasilan-paceklik">Sumber Penghasilan Saat Paceklik</label>
|
||||
<input type="text" class="form-control @error('sumber_penghasilan_paceklik') is-invalid @enderror" id="sumber-penghasilan-paceklik" name="sumber_penghasilan_paceklik" value="{{ old('sumber_penghasilan_paceklik', $sosialEkonomi?->sumber_penghasilan_paceklik) }}">
|
||||
@error('sumber_penghasilan_paceklik')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Biaya Produksi dan Tabungan</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="biaya-kebun">Total Estimasi Biaya Kebun per Musim</label>
|
||||
@php($biayaKebunValue = old('total_estimasi_biaya_kebun_per_musim', $sosialEkonomi?->total_estimasi_biaya_kebun_per_musim))
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input @error('total_estimasi_biaya_kebun_per_musim') is-invalid @enderror" id="biaya-kebun" name="total_estimasi_biaya_kebun_per_musim" value="{{ filled($biayaKebunValue) ? number_format((int) preg_replace('/\D/', '', $biayaKebunValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
@error('total_estimasi_biaya_kebun_per_musim')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="skor-menabung">Kemampuan Menabung</label>
|
||||
<select class="form-control @error('skor_kemampuan_menabung') is-invalid @enderror" id="skor-menabung" name="skor_kemampuan_menabung">
|
||||
<option value="">Pilih Kemampuan Menabung</option>
|
||||
<option value="1" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 1 ? 'selected' : '' }}>Tidak bisa sama sekali</option>
|
||||
<option value="2" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 2 ? 'selected' : '' }}>Pernah tapi selalu terpakai</option>
|
||||
<option value="3" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 3 ? 'selected' : '' }}>Kadang-kadang</option>
|
||||
<option value="4" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 4 ? 'selected' : '' }}>Bisa tapi tidak tetap</option>
|
||||
<option value="5" {{ old('skor_kemampuan_menabung', $sosialEkonomi?->skor_kemampuan_menabung) == 5 ? 'selected' : '' }}>Rutin & jumlah tetap</option>
|
||||
</select>
|
||||
@error('skor_kemampuan_menabung')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="tabungan-bulan">Estimasi Tabungan per Bulan</label>
|
||||
@php($tabunganValue = old('estimasi_tabungan_per_bulan', $sosialEkonomi?->estimasi_tabungan_per_bulan))
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input @error('estimasi_tabungan_per_bulan') is-invalid @enderror" id="tabungan-bulan" name="estimasi_tabungan_per_bulan" value="{{ filled($tabunganValue) ? number_format((int) preg_replace('/\D/', '', $tabunganValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
@error('estimasi_tabungan_per_bulan')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Persepsi Kecukupan Penghasilan</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="skor-kecukupan">Kecukupan Penghasilan untuk Keluarga</label>
|
||||
<select class="form-control @error('skor_kecukupan_penghasilan') is-invalid @enderror" id="skor-kecukupan" name="skor_kecukupan_penghasilan">
|
||||
<option value="">Pilih Kecukupan Penghasilan</option>
|
||||
<option value="1" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 1 ? 'selected' : '' }}>Sangat tidak cukup</option>
|
||||
<option value="2" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 2 ? 'selected' : '' }}>Kurang, sering berhutang</option>
|
||||
<option value="3" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 3 ? 'selected' : '' }}>Cukup pas-pasan</option>
|
||||
<option value="4" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 4 ? 'selected' : '' }}>Cukup, kadang ada sisa</option>
|
||||
<option value="5" {{ old('skor_kecukupan_penghasilan', $sosialEkonomi?->skor_kecukupan_penghasilan) == 5 ? 'selected' : '' }}>Lebih dari cukup</option>
|
||||
</select>
|
||||
@error('skor_kecukupan_penghasilan')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-8 mb-4 form-control-validation">
|
||||
<label class="form-label" for="alasan-kecukupan">Alasan</label>
|
||||
<textarea class="form-control @error('alasan_kecukupan_penghasilan') is-invalid @enderror" id="alasan-kecukupan" name="alasan_kecukupan_penghasilan" rows="2">{{ old('alasan_kecukupan_penghasilan', $sosialEkonomi?->alasan_kecukupan_penghasilan) }}</textarea>
|
||||
@error('alasan_kecukupan_penghasilan')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Kondisi Aset & Lahan - Kejelasan Hak Kelola</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="status-kepemilikan-lahan">Status Kepemilikan Lahan</label>
|
||||
<select class="form-control @error('status_kepemilikan_lahan') is-invalid @enderror" id="status-kepemilikan-lahan" name="status_kepemilikan_lahan">
|
||||
<option value="">Pilih Status Kepemilikan Lahan</option>
|
||||
@foreach(['Milik pribadi', 'Milik orang tua-keluarga', 'Sewa-bagi hasil', 'Lahan adat', 'Perhutanan sosial'] as $status)
|
||||
<option value="{{ $status }}" {{ old('status_kepemilikan_lahan', $sosialEkonomi?->status_kepemilikan_lahan) === $status ? 'selected' : '' }}>{{ $status }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('status_kepemilikan_lahan')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="skor-kejelasan-lahan">Kejelasan Status Lahan</label>
|
||||
<select class="form-control @error('skor_kejelasan_status_lahan') is-invalid @enderror" id="skor-kejelasan-lahan" name="skor_kejelasan_status_lahan">
|
||||
<option value="">Pilih Kejelasan Status Lahan</option>
|
||||
<option value="1" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 1 ? 'selected' : '' }}>Tidak ada dokumen & ada sengketa</option>
|
||||
<option value="2" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 2 ? 'selected' : '' }}>Ada dokumen tapi masih sengketa</option>
|
||||
<option value="3" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 3 ? 'selected' : '' }}>Pernah sengketa, sudah selesai</option>
|
||||
<option value="4" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 4 ? 'selected' : '' }}>Lahan adat/keluarga/perhutanan sosial tanpa sengketa</option>
|
||||
<option value="5" {{ old('skor_kejelasan_status_lahan', $sosialEkonomi?->skor_kejelasan_status_lahan) == 5 ? 'selected' : '' }}>Bersertifikat & tidak ada sengketa</option>
|
||||
</select>
|
||||
@error('skor_kejelasan_status_lahan')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-2 mb-4 form-control-validation">
|
||||
<label class="form-label" for="ada-sertifikat">Ada Sertifikat/Dokumen?</label>
|
||||
<select class="form-control @error('ada_sertifikat_dokumen') is-invalid @enderror" id="ada-sertifikat" name="ada_sertifikat_dokumen">
|
||||
<option value="">Pilih</option>
|
||||
<option value="0" {{ old('ada_sertifikat_dokumen', $sosialEkonomi?->ada_sertifikat_dokumen) === false || old('ada_sertifikat_dokumen', $sosialEkonomi?->ada_sertifikat_dokumen) === '0' ? 'selected' : '' }}>Tidak Ada</option>
|
||||
<option value="1" {{ old('ada_sertifikat_dokumen', $sosialEkonomi?->ada_sertifikat_dokumen) === true || old('ada_sertifikat_dokumen', $sosialEkonomi?->ada_sertifikat_dokumen) === '1' ? 'selected' : '' }}>Ada</option>
|
||||
</select>
|
||||
@error('ada_sertifikat_dokumen')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-2 mb-4 form-control-validation">
|
||||
<label class="form-label" for="ada-sengketa">Ada Sengketa?</label>
|
||||
<select class="form-control @error('ada_sengketa') is-invalid @enderror" id="ada-sengketa" name="ada_sengketa">
|
||||
<option value="">Pilih</option>
|
||||
<option value="0" {{ old('ada_sengketa', $sosialEkonomi?->ada_sengketa) === false || old('ada_sengketa', $sosialEkonomi?->ada_sengketa) === '0' ? 'selected' : '' }}>Tidak Ada</option>
|
||||
<option value="1" {{ old('ada_sengketa', $sosialEkonomi?->ada_sengketa) === true || old('ada_sengketa', $sosialEkonomi?->ada_sengketa) === '1' ? 'selected' : '' }}>Ada</option>
|
||||
</select>
|
||||
@error('ada_sengketa')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 mb-4 form-control-validation">
|
||||
<label class="form-label" for="keterangan-sengketa">Keterangan Sengketa</label>
|
||||
<textarea class="form-control @error('keterangan_sengketa') is-invalid @enderror" id="keterangan-sengketa" name="keterangan_sengketa" rows="2">{{ old('keterangan_sengketa', $sosialEkonomi?->keterangan_sengketa) }}</textarea>
|
||||
@error('keterangan_sengketa')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="pihak-membantu">Pihak yang Membantu</label>
|
||||
<select class="form-control @error('pihak_membantu_konflik') is-invalid @enderror" id="pihak-membantu" name="pihak_membantu_konflik">
|
||||
<option value="">Pilih</option>
|
||||
<option value="Tidak ada-selesaikan sendiri" {{ old('pihak_membantu_konflik', $sosialEkonomi?->pihak_membantu_konflik) === 'Tidak ada-selesaikan sendiri' ? 'selected' : '' }}>Tidak ada-selesaikan sendiri</option>
|
||||
<option value="Ada" {{ old('pihak_membantu_konflik', $sosialEkonomi?->pihak_membantu_konflik) === 'Ada' ? 'selected' : '' }}>Ada</option>
|
||||
</select>
|
||||
@error('pihak_membantu_konflik')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="pihak-membantu-nama">Nama Pihak</label>
|
||||
<input type="text" class="form-control @error('pihak_membantu_konflik_nama') is-invalid @enderror" id="pihak-membantu-nama" name="pihak_membantu_konflik_nama" value="{{ old('pihak_membantu_konflik_nama', $sosialEkonomi?->pihak_membantu_konflik_nama) }}">
|
||||
@error('pihak_membantu_konflik_nama')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="tahun-bantuan">Tahun Bantuan</label>
|
||||
<input type="number" min="1900" max="2100" class="form-control @error('tahun_bantuan_konflik') is-invalid @enderror" id="tahun-bantuan" name="tahun_bantuan_konflik" value="{{ old('tahun_bantuan_konflik', $sosialEkonomi?->tahun_bantuan_konflik) }}">
|
||||
@error('tahun_bantuan_konflik')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="status-konflik">Status Konflik</label>
|
||||
<select class="form-control @error('status_konflik') is-invalid @enderror" id="status-konflik" name="status_konflik">
|
||||
<option value="">Pilih</option>
|
||||
<option value="Sudah selesai" {{ old('status_konflik', $sosialEkonomi?->status_konflik) === 'Sudah selesai' ? 'selected' : '' }}>Sudah selesai</option>
|
||||
<option value="Belum, masih berlanjut" {{ old('status_konflik', $sosialEkonomi?->status_konflik) === 'Belum, masih berlanjut' ? 'selected' : '' }}>Belum, masih berlanjut</option>
|
||||
</select>
|
||||
@error('status_konflik')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4 text-end">
|
||||
<button type="submit" class="btn btn-success">
|
||||
<i class="icon-base ti tabler-device-floppy me-1_5 icon-sm"></i>Simpan Sosial Ekonomi
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
'use strict';
|
||||
$(document).ready(function () {
|
||||
$('#skor-periode-paceklik, #skor-menabung, #skor-kecukupan, #status-kepemilikan-lahan, #skor-kejelasan-lahan, #ada-sertifikat, #ada-sengketa, #pihak-membantu, #status-konflik, .sosial-ekonomi-komoditas').select2();
|
||||
|
||||
function syncKomoditasLainnyaOptions() {
|
||||
const selectedUtama = $('.sosial-ekonomi-komoditas-utama')
|
||||
.map(function () {
|
||||
return $(this).val();
|
||||
})
|
||||
.get()
|
||||
.filter(Boolean);
|
||||
|
||||
$('.sosial-ekonomi-komoditas-lainnya').each(function () {
|
||||
const $select = $(this);
|
||||
const currentValue = $select.val();
|
||||
|
||||
$select.find('option').each(function () {
|
||||
const $option = $(this);
|
||||
const value = $option.val();
|
||||
|
||||
if (!value) {
|
||||
$option.prop('disabled', false);
|
||||
return;
|
||||
}
|
||||
|
||||
$option.prop('disabled', selectedUtama.includes(value));
|
||||
});
|
||||
|
||||
if (currentValue && selectedUtama.includes(currentValue)) {
|
||||
$select.val('').trigger('change.select2');
|
||||
} else {
|
||||
$select.trigger('change.select2');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function rowHasValue($row) {
|
||||
const triggerValue = $row.find('.pendapatan-trigger').first().val();
|
||||
|
||||
return Boolean(triggerValue);
|
||||
}
|
||||
|
||||
function setupPendapatanRows(group) {
|
||||
const $rows = $('.pendapatan-row[data-group="' + group + '"]');
|
||||
|
||||
$rows.each(function (index) {
|
||||
const $row = $(this);
|
||||
const currentHasValue = rowHasValue($row);
|
||||
|
||||
if (index === 0 || currentHasValue) {
|
||||
$row.removeClass('d-none');
|
||||
} else {
|
||||
$row.addClass('d-none');
|
||||
}
|
||||
});
|
||||
|
||||
syncAddPendapatanButton(group);
|
||||
}
|
||||
|
||||
function setupAllPendapatanRows() {
|
||||
setupPendapatanRows('komoditas-utama');
|
||||
setupPendapatanRows('komoditas-lainnya');
|
||||
setupPendapatanRows('luar-pertanian');
|
||||
}
|
||||
|
||||
function maxPendapatanRows(group) {
|
||||
if (group === 'komoditas-utama') {
|
||||
return 2;
|
||||
}
|
||||
return Infinity;
|
||||
}
|
||||
|
||||
function syncAddPendapatanButton(group) {
|
||||
const visibleRows = $('.pendapatan-row[data-group="' + group + '"]:visible').length;
|
||||
const maxRows = maxPendapatanRows(group);
|
||||
|
||||
if (visibleRows >= maxRows) {
|
||||
$('.add-pendapatan-row[data-group="' + group + '"]').addClass('d-none');
|
||||
} else {
|
||||
$('.add-pendapatan-row[data-group="' + group + '"]').removeClass('d-none');
|
||||
}
|
||||
}
|
||||
|
||||
function showNextPendapatanRow(group) {
|
||||
const visibleRows = $('.pendapatan-row[data-group="' + group + '"]:visible').length;
|
||||
const maxRows = maxPendapatanRows(group);
|
||||
|
||||
if (visibleRows >= maxRows) {
|
||||
return;
|
||||
}
|
||||
|
||||
const $hiddenRow = $('.pendapatan-row[data-group="' + group + '"].d-none').first();
|
||||
|
||||
if ($hiddenRow.length) {
|
||||
$hiddenRow.removeClass('d-none');
|
||||
} else {
|
||||
appendPendapatanRow(group);
|
||||
}
|
||||
|
||||
syncAddPendapatanButton(group);
|
||||
}
|
||||
|
||||
function appendPendapatanRow(group) {
|
||||
const $tbody = $('.pendapatan-row[data-group="' + group + '"]').first().closest('tbody');
|
||||
const $row = group === 'luar-pertanian'
|
||||
? buildPendapatanLuarPertanianRow(group)
|
||||
: buildPendapatanKomoditasRow(group);
|
||||
|
||||
$tbody.append($row);
|
||||
$row.find('.sosial-ekonomi-komoditas').select2();
|
||||
syncKomoditasLainnyaOptions();
|
||||
}
|
||||
|
||||
function nextPendapatanKomoditasIndex() {
|
||||
return nextArrayIndex('pendapatan_komoditas');
|
||||
}
|
||||
|
||||
function nextPendapatanLuarPertanianIndex() {
|
||||
return nextArrayIndex('pendapatan_luar_pertanian');
|
||||
}
|
||||
|
||||
function nextArrayIndex(name) {
|
||||
let maxIndex = -1;
|
||||
$('[name^="' + name + '["]').each(function () {
|
||||
const match = this.name.match(new RegExp(name + '\\[(\\d+)\\]'));
|
||||
|
||||
if (match) {
|
||||
maxIndex = Math.max(maxIndex, Number(match[1]));
|
||||
}
|
||||
});
|
||||
|
||||
return maxIndex + 1;
|
||||
}
|
||||
|
||||
function nextRowIndex(group) {
|
||||
return $('.pendapatan-row[data-group="' + group + '"]').length;
|
||||
}
|
||||
|
||||
function komoditasOptionsHtml() {
|
||||
const $options = $('.sosial-ekonomi-komoditas').first().find('option').map(function () {
|
||||
return $('<option>')
|
||||
.val(this.value)
|
||||
.text($(this).text())
|
||||
.prop('selected', false)
|
||||
.prop('disabled', false)[0];
|
||||
});
|
||||
|
||||
return $('<select>').append($options).html();
|
||||
}
|
||||
|
||||
function buildPendapatanKomoditasRow(group) {
|
||||
const index = nextPendapatanKomoditasIndex();
|
||||
const rowIndex = nextRowIndex(group);
|
||||
const kategori = group === 'komoditas-utama' ? 'utama' : 'lainnya';
|
||||
const selectClass = group === 'komoditas-utama' ? 'sosial-ekonomi-komoditas-utama' : 'sosial-ekonomi-komoditas-lainnya';
|
||||
const periodePrefix = group === 'komoditas-utama' ? 'periode-utama' : 'periode-lainnya';
|
||||
const optionHtml = komoditasOptionsHtml();
|
||||
|
||||
return $(`
|
||||
<tr class="pendapatan-row" data-group="${group}" data-row-index="${rowIndex}">
|
||||
<td>
|
||||
<input type="hidden" name="pendapatan_komoditas[${index}][kategori]" value="${kategori}">
|
||||
<select class="form-control sosial-ekonomi-komoditas ${selectClass} pendapatan-trigger" data-kategori="${kategori}" name="pendapatan_komoditas[${index}][komoditas]">
|
||||
${optionHtml}
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_komoditas[${index}][pendapatan]">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center gap-4">
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="${periodePrefix}-${rowIndex}-musim" name="pendapatan_komoditas[${index}][periode]" value="musim">
|
||||
<label class="form-check-label" for="${periodePrefix}-${rowIndex}-musim">Musim</label>
|
||||
</div>
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="${periodePrefix}-${rowIndex}-tahun" name="pendapatan_komoditas[${index}][periode]" value="tahun">
|
||||
<label class="form-check-label" for="${periodePrefix}-${rowIndex}-tahun">Tahun</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
`);
|
||||
}
|
||||
|
||||
function buildPendapatanLuarPertanianRow(group) {
|
||||
const index = nextPendapatanLuarPertanianIndex();
|
||||
const rowIndex = nextRowIndex(group);
|
||||
|
||||
return $(`
|
||||
<tr class="pendapatan-row" data-group="${group}" data-row-index="${rowIndex}">
|
||||
<td>
|
||||
<input type="text" class="form-control pendapatan-trigger" name="pendapatan_luar_pertanian[${index}][jenis_pekerjaan]">
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_luar_pertanian[${index}][estimasi_per_bulan]">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
`);
|
||||
}
|
||||
|
||||
function syncPihakMembantuFields() {
|
||||
const isTidakAda = $('#pihak-membantu').val() === 'Tidak ada-selesaikan sendiri';
|
||||
const $fields = $('#pihak-membantu-nama, #tahun-bantuan');
|
||||
|
||||
$fields.prop('disabled', isTidakAda);
|
||||
|
||||
if (isTidakAda) {
|
||||
$fields.val('');
|
||||
}
|
||||
}
|
||||
|
||||
function onlyDigits(value) {
|
||||
return String(value || '').replace(/\D/g, '');
|
||||
}
|
||||
|
||||
function formatRupiah(value) {
|
||||
const digits = onlyDigits(value);
|
||||
|
||||
return digits.replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||||
}
|
||||
|
||||
$(document).on('change', '.sosial-ekonomi-komoditas-utama', syncKomoditasLainnyaOptions);
|
||||
$('.add-pendapatan-row').on('click', function () {
|
||||
showNextPendapatanRow($(this).data('group'));
|
||||
});
|
||||
$(document).on('input', '.currency-input', function () {
|
||||
const cursorAtEnd = this.selectionStart === this.value.length;
|
||||
this.value = formatRupiah(this.value);
|
||||
|
||||
if (cursorAtEnd) {
|
||||
this.setSelectionRange(this.value.length, this.value.length);
|
||||
}
|
||||
});
|
||||
$('form').on('submit', function () {
|
||||
$(this).find('.currency-input').each(function () {
|
||||
this.value = onlyDigits(this.value);
|
||||
});
|
||||
});
|
||||
$('#pihak-membantu').on('change', syncPihakMembantuFields);
|
||||
syncKomoditasLainnyaOptions();
|
||||
setupAllPendapatanRows();
|
||||
syncPihakMembantuFields();
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
@@ -49,7 +49,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Pendapatan dari Komoditas Utama</h5>
|
||||
<h5 class="mb-4 mt-4">Pendapatan dari Komoditas Utama</h5>
|
||||
@if($komoditasPetani->isEmpty())
|
||||
<div class="alert alert-warning">
|
||||
Petani ini belum memiliki komoditas pada data lahan. Tambahkan data Lahan & Tanaman terlebih dahulu agar pilihan komoditas tersedia.
|
||||
@@ -60,7 +60,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Komoditas</th>
|
||||
<th>Pendapatan (Rp)</th>
|
||||
<th>Pendapatan</th>
|
||||
<th>Periode</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -80,28 +80,42 @@
|
||||
</td>
|
||||
<td>
|
||||
@php($pendapatanValue = old("pendapatan_komoditas.$i.pendapatan", $item?->pendapatan))
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_komoditas[{{ $i }}][pendapatan]" value="{{ filled($pendapatanValue) ? number_format((int) preg_replace('/\D/', '', $pendapatanValue), 0, ',', '.') : '' }}">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_komoditas[{{ $i }}][pendapatan]" value="{{ filled($pendapatanValue) ? number_format((int) preg_replace('/\D/', '', $pendapatanValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<select class="form-control" name="pendapatan_komoditas[{{ $i }}][periode]">
|
||||
<option value="">Pilih</option>
|
||||
<option value="musim" {{ old("pendapatan_komoditas.$i.periode", $item?->periode) === 'musim' ? 'selected' : '' }}>Musim</option>
|
||||
<option value="tahun" {{ old("pendapatan_komoditas.$i.periode", $item?->periode) === 'tahun' ? 'selected' : '' }}>Tahun</option>
|
||||
</select>
|
||||
@php($periodeValue = old("pendapatan_komoditas.$i.periode", $item?->periode))
|
||||
<div class="d-flex align-items-center gap-4">
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="periode-utama-{{ $i }}-musim" name="pendapatan_komoditas[{{ $i }}][periode]" value="musim" {{ $periodeValue === 'musim' ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="periode-utama-{{ $i }}-musim">Musim</label>
|
||||
</div>
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="periode-utama-{{ $i }}-tahun" name="pendapatan_komoditas[{{ $i }}][periode]" value="tahun" {{ $periodeValue === 'tahun' ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="periode-utama-{{ $i }}-tahun">Tahun</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<button type="button" class="btn btn-sm btn-primary add-pendapatan-row" data-group="komoditas-utama">
|
||||
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i>Tambah Pendapatan Komoditas Utama
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Pendapatan dari Komoditas Lain</h5>
|
||||
<h5 class="mb-4 mt-4">Pendapatan dari Komoditas Lain</h5>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table table-bordered align-middle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Komoditas</th>
|
||||
<th>Pendapatan (Rp)</th>
|
||||
<th>Pendapatan</th>
|
||||
<th>Periode</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -122,28 +136,42 @@
|
||||
</td>
|
||||
<td>
|
||||
@php($pendapatanValue = old("pendapatan_komoditas.$index.pendapatan", $item?->pendapatan))
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_komoditas[{{ $index }}][pendapatan]" value="{{ filled($pendapatanValue) ? number_format((int) preg_replace('/\D/', '', $pendapatanValue), 0, ',', '.') : '' }}">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_komoditas[{{ $index }}][pendapatan]" value="{{ filled($pendapatanValue) ? number_format((int) preg_replace('/\D/', '', $pendapatanValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<select class="form-control" name="pendapatan_komoditas[{{ $index }}][periode]">
|
||||
<option value="">Pilih</option>
|
||||
<option value="musim" {{ old("pendapatan_komoditas.$index.periode", $item?->periode) === 'musim' ? 'selected' : '' }}>Musim</option>
|
||||
<option value="tahun" {{ old("pendapatan_komoditas.$index.periode", $item?->periode) === 'tahun' ? 'selected' : '' }}>Tahun</option>
|
||||
</select>
|
||||
@php($periodeValue = old("pendapatan_komoditas.$index.periode", $item?->periode))
|
||||
<div class="d-flex align-items-center gap-4">
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="periode-lainnya-{{ $i }}-musim" name="pendapatan_komoditas[{{ $index }}][periode]" value="musim" {{ $periodeValue === 'musim' ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="periode-lainnya-{{ $i }}-musim">Musim</label>
|
||||
</div>
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="periode-lainnya-{{ $i }}-tahun" name="pendapatan_komoditas[{{ $index }}][periode]" value="tahun" {{ $periodeValue === 'tahun' ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="periode-lainnya-{{ $i }}-tahun">Tahun</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<button type="button" class="btn btn-sm btn-primary add-pendapatan-row" data-group="komoditas-lainnya">
|
||||
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i>Tambah Pendapatan Komoditas Lain
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Pendapatan di Luar Pertanian</h5>
|
||||
<h5 class="mb-4 mt-4">Pendapatan di Luar Pertanian</h5>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table table-bordered align-middle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Jenis Pekerjaan</th>
|
||||
<th>Estimasi per Bulan (Rp)</th>
|
||||
<th>Estimasi per Bulan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -155,13 +183,21 @@
|
||||
</td>
|
||||
<td>
|
||||
@php($estimasiValue = old("pendapatan_luar_pertanian.$i.estimasi_per_bulan", $item?->estimasi_per_bulan))
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_luar_pertanian[{{ $i }}][estimasi_per_bulan]" value="{{ filled($estimasiValue) ? number_format((int) preg_replace('/\D/', '', $estimasiValue), 0, ',', '.') : '' }}">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_luar_pertanian[{{ $i }}][estimasi_per_bulan]" value="{{ filled($estimasiValue) ? number_format((int) preg_replace('/\D/', '', $estimasiValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<button type="button" class="btn btn-sm btn-primary add-pendapatan-row" data-group="luar-pertanian">
|
||||
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i>Tambah Pendapatan di Luar Pertanian
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Stabilitas Penghasilan</h5>
|
||||
<div class="row">
|
||||
@@ -192,9 +228,12 @@
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Biaya Produksi dan Tabungan</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="biaya-kebun">Total Estimasi Biaya Kebun per Musim (Rp)</label>
|
||||
<label class="form-label" for="biaya-kebun">Total Estimasi Biaya Kebun per Musim</label>
|
||||
@php($biayaKebunValue = old('total_estimasi_biaya_kebun_per_musim', $sosialEkonomi?->total_estimasi_biaya_kebun_per_musim))
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input @error('total_estimasi_biaya_kebun_per_musim') is-invalid @enderror" id="biaya-kebun" name="total_estimasi_biaya_kebun_per_musim" value="{{ filled($biayaKebunValue) ? number_format((int) preg_replace('/\D/', '', $biayaKebunValue), 0, ',', '.') : '' }}">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input @error('total_estimasi_biaya_kebun_per_musim') is-invalid @enderror" id="biaya-kebun" name="total_estimasi_biaya_kebun_per_musim" value="{{ filled($biayaKebunValue) ? number_format((int) preg_replace('/\D/', '', $biayaKebunValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
@error('total_estimasi_biaya_kebun_per_musim')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
@@ -210,9 +249,12 @@
|
||||
@error('skor_kemampuan_menabung')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label" for="tabungan-bulan">Estimasi Tabungan per Bulan (Rp)</label>
|
||||
<label class="form-label" for="tabungan-bulan">Estimasi Tabungan per Bulan</label>
|
||||
@php($tabunganValue = old('estimasi_tabungan_per_bulan', $sosialEkonomi?->estimasi_tabungan_per_bulan))
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input @error('estimasi_tabungan_per_bulan') is-invalid @enderror" id="tabungan-bulan" name="estimasi_tabungan_per_bulan" value="{{ filled($tabunganValue) ? number_format((int) preg_replace('/\D/', '', $tabunganValue), 0, ',', '.') : '' }}">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input @error('estimasi_tabungan_per_bulan') is-invalid @enderror" id="tabungan-bulan" name="estimasi_tabungan_per_bulan" value="{{ filled($tabunganValue) ? number_format((int) preg_replace('/\D/', '', $tabunganValue), 0, ',', '.') : '' }}">
|
||||
</div>
|
||||
@error('estimasi_tabungan_per_bulan')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
@@ -374,28 +416,169 @@
|
||||
return Boolean(triggerValue);
|
||||
}
|
||||
|
||||
function syncPendapatanRows(group) {
|
||||
function setupPendapatanRows(group) {
|
||||
const $rows = $('.pendapatan-row[data-group="' + group + '"]');
|
||||
let previousHasValue = true;
|
||||
|
||||
$rows.each(function (index) {
|
||||
const $row = $(this);
|
||||
const currentHasValue = rowHasValue($row);
|
||||
|
||||
if (index === 0 || previousHasValue || currentHasValue) {
|
||||
if (index === 0 || currentHasValue) {
|
||||
$row.removeClass('d-none');
|
||||
} else {
|
||||
$row.addClass('d-none');
|
||||
}
|
||||
|
||||
previousHasValue = currentHasValue;
|
||||
});
|
||||
|
||||
syncAddPendapatanButton(group);
|
||||
}
|
||||
|
||||
function syncAllPendapatanRows() {
|
||||
syncPendapatanRows('komoditas-utama');
|
||||
syncPendapatanRows('komoditas-lainnya');
|
||||
syncPendapatanRows('luar-pertanian');
|
||||
function setupAllPendapatanRows() {
|
||||
setupPendapatanRows('komoditas-utama');
|
||||
setupPendapatanRows('komoditas-lainnya');
|
||||
setupPendapatanRows('luar-pertanian');
|
||||
}
|
||||
|
||||
function maxPendapatanRows(group) {
|
||||
if (group === 'komoditas-utama') {
|
||||
return 2;
|
||||
}
|
||||
return Infinity;
|
||||
}
|
||||
|
||||
function syncAddPendapatanButton(group) {
|
||||
const visibleRows = $('.pendapatan-row[data-group="' + group + '"]:visible').length;
|
||||
const maxRows = maxPendapatanRows(group);
|
||||
|
||||
if (visibleRows >= maxRows) {
|
||||
$('.add-pendapatan-row[data-group="' + group + '"]').addClass('d-none');
|
||||
} else {
|
||||
$('.add-pendapatan-row[data-group="' + group + '"]').removeClass('d-none');
|
||||
}
|
||||
}
|
||||
|
||||
function showNextPendapatanRow(group) {
|
||||
const visibleRows = $('.pendapatan-row[data-group="' + group + '"]:visible').length;
|
||||
const maxRows = maxPendapatanRows(group);
|
||||
|
||||
if (visibleRows >= maxRows) {
|
||||
return;
|
||||
}
|
||||
|
||||
const $hiddenRow = $('.pendapatan-row[data-group="' + group + '"].d-none').first();
|
||||
|
||||
if ($hiddenRow.length) {
|
||||
$hiddenRow.removeClass('d-none');
|
||||
} else {
|
||||
appendPendapatanRow(group);
|
||||
}
|
||||
|
||||
syncAddPendapatanButton(group);
|
||||
}
|
||||
|
||||
function appendPendapatanRow(group) {
|
||||
const $tbody = $('.pendapatan-row[data-group="' + group + '"]').first().closest('tbody');
|
||||
const $row = group === 'luar-pertanian'
|
||||
? buildPendapatanLuarPertanianRow(group)
|
||||
: buildPendapatanKomoditasRow(group);
|
||||
|
||||
$tbody.append($row);
|
||||
$row.find('.sosial-ekonomi-komoditas').select2();
|
||||
syncKomoditasLainnyaOptions();
|
||||
}
|
||||
|
||||
function nextPendapatanKomoditasIndex() {
|
||||
return nextArrayIndex('pendapatan_komoditas');
|
||||
}
|
||||
|
||||
function nextPendapatanLuarPertanianIndex() {
|
||||
return nextArrayIndex('pendapatan_luar_pertanian');
|
||||
}
|
||||
|
||||
function nextArrayIndex(name) {
|
||||
let maxIndex = -1;
|
||||
$('[name^="' + name + '["]').each(function () {
|
||||
const match = this.name.match(new RegExp(name + '\\[(\\d+)\\]'));
|
||||
|
||||
if (match) {
|
||||
maxIndex = Math.max(maxIndex, Number(match[1]));
|
||||
}
|
||||
});
|
||||
|
||||
return maxIndex + 1;
|
||||
}
|
||||
|
||||
function nextRowIndex(group) {
|
||||
return $('.pendapatan-row[data-group="' + group + '"]').length;
|
||||
}
|
||||
|
||||
function komoditasOptionsHtml() {
|
||||
const $options = $('.sosial-ekonomi-komoditas').first().find('option').map(function () {
|
||||
return $('<option>')
|
||||
.val(this.value)
|
||||
.text($(this).text())
|
||||
.prop('selected', false)
|
||||
.prop('disabled', false)[0];
|
||||
});
|
||||
|
||||
return $('<select>').append($options).html();
|
||||
}
|
||||
|
||||
function buildPendapatanKomoditasRow(group) {
|
||||
const index = nextPendapatanKomoditasIndex();
|
||||
const rowIndex = nextRowIndex(group);
|
||||
const kategori = group === 'komoditas-utama' ? 'utama' : 'lainnya';
|
||||
const selectClass = group === 'komoditas-utama' ? 'sosial-ekonomi-komoditas-utama' : 'sosial-ekonomi-komoditas-lainnya';
|
||||
const periodePrefix = group === 'komoditas-utama' ? 'periode-utama' : 'periode-lainnya';
|
||||
const optionHtml = komoditasOptionsHtml();
|
||||
|
||||
return $(`
|
||||
<tr class="pendapatan-row" data-group="${group}" data-row-index="${rowIndex}">
|
||||
<td>
|
||||
<input type="hidden" name="pendapatan_komoditas[${index}][kategori]" value="${kategori}">
|
||||
<select class="form-control sosial-ekonomi-komoditas ${selectClass} pendapatan-trigger" data-kategori="${kategori}" name="pendapatan_komoditas[${index}][komoditas]">
|
||||
${optionHtml}
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_komoditas[${index}][pendapatan]">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center gap-4">
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="${periodePrefix}-${rowIndex}-musim" name="pendapatan_komoditas[${index}][periode]" value="musim">
|
||||
<label class="form-check-label" for="${periodePrefix}-${rowIndex}-musim">Musim</label>
|
||||
</div>
|
||||
<div class="form-check mb-0">
|
||||
<input class="form-check-input" type="radio" id="${periodePrefix}-${rowIndex}-tahun" name="pendapatan_komoditas[${index}][periode]" value="tahun">
|
||||
<label class="form-check-label" for="${periodePrefix}-${rowIndex}-tahun">Tahun</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
`);
|
||||
}
|
||||
|
||||
function buildPendapatanLuarPertanianRow(group) {
|
||||
const index = nextPendapatanLuarPertanianIndex();
|
||||
const rowIndex = nextRowIndex(group);
|
||||
|
||||
return $(`
|
||||
<tr class="pendapatan-row" data-group="${group}" data-row-index="${rowIndex}">
|
||||
<td>
|
||||
<input type="text" class="form-control pendapatan-trigger" name="pendapatan_luar_pertanian[${index}][jenis_pekerjaan]">
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Rp</span>
|
||||
<input type="text" inputmode="numeric" class="form-control currency-input" name="pendapatan_luar_pertanian[${index}][estimasi_per_bulan]">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
`);
|
||||
}
|
||||
|
||||
function syncPihakMembantuFields() {
|
||||
@@ -419,9 +602,11 @@
|
||||
return digits.replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||||
}
|
||||
|
||||
$('.sosial-ekonomi-komoditas-utama').on('change', syncKomoditasLainnyaOptions);
|
||||
$('.pendapatan-trigger').on('change keyup', syncAllPendapatanRows);
|
||||
$('.currency-input').on('input', function () {
|
||||
$(document).on('change', '.sosial-ekonomi-komoditas-utama', syncKomoditasLainnyaOptions);
|
||||
$('.add-pendapatan-row').on('click', function () {
|
||||
showNextPendapatanRow($(this).data('group'));
|
||||
});
|
||||
$(document).on('input', '.currency-input', function () {
|
||||
const cursorAtEnd = this.selectionStart === this.value.length;
|
||||
this.value = formatRupiah(this.value);
|
||||
|
||||
@@ -436,7 +621,7 @@
|
||||
});
|
||||
$('#pihak-membantu').on('change', syncPihakMembantuFields);
|
||||
syncKomoditasLainnyaOptions();
|
||||
syncAllPendapatanRows();
|
||||
setupAllPendapatanRows();
|
||||
syncPihakMembantuFields();
|
||||
});
|
||||
</script>
|
||||
|
||||
+2
-1
@@ -195,4 +195,5 @@ Route::middleware('auth')
|
||||
Route::resource('petani.praktik-budidaya', App\Http\Controllers\Web\Produktivitas\PraktikBudidayaController::class);
|
||||
Route::resource('petani.sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class);
|
||||
Route::resource('petani.akses-pasar', App\Http\Controllers\Web\Produktivitas\AksesPasarController::class);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user