solve lahan & tanaman
This commit is contained in:
@@ -17,6 +17,7 @@ use App\Models\Pertanian\Lahan;
|
||||
use App\Models\Wilayah\DesaKelurahan;
|
||||
use App\Models\Wilayah\Provinsi;
|
||||
use App\Models\Pertanian\Komoditas;
|
||||
use App\Models\Pertanian\PraktikBudidaya;
|
||||
use App\Models\Pertanian\Tanaman;
|
||||
use App\Models\Master\JenisTanaman;
|
||||
|
||||
@@ -64,8 +65,40 @@ class PetaniLahanController extends Controller
|
||||
|
||||
$komoditas = Komoditas::all();
|
||||
$tanamanPenaung = JenisTanaman::all();
|
||||
$autoPestDiseaseData = $this->autoPestDiseaseData($petaniId);
|
||||
$jenisHamaOtomatis = $autoPestDiseaseData['jenis_hama'];
|
||||
$jenisPenyakitOtomatis = $autoPestDiseaseData['jenis_penyakit'];
|
||||
|
||||
return view('produktivitas.petani.lahan.add', compact('petani', 'lahan', 'provinsi', 'komoditas', 'tanamanPenaung'));
|
||||
return view('produktivitas.petani.lahan.add', compact('petani', 'lahan', 'provinsi', 'komoditas', 'tanamanPenaung', 'jenisHamaOtomatis', 'jenisPenyakitOtomatis'));
|
||||
}
|
||||
|
||||
private function autoPestDiseaseData(string|int $petaniId): array
|
||||
{
|
||||
$praktikBudidaya = PraktikBudidaya::where('petani_id', $petaniId)->latest()->first();
|
||||
|
||||
return [
|
||||
'jenis_hama' => $this->normalizeArrayValue($praktikBudidaya?->jenis_hama),
|
||||
'jenis_penyakit' => $this->normalizeArrayValue($praktikBudidaya?->jenis_penyakit),
|
||||
];
|
||||
}
|
||||
|
||||
private function normalizeArrayValue(mixed $value): array
|
||||
{
|
||||
if (is_array($value)) {
|
||||
return array_values(array_filter($value, fn ($item) => filled($item)));
|
||||
}
|
||||
|
||||
if (is_string($value) && $value !== '') {
|
||||
$decoded = json_decode($value, true);
|
||||
|
||||
if (is_array($decoded)) {
|
||||
return array_values(array_filter($decoded, fn ($item) => filled($item)));
|
||||
}
|
||||
|
||||
return [$value];
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
private function validateLahan(Request $request)
|
||||
@@ -167,6 +200,7 @@ class PetaniLahanController extends Controller
|
||||
]);
|
||||
|
||||
$validated = $this->validateLahan($request);
|
||||
$validated = array_merge($validated, $this->autoPestDiseaseData($petaniId));
|
||||
$komoditas = Komoditas::where('id', $request->komoditas_id)->first();
|
||||
$lahanCount = Lahan::where('petani_id', $petaniId)
|
||||
->count();
|
||||
@@ -210,6 +244,8 @@ class PetaniLahanController extends Controller
|
||||
'serangan_hama' => $lahan->serangan_hama,
|
||||
'penyakit_tanaman' => $lahan->penyakit_tanaman,
|
||||
'keparahan_serangan' => $lahan->keparahan_serangan,
|
||||
'jenis_hama' => json_encode($lahan->jenis_hama ?? []),
|
||||
'jenis_penyakit' => json_encode($lahan->jenis_penyakit ?? []),
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by' => auth()->id(),
|
||||
'created_at' => now(),
|
||||
@@ -269,10 +305,13 @@ class PetaniLahanController extends Controller
|
||||
|
||||
$komoditas = Komoditas::all();
|
||||
$tanamanPenaung = JenisTanaman::all();
|
||||
$autoPestDiseaseData = $this->autoPestDiseaseData($petaniId);
|
||||
$jenisHamaOtomatis = $autoPestDiseaseData['jenis_hama'];
|
||||
$jenisPenyakitOtomatis = $autoPestDiseaseData['jenis_penyakit'];
|
||||
|
||||
$provinsi = Provinsi::orderBy('kode', 'asc')->get();
|
||||
|
||||
return view('produktivitas.petani.lahan.edit', compact('lahan', 'lahanSelected', 'petani', 'komoditas', 'provinsi', 'tanamanPenaung'));
|
||||
return view('produktivitas.petani.lahan.edit', compact('lahan', 'lahanSelected', 'petani', 'komoditas', 'provinsi', 'tanamanPenaung', 'jenisHamaOtomatis', 'jenisPenyakitOtomatis'));
|
||||
}
|
||||
|
||||
public function update(Request $request, string $petaniId, string $id)
|
||||
@@ -290,6 +329,7 @@ class PetaniLahanController extends Controller
|
||||
->toArray()
|
||||
]);
|
||||
$validated = $this->validateLahan($request);
|
||||
$validated = array_merge($validated, $this->autoPestDiseaseData($petaniId));
|
||||
$komoditas = Komoditas::where('id', $request->komoditas_id)->first();
|
||||
$tanamanCount = Tanaman::where('lahan_id', $lahan->id)->count();
|
||||
$lahanCount = Lahan::where('petani_id', $petaniId)->count();
|
||||
@@ -356,6 +396,8 @@ class PetaniLahanController extends Controller
|
||||
'serangan_hama' => $lahan->serangan_hama,
|
||||
'penyakit_tanaman' => $lahan->penyakit_tanaman,
|
||||
'keparahan_serangan' => $lahan->keparahan_serangan,
|
||||
'jenis_hama' => json_encode($lahan->jenis_hama ?? []),
|
||||
'jenis_penyakit' => json_encode($lahan->jenis_penyakit ?? []),
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by' => auth()->id(),
|
||||
'created_at' => now(),
|
||||
@@ -368,6 +410,12 @@ class PetaniLahanController extends Controller
|
||||
});
|
||||
}
|
||||
|
||||
$lahan->tanaman()->update([
|
||||
'jenis_hama' => json_encode($lahan->jenis_hama ?? []),
|
||||
'jenis_penyakit' => json_encode($lahan->jenis_penyakit ?? []),
|
||||
'updated_by' => auth()->id(),
|
||||
]);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
|
||||
Reference in New Issue
Block a user