fix(master-land): fix function store
This commit is contained in:
parent
ef8b638857
commit
73c1dc43a6
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -10,9 +10,5 @@ class Land extends Model
|
|||
use HasFactory;
|
||||
|
||||
protected $table = 'land';
|
||||
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'description',
|
||||
];
|
||||
protected $guarded = [];
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ public function run(): void
|
|||
UsersSeeder::class,
|
||||
ProvinceSeeder::class,
|
||||
RegenciesSeeder::class,
|
||||
// LandSeeder::class,
|
||||
LandSeeder::class,
|
||||
IndicatorSeeder::class,
|
||||
RuleSeeder::class
|
||||
]);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
|||
`<div class="text-center"><b>Anda berada di sini</b><br />Silahkan priksa lokasi petamu sudah benar.</div>`
|
||||
)
|
||||
.openPopup();
|
||||
|
||||
latField.value = lat;
|
||||
lngField.value = lng;
|
||||
},
|
||||
function (error) {
|
||||
alert("Error: " + error.message);
|
||||
|
|
|
@ -173,7 +173,7 @@ class="fw-medium link-primary">#VZ2101</a></td>
|
|||
<label for="rentalprice-field" class="form-label">Harga Sewa</label>
|
||||
<input type="text" id="rentalprice-field" class="form-control"
|
||||
name="rental_price" value="{{ old('rental_price') }}"
|
||||
placeholder="Masukan Harga Sewa" required />
|
||||
placeholder="Masukan Harga Sewa" required oninput="validatePrice(this)" />
|
||||
<div class="invalid-feedback">
|
||||
Masukan Harga Sewa
|
||||
</div>
|
||||
|
@ -264,14 +264,14 @@ class="fw-medium link-primary">#VZ2101</a></td>
|
|||
|
||||
<div class="mt-3">
|
||||
<input type="hidden" name="lat" id="lat" class="form-control"
|
||||
readonly disabled>
|
||||
readonly>
|
||||
<input type="hidden" name="lng" id="lng" class="form-control"
|
||||
readonly disabled>
|
||||
readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="hstack gap-2 justify-content-end" id="btn-container" style="display: none">
|
||||
<div class="modal-footer" id="add-footer" style="display: none">
|
||||
<div class="hstack gap-2 justify-content-end">
|
||||
<button type="button" class="btn btn-light" data-bs-dismiss="modal">Tutup</button>
|
||||
<button type="submit" class="btn btn-success" id="add-btn">Simpan</button>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue