Update Migration Input Update Praktik Budidaya
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum Bulan: string
|
||||
{
|
||||
case JANUARI = 'Januari';
|
||||
case FEBRUARI = 'Februari';
|
||||
case MARET = 'Maret';
|
||||
case APRIL = 'April';
|
||||
case MEI = 'Mei';
|
||||
case JUNI = 'Juni';
|
||||
case JULI = 'Juli';
|
||||
case AGUSTUS = 'Agustus';
|
||||
case SEPTEMBER = 'September';
|
||||
case OKTOBER = 'Oktober';
|
||||
case NOVEMBER = 'November';
|
||||
case DESEMBER = 'Desember';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum CaraSortasi: string
|
||||
{
|
||||
case DIPILAH = 'Dipilah manual dengan tangan (memilih satu per satu buah/biji yang bagus dan membuang yang rusak)';
|
||||
case ALAT_BANTU = 'Menggunakan alat bantu sederhana (tampah, ayakan, atau bak untuk memisahkan kotoran ringan)';
|
||||
case PERENDAMAN = 'Metode perendaman/tenggelam (memisahkan buah mengapung dan tenggelam)';
|
||||
case GRADING_KRITERIA = 'Grading berdasarkan kriteria (ukuran, warna, atau tingkat kematangan)';
|
||||
case PEMBERSIHAN = 'Hanya pembersihan kotoran kasar (membuang dahan atau sampah besar)';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::DIPILAH => 'Dipilah manual dengan tangan (memilih satu per satu buah/biji yang bagus dan membuang yang rusak)',
|
||||
self::ALAT_BANTU => 'Menggunakan alat bantu sederhana (tampah, ayakan, atau bak untuk memisahkan kotoran ringan)',
|
||||
self::PERENDAMAN => 'Metode perendaman/tenggelam (memisahkan buah mengapung dan tenggelam)',
|
||||
self::GRADING_KRITERIA => 'Grading berdasarkan kriteria (ukuran, warna, atau tingkat kematangan)',
|
||||
self::PEMBERSIHAN => 'Hanya pembersihan kotoran kasar (membuang dahan atau sampah besar)',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum DasarPenentuanPanen: int
|
||||
{
|
||||
case KEBUTUHAN_UANG = 1;
|
||||
case UMUR_TANPA_KONDISI_BUAH = 2;
|
||||
case BUAH_JATUH = 3;
|
||||
case TINGKAT_KEPADATAN = 4;
|
||||
case WARNA_KULIT_BUAH = 5;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::KEBUTUHAN_UANG => 'Kebutuhan uang mendesak, tanpa mempertimbangkan kematangan',
|
||||
self::UMUR_TANPA_KONDISI_BUAH => 'Umur/jadwal tetap, tanpa melihat kondisi buah langsung',
|
||||
self::BUAH_JATUH => 'Buah jatuh/matang pohon (sudah terlalu matang saat dipetik)',
|
||||
self::TINGKAT_KEPADATAN => 'Bersuara saat diketuk atau tingkat kepadatan buah',
|
||||
self::WARNA_KULIT_BUAH => 'Warna kulit buah (indikator paling akurat dan konsisten untuk menentukan kematangan optimal)',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum EstimasiKehilanganHasil: string
|
||||
{
|
||||
case TIDAK_ADA = 'Tidak ada kehilangan';
|
||||
case SEDIKIT = 'Sedikit, sekitar 25 % dari total panen';
|
||||
case LUMAYAN = 'Lumayan, sekitar 50% dari total panen';
|
||||
case BANYAK = 'Banyak, sekitar 75% dari total panen';
|
||||
case HAMPIR_SEMUA = 'Hampir semua rusak, lebih dari 75%';
|
||||
case TIDAK_TAHU = 'Hanya pembersihan kotoran kasar (membuang dahan atau sampah besar)';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::TIDAK_ADA => 'Tidak ada kehilangan',
|
||||
self::SEDIKIT => 'Sedikit, sekitar 25 % dari total panen',
|
||||
self::LUMAYAN => 'Lumayan, sekitar 50% dari total panen',
|
||||
self::BANYAK => 'Banyak, sekitar 75% dari total panen',
|
||||
self::HAMPIR_SEMUA => 'Hampir semua rusak, lebih dari 75%',
|
||||
self::TIDAK_TAHU => 'Tidak tahu/sulit memperkirakan',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum PraktikSortasi: int
|
||||
{
|
||||
case TIDAK_PERNAH = 1;
|
||||
case SANGAT_SEDERHANA = 2;
|
||||
case TIDAK_SETIAP_PANEN = 3;
|
||||
case SETIAP_PANEN = 4;
|
||||
case KETAT = 5;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::TIDAK_PERNAH => 'Tidak pernah melakukan sortasi sama sekali',
|
||||
self::SANGAT_SEDERHANA => 'Sortasi sangat sederhana, hanya membuang yang jelas-jelas rusak/busuk',
|
||||
self::TIDAK_SETIAP_PANEN => 'Sortasi dilakukan tapi tidak setiap panen (kadang dilakukan, kadang tidak)',
|
||||
self::SETIAP_PANEN => 'Sortasi dilakukan setiap panen, tapi standarnya belum konsisten',
|
||||
self::KETAT => 'Sortasi ketat dengan standar yang jelas dan konsisten setiap panen',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum TindakanPanenReject: string
|
||||
{
|
||||
case BUANG = 'Dibuang';
|
||||
case JUAL = 'Dijual ke tempat lain';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::BUANG => 'Dibuang',
|
||||
self::JUAL => 'Dijual ke tempat lain',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum TingkatPanenReject: int
|
||||
{
|
||||
case SERING = 1;
|
||||
case CUKUP_SERING = 2;
|
||||
case KADANG = 3;
|
||||
case JARANG = 4;
|
||||
case TIDAK_ADA = 5;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::SERING => 'Sering ditolak, lebih dari 50% hasil panen biasanya ditolak/tidak laku karena mutu',
|
||||
self::CUKUP_SERING => 'Cukup sering, sekitar 25–50% hasil panen ditolak/tidak laku',
|
||||
self::KADANG => 'Kadang ditolak, sekitar 10–25% hasil panen',
|
||||
self::JARANG => 'Jarang ditolak, kurang dari 10% hasil panen',
|
||||
self::TIDAK_ADA => 'Tidak ada yang ditolak, semua hasil panen sesuai standar pasar utama',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,9 @@ use Illuminate\Validation\Rules\Enum;
|
||||
|
||||
use App\Models\Pertanian\Petani;
|
||||
use App\Models\Pertanian\PraktikBudidaya;
|
||||
use App\Models\Pertanian\SurveyPanen;
|
||||
use App\Models\Pertanian\SurveyProduktivitas;
|
||||
use App\Models\Pertanian\Komoditas;
|
||||
|
||||
use App\Enums\PraktikBudidaya\TenagaKerja;
|
||||
use App\Enums\PraktikBudidaya\FrekuensiPemangkasanUtama;
|
||||
@@ -27,6 +30,13 @@ use App\Enums\PraktikBudidaya\PenangananGulma;
|
||||
use App\Enums\PraktikBudidaya\KondisiPengelolaanAir;
|
||||
use App\Enums\PraktikBudidaya\KebutuhanAirPermusim;
|
||||
use App\Enums\PraktikBudidaya\PemahamanManfaatKonservasi;
|
||||
use App\Enums\PraktikBudidaya\DasarPenentuanPanen;
|
||||
use App\Enums\PraktikBudidaya\Bulan;
|
||||
use App\Enums\PraktikBudidaya\PraktikSortasi;
|
||||
use App\Enums\PraktikBudidaya\CaraSortasi;
|
||||
use App\Enums\PraktikBudidaya\TingkatPanenReject;
|
||||
use App\Enums\PraktikBudidaya\TindakanPanenReject;
|
||||
use App\Enums\PraktikBudidaya\EstimasiKehilanganHasil;
|
||||
|
||||
class PraktikBudidayaController extends Controller
|
||||
{
|
||||
@@ -86,6 +96,11 @@ class PraktikBudidayaController extends Controller
|
||||
$title = 'Petani - Praktik Budidaya';
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
$praktikBudidaya = PraktikBudidaya::where('petani_id', $petaniId)->latest()->first();
|
||||
$surveyPanen = SurveyPanen:: where('petani_id', $petaniId)->latest()->first();
|
||||
|
||||
$komoditas = Komoditas::all();
|
||||
|
||||
$surveyProduktivitas = SurveyProduktivitas::where('petani_id', $petaniId)->get();
|
||||
|
||||
$teknikPemangkasan = $praktikBudidaya->teknik_pemangkasan ?? [];
|
||||
$teknikPemangkasanLainnya = collect($teknikPemangkasan)
|
||||
@@ -116,7 +131,7 @@ class PraktikBudidayaController extends Controller
|
||||
->first(fn ($item) => !in_array($item, $defaultSistemIrigasi));
|
||||
|
||||
if (!empty($praktikBudidaya)) {
|
||||
return view('produktivitas.petani.praktik-budidaya.edit', compact('title', 'petani', 'praktikBudidaya', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya', 'sumberAirLainnya', 'sistemIrigasiLainnya'));
|
||||
return view('produktivitas.petani.praktik-budidaya.edit', compact('title', 'petani', 'praktikBudidaya', 'surveyPanen', 'komoditas', 'surveyProduktivitas', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya', 'sumberAirLainnya', 'sistemIrigasiLainnya'));
|
||||
}
|
||||
|
||||
return view('produktivitas.petani.praktik-budidaya.add', compact('title', 'petani', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya'));
|
||||
@@ -184,6 +199,8 @@ class PraktikBudidayaController extends Controller
|
||||
'estimasi_dosis_pupuk_anorganik' => $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),
|
||||
'cara_pemberian_pupuk' => ($validatedData['cara_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['cara_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['cara_pemberian_pupuk'] ?? null),
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by' => auth()->id(),
|
||||
]);
|
||||
|
||||
return redirect()->route('petani.praktik-budidaya.edit', [$petani->id , $praktikBudidaya->id])
|
||||
@@ -246,6 +263,11 @@ class PraktikBudidayaController extends Controller
|
||||
$title = 'Petani - Praktik Budidaya';
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
$praktikBudidaya = PraktikBudidaya::where('petani_id', $petaniId)->where('id', $praktikBudidayaId)->latest()->first();
|
||||
$surveyPanen = SurveyPanen:: where('petani_id', $petaniId)->latest()->first();
|
||||
|
||||
$komoditas = Komoditas::all();
|
||||
|
||||
$surveyProduktivitas = SurveyProduktivitas::where('petani_id', $petaniId)->get();
|
||||
|
||||
$teknikPemangkasan = $praktikBudidaya->teknik_pemangkasan ?? [];
|
||||
$teknikPemangkasanLainnya = collect($teknikPemangkasan)
|
||||
@@ -275,7 +297,7 @@ class PraktikBudidayaController extends Controller
|
||||
$sistemIrigasiLainnya = collect(explode(', ', $sistemIrigasi))
|
||||
->first(fn ($item) => !in_array($item, $defaultSistemIrigasi));
|
||||
|
||||
return view('produktivitas.petani.praktik-budidaya.edit', compact('title', 'petani', 'praktikBudidaya', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya', 'sumberAirLainnya', 'sistemIrigasiLainnya'));
|
||||
return view('produktivitas.petani.praktik-budidaya.edit', compact('title', 'petani', 'praktikBudidaya', 'surveyPanen', 'komoditas', 'surveyProduktivitas', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya', 'sumberAirLainnya', 'sistemIrigasiLainnya'));
|
||||
}
|
||||
|
||||
public function update($petaniId, $praktikBudidayaId, Request $request)
|
||||
@@ -284,8 +306,6 @@ class PraktikBudidayaController extends Controller
|
||||
abort(403);
|
||||
}
|
||||
|
||||
// dd($request->all());
|
||||
|
||||
$praktikBudidaya = PraktikBudidaya::where('petani_id', $petaniId)
|
||||
->where('id', $praktikBudidayaId)
|
||||
->firstOrFail();
|
||||
@@ -358,9 +378,43 @@ class PraktikBudidayaController extends Controller
|
||||
'kebiasaan_konservasi_tanah.*' => ['string'],
|
||||
|
||||
'pemahaman_manfaat_konservasi' => ['nullable', 'string', new Enum(PemahamanManfaatKonservasi::class)],
|
||||
|
||||
'upah_tenaga_kerja' => ['nullable', 'numeric'],
|
||||
'biaya_bibit' => ['nullable', 'numeric'],
|
||||
'biaya_pupuk' => ['nullable', 'numeric'],
|
||||
'biaya_pestisida' => ['nullable', 'numeric'],
|
||||
'biaya_sewa_alat' => ['nullable', 'numeric'],
|
||||
'biaya_penyediaan_air' => ['nullable', 'numeric'],
|
||||
'biaya_lainnya' => ['nullable', 'numeric'],
|
||||
'total_estimasi_biaya_produksi' => ['nullable', 'numeric'],
|
||||
|
||||
'dasar_penentuan_panen' => ['nullable', 'integer', new Enum(DasarPenentuanPanen::class)],
|
||||
'frekuensi_panen_pertahun' => ['nullable', 'integer'],
|
||||
'bulan_panen_utama' => ['nullable', 'string', new Enum(Bulan::class)],
|
||||
'hasil_komoditas_utama_permusim' => ['nullable', 'numeric'],
|
||||
'hasil_komoditas_lainnya_permusim' => ['nullable', 'numeric'],
|
||||
'disimpan_untuk_sendiri' => ['nullable', 'boolean'],
|
||||
'hasil_panen_disimpan' => ['nullable', 'numeric'],
|
||||
'tujuan_disimpan' => ['nullable', 'string'],
|
||||
|
||||
'praktik_sortasi' => ['nullable', 'integer', new Enum(PraktikSortasi::class)],
|
||||
'bentuk_sortasi' => ['nullable', 'string', new Enum(CaraSortasi::class)],
|
||||
'tingkat_reject' => ['nullable', 'integer', new Enum(TingkatPanenReject::class)],
|
||||
'hasil_panen_reject' => ['nullable', 'numeric'],
|
||||
'tindakan_hasil_reject' => ['nullable', 'string', new Enum(TindakanPanenReject::class)],
|
||||
'upah_tenaga_panen' => ['nullable', 'numeric'],
|
||||
'biaya_pengangkutan' => ['nullable', 'numeric'],
|
||||
'biaya_wadah_kemasan' => ['nullable', 'numeric'],
|
||||
'biaya_sewa_alat_panen' => ['nullable', 'numeric'],
|
||||
'biaya_panen_lainnya' => ['nullable', 'numeric'],
|
||||
'total_estimasi_biaya_panen' => ['nullable', 'numeric'],
|
||||
|
||||
'estimasi_kehilangan_akibat_opt' => ['nullable', 'string', new Enum(EstimasiKehilanganHasil::class)],
|
||||
'estimasi_kehilangan_akibat_hama' => ['nullable', 'string', new Enum(EstimasiKehilanganHasil::class)],
|
||||
]);
|
||||
|
||||
$data = [];
|
||||
$dataPraktikBudidaya = [];
|
||||
$dataSurveyPanen = [];
|
||||
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
|
||||
@@ -372,7 +426,7 @@ class PraktikBudidayaController extends Controller
|
||||
$teknik_pemangkasan[] = $request->teknik_pemangkasan_lainnya;
|
||||
}
|
||||
}
|
||||
$data = [
|
||||
$dataPraktikBudidaya = [
|
||||
'tenaga_kerja' => $validatedData['tenaga_kerja'],
|
||||
'frekuensi_pemangkasan_utama' => $validatedData['frekuensi_pemangkasan_komoditas_utama'],
|
||||
|
||||
@@ -393,7 +447,7 @@ class PraktikBudidayaController extends Controller
|
||||
}
|
||||
|
||||
if ($request->has('metode_penanganan_hama_penyakit')) {
|
||||
$data = [
|
||||
$dataPraktikBudidaya = [
|
||||
'metode_penanganan_opt' => $validatedData['metode_penanganan_hama_penyakit'] ?? null,
|
||||
'jenis_hama' => $validatedData['jenis_hama'] ?? [],
|
||||
'jenis_penyakit' => $validatedData['jenis_penyakit'] ?? [],
|
||||
@@ -413,7 +467,75 @@ class PraktikBudidayaController extends Controller
|
||||
];
|
||||
}
|
||||
|
||||
$praktikBudidaya->update($data);
|
||||
if ($request->has('upah_tenaga_kerja')) {
|
||||
$dataPraktikBudidaya = [
|
||||
'upah_tenaga_kerja' => $validatedData['upah_tenaga_kerja'] ?? null,
|
||||
'biaya_bibit' => $validatedData['biaya_bibit'] ?? null,
|
||||
'biaya_pupuk' => $validatedData['biaya_pupuk'] ?? null,
|
||||
'biaya_pestisida' => $validatedData['biaya_pestisida'] ?? null,
|
||||
'biaya_sewa_alat_produksi' => $validatedData['biaya_sewa_alat'] ?? null,
|
||||
'biaya_penyediaan_air' => $validatedData['biaya_penyediaan_air'] ?? null,
|
||||
'biaya_produksi_lainnya' => $validatedData['biaya_lainnya'] ?? null,
|
||||
'total_estimasi_biaya_produksi' => $validatedData['total_estimasi_biaya_produksi'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
if ($request->has('dasar_penentuan_panen')) {
|
||||
$dataSurveyPanen = [
|
||||
'dasar_penentuan_panen' => $validatedData['dasar_penentuan_panen'] ?? null,
|
||||
'frekuensi_panen_pertahun' => $validatedData['frekuensi_panen_pertahun'] ?? null,
|
||||
'bulan_panen_utama' => $validatedData['bulan_panen_utama'] ?? null,
|
||||
'hasil_komoditas_utama_permusim' => $validatedData['hasil_komoditas_utama_permusim'] ?? null,
|
||||
'hasil_komoditas_lainnya_permusim' => $validatedData['hasil_komoditas_lainnya_permusim'] ?? null,
|
||||
'disimpan_untuk_sendiri' => $validatedData['disimpan_untuk_sendiri'] ?? false,
|
||||
'hasil_panen_disimpan' => $validatedData['hasil_panen_disimpan'] ?? null,
|
||||
'tujuan_disimpan' => $validatedData['tujuan_disimpan'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
if ($request->has('praktik_sortasi')) {
|
||||
$dataSurveyPanen = [
|
||||
'praktik_sortasi' => $validatedData['praktik_sortasi'] ?? null,
|
||||
'bentuk_sortasi' => $validatedData['bentuk_sortasi'] ?? null,
|
||||
'hasil_panen_reject' => $validatedData['tingkat_reject'] ?? null,
|
||||
'jumlah_panen_reject' => $validatedData['hasil_panen_reject'] ?? null,
|
||||
'tindakan_panen_reject' => $validatedData['tindakan_hasil_reject'] ?? null,
|
||||
'upah_tenaga_panen' => $validatedData['upah_tenaga_panen'] ?? null,
|
||||
'biaya_pengangkutan_panen' => $validatedData['biaya_pengangkutan'] ?? null,
|
||||
'biaya_wadah_panen' => $validatedData['biaya_wadah_kemasan'] ?? null,
|
||||
'biaya_sewa_alat_panen' => $validatedData['biaya_sewa_alat_panen'] ?? null,
|
||||
'biaya_panen_lainnya' => $validatedData['biaya_panen_lainnya'] ?? null,
|
||||
'total_estimasi_biaya_panen' => $validatedData['total_estimasi_biaya_panen'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
if ($request->has('estimasi_kehilangan_akibat_opt')) {
|
||||
$dataSurveyPanen = [
|
||||
'estimasi_kehilangan_akibat_opt' => $validatedData['estimasi_kehilangan_akibat_opt'] ?? null,
|
||||
'estimasi_kehilangan_akibat_hama_penyakit' => $validatedData['estimasi_kehilangan_akibat_hama'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
if (!empty($dataPraktikBudidaya)) {
|
||||
$dataPraktikBudidaya['updated_by'] = auth()->id();
|
||||
$praktikBudidaya->update($dataPraktikBudidaya);
|
||||
}
|
||||
|
||||
if (!empty($dataSurveyPanen)) {
|
||||
$surveyPanen = SurveyPanen::where('petani_id', $petani->id)->first();
|
||||
|
||||
if ($surveyPanen) {
|
||||
$dataSurveyPanen['updated_by'] = auth()->id();
|
||||
$surveyPanen->update($dataSurveyPanen);
|
||||
} else {
|
||||
SurveyPanen::create(array_merge([
|
||||
'uid' => 'SP-' . strtoupper(Str::random(10)),
|
||||
'petani_id' => $petani->id,
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by_by' => auth()->id()
|
||||
], $dataSurveyPanen));
|
||||
}
|
||||
}
|
||||
|
||||
return back()->with('success', 'Data berhasil diperbarui.');
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web\Produktivitas;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
use App\Models\Pertanian\Petani;
|
||||
use App\Models\Pertanian\SurveyProduktivitas;
|
||||
|
||||
class SurveyProduktivitasController extends Controller
|
||||
{
|
||||
public function store($petaniId, Request $request)
|
||||
{
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
dd($request->all());
|
||||
$validated = $request->validate([
|
||||
'produktivitas_komoditas' => ['required', 'array'],
|
||||
'produktivitas_komoditas.*.komoditas_id' => ['nullable', 'exists:master_komoditas,id'],
|
||||
'produktivitas_komoditas.*.hasil_panen_3_musim' => ['nullable', 'numeric'],
|
||||
'produktivitas_komoditas.*.satuan' => ['nullable', 'string'],
|
||||
]);
|
||||
foreach ($validated['produktivitas_komoditas'] as $row) {
|
||||
SurveyProduktivitas::create([
|
||||
'uid' => 'SPV-' . strtoupper(Str::random(10)),
|
||||
'petani_id' => $petani->id,
|
||||
'komoditas_id' => $row['komoditas_id'],
|
||||
'kuantitas' => $row['hasil_panen_3_musim'],
|
||||
'satuan' => $row['satuan'],
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by' => auth()->id(),
|
||||
]);
|
||||
}
|
||||
|
||||
return back()->with('success', 'Data produktivitas berhasil disimpan.');
|
||||
}
|
||||
|
||||
public function destroy($petaniId, $surveyProduktivitasId)
|
||||
{
|
||||
$surveyProduktivitas = SurveyProduktivitas::where('petani_id', $petaniId)
|
||||
->where('id', $surveyProduktivitasId)
|
||||
->firstOrFail();
|
||||
$surveyProduktivitas->deleted_by = auth()->id();
|
||||
$surveyProduktivitas->save();
|
||||
$surveyProduktivitas->delete();
|
||||
|
||||
return back()->with('success', 'Data produktivitas berhasil dihapus.');
|
||||
}
|
||||
}
|
||||
@@ -78,16 +78,21 @@ class Petani extends Model
|
||||
return $this->belongsTo(User::class, 'user_id');
|
||||
}
|
||||
|
||||
public function praktik_budidaya(): HasOne
|
||||
{
|
||||
return $this->hasOne(PraktikBudidaya::class, 'petani_id');
|
||||
}
|
||||
|
||||
public function praktikBudidaya(): HasOne
|
||||
{
|
||||
return $this->hasOne(PraktikBudidaya::class, 'petani_id')->latestOfMany();
|
||||
}
|
||||
|
||||
public function surveyPanen(): HasOne
|
||||
{
|
||||
return $this->hasOne(surveyPanen::class, 'petani_id')->latestOfMany();
|
||||
}
|
||||
|
||||
public function surveyProduktivitas(): HasOne
|
||||
{
|
||||
return $this->hasOne(surveyProduktivitas::class, 'petani_id')->latestOfMany();
|
||||
}
|
||||
|
||||
public function lahans(): HasMany
|
||||
{
|
||||
return $this->hasMany(Lahan::class, 'petani_id');
|
||||
|
||||
@@ -56,8 +56,17 @@ class PraktikBudidaya extends Model
|
||||
'kebutuan_air_permusim',
|
||||
'kebiasaan_konservasi_tanah',
|
||||
'pemahaman_manfaat_konservasi_tanah',
|
||||
// 'nilai_konservasi_tanah',
|
||||
// 'upah_tenaga_kerja'
|
||||
'upah_tenaga_kerja',
|
||||
'biaya_bibit',
|
||||
'biaya_pupuk',
|
||||
'biaya_obat_obatan',
|
||||
'biaya_sewa_alat',
|
||||
'biaya_penyediaan_air',
|
||||
'biaya_lainnya',
|
||||
'total_estimasi_biaya_produksi',
|
||||
'created_by',
|
||||
'updated_by',
|
||||
'deleted_by',
|
||||
];
|
||||
|
||||
public function petani(): BelongsTo
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Pertanian;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
use App\Models\Pertanian\Petani;
|
||||
|
||||
class SurveyPanen extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
protected $table = 'survey_panen';
|
||||
|
||||
protected $fillable = [
|
||||
'uid',
|
||||
'petani_id',
|
||||
'dasar_penentuan_panen',
|
||||
'frekuensi_panen_pertahun',
|
||||
'bulan_panen_utama',
|
||||
'hasil_komoditas_utama_permusim',
|
||||
'hasil_komoditas_lainnya_permusim',
|
||||
'disimpan_untuk_sendiri',
|
||||
'hasil_panen_disimpan',
|
||||
'tujuan_disimpan',
|
||||
'praktik_sortasi',
|
||||
'bentuk_sortasi',
|
||||
'hasil_panen_reject',
|
||||
'jumlah_panen_reject',
|
||||
'tindakan_panen_reject',
|
||||
'upah_tenaga_panen',
|
||||
'biaya_pengangkutan_panen',
|
||||
'biaya_wadah_panen',
|
||||
'biaya_sewa_alat_panen',
|
||||
'biaya_panen_lainnya',
|
||||
'total_estimasi_biaya_panen',
|
||||
'estimasi_kehilangan_akibat_opt',
|
||||
'estimasi_kehilangan_akibat_hama_penyakit',
|
||||
'created_by',
|
||||
'updated_by',
|
||||
'deleted_by',
|
||||
];
|
||||
|
||||
public function petani(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Petani::class, 'petani_id');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Pertanian;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
class SurveyProduktivitas extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
protected $table = 'survey_produktivitas';
|
||||
|
||||
protected $fillable = [
|
||||
'uid',
|
||||
'petani_id',
|
||||
'komoditas_id',
|
||||
'kuantitas',
|
||||
'satuan',
|
||||
'created_by',
|
||||
'updated_by',
|
||||
'deleted_by',
|
||||
];
|
||||
|
||||
public function petani(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Petani::class, 'petani_id');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user