Merge branch 'main' of https://git.probindo.com/Probindo/database-pertani-web
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum FrekuensiPemangkasanPendamping: string
|
||||
{
|
||||
case TIDAK_PERNAH = 'Tidak pernah memangkas sama sekali';
|
||||
case TIDAK_RUTIN = 'Memangkas, tapi tidak rutin dan tidak tahu tekniknya';
|
||||
case SATU_KALI_TAHUN = 'Memangkas 1 kali/tahun, tahu jenis tekniknya';
|
||||
case DUA_KALI_TAHUN = 'Memangkas 2 kali/tahun, tahu jenis tekniknya';
|
||||
case LEBIH_DUA_KALI_TAHUN = 'Memangkas lebih dari 2 kali/tahun dengan teknik yang tepat dan pohon penaung juga dipangkas rutin';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::TIDAK_PERNAH => 'Tidak pernah memangkas sama sekali',
|
||||
self::TIDAK_RUTIN => 'Memangkas, tapi tidak rutin dan tidak tahu tekniknya',
|
||||
self::SATU_KALI_TAHUN => 'Memangkas 1 kali/tahun, tahu jenis tekniknya',
|
||||
self::DUA_KALI_TAHUN => 'Memangkas 2 kali/tahun, tahu jenis tekniknya',
|
||||
self::LEBIH_DUA_KALI_TAHUN => 'Memangkas lebih dari 2 kali/tahun dengan teknik yang tepat dan pohon penaung juga dipangkas rutin',
|
||||
};
|
||||
}
|
||||
|
||||
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 FrekuensiPemangkasanUtama: int
|
||||
{
|
||||
case TIDAK_PERNAH = 1;
|
||||
case TIDAK_RUTIN = 2;
|
||||
case SATU_KALI_TAHUN = 3;
|
||||
case DUA_KALI_TAHUN = 4;
|
||||
case LEBIH_DUA_KALI_TAHUN = 5;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::TIDAK_PERNAH => 'Tidak pernah memangkas sama sekali',
|
||||
self::TIDAK_RUTIN => 'Memangkas, tapi tidak rutin dan tidak tahu tekniknya',
|
||||
self::SATU_KALI_TAHUN => 'Memangkas 1 kali/tahun, tahu jenis tekniknya',
|
||||
self::DUA_KALI_TAHUN => 'Memangkas 2 kali/tahun, tahu jenis tekniknya',
|
||||
self::LEBIH_DUA_KALI_TAHUN => 'Memangkas lebih dari 2 kali/tahun dengan teknik yang tepat dan pohon penaung juga dipangkas rutin',
|
||||
};
|
||||
}
|
||||
|
||||
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 FrekuensiSanitasiLahan: int
|
||||
{
|
||||
case TIDAK_PERNAH = 1;
|
||||
case SESEKALI = 2;
|
||||
case SETIAP_PANEN = 3;
|
||||
case RUTIN_TIDAK_TERJADWAL = 4;
|
||||
case RUTIN_TERJADWAL = 5;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::TIDAK_PERNAH => 'Tidak pernah',
|
||||
self::SESEKALI => 'Sesekali, tidak terjadwal',
|
||||
self::SETIAP_PANEN => 'Setiap panen, tapi tidak menyeluruh',
|
||||
self::RUTIN_TIDAK_TERJADWAL => 'Rutin, tapi tanpa jadwal yang jelas',
|
||||
self::RUTIN_TERJADWAL => 'Rutin terjadwal dan menyeluruh',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum IntensitasSeranganHamaPenyakit: string
|
||||
{
|
||||
case RINGAN = 'Ringan - hanya beberapa tanaman terdampak';
|
||||
case SEDANG = 'Sedang - sebagian tanaman terdampak';
|
||||
case PARAH = 'Parah - sebagian besar tanaman terdampak';
|
||||
case BERVARIASI = 'Bervariasi - tergantung musim';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::RINGAN => 'Ringan - hanya beberapa tanaman terdampak',
|
||||
self::SEDANG => 'Sedang - sebagian tanaman terdampak',
|
||||
self::PARAH => 'Parah - sebagian besar tanaman terdampak',
|
||||
self::BERVARIASI => 'Bervariasi - tergantung musim',
|
||||
};
|
||||
}
|
||||
|
||||
public static function values(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => $case->value)->toArray();
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum JenisPupuk: string
|
||||
{
|
||||
case TIDAK_MEMBERI = 'Tidak memberi pupuk';
|
||||
case ORGANIK = 'Pupuk organik (kompos/kandang)';
|
||||
case KIMIA = 'Pupuk kimia';
|
||||
case KEDUANYA = 'Keduanya';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::TIDAK_MEMBERI => 'Tidak memberi pupuk',
|
||||
self::ORGANIK => 'Pupuk organik (kompos/kandang)',
|
||||
self::KIMIA => 'Pupuk kimia',
|
||||
self::KEDUANYA => 'Keduanya',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum KebutuhanAirPerMusim: string
|
||||
{
|
||||
case TIDAK_BUTUH = 'Tidak butuh, hujan cukup';
|
||||
case KURANG = 'Kurang, sering kekurangan air';
|
||||
case CUKUP = 'Cukup terpenuhi';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::TIDAK_BUTUH => 'Tidak butuh, hujan cukup',
|
||||
self::KURANG => 'Kurang, sering kekurangan air',
|
||||
self::CUKUP => 'Cukup terpenuhi',
|
||||
};
|
||||
}
|
||||
|
||||
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 KondisiPengelolaanAir: int
|
||||
{
|
||||
case KURANG_TIDAK_ADA_UPAYA = 1;
|
||||
case KURANG_TIDAK_SUDAH_BERUPAYA = 2;
|
||||
case CUKUP_DARI_HUJAN = 3;
|
||||
case CUKUP_IRIGASI_PINJAM = 4;
|
||||
case CUKUP_IRIGASI_SENDIRI = 5;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::KURANG_TIDAK_ADA_UPAYA => 'Kebutuhan air kurang terpenuhi, sering kekurangan air, tidak ada upaya mengatasinya',
|
||||
self::KURANG_TIDAK_SUDAH_BERUPAYA => 'Kebutuhan air kurang terpenuhi, sering kekurangan air, tapi sudah mencoba mengandalkan sumber lain (sumur/sungai) walau belum cukup',
|
||||
self::CUKUP_DARI_HUJAN => 'Kebutuhan air cukup terpenuhi hanya dari hujan, tanpa sistem irigasi tambahan',
|
||||
self::CUKUP_IRIGASI_PINJAM => 'Kebutuhan air cukup terpenuhi, ada sistem irigasi tambahan (sungai/mata air/sumur) tapi pinjam',
|
||||
self::CUKUP_IRIGASI_SENDIRI => 'Kebutuhan air cukup terpenuhi, punya akses irigasi sendiri (sungai/mata air/sumur) yang dikelola baik',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum MetodePenangananHamaPenyakit: int
|
||||
{
|
||||
case TIDAK_ADA = 1;
|
||||
case CARA_TRADISIONAL = 2;
|
||||
case PESTISIDA_SANITASI = 3;
|
||||
case KOMBINASI = 4;
|
||||
case PHT = 5;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::TIDAK_ADA => 'Tidak ada penanganan',
|
||||
self::CARA_TRADISIONAL => 'Cara tradisional (doa/ritual)',
|
||||
self::PESTISIDA_SANITASI => 'Pestisida atau sanitasi',
|
||||
self::KOMBINASI => 'Kombinasi pestisada dan sanitasi',
|
||||
self::PHT => 'Pengendalian hama terpadu(PHT)',
|
||||
};
|
||||
}
|
||||
|
||||
public static function values(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => $case->value)->toArray();
|
||||
}
|
||||
|
||||
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 PemahamanManfaatKonservasi: string
|
||||
{
|
||||
case YA_PAHAM = 'Ya, tahu manfaatnya';
|
||||
case TIDAK_PAHAM = 'Dilakukan tapi tidak tahu manfaatnya, kebiasaan turun-temurun';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::YA_PAHAM => 'Ya, tahu manfaatnya',
|
||||
self::TIDAK_PAHAM => 'Dilakukan tapi tidak tahu manfaatnya, kebiasaan turun-temurun',
|
||||
};
|
||||
}
|
||||
|
||||
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 PemberianPupuk: int
|
||||
{
|
||||
case TIDAK_PERNAH = 1;
|
||||
case JENIS_DOSIS_WAKTU_TIDAK_MENENTU = 2;
|
||||
case JENIS_SESUAI_DOSIS_TIDAK_MENENTU = 3;
|
||||
case JENIS_DOSIS_SESUAI_WAKTU_CUKUP_TEPAT = 4;
|
||||
case JENIS_DOSIS_SESUAI_WAKTU_TEPAT = 5;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::TIDAK_PERNAH => 'Tidak pernah memberi pupuk',
|
||||
self::JENIS_DOSIS_WAKTU_TIDAK_MENENTU => 'Memberi pupuk, tapi jenis/dosis tidak menentu, waktu sembarangan',
|
||||
self::JENIS_SESUAI_DOSIS_TIDAK_MENENTU => 'Memberi pupuk dengan jenis yang sesuai (organik/kimia/keduanya), tapi dosis atau waktu belum tepat',
|
||||
self::JENIS_DOSIS_SESUAI_WAKTU_CUKUP_TEPAT => 'Memberi pupuk dengan jenis dan dosis yang sesuai, waktu cukup tepat',
|
||||
self::JENIS_DOSIS_SESUAI_WAKTU_TEPAT => 'Memberi pupuk rutin dengan jenis tepat, dosis tepat, dan waktu tepat sesuai kebutuhan tanaman',
|
||||
};
|
||||
}
|
||||
|
||||
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 PenangananGulma: int
|
||||
{
|
||||
case DIBIARKAN = 1;
|
||||
case DICABUT = 2;
|
||||
case DISEMPROT = 3;
|
||||
case RUTIN_DICABUT_TANPA_JADWAL = 4;
|
||||
case RUTIN_TERJADWAL = 5;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::DIBIARKAN => 'Dibiarkan di kebun',
|
||||
self::DICABUT => 'Dikumpulkan dan dibuang',
|
||||
self::DISEMPROT => 'Dijadikan kompos',
|
||||
self::RUTIN_DICABUT_TANPA_JADWAL => 'Dikumpulkan dan dibuang',
|
||||
self::RUTIN_TERJADWAL => 'Dijadikan kompos',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum PenangananSisaBuahRanting: string
|
||||
{
|
||||
case DIBIARKAN = 'Dibiarkan di kebun';
|
||||
case DIKUMPULKAN = 'Dikumpulkan dan dibuang';
|
||||
case KOMPOS = 'Dijadikan kompos';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::DIBIARKAN => 'Dibiarkan di kebun',
|
||||
self::DIKUMPULKAN => 'Dikumpulkan dan dibuang',
|
||||
self::KOMPOS => 'Dijadikan kompos',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum PenyerbukanManual: string
|
||||
{
|
||||
case SELALU = 'Selalu, setiap musim berbunga';
|
||||
case KADANG_KADANG = 'Kadang-kadang, tergantung kondisi';
|
||||
case TIDAK_PERNAH = 'Tidak pernah';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::SELALU => 'Selalu, setiap musim berbunga',
|
||||
self::KADANG_KADANG => 'Kadang-kadang, tergantung kondisi',
|
||||
self::TIDAK_PERNAH => 'Tidak pernah',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum TenagaKerja: string
|
||||
{
|
||||
case DIKERJAKAN_SENDIRI = 'Dikerjakan Sendiri';
|
||||
case DIBANTU_ANGGOTA_KELUARGA = 'Dibantu Anggota Keluarga';
|
||||
case UPAH_TENAGA_KERJA = 'Upah Tenaga Kerja';
|
||||
case GOTONG_ROYONG = 'Gotong Royong/Swadaya Komunitas';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::DIKERJAKAN_SENDIRI => 'Dikerjakan Sendiri',
|
||||
self::DIBANTU_ANGGOTA_KELUARGA => 'Dibantu Anggota Keluarga',
|
||||
self::UPAH_TENAGA_KERJA => 'Upah Tenaga Kerja',
|
||||
self::GOTONG_ROYONG => 'Gotong Royong/Swadaya Komunitas',
|
||||
};
|
||||
}
|
||||
|
||||
public static function values(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => $case->value)->toArray();
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\PraktikBudidaya;
|
||||
|
||||
enum WaktuKemunculanTerparahHamaPenyakit: string
|
||||
{
|
||||
case HUJAN = 'Musim hujan';
|
||||
case KEMARAU = 'Musim kemarau';
|
||||
case SEPANJANG_TAHUN = 'Sepanjang tahun';
|
||||
case TIDAK_TENTU = 'Tidak tentu';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::HUJAN => 'Musim hujan',
|
||||
self::KEMARAU => 'Musim kemarau',
|
||||
self::SEPANJANG_TAHUN => 'Sepanjang tahun',
|
||||
self::TIDAK_TENTU => 'Tidak tentu',
|
||||
};
|
||||
}
|
||||
|
||||
public static function values(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => $case->value)->toArray();
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web\Produktivitas;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
use App\Models\Pertanian\Petani;
|
||||
|
||||
class PendidikanPelatihanController extends Controller
|
||||
{
|
||||
public function index($petaniId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$title = 'Petani - Pendidikan dan Pelatihan';
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
|
||||
return view('produktivitas.petani.pendidikan-pelatihan.add', compact('title', 'petani'));
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,19 @@ namespace App\Http\Controllers\Web\Produktivitas;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Validation\Rules\Enum;
|
||||
|
||||
use App\Models\Pertanian\Petani;
|
||||
use App\Models\Pertanian\PraktikBudidaya;
|
||||
|
||||
use App\Enums\PraktikBudidaya\TenagaKerja;
|
||||
use App\Enums\PraktikBudidaya\FrekuensiPemangkasanUtama;
|
||||
use App\Enums\PraktikBudidaya\FrekuensiPemangkasanPendamping;
|
||||
use App\Enums\PraktikBudidaya\PemberianPupuk;
|
||||
use App\Enums\PraktikBudidaya\JenisPupuk;
|
||||
use App\Enums\PraktikBudidaya\PenyerbukanManual;
|
||||
|
||||
class PraktikBudidayaController extends Controller
|
||||
{
|
||||
@@ -16,9 +27,245 @@ class PraktikBudidayaController extends Controller
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$defaultTeknikPemangkasan = [
|
||||
'Pemangkasan bentuk',
|
||||
'Pemangkasan produksi',
|
||||
'Pemangkasan peremajaan',
|
||||
'Tidak tahu jenis pemangkasannya — dilakukan berdasarkan kebiasaan',
|
||||
];
|
||||
|
||||
$defaultAlasanTidakPenyerbukan = [
|
||||
'Tidak tahu caranya',
|
||||
'Tidak ada tenaga/waktu',
|
||||
'Mengandalkan penyerbuk alami',
|
||||
];
|
||||
|
||||
$defaultFrekuensiPemupukan = [
|
||||
'1 kali/tahun',
|
||||
'2 kali/tahun',
|
||||
'Lebih dari 2 kali/tahun',
|
||||
];
|
||||
|
||||
$defaultWaktuPemberianPupuk = [
|
||||
'Awal musim hujan',
|
||||
'Akhir musim hujan',
|
||||
'Sebelum berbunga',
|
||||
'Sebelum Setelah Panen',
|
||||
'Tidak Menentu',
|
||||
];
|
||||
|
||||
$defaultCaraPemberianPupuk = [
|
||||
'Ditabur di sekitar pohon',
|
||||
'Dibenamkan dalam lubang/parit',
|
||||
'Dicairkan/dikocor',
|
||||
'Disemprotkan ke daun',
|
||||
];
|
||||
|
||||
$defaultSumberAir = [
|
||||
'Sungai/mata air',
|
||||
'Sumur',
|
||||
'Mengandalkan hujan saja',
|
||||
];
|
||||
|
||||
$defaultSistemIrigasi = [
|
||||
'Tidak ada irigasi',
|
||||
'Milik sendiri',
|
||||
'Milik komunitas/kelompok tani',
|
||||
'Milik pemerintah',
|
||||
];
|
||||
|
||||
$title = 'Petani - Praktik Budidaya';
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
$praktikBudidaya = PraktikBudidaya::where('petani_id', $petaniId)->latest()->first();
|
||||
|
||||
$teknikPemangkasan = $praktikBudidaya->teknik_pemangkasan ?? [];
|
||||
$teknikPemangkasanLainnya = collect($teknikPemangkasan)
|
||||
->first(fn ($item) => !in_array($item, $defaultTeknikPemangkasan));
|
||||
|
||||
$alasanTidakPenyerbukan = $praktikBudidaya->deskripsi_tidak_penyerbukan ?? '';
|
||||
$alasanTidakPenyerbukanLainnya = collect(explode(', ', $alasanTidakPenyerbukan))
|
||||
->first(fn ($item) => !in_array($item, $defaultAlasanTidakPenyerbukan));
|
||||
|
||||
$frekuensiPemupukan = $praktikBudidaya->frekuensi_pemupukan ?? '';
|
||||
$frekuensiPemupukanLainnya = collect(explode(', ', $frekuensiPemupukan))
|
||||
->first(fn ($item) => !in_array($item, $defaultFrekuensiPemupukan));
|
||||
|
||||
$waktuPemberianPupuk = $praktikBudidaya->waktu_pemberian_pupuk ?? '';
|
||||
$waktuPemberianPupukLainnya = collect(explode(', ', $waktuPemberianPupuk))
|
||||
->first(fn ($item) => !in_array($item, $defaultWaktuPemberianPupuk));
|
||||
|
||||
$caraPemberianPupuk = $praktikBudidaya->cara_pemberian_pupuk ?? '';
|
||||
$caraPemberianPupukLainnya = collect(explode(', ', $caraPemberianPupuk))
|
||||
->first(fn ($item) => !in_array($item, $defaultCaraPemberianPupuk));
|
||||
|
||||
$sumberAir = $praktikBudidaya->sumber_air ?? '';
|
||||
$sumberAirLainnya = collect(explode(', ', $sumberAir))
|
||||
->first(fn ($item) => !in_array($item, $defaultSumberAir));
|
||||
|
||||
$sistemIrigasi = $praktikBudidaya->sistem_irigasi ?? '';
|
||||
$sistemIrigasiLainnya = collect(explode(', ', $sistemIrigasi))
|
||||
->first(fn ($item) => !in_array($item, $defaultSistemIrigasi));
|
||||
|
||||
return view('produktivitas.petani.praktik-budidaya.add', compact('title', 'petani'));
|
||||
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.add', compact('title', 'petani', 'teknikPemangkasanLainnya', 'alasanTidakPenyerbukanLainnya', 'frekuensiPemupukanLainnya', 'waktuPemberianPupukLainnya', 'caraPemberianPupukLainnya'));
|
||||
}
|
||||
|
||||
public function store($petaniId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$validatedData = $request->validate([
|
||||
'tenaga_kerja' => ['nullable', 'string', new Enum(TenagaKerja::class)],
|
||||
'frekuensi_pemangkasan_komoditas_utama' => ['nullable', 'int', new Enum(FrekuensiPemangkasanUtama::class)],
|
||||
'teknik_pemangkasan' => ['nullable', 'array'],
|
||||
'teknik_pemangkasan_lainnya' => ['nullable', 'string'],
|
||||
'frekuensi_pemangkasan_pohon_penaung' => ['nullable', 'string', new Enum(FrekuensiPemangkasanPendamping::class)],
|
||||
|
||||
'penyerbukan_manual' => ['nullable', 'string', new Enum(PenyerbukanManual::class)],
|
||||
'alasan_tidak_penyerbukan' => ['nullable', 'string'],
|
||||
'alasan_tidak_penyerbukan_lainnya' => ['nullable', 'string'],
|
||||
'tingkat_keberhasilan_penyerbukan' => ['nullable', 'string'],
|
||||
'pemberian_pupuk' => ['nullable', 'int', new Enum(PemberianPupuk::class)],
|
||||
'jenis_pupuk' => ['nullable', 'string', new Enum(JenisPupuk::class)],
|
||||
'frekuensi_pemupukan' => ['nullable', 'string'],
|
||||
'frekuensi_pemupukan_lainnya' => ['nullable', 'string'],
|
||||
'estimasi_dosis_pupuk_organik' => ['nullable', 'string'],
|
||||
'estimasi_dosis_pupuk_anorganik' => ['nullable', 'string'],
|
||||
'waktu_pemberian_pupuk' => ['nullable', 'string'],
|
||||
'waktu_pemberian_pupuk_lainnya' => ['nullable', 'string'],
|
||||
'cara_pemberian_pupuk' => ['nullable', 'string'],
|
||||
'cara_pemberian_pupuk_lainnya' => ['nullable', 'string'],
|
||||
]);
|
||||
|
||||
$teknik_pemangkasan = $request->teknik_pemangkasan ?? [];
|
||||
|
||||
if (($key = array_search('Lainnya', $teknik_pemangkasan)) !== false) {
|
||||
unset($teknik_pemangkasan[$key]);
|
||||
|
||||
if (!empty($request->teknik_pemangkasan_lainnya)) {
|
||||
$teknik_pemangkasan[] = $request->teknik_pemangkasan_lainnya;
|
||||
}
|
||||
}
|
||||
|
||||
$teknik_pemangkasan = array_values($teknik_pemangkasan);
|
||||
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
|
||||
$praktikBudidaya = $petani->praktik_budidaya()->create([
|
||||
'petani_id' => $petani->id,
|
||||
'uid' => 'PB-' . strtoupper(Str::random(10)),
|
||||
'tenaga_kerja' => $validatedData['tenaga_kerja'],
|
||||
'frekuensi_pemangkasan_utama' => $validatedData['frekuensi_pemangkasan_komoditas_utama'],
|
||||
|
||||
'teknik_pemangkasan' => $teknik_pemangkasan,
|
||||
|
||||
'frekuensi_pemangkasan_penaung' => $validatedData['frekuensi_pemangkasan_pohon_penaung'],
|
||||
'penyerbukan_manual' => $validatedData['penyerbukan_manual'] ?? null,
|
||||
'deskripsi_penyerbukan_manual' => $validatedData['alasan_tidak_penyerbukan'] ?? null,
|
||||
'tingkat_keberhasilan_penyerbukan' => $validatedData['tingkat_keberhasilan_penyerbukan'] ?? null,
|
||||
'pemberian_pupuk' => $validatedData['pemberian_pupuk'] ?? null,
|
||||
'jenis_pupuk' => $validatedData['jenis_pupuk'] ?? null,
|
||||
'frekuensi_pemberian_pupuk' => ($validatedData['frekuensi_pemupukan'] ?? null) === 'Lainnya' ? ($validatedData['frekuensi_pemupukan_lainnya'] ?? null) : ($validatedData['frekuensi_pemupukan'] ?? null),
|
||||
'estimasi_dosis_pupuk_organik' => $validatedData['estimasi_dosis_pupuk_organik'] ?? null,
|
||||
'estimasi_dosis_pupuk_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),
|
||||
]);
|
||||
|
||||
return redirect()->route('petani.praktik-budidaya.edit', [$petani->id , $praktikBudidaya->id])
|
||||
->with('success', 'Data praktik budidaya berhasil disimpan.');
|
||||
}
|
||||
|
||||
public function edit($petaniId, $praktikBudidayaId)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$defaultTeknikPemangkasan = [
|
||||
'Pemangkasan bentuk',
|
||||
'Pemangkasan produksi',
|
||||
'Pemangkasan peremajaan',
|
||||
'Tidak tahu jenis pemangkasannya — dilakukan berdasarkan kebiasaan',
|
||||
];
|
||||
|
||||
$defaultAlasanTidakPenyerbukan = [
|
||||
'Tidak tahu caranya',
|
||||
'Tidak ada tenaga/waktu',
|
||||
'Mengandalkan penyerbuk alami',
|
||||
];
|
||||
|
||||
$defaultFrekuensiPemupukan = [
|
||||
'1 kali/tahun',
|
||||
'2 kali/tahun',
|
||||
'Lebih dari 2 kali/tahun',
|
||||
];
|
||||
|
||||
$defaultWaktuPemberianPupuk = [
|
||||
'Awal musim hujan',
|
||||
'Akhir musim hujan',
|
||||
'Sebelum berbunga',
|
||||
'Sebelum Setelah Panen',
|
||||
'Tidak Menentu',
|
||||
];
|
||||
|
||||
$defaultCaraPemberianPupuk = [
|
||||
'Ditabur di sekitar pohon',
|
||||
'Dibenamkan dalam lubang/parit',
|
||||
'Dicairkan/dikocor',
|
||||
'Disemprotkan ke daun',
|
||||
];
|
||||
|
||||
$defaultSumberAir = [
|
||||
'Sungai/mata air',
|
||||
'Sumur',
|
||||
'Mengandalkan hujan saja',
|
||||
];
|
||||
|
||||
$defaultSistemIrigasi = [
|
||||
'Tidak ada irigasi',
|
||||
'Milik sendiri',
|
||||
'Milik komunitas/kelompok tani',
|
||||
'Milik pemerintah',
|
||||
];
|
||||
|
||||
$title = 'Petani - Praktik Budidaya';
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
$praktikBudidaya = PraktikBudidaya::where('petani_id', $petaniId)->where('id', $praktikBudidayaId)->latest()->first();
|
||||
|
||||
$teknikPemangkasan = $praktikBudidaya->teknik_pemangkasan ?? [];
|
||||
$teknikPemangkasanLainnya = collect($teknikPemangkasan)
|
||||
->first(fn ($item) => !in_array($item, $defaultTeknikPemangkasan));
|
||||
|
||||
$alasanTidakPenyerbukan = $praktikBudidaya->deskripsi_tidak_penyerbukan ?? '';
|
||||
$alasanTidakPenyerbukanLainnya = collect(explode(', ', $alasanTidakPenyerbukan))
|
||||
->first(fn ($item) => !in_array($item, $defaultAlasanTidakPenyerbukan));
|
||||
|
||||
$frekuensiPemupukan = $praktikBudidaya->frekuensi_pemupukan ?? '';
|
||||
$frekuensiPemupukanLainnya = collect(explode(', ', $frekuensiPemupukan))
|
||||
->first(fn ($item) => !in_array($item, $defaultFrekuensiPemupukan));
|
||||
|
||||
$waktuPemberianPupuk = $praktikBudidaya->waktu_pemberian_pupuk ?? '';
|
||||
$waktuPemberianPupukLainnya = collect(explode(', ', $waktuPemberianPupuk))
|
||||
->first(fn ($item) => !in_array($item, $defaultWaktuPemberianPupuk));
|
||||
|
||||
$caraPemberianPupuk = $praktikBudidaya->cara_pemberian_pupuk ?? '';
|
||||
$caraPemberianPupukLainnya = collect(explode(', ', $caraPemberianPupuk))
|
||||
->first(fn ($item) => !in_array($item, $defaultCaraPemberianPupuk));
|
||||
|
||||
$sumberAir = $praktikBudidaya->sumber_air ?? '';
|
||||
$sumberAirLainnya = collect(explode(', ', $sumberAir))
|
||||
->first(fn ($item) => !in_array($item, $defaultSumberAir));
|
||||
|
||||
$sistemIrigasi = $praktikBudidaya->sistem_irigasi ?? '';
|
||||
$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'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Carbon\Carbon;
|
||||
|
||||
use App\Models\Wilayah\DesaKelurahan;
|
||||
@@ -74,4 +75,9 @@ class Petani extends Model
|
||||
{
|
||||
return $this->belongsTo(User::class, 'user_id');
|
||||
}
|
||||
|
||||
public function praktik_budidaya(): HasOne
|
||||
{
|
||||
return $this->hasOne(PraktikBudidaya::class, 'petani_id');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user