perbaikan petani dan lahan
This commit is contained in:
@@ -8,4 +8,22 @@ enum PenyakitTanaman: string
|
||||
case DAUN_MENGUNING = 'daun_menguning';
|
||||
case DAUN_BERCAK = 'daun_bercak';
|
||||
case TANAMAN_LAYU = 'tanaman_layu';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match ($this) {
|
||||
self::BUSUK_BUAH => 'Busuk Buah',
|
||||
self::DAUN_MENGUNING => 'Daun Menguning',
|
||||
self::DAUN_BERCAK => 'Daun Bercak',
|
||||
self::TANAMAN_LAYU => 'Tanaman Layu',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
@@ -7,4 +7,21 @@ enum SeranganHama: string
|
||||
case ULAT = 'ulat';
|
||||
case BELALANG = 'belalang';
|
||||
case KUTU = 'kutu';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match ($this) {
|
||||
self::ULAT => 'Ulat',
|
||||
self::BELALANG => 'Belalang',
|
||||
self::KUTU => 'Kutu',
|
||||
};
|
||||
}
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return collect(self::cases())->map(fn ($case) => [
|
||||
'value' => $case->value,
|
||||
'label' => $case->label(),
|
||||
])->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ use Illuminate\Support\Facades\Storage;
|
||||
use App\Models\Wilayah\Provinsi;
|
||||
use App\Models\Pertanian\Petani;
|
||||
use App\Models\Wilayah\DesaKelurahan;
|
||||
use App\Models\Pertanian\Komoditas;
|
||||
|
||||
use App\Enums\Pendidikan;
|
||||
use App\Enums\Pekerjaan;
|
||||
@@ -53,19 +54,17 @@ class PetaniController extends Controller
|
||||
$pekerjaan = Pekerjaan::options();
|
||||
$pernikahan = Pernikahan::options();
|
||||
|
||||
$komoditas = Komoditas::all();
|
||||
|
||||
$provinsi = Provinsi::orderBy('kode', 'asc')->get();
|
||||
|
||||
return view('produktivitas.petani.add', compact('pendidikan', 'pekerjaan',
|
||||
'pernikahan', 'provinsi'));
|
||||
'pernikahan', 'provinsi', 'komoditas'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
private function validatePetani(Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$validatedData = $request->validate([
|
||||
return $request->validate([
|
||||
'nama' => ['required','string','max:255'],
|
||||
'jenis_kelamin' => ['required','boolean'],
|
||||
'tempat_lahir' => ['required','string','max:255'],
|
||||
@@ -73,7 +72,7 @@ class PetaniController extends Controller
|
||||
'pendidikan_terakhir' => ['required', Rule::enum(Pendidikan::class)],
|
||||
'alamat' => ['required','string','max:500'],
|
||||
'desa_kelurahan_id' => ['required','exists:master_desa_kelurahan,id'],
|
||||
//'komoditas_id' => ['required','exists:master_komoditas,id'],
|
||||
'komoditas_id' => ['required','exists:master_komoditas,id'],
|
||||
'status_perkawinan' => ['required', Rule::enum(Pernikahan::class)],
|
||||
'ktp' => ['nullable', 'min:16', 'max:16'],
|
||||
'file_ktp' => ['nullable', 'image', 'mimes:jpeg,jpg,png', 'max:2048'],
|
||||
@@ -82,8 +81,48 @@ class PetaniController extends Controller
|
||||
'foto' => ['nullable', 'image', 'mimes:jpeg,jpg,png', 'max:2048'],
|
||||
'nomor_telepon' => ['nullable', 'digits_between:11,13'],
|
||||
], [
|
||||
'nama.required' => 'Nama harus diisi.',
|
||||
'nama.string' => 'Nama harus berupa string.',
|
||||
'nama.max' => 'Nama tidak boleh lebih dari 255 karakter.',
|
||||
'jenis_kelamin.required' => 'Jenis kelamin harus dipilih.',
|
||||
'tempat_lahir.required' => 'Tempat lahir harus diisi.',
|
||||
'tempat_lahir.string' => 'Tempat lahir harus berupa string.',
|
||||
'tempat_lahir.max' => 'Tempat lahir tidak boleh lebih dari 255 karakter.',
|
||||
'tanggal_lahir.required' => 'Tanggal lahir harus diisi.',
|
||||
'tanggal_lahir.date' => 'Tanggal lahir harus berupa tanggal.',
|
||||
'pendidikan_terakhir.required' => 'Pendidikan terakhir harus dipilih.',
|
||||
'alamat.required' => 'Alamat harus diisi.',
|
||||
'alamat.string' => 'Alamat harus berupa string.',
|
||||
'alamat.max' => 'Alamat tidak boleh lebih dari 500 karakter.',
|
||||
'desa_kelurahan_id.required' => 'Desa kelurahan harus dipilih.',
|
||||
'desa_kelurahan_id.exists' => 'Desa kelurahan tidak ditemukan.',
|
||||
'komoditas_id.required' => 'Komoditas harus dipilih.',
|
||||
'komoditas_id.exists' => 'Komoditas tidak ditemukan.',
|
||||
'status_perkawinan.required' => 'Status perkawinan harus dipilih.',
|
||||
'ktp.min' => 'KTP harus berupa 16 digit.',
|
||||
'ktp.max' => 'KTP harus berupa 16 digit.',
|
||||
'kk.min' => 'KK harus berupa 16 digit.',
|
||||
'kk.max' => 'KK harus berupa 16 digit.',
|
||||
'file_ktp.image' => 'File KTP harus berupa gambar.',
|
||||
'file_ktp.mimes' => 'File KTP harus berupa jpeg, jpg, atau png.',
|
||||
'file_ktp.max' => 'File KTP tidak boleh lebih dari 2MB.',
|
||||
'file_kk.image' => 'File KK harus berupa gambar.',
|
||||
'file_kk.mimes' => 'File KK harus berupa jpeg, jpg, atau png.',
|
||||
'file_kk.max' => 'File KK tidak boleh lebih dari 2MB.',
|
||||
'foto.image' => 'Foto harus berupa gambar.',
|
||||
'foto.mimes' => 'Foto harus berupa jpeg, jpg, atau png.',
|
||||
'foto.max' => 'Foto tidak boleh lebih dari 2MB.',
|
||||
'nomor_telepon.digits_between' => 'Nomor telepon harus berupa angka 11 sampai 13 digit.',
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$validatedData = $this->validatePetani($request);
|
||||
|
||||
if ($request->hasFile('file_ktp')) {
|
||||
$file_ktp = $request->file('file_ktp');
|
||||
@@ -135,10 +174,10 @@ class PetaniController extends Controller
|
||||
|
||||
$provinsi = Provinsi::all();
|
||||
|
||||
$section = $request->section ?? 'budidaya';
|
||||
$komoditas = Komoditas::all();
|
||||
|
||||
return view('produktivitas.petani.edit', compact('petani', 'pendidikan', 'pekerjaan',
|
||||
'pernikahan', 'provinsi', 'section'));
|
||||
'pernikahan', 'provinsi', 'komoditas'));
|
||||
}
|
||||
|
||||
|
||||
@@ -150,25 +189,7 @@ class PetaniController extends Controller
|
||||
|
||||
$petani = Petani::findOrFail($id);
|
||||
|
||||
$validatedData = $request->validate([
|
||||
'nama' => ['required','string','max:255'],
|
||||
'jenis_kelamin' => ['required','boolean'],
|
||||
'tempat_lahir' => ['required','string','max:255'],
|
||||
'tanggal_lahir' => ['required','date'],
|
||||
'pendidikan_terakhir' => ['required', Rule::enum(Pendidikan::class)],
|
||||
'alamat' => ['required','string','max:500'],
|
||||
'desa_kelurahan_id' => ['required','exists:master_desa_kelurahan,id'],
|
||||
//'komoditas_id' => ['required','exists:master_komoditas,id'],
|
||||
'status_perkawinan' => ['required', Rule::enum(Pernikahan::class)],
|
||||
'ktp' => ['nullable', 'min:16', 'max:16'],
|
||||
'file_ktp' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'],
|
||||
'kk' => ['nullable', 'min:16', 'max:16'],
|
||||
'file_kk' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'],
|
||||
'foto' => ['nullable', 'file', 'mimes:jpeg,jpg,png', 'max:2048'],
|
||||
'nomor_telepon' => ['nullable', 'digits_between:11,13'],
|
||||
], [
|
||||
'nomor_telepon.digits_between' => 'Nomor telepon harus berupa angka 11 sampai 13 digit.',
|
||||
]);
|
||||
$validatedData = $this->validatePetani($request);
|
||||
|
||||
if ($request->hasFile('file_ktp')) {
|
||||
$file_ktp = $request->file('file_ktp');
|
||||
|
||||
@@ -66,15 +66,9 @@ class PetaniLahanController extends Controller
|
||||
return view('produktivitas.petani.lahan.add', compact('petani', 'lahan', 'provinsi', 'komoditas'));
|
||||
}
|
||||
|
||||
public function store($petaniId, Request $request)
|
||||
private function validateLahan(Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
|
||||
$validated = $request->validate([
|
||||
return $request->validate([
|
||||
'nama' => ['nullable', 'string', 'max:255'],
|
||||
'status_kepemilikan' => ['nullable', 'string', 'max:255'],
|
||||
'profile_id' => ['nullable'],
|
||||
@@ -82,14 +76,14 @@ class PetaniLahanController extends Controller
|
||||
'keluarga_pengelola_id' => ['nullable'],
|
||||
'adat_pemilik_id' => ['nullable'],
|
||||
'desa_kelurahan_id' => ['nullable'],
|
||||
'luas_lahan' => ['required', 'numeric'],
|
||||
'luas_lahan' => ['required', 'numeric', 'min:0.01'],
|
||||
'path' => ['nullable', 'string'],
|
||||
'komoditas_id' => ['required', 'exists:master_komoditas,id'],
|
||||
'jenis_komoditas_id' => ['required', 'exists:jenis_komoditas,id'],
|
||||
'varietas_id' => ['nullable', 'exists:master_varietas,id'],
|
||||
'jumlah_tanaman' => ['required', 'numeric'],
|
||||
'umur_lahan' => ['required', 'numeric'],
|
||||
'umur_tanaman' => ['required', 'numeric'],
|
||||
'jumlah_tanaman' => ['required', 'numeric', 'min:1'],
|
||||
'umur_lahan' => ['required', 'numeric', 'min:1'],
|
||||
'umur_tanaman' => ['required', 'numeric', 'min:1'],
|
||||
'kondisi_tanaman' => ['required', 'string', new Enum(KondisiTanaman::class)],
|
||||
'serangan_hama' => ['nullable', 'string', new Enum(SeranganHama::class)],
|
||||
'penyakit_tanaman' => ['nullable', 'string', new Enum(PenyakitTanaman::class)],
|
||||
@@ -98,8 +92,51 @@ class PetaniLahanController extends Controller
|
||||
'komoditas_lain.*' => ['integer', 'exists:master_komoditas,id'],
|
||||
'tanaman_penaung' => ['nullable', 'array'],
|
||||
'tanaman_penaung.*' => ['integer', 'exists:master_komoditas,id'],
|
||||
'foto' => ['nullable', 'array'],
|
||||
'foto.*' => ['image', 'mimes:jpeg,jpg,png', 'max:2048'],
|
||||
], [
|
||||
'nama.string' => 'Nama lahan diisi dengan huruf.',
|
||||
'nama.max' => 'Nama lahan maksimal 255 karakter.',
|
||||
'status_kepemilikan.string' => 'Status kepemilikan diisi dengan huruf.',
|
||||
'status_kepemilikan.max' => 'Status kepemilikan maksimal 255 karakter.',
|
||||
'luas_lahan.required' => 'Luas lahan wajib diisi.',
|
||||
'luas_lahan.numeric' => 'Luas lahan diisi dengan angka.',
|
||||
'luas_lahan.min' => 'Luas lahan minimal 0.01.',
|
||||
'jumlah_tanaman.required' => 'Jumlah tanaman wajib diisi.',
|
||||
'jumlah_tanaman.numeric' => 'Jumlah tanaman diisi dengan angka.',
|
||||
'jumlah_tanaman.min' => 'Jumlah tanaman minimal 1.',
|
||||
'umur_lahan.required' => 'Umur lahan wajib diisi.',
|
||||
'umur_lahan.numeric' => 'Umur lahan diisi dengan angka.',
|
||||
'umur_lahan.min' => 'Umur lahan minimal 1.',
|
||||
'umur_tanaman.required' => 'Umur tanaman wajib diisi.',
|
||||
'umur_tanaman.numeric' => 'Umur tanaman diisi dengan angka.',
|
||||
'umur_tanaman.min' => 'Umur tanaman minimal 1.',
|
||||
'kondisi_tanaman.required' => 'Kondisi tanaman wajib dipilih.',
|
||||
'kondisi_tanaman.string' => 'Kondisi tanaman diisi dengan huruf.',
|
||||
'serangan_hama.string' => 'Serangan hama diisi dengan huruf.',
|
||||
'penyakit_tanaman.string' => 'Penyakit tanaman diisi dengan huruf.',
|
||||
'keparahan_serangan.string' => 'Keparahan serangan diisi dengan huruf.',
|
||||
'komoditas_lain.array' => 'Komoditas lain diisi dengan array.',
|
||||
'komoditas_lain.*.exists' => 'Komoditas lain yang dipilih tidak valid.',
|
||||
'tanaman_penaung.array' => 'Tanaman penaung diisi dengan array.',
|
||||
'tanaman_penaung.*.exists' => 'Tanaman penaung yang dipilih tidak valid.',
|
||||
'foto.array' => 'Foto diisi dengan array.',
|
||||
'foto.*.image' => 'Foto harus berupa gambar.',
|
||||
'foto.*.mimes' => 'Foto harus berupa gambar dengan ekstensi jpeg, jpg, atau png.',
|
||||
'foto.*.max' => 'Foto maksimal 2MB.',
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function store($petaniId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
|
||||
$validated = $this->validateLahan($request);
|
||||
$komoditas = Komoditas::where('id', $request->komoditas_id)->first();
|
||||
$lahanCount = Lahan::where('petani_id', $petaniId)
|
||||
->count();
|
||||
@@ -191,40 +228,14 @@ class PetaniLahanController extends Controller
|
||||
$petani = Petani::findOrFail($petaniId);
|
||||
$lahan = Lahan::where('petani_id', $petaniId)->findOrFail($id);
|
||||
|
||||
$validated = $request->validate([
|
||||
'nama' => ['nullable', 'string', 'max:255'],
|
||||
'status_kepemilikan' => ['nullable', 'string', 'max:255'],
|
||||
'profile_id' => ['nullable'],
|
||||
'petani_id' => ['nullable'],
|
||||
'keluarga_pengelola_id' => ['nullable'],
|
||||
'adat_pemilik_id' => ['nullable'],
|
||||
'desa_kelurahan_id' => ['nullable'],
|
||||
'luas_lahan' => ['required', 'numeric'],
|
||||
'path' => ['nullable', 'string'],
|
||||
'komoditas_id' => ['required', 'exists:master_komoditas,id'],
|
||||
'jenis_komoditas_id' => ['required', 'exists:jenis_komoditas,id'],
|
||||
'varietas_id' => ['nullable', 'exists:master_varietas,id'],
|
||||
'jumlah_tanaman' => ['required', 'numeric'],
|
||||
'umur_lahan' => ['required', 'numeric'],
|
||||
'umur_tanaman' => ['required', 'numeric'],
|
||||
'kondisi_tanaman' => ['required', '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)],
|
||||
'komoditas_lain' => ['nullable', 'array'],
|
||||
'komoditas_lain.*' => ['integer', 'exists:master_komoditas,id'],
|
||||
'tanaman_penaung' => ['nullable', 'array'],
|
||||
'tanaman_penaung.*' => ['integer', 'exists:master_komoditas,id'],
|
||||
]);
|
||||
|
||||
$validated = $this->validateLahan($request);
|
||||
$komoditas = Komoditas::where('id', $request->komoditas_id)->first();
|
||||
|
||||
$lahanCount = Lahan::where('petani_id', $petaniId)
|
||||
->count();
|
||||
$tanamanCount = Tanaman::where('lahan_id', $lahan->id)->count();
|
||||
$lahanCount = Lahan::where('petani_id', $petaniId)->count();
|
||||
|
||||
$lahan->update([...$validated,
|
||||
'nama' => 'Lahan ' . $komoditas->nama . ' #' . ($lahanCount + 1),
|
||||
'petani_id' => $petaniId,
|
||||
//'nama' => 'Lahan ' . $komoditas->nama . ' #' . ($lahanCount + 1),
|
||||
//'petani_id' => $petaniId,
|
||||
'updated_by' => auth()->id()]
|
||||
);
|
||||
|
||||
@@ -232,8 +243,8 @@ class PetaniLahanController extends Controller
|
||||
$lahanUidParts = explode('LHN-', $lahanUid);
|
||||
$lahanUid = end($lahanUidParts);
|
||||
|
||||
if ($lahan) {
|
||||
$data = collect(range($lahanCount, $lahan->jumlah_tanaman))->map(function ($i) use ($lahan, $komoditas, $lahanUid) {
|
||||
if ($lahan && $lahan->jumlah_tanaman > $tanamanCount) {
|
||||
$data = collect(range($tanamanCount + 1, $lahan->jumlah_tanaman))->map(function ($i) use ($lahan, $komoditas, $lahanUid) {
|
||||
return [
|
||||
'lahan_id' => $lahan->id,
|
||||
'komoditas_id' => $lahan->komoditas_id,
|
||||
@@ -257,10 +268,10 @@ class PetaniLahanController extends Controller
|
||||
$data->chunk(500)->each(function ($chunk) {
|
||||
Tanaman::insert($chunk->toArray());
|
||||
});
|
||||
}
|
||||
|
||||
return redirect()->route('petani.lahan-tanaman.index', $petaniId)->with('success', 'Lahan berhasil ditambahkan.');
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy(string $id)
|
||||
{
|
||||
|
||||
@@ -15,6 +15,9 @@ use App\Models\Pertanian\Komoditas;
|
||||
use App\Models\Master\JenisKomoditas;
|
||||
use App\Models\Master\Varietas;
|
||||
use App\Enums\KondisiTanaman;
|
||||
use App\Enums\SeranganHama;
|
||||
use App\Enums\PenyakitTanaman;
|
||||
use App\Enums\KeparahanSerangan;
|
||||
|
||||
class Lahan extends Model
|
||||
{
|
||||
@@ -52,6 +55,8 @@ class Lahan extends Model
|
||||
|
||||
'komoditas_lain',
|
||||
'tanaman_penaung',
|
||||
|
||||
'foto'
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
@@ -60,6 +65,10 @@ class Lahan extends Model
|
||||
'komoditas_lain' => 'array',
|
||||
'tanaman_penaung' => 'array',
|
||||
'kondisi_tanaman' => KondisiTanaman::class,
|
||||
'serangan_hama' => SeranganHama::class,
|
||||
'penyakit_tanaman' => PenyakitTanaman::class,
|
||||
'keparahan_serangan' => KeparahanSerangan::class,
|
||||
'foto' => 'array'
|
||||
];
|
||||
|
||||
public function profile(): BelongsTo
|
||||
|
||||
@@ -5,6 +5,8 @@ namespace App\Models\Pertanian;
|
||||
use App\Enums\Pendidikan;
|
||||
use App\Enums\Pernikahan;
|
||||
use App\Models\Wilayah\DesaKelurahan;
|
||||
use App\Models\Pertanian\Komoditas;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
@@ -12,6 +14,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class Petani extends Model
|
||||
{
|
||||
@@ -44,6 +47,8 @@ class Petani extends Model
|
||||
'pendidikan_terakhir',
|
||||
'status_perkawinan',
|
||||
|
||||
'komoditas_id',
|
||||
|
||||
'created_by',
|
||||
'updated_by',
|
||||
'deleted_by',
|
||||
@@ -93,6 +98,11 @@ class Petani extends Model
|
||||
});
|
||||
}
|
||||
|
||||
public function komoditas(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Komoditas::class, 'komoditas_id');
|
||||
}
|
||||
|
||||
public function skor(): HasOne
|
||||
{
|
||||
return $this->hasOne(SkorPetani::class, 'petani_id');
|
||||
|
||||
@@ -22,16 +22,19 @@
|
||||
<!-- INFORMASI PETANI -->
|
||||
<form id="addPetaniForm" action="{{ route('petani.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="file" id="foto" name="foto" accept="image/png,image/jpeg,image/jpg" hidden>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="user-avatar-section">
|
||||
<div class=" d-flex align-items-center flex-column">
|
||||
<img
|
||||
<img id="fotoPreview"
|
||||
class="img-fluid rounded mb-4"
|
||||
src="../../assets/img/avatars/1.png"
|
||||
height="120"
|
||||
width="120"
|
||||
alt="User avatar" />
|
||||
src="{{ $petani->foto ? asset('storage/' . $petani->foto) : '../../assets/img/avatars/1.png' }}"
|
||||
height="120" width="120"
|
||||
alt="Foto profil petani"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
data-bs-original-title="Klik untuk menambahkan foto profil petani"
|
||||
style="cursor:pointer; object-fit:cover;" />
|
||||
<div class="user-info text-center">
|
||||
<h5><i>Nama Petani</i></h5>
|
||||
<span class="badge bg-label-secondary">Petani</span>
|
||||
@@ -56,7 +59,7 @@
|
||||
@error('ktp')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="add-petani-kk">No. KK<span class="text-danger">*</span></label>
|
||||
<label class="form-label" for="add-petani-kk">No. KK</label>
|
||||
<input type="text" class="form-control @error('kk') is-invalid @enderror" id="add-petani-kk" name="kk"
|
||||
placeholder="Cth: 1234567890" value="{{ old('kk') }}" />
|
||||
@error('kk')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
@@ -79,15 +82,15 @@
|
||||
@error('tempat_lahir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="add-petani-tanggal-lahir">Tanggal Lahir</label>
|
||||
<input type="date" class="form-control @error('tanggal_lahir') is-invalid @enderror" id="add-petani-tanggal-lahir" name="tanggal_lahir"
|
||||
<label class="form-label" for="add-petani-tanggal-lahir">Tanggal Lahir<span class="text-danger">*</span></label>
|
||||
<input type="text" class="form-control @error('tanggal_lahir') is-invalid @enderror" id="add-petani-tanggal-lahir" name="tanggal_lahir"
|
||||
value="{{ old('tanggal_lahir') }}" />
|
||||
@error('tanggal_lahir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="add-petani-pendidikan-terakhir">Pendidikan Terakhir</label>
|
||||
<label class="form-label" for="add-petani-pendidikan-terakhir">Pendidikan Terakhir<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('pendidikan_terakhir') is-invalid @enderror" id="add-petani-pendidikan-terakhir" name="pendidikan_terakhir">
|
||||
<option value="">Pilih Pendidikan Terakhir</option>
|
||||
@foreach($pendidikan as $value)
|
||||
@@ -108,11 +111,24 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Komoditas</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label">Komoditas Utama <span class="text-danger">*</span></label>
|
||||
<select id="add-petani-komoditas" name="komoditas_id" class="form-select @error('komoditas_id') is-invalid @enderror">
|
||||
<option value="">Pilih Komoditas</option>
|
||||
@foreach($komoditas as $k)
|
||||
<option value="{{ $k->id }}">{{ $k->nama }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('komoditas_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Domisili dan Kontak</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-12 mb-4 form-control-validation">
|
||||
<label class="form-label" for="add-petani-alamat">Alamat</label>
|
||||
<label class="form-label" for="add-petani-alamat">Alamat<span class="text-danger">*</span></label>
|
||||
<textarea class="form-control @error('alamat') is-invalid @enderror" id="add-petani-alamat" name="alamat"
|
||||
rows="2" placeholder="Cth: Jl. Nama Jalan, Nama Dusun">{{ old('alamat') }}</textarea>
|
||||
@error('alamat')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
@@ -120,7 +136,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="add-petani-provinsi">Provinsi</label>
|
||||
<label class="form-label" for="add-petani-provinsi">Provinsi<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('provinsi_id') is-invalid @enderror" id="add-petani-provinsi" name="provinsi_id">
|
||||
<option value="">Pilih Provinsi</option>
|
||||
@foreach($provinsi as $p)
|
||||
@@ -130,21 +146,21 @@
|
||||
@error('provinsi_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="add-petani-kabupaten">Kabupaten/Kota</label>
|
||||
<label class="form-label" for="add-petani-kabupaten">Kabupaten/Kota<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('kabupaten_id') is-invalid @enderror" id="add-petani-kabupaten" name="kabupaten_id" >
|
||||
<option value="">Pilih Kabupaten/Kota</option>
|
||||
</select>
|
||||
@error('kabupaten_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="add-petani-kecamatan">Kecamatan</label>
|
||||
<label class="form-label" for="add-petani-kecamatan">Kecamatan<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('kecamatan_id') is-invalid @enderror" id="add-petani-kecamatan" name="kecamatan_id" >
|
||||
<option value="">Pilih Kecamatan</option>
|
||||
</select>
|
||||
@error('kecamatan_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="add-petani-desa">Desa/Kelurahan</label>
|
||||
<label class="form-label" for="add-petani-desa">Desa/Kelurahan<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('desa_kelurahan_id') is-invalid @enderror" id="add-petani-desa" name="desa_kelurahan_id" >
|
||||
<option value="">Pilih Desa/Kelurahan</option>
|
||||
</select>
|
||||
@@ -205,7 +221,7 @@
|
||||
|
||||
<div class="mt-4 text-end">
|
||||
<a href="{{ route('petani.index') }}" class="btn btn-secondary me-2 wave-effect wave-light">Kembali</a>
|
||||
<button type="submit" class="btn btn-success data-submit wave-effect wave-light">Simpan Profil</button>
|
||||
<button type="submit" class="btn btn-success data-submit wave-effect wave-light"><i class="ti tabler-device-floppy me-2"> Simpan Profil</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
@@ -222,6 +238,9 @@
|
||||
$(document).ready(function () {
|
||||
|
||||
$('#add-petani-jenis-kelamin, #add-petani-pendidikan-terakhir, #add-petani-pekerjaan-utama, #add-petani-komoditas, #add-petani-pekerjaan-sampingan, #add-petani-komoditas-sampingan, #add-petani-status-pernikahan, #add-petani-status-keluarga, #add-petani-petani-pengumpul').select2();
|
||||
$('#add-petani-tanggal-lahir').flatpickr({
|
||||
dateFormat: 'd-m-Y'
|
||||
});
|
||||
|
||||
$('#add-petani-provinsi').select2().change(function(e) {
|
||||
e.preventDefault();
|
||||
@@ -282,8 +301,29 @@
|
||||
});
|
||||
$('#add-petani-desa').select2();
|
||||
|
||||
$('#fotoPreview').on('click', function () {
|
||||
$('#foto').click();
|
||||
});
|
||||
|
||||
$('#editPetaniForm').validate({
|
||||
$('#foto').on('change', function (e) {
|
||||
|
||||
const file = e.target.files[0];
|
||||
if (!file) return;
|
||||
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (event) {
|
||||
$('#fotoPreview').attr('src', event.target.result);
|
||||
};
|
||||
|
||||
reader.readAsDataURL(file);
|
||||
});
|
||||
|
||||
// 1 MB = 1048576 bytes
|
||||
$.validator.addMethod('maxfilesize', function (value, element, param) {
|
||||
return this.optional(element) || (element.files[0] && element.files[0].size <= param);
|
||||
}, 'File size must be less than {0} bytes.');
|
||||
|
||||
$('#addPetaniForm').validate({
|
||||
rules: {
|
||||
nama: { required: true },
|
||||
ktp: { required: true, digits: true, minlength: 16, maxlength: 16 },
|
||||
@@ -292,32 +332,36 @@
|
||||
tanggal_lahir: { required: true, date: true },
|
||||
jenis_kelamin: { required: true },
|
||||
pendidikan_terakhir: { required: true },
|
||||
komoditas_id: { required: true },
|
||||
alamat: { required: true },
|
||||
provinsi_id: { required: true },
|
||||
kabupaten_id: { required: true },
|
||||
kecamatan_id: { required: true },
|
||||
desa_kelurahan_id: { required: true },
|
||||
status_perkawinan: { required: true },
|
||||
file_ktp: { accept: "image/png, image/jpeg, image/jpg" },
|
||||
file_kk: { accept: "image/png, image/jpeg, image/jpg" },
|
||||
foto: { accept: "image/png, image/jpeg, image/jpg", maxfilesize: 2097152 },
|
||||
file_ktp: { accept: "image/png, image/jpeg, image/jpg", maxfilesize: 2097152 },
|
||||
file_kk: { accept: "image/png, image/jpeg, image/jpg", maxfilesize: 2097152 },
|
||||
nomor_telepon: { required: false, digits: true, minlength: 11, maxlength: 13 }
|
||||
},
|
||||
messages: {
|
||||
nama: { required: "Nama petani wajib diisi" },
|
||||
ktp: { required: "NIK wajib diisi", digits: "NIK harus berupa angka", minlength: "NIK harus 16 digit", maxlength: "NIK harus 16 digit" },
|
||||
kk: { required: "No. KK wajib diisi", digits: "No. KK harus berupa angka", minlength: "No. KK harus 16 digit", maxlength: "No. KK harus 16 digit" },
|
||||
kk: { digits: "No. KK harus berupa angka", minlength: "No. KK harus 16 digit", maxlength: "No. KK harus 16 digit" },
|
||||
tempat_lahir: { required: "Tempat lahir wajib diisi" },
|
||||
tanggal_lahir: { required: "Tanggal lahir wajib diisi", date: "Format tanggal salah" },
|
||||
jenis_kelamin: { required: "Jenis kelamin wajib diisi" },
|
||||
pendidikan_terakhir: { required: "Pendidikan terakhir wajib diisi" },
|
||||
komoditas_id: { required: "Komoditas wajib diisi" },
|
||||
alamat: { required: "Alamat wajib diisi" },
|
||||
provinsi_id: { required: "Provinsi wajib diisi" },
|
||||
kabupaten_id: { required: "Kabupaten/Kota wajib diisi" },
|
||||
kecamatan_id: { required: "Kecamatan wajib diisi" },
|
||||
desa_kelurahan_id: { required: "Desa/Kelurahan wajib diisi" },
|
||||
status_perkawinan: { required: "Status perkawinan wajib diisi" },
|
||||
file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" },
|
||||
file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" },
|
||||
foto: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
|
||||
file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
|
||||
file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
|
||||
nomor_telepon: {
|
||||
digits: "Nomor telepon harus berupa angka",
|
||||
minlength: "Nomor telepon minimal 11 digit",
|
||||
@@ -335,6 +379,9 @@
|
||||
},
|
||||
unhighlight: function (element) {
|
||||
$(element).removeClass('is-invalid');
|
||||
},
|
||||
submitHandler: function (form) {
|
||||
form.submit();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -23,19 +23,22 @@
|
||||
<form id="editPetaniForm" action="{{ route('petani.update', $petani->id) }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<input type="file" id="foto" name="foto" accept="image/png,image/jpeg,image/jpg" hidden>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="user-avatar-section">
|
||||
<div class=" d-flex align-items-center flex-column">
|
||||
<img
|
||||
<img id="fotoPreview"
|
||||
class="img-fluid rounded mb-4"
|
||||
src="../../assets/img/avatars/1.png"
|
||||
height="120"
|
||||
width="120"
|
||||
alt="User avatar" />
|
||||
src="{{ $petani->foto ? route('petani.show-image', ['id' => $petani->id, 'field' => 'foto']) : '../../assets/img/avatars/1.png' }}"
|
||||
height="120" width="120"
|
||||
alt="Foto profil petani"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
data-bs-original-title="Klik untuk mengganti foto profil petani"
|
||||
style="cursor:pointer; object-fit:cover;" />
|
||||
<div class="user-info text-center">
|
||||
<h5><i>Nama Petani</i></h5>
|
||||
<span class="badge bg-label-secondary">Petani</span>
|
||||
<h5><i>{{ $petani->nama }}</i></h5>
|
||||
<span class="badge bg-label-secondary">Petani {{ $petani->komoditas?->nama }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -57,7 +60,7 @@
|
||||
@error('ktp')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="edit-petani-kk">No. KK<span class="text-danger">*</span></label>
|
||||
<label class="form-label" for="edit-petani-kk">No. KK</label>
|
||||
<input type="text" class="form-control @error('kk') is-invalid @enderror" id="edit-petani-kk" name="kk"
|
||||
placeholder="Cth: 1234567890" value="{{ old('kk', $petani->kk) }}" />
|
||||
@error('kk')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
@@ -80,7 +83,7 @@
|
||||
@error('tempat_lahir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="edit-petani-tanggal-lahir">Tanggal Lahir</label>
|
||||
<label class="form-label" for="edit-petani-tanggal-lahir">Tanggal Lahir {{ $petani->tanggal_lahir?->format('Y-m-d') }}</label>
|
||||
<input type="date" class="form-control @error('tanggal_lahir') is-invalid @enderror" id="edit-petani-tanggal-lahir" name="tanggal_lahir"
|
||||
value="{{ old('tanggal_lahir', $petani->tanggal_lahir?->format('Y-m-d')) }}" />
|
||||
@error('tanggal_lahir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
@@ -88,7 +91,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="edit-petani-pendidikan-terakhir">Pendidikan Terakhir</label>
|
||||
<label class="form-label" for="edit-petani-pendidikan-terakhir">Pendidikan Terakhir<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('pendidikan_terakhir') is-invalid @enderror" id="edit-petani-pendidikan-terakhir" name="pendidikan_terakhir">
|
||||
<option value="">Pilih Pendidikan Terakhir</option>
|
||||
@foreach($pendidikan as $value)
|
||||
@@ -109,11 +112,24 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Komoditas</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label">Komoditas Utama <span class="text-danger">*</span></label>
|
||||
<select id="edit-petani-komoditas" name="komoditas_id" class="form-select @error('komoditas_id') is-invalid @enderror">
|
||||
<option value="">Pilih Komoditas</option>
|
||||
@foreach($komoditas as $k)
|
||||
<option value="{{ $k->id }}" {{ old('komoditas_id', $petani->komoditas_id) == $k->id ? 'selected' : '' }}>{{ $k->nama }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('komoditas_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="pb-4 border-bottom mb-4 mt-4">Domisili dan Kontak</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-12 mb-4 form-control-validation">
|
||||
<label class="form-label" for="edit-petani-alamat">Alamat</label>
|
||||
<label class="form-label" for="edit-petani-alamat">Alamat<span class="text-danger">*</span></label>
|
||||
<textarea class="form-control @error('alamat') is-invalid @enderror" id="edit-petani-alamat" name="alamat"
|
||||
rows="2" placeholder="Cth: Jl. Nama Jalan, Nama Dusun">{{ old('alamat', $petani->alamat) }}</textarea>
|
||||
@error('alamat')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
@@ -121,7 +137,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="edit-petani-provinsi">Provinsi</label>
|
||||
<label class="form-label" for="edit-petani-provinsi">Provinsi<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('provinsi_id') is-invalid @enderror" id="edit-petani-provinsi" name="provinsi_id">
|
||||
<option value="">Pilih Provinsi</option>
|
||||
@foreach($provinsi as $p)
|
||||
@@ -131,7 +147,7 @@
|
||||
@error('provinsi_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="edit-petani-kabupaten">Kabupaten/Kota</label>
|
||||
<label class="form-label" for="edit-petani-kabupaten">Kabupaten/Kota<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('kabupaten_id') is-invalid @enderror" id="edit-petani-kabupaten" name="kabupaten_id" >
|
||||
<option value="">Pilih Kabupaten/Kota</option>
|
||||
<option value="{{ $petani->desaKelurahan->kecamatan->kabupatenKota->id }}" selected>{{ $petani->desaKelurahan->kecamatan->kabupatenKota->nama }}</option>
|
||||
@@ -139,7 +155,7 @@
|
||||
@error('kabupaten_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="edit-petani-kecamatan">Kecamatan</label>
|
||||
<label class="form-label" for="edit-petani-kecamatan">Kecamatan<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('kecamatan_id') is-invalid @enderror" id="edit-petani-kecamatan" name="kecamatan_id" >
|
||||
<option value="">Pilih Kecamatan</option>
|
||||
<option value="{{ $petani->desaKelurahan->kecamatan->id }}" selected>{{ $petani->desaKelurahan->kecamatan->nama }}</option>
|
||||
@@ -147,7 +163,7 @@
|
||||
@error('kecamatan_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-4 form-control-validation">
|
||||
<label class="form-label" for="edit-petani-desa">Desa/Kelurahan</label>
|
||||
<label class="form-label" for="edit-petani-desa">Desa/Kelurahan<span class="text-danger">*</span></label>
|
||||
<select class="form-control @error('desa_kelurahan_id') is-invalid @enderror" id="edit-petani-desa" name="desa_kelurahan_id" >
|
||||
<option value="">Pilih Desa/Kelurahan</option>
|
||||
<option value="{{ $petani->desaKelurahan->id }}" selected>{{ $petani->desaKelurahan->nama }}</option>
|
||||
@@ -208,7 +224,8 @@
|
||||
</div>
|
||||
|
||||
<div class="mt-4 text-end">
|
||||
<button type="submit" class="btn btn-success data-submit wave-effect wave-light">Simpan Profil</button>
|
||||
<a href="{{ route('petani.index') }}" class="btn btn-secondary me-2 wave-effect wave-light">Kembali</a>
|
||||
<button type="submit" class="btn btn-success data-submit wave-effect wave-light"><i class="ti tabler-device-floppy me-2"></i> Simpan Profil</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
@@ -226,6 +243,10 @@
|
||||
|
||||
$('#edit-petani-jenis-kelamin, #edit-petani-pendidikan-terakhir, #edit-petani-pekerjaan-utama, #edit-petani-komoditas, #edit-petani-pekerjaan-sampingan, #edit-petani-komoditas-sampingan, #edit-petani-status-pernikahan, #edit-petani-status-keluarga, #edit-petani-petani-pengumpul').select2();
|
||||
|
||||
$('#edit-petani-tanggal-lahir').flatpickr({
|
||||
dateFormat: 'd-m-Y'
|
||||
});
|
||||
|
||||
$('#edit-petani-provinsi').select2().change(function(e) {
|
||||
e.preventDefault();
|
||||
var provinsiId = $(this).val();
|
||||
@@ -285,6 +306,27 @@
|
||||
});
|
||||
$('#edit-petani-desa').select2();
|
||||
|
||||
$('#fotoPreview').on('click', function () {
|
||||
$('#foto').click();
|
||||
});
|
||||
|
||||
$('#foto').on('change', function (e) {
|
||||
|
||||
const file = e.target.files[0];
|
||||
if (!file) return;
|
||||
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (event) {
|
||||
$('#fotoPreview').attr('src', event.target.result);
|
||||
};
|
||||
|
||||
reader.readAsDataURL(file);
|
||||
});
|
||||
|
||||
// 1 MB = 1048576 bytes
|
||||
$.validator.addMethod('maxfilesize', function (value, element, param) {
|
||||
return this.optional(element) || (element.files[0] && element.files[0].size <= param);
|
||||
}, 'File size must be less than {0} bytes.');
|
||||
|
||||
$('#editPetaniForm').validate({
|
||||
rules: {
|
||||
@@ -295,6 +337,7 @@
|
||||
tanggal_lahir: { required: true, date: true },
|
||||
jenis_kelamin: { required: true },
|
||||
pendidikan_terakhir: { required: true },
|
||||
komoditas_id: { required: true },
|
||||
alamat: { required: true },
|
||||
provinsi_id: { required: true },
|
||||
kabupaten_id: { required: true },
|
||||
@@ -303,6 +346,7 @@
|
||||
status_perkawinan: { required: true },
|
||||
file_ktp: { accept: "image/png, image/jpeg, image/jpg" },
|
||||
file_kk: { accept: "image/png, image/jpeg, image/jpg" },
|
||||
foto: { accept: "image/png, image/jpeg, image/jpg" },
|
||||
nomor_telepon: { required: false, digits: true, minlength: 11, maxlength: 13 }
|
||||
},
|
||||
messages: {
|
||||
@@ -319,8 +363,9 @@
|
||||
kecamatan_id: { required: "Kecamatan wajib diisi" },
|
||||
desa_kelurahan_id: { required: "Desa/Kelurahan wajib diisi" },
|
||||
status_perkawinan: { required: "Status perkawinan wajib diisi" },
|
||||
file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" },
|
||||
file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" },
|
||||
foto: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
|
||||
file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
|
||||
file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
|
||||
nomor_telepon: {
|
||||
digits: "Nomor telepon harus berupa angka",
|
||||
minlength: "Nomor telepon minimal 11 digit",
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
@error('luas_lahan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-3 form-control-validation">
|
||||
<label class="form-label">Umur Lahan (tahun)</label>
|
||||
<label class="form-label">Umur Lahan (tahun) <span class="text-danger">*</span></label>
|
||||
<input type="number" name="umur_lahan" class="form-control @error('umur_lahan') is-invalid @enderror" placeholder="Contoh: 1" />
|
||||
@error('umur_lahan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
@@ -65,7 +65,7 @@
|
||||
@error('jumlah_tanaman')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-3 mb-3 form-control-validation">
|
||||
<label class="form-label">Umur Tanaman (rata-rata)</label>
|
||||
<label class="form-label">Umur Tanaman (rata-rata dalam tahun) <span class="text-danger">*</span></label>
|
||||
<input type="number" name="umur_tanaman" class="form-control @error('umur_tanaman') is-invalid @enderror" placeholder="Contoh: 1" />
|
||||
@error('umur_tanaman')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
@@ -95,7 +95,7 @@
|
||||
</div>
|
||||
<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 <span class="text-danger">*</span></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') == \App\Enums\KondisiTanaman::BAIK ? 'selected' : '' }}>Baik</option>
|
||||
@@ -206,7 +206,7 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 mb-3 form-control-validation">
|
||||
<label class="form-label">Raw Data Koordinat Lahan (Auto-generated JSON) <span class="text-danger">*</span></label>
|
||||
<label class="form-label">Raw Data Koordinat Lahan (Auto-generated JSON)</label>
|
||||
<textarea name="path" id="path" class="form-control @error('path') is-invalid @enderror" rows="4" readonly placeholder="Koordinat akan terisi otomatis setelah Anda menggambar polygon di peta..."></textarea>
|
||||
<small class="text-muted">Pastikan menggambar polygon di peta dengan menyambungkan titik akhir ke titik awal.</small>
|
||||
@error('path')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
@@ -224,8 +224,8 @@
|
||||
|
||||
<div class="row mt-3">
|
||||
<div class="col-12 text-end">
|
||||
<button type="reset" class="btn btn-label-secondary me-2">Reset</button>
|
||||
<button type="submit" class="btn btn-success"><i class="ti tabler-device-floppy me-2"></i> Simpan Lahan</button>
|
||||
<a href="{{ route('petani.index') }}" class="btn btn-secondary me-2 wave-effect wave-light">Kembali</a>
|
||||
<button type="submit" class="btn btn-success data-submit wave-effect wave-light"><i class="ti tabler-device-floppy me-2"></i> Simpan Lahan</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -487,20 +487,32 @@
|
||||
|
||||
$('#petani-lahan-tanaman').validate({
|
||||
rules: {
|
||||
luas_lahan: { required: true },
|
||||
luas_lahan: { required: true, number: true, min: 0 },
|
||||
komoditas_id: { required: true },
|
||||
jenis_komoditas_id: { required: true },
|
||||
varietas_id: { required: true },
|
||||
provinsi_id: { required: true },
|
||||
kabupatenkota_id: { required: true },
|
||||
kecamatan_id: { required: true },
|
||||
desa_kelurahan_id: { required: true },
|
||||
jumlah_tanaman: { required: true },
|
||||
umur_lahan: { required: true, number: true, min: 1 },
|
||||
umur_tanaman: { required: true, number: true, min: 1 },
|
||||
kondisi_tanaman: { required: true },
|
||||
},
|
||||
messages: {
|
||||
luas_lahan: { required: "Luas lahan wajib diisi" },
|
||||
luas_lahan: { required: "Luas lahan wajib diisi", number: "Luas lahan harus berupa angka", min: "Luas lahan minimal 0" },
|
||||
komoditas_id: { required: "Komoditas wajib diisi" },
|
||||
jenis_komoditas_id: { required: "Jenis komoditas wajib diisi" },
|
||||
varietas_id: { required: "Varietas wajib diisi" },
|
||||
provinsi_id: { required: "Provinsi wajib diisi" },
|
||||
kabupatenkota_id: { required: "Kabupaten/Kota wajib diisi" },
|
||||
kecamatan_id: { required: "Kecamatan wajib diisi" },
|
||||
desa_kelurahan_id: { required: "Desa/Kelurahan wajib diisi" },
|
||||
jumlah_tanaman: { required: "Jumlah tanaman wajib diisi" },
|
||||
umur_lahan: { required: "Umur lahan wajib diisi", number: "Umur lahan harus berupa angka", min: "Umur lahan minimal 1 tahun" },
|
||||
umur_tanaman: { required: "Umur tanaman wajib diisi", number: "Umur tanaman harus berupa angka", min: "Umur tanaman minimal 1 tahun" },
|
||||
kondisi_tanaman: { required: "Kondisi tanaman wajib diisi" },
|
||||
},
|
||||
errorElement: 'div',
|
||||
errorPlacement: function (error, element) {
|
||||
|
||||
@@ -107,12 +107,12 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-3 form-control-validation">
|
||||
<label class="form-label">Kondisi Umum Tanaman {{ $lahanSelected->kondisi_tanaman }}</label>
|
||||
<label class="form-label">Kondisi Umum 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->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>
|
||||
<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>
|
||||
</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->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>
|
||||
<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>
|
||||
</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->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>
|
||||
<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>
|
||||
</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->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>
|
||||
<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>
|
||||
</select>
|
||||
@error('keparahan_serangan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
@@ -242,8 +242,8 @@
|
||||
|
||||
<div class="row mt-3">
|
||||
<div class="col-12 text-end">
|
||||
<button type="reset" class="btn btn-label-secondary me-2">Reset</button>
|
||||
<button type="submit" class="btn btn-primary"><i class="ti tabler-device-floppy me-2"></i> Simpan Data</button>
|
||||
<a href="{{ route('petani.index') }}" class="btn btn-secondary me-2 wave-effect wave-light">Kembali</a>
|
||||
<button type="submit" class="btn btn-success data-submit wave-effect wave-light"><i class="ti tabler-device-floppy me-2"></i> Simpan Lahan</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user