fix(master-land): fix function update data
This commit is contained in:
parent
2e69c62dbc
commit
9277e72471
|
@ -110,18 +110,62 @@ public function store(Request $request)
|
|||
public function update(Request $request, $id)
|
||||
{
|
||||
$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()) {
|
||||
|
@ -130,8 +174,17 @@ public function update(Request $request, $id)
|
|||
}
|
||||
|
||||
$land = Land::find($id);
|
||||
$land->name = $request->land_name;
|
||||
$land->description = $request->description;
|
||||
$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->latitude = $request->lat;
|
||||
$land->longitude = $request->lng;
|
||||
|
||||
try {
|
||||
$land->save();
|
||||
|
|
|
@ -23,7 +23,7 @@ public function run(): void
|
|||
UsersSeeder::class,
|
||||
ProvinceSeeder::class,
|
||||
RegenciesSeeder::class,
|
||||
LandSeeder::class,
|
||||
// LandSeeder::class,
|
||||
IndicatorSeeder::class,
|
||||
RuleSeeder::class
|
||||
]);
|
||||
|
|
|
@ -3,6 +3,7 @@ var currentMarker,
|
|||
currentMarkerEdit = null;
|
||||
|
||||
var form = document.getElementById("add-form");
|
||||
var formEdit = document.getElementById("edit-form");
|
||||
var provinceField = form.querySelector("#province-field");
|
||||
var provinceVal = new Choices(provinceField);
|
||||
|
||||
|
@ -12,19 +13,37 @@ var regencyVal = new Choices(regencyField, {
|
|||
shouldSort: false,
|
||||
});
|
||||
|
||||
var regencyEditContainer = formEdit.querySelector("#regency-edit-container");
|
||||
var regencyEditField = formEdit.querySelector("#regency-edit-field");
|
||||
var regencyEditVal = new Choices(regencyEditField, {
|
||||
shouldSort: false,
|
||||
});
|
||||
|
||||
var districtContainer = form.querySelector("#district-container");
|
||||
var districtField = form.querySelector("#district-field");
|
||||
var districtVal = new Choices(districtField, {
|
||||
shouldSort: false,
|
||||
});
|
||||
|
||||
var districtEditContainer = formEdit.querySelector("#district-edit-container");
|
||||
var districtEditField = formEdit.querySelector("#district-edit-field");
|
||||
var districtEditVal = new Choices(districtEditField, {
|
||||
shouldSort: false,
|
||||
});
|
||||
|
||||
var mapContainer = form.querySelector("#map-container");
|
||||
var latField = form.querySelector("#lat");
|
||||
var lngField = form.querySelector("#lng");
|
||||
|
||||
var mapEditConatiner = formEdit.querySelector("#map-edit-container");
|
||||
var latEditField = formEdit.querySelector("#lat-edit");
|
||||
var lngEditField = formEdit.querySelector("#lng-edit");
|
||||
|
||||
var loading = form.querySelector("#loading");
|
||||
var loadingEdit = formEdit.querySelector("#loading-edit");
|
||||
|
||||
var btnContainer = form.querySelector("#add-footer");
|
||||
var btnEditContainer = formEdit.querySelector("#edit-footer");
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
map = L.map("map", {
|
||||
|
@ -43,6 +62,22 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
maxZoom: 19,
|
||||
}).addTo(mapEdit);
|
||||
|
||||
var iconMarker = L.icon({
|
||||
iconUrl: "/assets/images/marker.png",
|
||||
iconSize: [50, 50],
|
||||
iconAnchor: [25, 50],
|
||||
popupAnchor: [0, -50],
|
||||
});
|
||||
|
||||
currentMarkerEdit = L.marker([-8.157416852745705, 113.72281580436439], {
|
||||
icon: iconMarker,
|
||||
draggable: true,
|
||||
})
|
||||
.addTo(mapEdit)
|
||||
.bindPopup(
|
||||
`<div class="text-center"><b>Anda berada di sini</b><br />Silahkan priksa lokasi petamu sudah benar.</div>`
|
||||
);
|
||||
|
||||
$("#showModal").on("shown.bs.modal", function () {
|
||||
map.invalidateSize();
|
||||
});
|
||||
|
@ -85,16 +120,24 @@ function showmap(districtId) {
|
|||
function (position) {
|
||||
mapContainer.style.display = "block";
|
||||
map.invalidateSize();
|
||||
|
||||
mapEditConatiner.style.display = "block";
|
||||
mapEdit.invalidateSize();
|
||||
|
||||
btnContainer.style.display = "block";
|
||||
btnEditContainer.style.display = "block";
|
||||
|
||||
var lat = position.coords.latitude;
|
||||
var lng = position.coords.longitude;
|
||||
|
||||
console.log(lat, lng);
|
||||
|
||||
map.setView([lat, lng], 16);
|
||||
mapEdit.setView([lat, lng], 16);
|
||||
|
||||
if (currentMarker) {
|
||||
if (currentMarker || currentMarkerEdit) {
|
||||
map.removeLayer(currentMarker);
|
||||
mapEdit.removeLayer(currentMarkerEdit);
|
||||
}
|
||||
|
||||
var iconMarker = L.icon({
|
||||
|
@ -109,7 +152,13 @@ function showmap(districtId) {
|
|||
draggable: true,
|
||||
}).addTo(map);
|
||||
|
||||
currentMarkerEdit = L.marker([lat, lng], {
|
||||
icon: iconMarker,
|
||||
draggable: true,
|
||||
}).addTo(mapEdit);
|
||||
|
||||
currentMarker.on("dragend", onMapDragend);
|
||||
currentMarkerEdit.on("dragend", onMapDragend);
|
||||
|
||||
currentMarker
|
||||
.bindPopup(
|
||||
|
@ -117,8 +166,17 @@ function showmap(districtId) {
|
|||
)
|
||||
.openPopup();
|
||||
|
||||
currentMarkerEdit
|
||||
.bindPopup(
|
||||
`<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;
|
||||
|
||||
latEditField.value = lat;
|
||||
lngEditField.value = lng;
|
||||
},
|
||||
function (error) {
|
||||
alert("Error: " + error.message);
|
||||
|
@ -187,9 +245,13 @@ function getProvinces(provinceId) {
|
|||
|
||||
function getRegencies(provinceId) {
|
||||
regencyContainer.style.display = "none";
|
||||
regencyEditContainer.style.display = "none";
|
||||
districtContainer.style.display = "none";
|
||||
districtEditContainer.style.display = "none";
|
||||
loading.style.display = "block";
|
||||
loadingEdit.style.display = "block";
|
||||
mapContainer.style.display = "none";
|
||||
mapEditConatiner.style.display = "none";
|
||||
|
||||
const url = "/location/get-regency/" + provinceId;
|
||||
$.ajax({
|
||||
|
@ -198,11 +260,15 @@ function getRegencies(provinceId) {
|
|||
success: function (response) {
|
||||
if (response.success) {
|
||||
loading.style.display = "none";
|
||||
loadingEdit.style.display = "none";
|
||||
const data = response.data;
|
||||
|
||||
regencyVal.clearStore();
|
||||
regencyVal.clearChoices();
|
||||
|
||||
regencyEditVal.clearStore();
|
||||
regencyEditVal.clearChoices();
|
||||
|
||||
regencyVal.value = "";
|
||||
regencyVal.setChoices([
|
||||
{
|
||||
|
@ -213,6 +279,16 @@ function getRegencies(provinceId) {
|
|||
},
|
||||
]);
|
||||
|
||||
regencyEditVal.value = "";
|
||||
regencyEditVal.setChoices([
|
||||
{
|
||||
value: "",
|
||||
label: "Pilih Kabupaten",
|
||||
selected: true,
|
||||
disabled: true,
|
||||
},
|
||||
]);
|
||||
|
||||
if (Array.isArray(data)) {
|
||||
regencyVal.setChoices(
|
||||
data.map((regency) => ({
|
||||
|
@ -222,11 +298,25 @@ function getRegencies(provinceId) {
|
|||
disabled: false,
|
||||
}))
|
||||
);
|
||||
|
||||
regencyEditVal.setChoices(
|
||||
data.map((regency) => ({
|
||||
value: regency.id,
|
||||
label: regency.name,
|
||||
selected: false,
|
||||
disabled: false,
|
||||
}))
|
||||
);
|
||||
regencyContainer.style.display = "block";
|
||||
regencyEditContainer.style.display = "block";
|
||||
} else {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
|
||||
mapEditConatiner.style.display = "block";
|
||||
mapEditConatiner.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -234,14 +324,21 @@ function getRegencies(provinceId) {
|
|||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
|
||||
mapEditConatiner.style.display = "block";
|
||||
mapEditConatiner.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function getDistricts(regencyId) {
|
||||
districtContainer.style.display = "none";
|
||||
districtEditContainer.style.display = "none";
|
||||
loading.style.display = "block";
|
||||
loadingEdit.style.display = "block";
|
||||
mapContainer.style.display = "none";
|
||||
mapEditConatiner.style.display = "none";
|
||||
|
||||
const url = "/location/get-district/" + regencyId;
|
||||
$.ajax({
|
||||
|
@ -250,11 +347,15 @@ function getDistricts(regencyId) {
|
|||
success: function (response) {
|
||||
if (response.success) {
|
||||
loading.style.display = "none";
|
||||
loadingEdit.style.display = "none";
|
||||
const data = response.data;
|
||||
|
||||
districtVal.clearStore();
|
||||
districtVal.clearChoices();
|
||||
|
||||
districtEditVal.clearStore();
|
||||
districtEditVal.clearChoices();
|
||||
|
||||
districtVal.value = "";
|
||||
districtVal.setChoices([
|
||||
{
|
||||
|
@ -265,6 +366,16 @@ function getDistricts(regencyId) {
|
|||
},
|
||||
]);
|
||||
|
||||
districtEditVal.value = "";
|
||||
districtEditVal.setChoices([
|
||||
{
|
||||
value: "",
|
||||
label: "Pilih Kecamatan",
|
||||
selected: true,
|
||||
disabled: true,
|
||||
},
|
||||
]);
|
||||
|
||||
if (Array.isArray(data)) {
|
||||
districtVal.setChoices(
|
||||
data.map((district) => ({
|
||||
|
@ -274,11 +385,24 @@ function getDistricts(regencyId) {
|
|||
disabled: false,
|
||||
}))
|
||||
);
|
||||
|
||||
districtEditVal.setChoices(
|
||||
data.map((district) => ({
|
||||
value: district.id,
|
||||
label: district.name,
|
||||
selected: false,
|
||||
disabled: false,
|
||||
}))
|
||||
);
|
||||
districtContainer.style.display = "block";
|
||||
districtEditContainer.style.display = "block";
|
||||
} else {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
mapEditConatiner.style.display = "block";
|
||||
mapEditConatiner.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -286,24 +410,29 @@ function getDistricts(regencyId) {
|
|||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
|
||||
mapEditConatiner.style.display = "block";
|
||||
mapEditConatiner.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async function updateData(land) {
|
||||
var form = document.getElementById("edit-form");
|
||||
var ownerEditField = form.querySelector("#owner-edit-field");
|
||||
var noHpEditField = form.querySelector("#nohp-edit-field");
|
||||
var rentalPriceEditField = form.querySelector("#rentalprice-edit-field");
|
||||
var rentalStartEditField = form.querySelector("#rentalstart-edit-field");
|
||||
var rentalUntilEditField = form.querySelector("#rentaluntil-edit-field");
|
||||
var landNameEditField = form.querySelector("#landname-edit-field");
|
||||
var provinceEditField = form.querySelector("#province-edit-field");
|
||||
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 regencyEditField = form.querySelector("#regency-edit-field");
|
||||
var districtEditField = form.querySelector("#district-edit-field");
|
||||
var latEditField = form.querySelector("#lat-edit");
|
||||
var lngEditField = form.querySelector("#lng-edit");
|
||||
|
||||
let rentalPrice = new Intl.NumberFormat("id-ID", {
|
||||
style: "currency",
|
||||
|
@ -318,6 +447,104 @@ async function updateData(land) {
|
|||
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)
|
||||
);
|
||||
|
||||
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>";
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
$.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,
|
||||
},
|
||||
]);
|
||||
|
||||
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>";
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
mapEdit.setView([land.latitude, land.longitude], 16);
|
||||
currentMarkerEdit
|
||||
.setLatLng([land.latitude, land.longitude])
|
||||
.openPopup();
|
||||
|
||||
latEditField.value = land.latitude;
|
||||
lngEditField.value = land.longitude;
|
||||
|
||||
formEdit.action = "/data-lahan/" + land.id;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
|
||||
function deleteData(id) {
|
||||
|
|
|
@ -9,11 +9,13 @@
|
|||
#map {
|
||||
height: 200px;
|
||||
width: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#map-edit {
|
||||
height: 200px;
|
||||
width: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
|
Loading…
Reference in New Issue