From 73c1dc43a6ce11f6085dd54536f46a370d8c594c Mon Sep 17 00:00:00 2001 From: arieeefajar Date: Sat, 15 Feb 2025 17:13:18 +0700 Subject: [PATCH] fix(master-land): fix function store --- .../Controllers/MasterData/LandController.php | 74 ++++++++++++++++--- app/Models/Land.php | 6 +- .../2025_01_28_065420_create_land_table.php | 2 + database/seeders/DatabaseSeeder.php | 2 +- database/seeders/LandSeeder.php | 16 ++-- .../pages/customJs/master-data/lahan/index.js | 16 +++- .../views/master-data/lahan/index.blade.php | 10 +-- 7 files changed, 95 insertions(+), 31 deletions(-) diff --git a/app/Http/Controllers/MasterData/LandController.php b/app/Http/Controllers/MasterData/LandController.php index 72acbe1..01b2d7e 100644 --- a/app/Http/Controllers/MasterData/LandController.php +++ b/app/Http/Controllers/MasterData/LandController.php @@ -20,18 +20,62 @@ public function index() public function store(Request $request) { $customMessage = [ - 'name.required' => 'Nama wajib diisi', - 'name.max' => 'Nama maksimal 255 karakter', - 'name.string' => 'Nama harus berupa string', + 'owner.required' => 'Nama pemilik wajib diisi', + 'owner.max' => 'Nama pemilik maksimal 25 karakter', + 'owner.string' => 'Nama pemilik harus berupa string', - 'description.required' => 'Deskripsi wajib diisi', - 'description.max' => 'Deskripsi maksimal 255 karakter', - 'description.string' => 'Deskripsi harus berupa string', + 'nohp.required' => 'Nomor HP wajib diisi', + 'nohp.min' => 'Nomor HP minimal 10 karakter', + 'nohp.max' => 'Nomor HP maksimal 13 karakter', + 'nohp.string' => 'Nomor HP harus berupa string', + + 'rental_price.required' => 'Harga sewa wajib diisi', + 'rental_price.numeric' => 'Harga sewa harus berupa angka', + + 'rental_start.required' => 'Tanggal mulai sewa wajib diisi', + 'rental_start.date' => 'Tanggal mulai sewa harus berupa tanggal', + 'rental_start.after_or_equal' => 'Tanggal mulai sewa harus hari ini atau setelahnya', + + 'rental_until.required' => 'Tanggal sampai sewa wajib diisi', + 'rental_until.date' => 'Tanggal sampai sewa harus berupa tanggal', + 'rental_until.after_or_equal' => 'Tanggal sampai sewa harus sama atau lebih besar dari tanggal mulai sewa', + + 'land_name.required' => 'Nama lahan wajib diisi', + 'land_name.max' => 'Nama lahan maksimal 25 karakter', + 'land_name.string' => 'Nama lahan harus berupa string', + + 'province_id.required' => 'Provinsi wajib diisi', + 'province_id.exists' => 'Provinsi tidak ditemukan', + + 'regency_id.required' => 'Kota wajib diisi', + 'regency_id.exists' => 'Kota tidak ditemukan', + + 'district_id.required' => 'Kecamatan wajib diisi', + 'district_id.exists' => 'Kecamatan tidak ditemukan', + + 'lat.required' => 'Latitude wajib diisi', + 'lat.numeric' => 'Latitude harus berupa angka', + + 'lng.required' => 'Longitude wajib diisi', + 'lng.numeric' => 'Longitude harus berupa angka', ]; + $request->merge([ + 'rental_price' => str_replace('.', '', $request->rental_price), + ]); + $validator = Validator::make($request->all(), [ - 'land_name' => 'required|string|max:255', - 'description' => 'required|string|max:255', + 'owner' => 'required|string|max:25', + 'nohp' => 'required|string|min:10|max:13', + 'rental_price' => 'required|numeric', + 'rental_start' => 'required|date|after_or_equal:today', + 'rental_until' => 'required|date|after_or_equal:rental_start', + 'land_name' => 'required|string|max:25', + 'province_id' => 'required|exists:provinces,id', + 'regency_id' => 'required|exists:regencies,id', + 'district_id' => 'required|exists:districts,id', + 'lat' => 'required|numeric', + 'lng' => 'required|numeric', ], $customMessage); if ($validator->fails()) { @@ -40,14 +84,24 @@ public function store(Request $request) } $land = new Land(); - $land->name = $request->land_name; - $land->description = $request->description; + $land->owner = $request->owner; + $land->no_hp = $request->nohp; + $land->rental_price = $request->rental_price; + $land->rental_start = $request->rental_start; + $land->rental_until = $request->rental_until; + $land->land_name = $request->land_name; + $land->province_code = $request->province_id; + $land->regency_code = $request->regency_id; + $land->district_code = $request->district_id; + $land->latitude = $request->lat; + $land->longitude = $request->lng; try { $land->save(); toast('Data berhasil disimpan', 'success')->position('top-right')->autoclose(3000); return redirect()->back(); } catch (\Throwable $th) { + dd($th->getMessage()); toast('Terjadi kesalahan', 'error')->position('top')->autoclose(3000); return redirect()->back(); } diff --git a/app/Models/Land.php b/app/Models/Land.php index 558005f..68e0511 100644 --- a/app/Models/Land.php +++ b/app/Models/Land.php @@ -10,9 +10,5 @@ class Land extends Model use HasFactory; protected $table = 'land'; - - protected $fillable = [ - 'name', - 'description', - ]; + protected $guarded = []; } diff --git a/database/migrations/2025_01_28_065420_create_land_table.php b/database/migrations/2025_01_28_065420_create_land_table.php index 70a2f48..c3f7688 100644 --- a/database/migrations/2025_01_28_065420_create_land_table.php +++ b/database/migrations/2025_01_28_065420_create_land_table.php @@ -22,6 +22,8 @@ public function up(): void $table->string('province_code'); $table->string('regency_code'); $table->string('district_code'); + $table->string('latitude'); + $table->string('longitude'); $table->timestamps(); }); } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index e6f96b8..b3e16c6 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -23,7 +23,7 @@ public function run(): void UsersSeeder::class, ProvinceSeeder::class, RegenciesSeeder::class, - // LandSeeder::class, + LandSeeder::class, IndicatorSeeder::class, RuleSeeder::class ]); diff --git a/database/seeders/LandSeeder.php b/database/seeders/LandSeeder.php index 12d5d38..3c488b3 100644 --- a/database/seeders/LandSeeder.php +++ b/database/seeders/LandSeeder.php @@ -13,15 +13,13 @@ class LandSeeder extends Seeder */ public function run(): void { - [ - Land::create([ - 'name' => 'Land 1', - 'description' => 'Land 1 Description', - ]), - Land::create([ - 'name' => 'Land 2', - 'description' => 'Land 2 Description', - ]) + $lands = [ + ['land_name' => 'Lahan 1', 'owner' => 'Pak Lahan 1', 'no_hp' => '08123456789', 'rental_price' => '2000000', 'rental_start' => '2023-05-01', 'rental_until' => '2023-06-30', 'province_code' => '11', 'regency_code' => '1101', 'district_code' => '110101', 'latitude' => '0.0', 'longitude' => '0.0'], + ['land_name' => 'Lahan 2', 'owner' => 'Pak Lahan 2', 'no_hp' => '08123456789', 'rental_price' => '1500000', 'rental_start' => '2023-05-01', 'rental_until' => '2023-06-30', 'province_code' => '11', 'regency_code' => '1101', 'district_code' => '110101', 'latitude' => '0.0', 'longitude' => '0.0'], ]; + + foreach ($lands as $land) { + Land::create($land); + } } } diff --git a/public/assets/js/pages/customJs/master-data/lahan/index.js b/public/assets/js/pages/customJs/master-data/lahan/index.js index ea9a133..bddd6c4 100644 --- a/public/assets/js/pages/customJs/master-data/lahan/index.js +++ b/public/assets/js/pages/customJs/master-data/lahan/index.js @@ -23,7 +23,7 @@ var lngField = form.querySelector("#lng"); var loading = form.querySelector("#loading"); -var btnContainer = form.querySelector("#btn-container"); +var btnContainer = form.querySelector("#add-footer"); document.addEventListener("DOMContentLoaded", function () { // Initialize the first map @@ -53,6 +53,17 @@ function validatePhoneNumber(input) { } } +function validatePrice(input) { + let value = input.value.replace(/\D/g, ""); + let formatted = new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + minimumFractionDigits: 0, + }).format(value); + + input.value = formatted.replace("Rp", "").trim(); +} + function getRegencies(provinceId) { regencyContainer.style.display = "none"; districtContainer.style.display = "none"; @@ -147,6 +158,9 @@ function showmap(districtId) { `
Anda berada di sini
Silahkan priksa lokasi petamu sudah benar.
` ) .openPopup(); + + latField.value = lat; + lngField.value = lng; }, function (error) { alert("Error: " + error.message); diff --git a/resources/views/master-data/lahan/index.blade.php b/resources/views/master-data/lahan/index.blade.php index 17febc1..1161e69 100644 --- a/resources/views/master-data/lahan/index.blade.php +++ b/resources/views/master-data/lahan/index.blade.php @@ -173,7 +173,7 @@ class="fw-medium link-primary">#VZ2101 + placeholder="Masukan Harga Sewa" required oninput="validatePrice(this)" />
Masukan Harga Sewa
@@ -264,14 +264,14 @@ class="fw-medium link-primary">#VZ2101
+ readonly> + readonly>
-