fix(master-land): fix update function
This commit is contained in:
parent
2c933d6a02
commit
c849014664
|
@ -112,36 +112,23 @@ public function edit($id)
|
|||
{
|
||||
$land = Land::with('detailLands')->findOrFail($id);
|
||||
$provinces = Province::all();
|
||||
return view('master-data.lahan.edit', compact('id', 'provinces', 'land',));
|
||||
$landDetails = $land->detailLands->map(function ($detail) {
|
||||
return [
|
||||
'lat' => $detail->lat,
|
||||
'lng' => $detail->lng,
|
||||
];
|
||||
});
|
||||
return view('master-data.lahan.edit', compact('id', 'provinces', 'land', 'landDetails'));
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
|
||||
$customMessage = [
|
||||
'owner.required' => 'Nama pemilik wajib diisi',
|
||||
'owner.max' => 'Nama pemilik maksimal 25 karakter',
|
||||
'owner.string' => 'Nama pemilik 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',
|
||||
|
||||
|
@ -160,51 +147,54 @@ public function update(Request $request, $id)
|
|||
|
||||
'lng.required' => 'Longitude wajib diisi',
|
||||
'lng.numeric' => 'Longitude harus berupa angka',
|
||||
];
|
||||
|
||||
$request->merge([
|
||||
'rental_price' => str_replace('.', '', $request->rental_price),
|
||||
]);
|
||||
'polygon.required' => 'Petak lahan wajib digambar',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'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',
|
||||
'address' => 'required|string|max:100',
|
||||
'lat' => 'required|numeric',
|
||||
'lng' => 'required|numeric',
|
||||
'polygon' => 'required',
|
||||
], $customMessage);
|
||||
|
||||
$polygon = json_decode($request->polygon, true);
|
||||
|
||||
if ($validator->fails()) {
|
||||
toast($validator->messages()->all()[0], 'error')->position('top')->autoclose(3000);
|
||||
return redirect()->back()->withInput();
|
||||
}
|
||||
|
||||
$land = Land::find($id);
|
||||
$land->land_name = $request->land_name;
|
||||
$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->province_code = $request->province_id;
|
||||
$land->regency_code = $request->regency_id;
|
||||
$land->district_code = $request->district_id;
|
||||
$land->address = $request->address;
|
||||
$land->latitude = $request->lat;
|
||||
$land->longitude = $request->lng;
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
$land = Land::findOrFail($id);
|
||||
$land->owner = $request->owner;
|
||||
$land->province_code = $request->province_id;
|
||||
$land->regency_code = $request->regency_id;
|
||||
$land->district_code = $request->district_id;
|
||||
$land->address = $request->address;
|
||||
$land->latitude = $request->lat;
|
||||
$land->longitude = $request->lng;
|
||||
$land->save();
|
||||
|
||||
LandDetails::where('land_id', $land->id)->delete();
|
||||
|
||||
foreach ($polygon as $point) {
|
||||
$landDetails = new LandDetails();
|
||||
$landDetails->land_id = $land->id;
|
||||
$landDetails->lat = $point['lat'];
|
||||
$landDetails->lng = $point['lng'];
|
||||
$landDetails->save();
|
||||
}
|
||||
DB::commit();
|
||||
toast('Data berhasil diubah', 'success')->position('top-right')->autoclose(3000);
|
||||
return redirect()->back();
|
||||
} catch (\Throwable $th) {
|
||||
DB::rollBack();
|
||||
toast('Terjadi kesalahan', 'error')->position('top')->autoclose(3000);
|
||||
return redirect()->back();
|
||||
}
|
||||
|
|
|
@ -25,9 +25,12 @@ var addressEditField = formEdit.querySelector("#address-edit-field");
|
|||
var mapEditConatiner = formEdit.querySelector("#map-edit-container");
|
||||
var latEditField = formEdit.querySelector("#lat-edit");
|
||||
var lngEditField = formEdit.querySelector("#lng-edit");
|
||||
var polygonField = formEdit.querySelector("#polygon-edit");
|
||||
|
||||
let latDb = formEdit.querySelector("#lat-db").dataset.lat;
|
||||
let lngDb = formEdit.querySelector("#lng-db").dataset.lng;
|
||||
let polygonDb = formEdit.querySelector("#polygon-db");
|
||||
let polygonData = polygonDb.getAttribute("data-polygon");
|
||||
|
||||
var loadingEdit = formEdit.querySelector("#loading-edit");
|
||||
var btnEditContainer = formEdit.querySelector("#edit-footer");
|
||||
|
@ -289,6 +292,17 @@ function setMapEdit() {
|
|||
btnEditContainer.style.display = "block";
|
||||
mapEdit.setView([latDb, lngDb], 16);
|
||||
|
||||
if (polygonData) {
|
||||
let coordinates = JSON.parse(polygonData);
|
||||
console.log("Polygon Data:", coordinates);
|
||||
|
||||
let latlngs = coordinates.map((point) => [point.lat, point.lng]);
|
||||
let polygon = L.polygon(latlngs, { color: "blue" }).addTo(mapEdit);
|
||||
drawnItems.addLayer(polygon);
|
||||
mapEdit.fitBounds(polygon.getBounds());
|
||||
polygonField.value = JSON.stringify(coordinates);
|
||||
}
|
||||
|
||||
if (currentMarkerEdit) {
|
||||
mapEdit.removeLayer(currentMarkerEdit);
|
||||
}
|
||||
|
@ -314,144 +328,123 @@ function setMapEdit() {
|
|||
.openPopup();
|
||||
}
|
||||
|
||||
async function updateData(data) {
|
||||
const land = data.land;
|
||||
const userRole = data.role;
|
||||
// async function updateData(data) {
|
||||
// const land = data.land;
|
||||
// const userRole = data.role;
|
||||
|
||||
var ownerEditField = formEdit.querySelector("#owner-edit-field");
|
||||
var noHpEditField = formEdit.querySelector("#nohp-edit-field");
|
||||
var rentalPriceEditField = formEdit.querySelector(
|
||||
"#rentalprice-edit-field"
|
||||
);
|
||||
var rentalStartEditField = formEdit.querySelector(
|
||||
"#rentalstart-edit-field"
|
||||
);
|
||||
var rentalUntilEditField = formEdit.querySelector(
|
||||
"#rentaluntil-edit-field"
|
||||
);
|
||||
var landNameEditField = formEdit.querySelector("#landname-edit-field");
|
||||
var provinceEditField = formEdit.querySelector("#province-edit-field");
|
||||
var provinceEditVal = new Choices(provinceEditField);
|
||||
// var ownerEditField = formEdit.querySelector("#owner-edit-field");
|
||||
// var provinceEditField = formEdit.querySelector("#province-edit-field");
|
||||
// var provinceEditVal = new Choices(provinceEditField);
|
||||
|
||||
let rentalPrice = new Intl.NumberFormat("id-ID", {
|
||||
style: "currency",
|
||||
currency: "IDR",
|
||||
minimumFractionDigits: 0,
|
||||
}).format(land.rental_price);
|
||||
// ownerEditField.value = land.owner;
|
||||
// provinceEditField.value = land.province_code;
|
||||
// try {
|
||||
// const province = await getProvinces(land.province_code);
|
||||
// provinceEditVal.setChoices([
|
||||
// {
|
||||
// value: province.id,
|
||||
// label: province.name,
|
||||
// selected: true,
|
||||
// disabled: true,
|
||||
// },
|
||||
// ]);
|
||||
|
||||
ownerEditField.value = land.owner;
|
||||
noHpEditField.value = land.no_hp;
|
||||
rentalPriceEditField.value = rentalPrice.replace(/Rp\s?/g, "").trim();
|
||||
rentalStartEditField.value = land.rental_start;
|
||||
rentalUntilEditField.value = land.rental_until;
|
||||
landNameEditField.value = land.land_name;
|
||||
provinceEditField.value = land.province_code;
|
||||
try {
|
||||
const province = await getProvinces(land.province_code);
|
||||
provinceEditVal.setChoices([
|
||||
{
|
||||
value: province.id,
|
||||
label: province.name,
|
||||
selected: true,
|
||||
disabled: true,
|
||||
},
|
||||
]);
|
||||
// $.ajax({
|
||||
// type: "GET",
|
||||
// url: "/location/get-regency/" + land.province_code,
|
||||
// success: function (response) {
|
||||
// if (response.success) {
|
||||
// const dataRegencies = response.data;
|
||||
// const regencies = response.data.find(
|
||||
// (regency) => regency.id === parseInt(land.regency_code)
|
||||
// );
|
||||
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "/location/get-regency/" + land.province_code,
|
||||
success: function (response) {
|
||||
if (response.success) {
|
||||
const dataRegencies = response.data;
|
||||
const regencies = response.data.find(
|
||||
(regency) => regency.id === parseInt(land.regency_code)
|
||||
);
|
||||
// regencyEditVal.setChoices([
|
||||
// {
|
||||
// value: regencies.id,
|
||||
// label: regencies.name,
|
||||
// selected: true,
|
||||
// disabled: true,
|
||||
// },
|
||||
// ]);
|
||||
|
||||
regencyEditVal.setChoices([
|
||||
{
|
||||
value: regencies.id,
|
||||
label: regencies.name,
|
||||
selected: true,
|
||||
disabled: true,
|
||||
},
|
||||
]);
|
||||
// if (Array.isArray(dataRegencies)) {
|
||||
// regencyEditVal.setChoices(
|
||||
// dataRegencies.map((regency) => ({
|
||||
// value: regency.id,
|
||||
// label: regency.name,
|
||||
// selected: false,
|
||||
// disabled: false,
|
||||
// }))
|
||||
// );
|
||||
// } else {
|
||||
// mapEditConatiner.style.display = "block";
|
||||
// mapEditConatiner.innerHTML =
|
||||
// "<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// });
|
||||
|
||||
if (Array.isArray(dataRegencies)) {
|
||||
regencyEditVal.setChoices(
|
||||
dataRegencies.map((regency) => ({
|
||||
value: regency.id,
|
||||
label: regency.name,
|
||||
selected: false,
|
||||
disabled: false,
|
||||
}))
|
||||
);
|
||||
} else {
|
||||
mapEditConatiner.style.display = "block";
|
||||
mapEditConatiner.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
// $.ajax({
|
||||
// type: "GET",
|
||||
// url: "/location/get-district/" + land.regency_code,
|
||||
// success: function (response) {
|
||||
// if (response.success) {
|
||||
// const dataDistricts = response.data;
|
||||
// const districts = response.data.find(
|
||||
// (district) =>
|
||||
// district.id === parseInt(land.district_code)
|
||||
// );
|
||||
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "/location/get-district/" + land.regency_code,
|
||||
success: function (response) {
|
||||
if (response.success) {
|
||||
const dataDistricts = response.data;
|
||||
const districts = response.data.find(
|
||||
(district) =>
|
||||
district.id === parseInt(land.district_code)
|
||||
);
|
||||
// districtEditVal.setChoices([
|
||||
// {
|
||||
// value: districts.id,
|
||||
// label: districts.name,
|
||||
// selected: true,
|
||||
// disabled: true,
|
||||
// },
|
||||
// ]);
|
||||
|
||||
districtEditVal.setChoices([
|
||||
{
|
||||
value: districts.id,
|
||||
label: districts.name,
|
||||
selected: true,
|
||||
disabled: true,
|
||||
},
|
||||
]);
|
||||
// if (Array.isArray(dataDistricts)) {
|
||||
// districtEditVal.setChoices(
|
||||
// dataDistricts.map((district) => ({
|
||||
// value: district.id,
|
||||
// label: district.name,
|
||||
// selected: false,
|
||||
// disabled: false,
|
||||
// }))
|
||||
// );
|
||||
// } else {
|
||||
// mapEditConatiner.style.display = "block";
|
||||
// mapEditConatiner.innerHTML =
|
||||
// "<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// });
|
||||
|
||||
if (Array.isArray(dataDistricts)) {
|
||||
districtEditVal.setChoices(
|
||||
dataDistricts.map((district) => ({
|
||||
value: district.id,
|
||||
label: district.name,
|
||||
selected: false,
|
||||
disabled: false,
|
||||
}))
|
||||
);
|
||||
} else {
|
||||
mapEditConatiner.style.display = "block";
|
||||
mapEditConatiner.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
// addressEditContainer.style.display = "block";
|
||||
// addressEditField.value = land.address;
|
||||
|
||||
addressEditContainer.style.display = "block";
|
||||
addressEditField.value = land.address;
|
||||
// mapEdit.setView([land.latitude, land.longitude], 16);
|
||||
// currentMarkerEdit
|
||||
// .setLatLng([land.latitude, land.longitude])
|
||||
// .openPopup();
|
||||
|
||||
mapEdit.setView([land.latitude, land.longitude], 16);
|
||||
currentMarkerEdit
|
||||
.setLatLng([land.latitude, land.longitude])
|
||||
.openPopup();
|
||||
// latEditField.value = land.latitude;
|
||||
// lngEditField.value = land.longitude;
|
||||
// polygonField.value = land.polygon;
|
||||
|
||||
latEditField.value = land.latitude;
|
||||
lngEditField.value = land.longitude;
|
||||
|
||||
if (userRole === "admin") {
|
||||
formEdit.action = "/data-lahan/" + land.id;
|
||||
} else {
|
||||
formEdit.action = "/data-lahan-petugas/" + land.id;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
// if (userRole === "admin") {
|
||||
// formEdit.action = "/data-lahan/" + land.id;
|
||||
// } else {
|
||||
// formEdit.action = "/data-lahan-petugas/" + land.id;
|
||||
// }
|
||||
// } catch (error) {
|
||||
// console.log(error);
|
||||
// }
|
||||
// }
|
||||
|
||||
function handleDrawCreated(e) {
|
||||
var layer = e.layer;
|
||||
|
@ -461,7 +454,7 @@ function handleDrawCreated(e) {
|
|||
polygonField.value = JSON.stringify(coordinates);
|
||||
|
||||
layer.bindPopup("<b>Petak Lahan Berhasil Dibuat!</b>").openPopup();
|
||||
btnContainer.style.display = "block";
|
||||
btnEditContainer.style.display = "block";
|
||||
}
|
||||
|
||||
function handleDrawEdited(e) {
|
||||
|
|
|
@ -44,7 +44,8 @@
|
|||
<h4 class="card-title mb-0">Edit Data Lahan</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="edit-form" action="" method="POST" class="needs-validation" novalidate>
|
||||
<form id="edit-form" action="{{ route('master_data.lahan.update', $land->id) }}" method="POST"
|
||||
class="needs-validation" novalidate>
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="modal-body">
|
||||
|
@ -139,15 +140,21 @@
|
|||
<input type="hidden" name="lng" id="lng-edit" class="form-control"
|
||||
readonly>
|
||||
|
||||
<input type="hidden" name="polygon" id="polygon-edit" class="form-control"
|
||||
readonly>
|
||||
|
||||
<input type="hidden" id="lat-db" data-lat={{ $land->latitude }}>
|
||||
<input type="hidden" id="lng-db" data-lng={{ $land->longitude }}>
|
||||
|
||||
<input type="hidden" id="polygon-db"
|
||||
data-polygon="{{ json_encode($landDetails) }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer" id="edit-footer">
|
||||
<div class="hstack gap-2 justify-content-end">
|
||||
<button type="button" class="btn btn-light"
|
||||
data-bs-dismiss="modal">Tutup</button>
|
||||
<a href="{{ route('master_data.lahan.index') }}"
|
||||
class="btn btn-light">Kembali</a>
|
||||
<button type="submit" class="btn btn-success" id="edit-btn">Update</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue