diff --git a/app/owner/properties/add/page.js b/app/owner/properties/add/page.js index f440ec5..341602a 100644 --- a/app/owner/properties/add/page.js +++ b/app/owner/properties/add/page.js @@ -52,7 +52,7 @@ import { Trees } from 'lucide-react'; import toast, { Toaster } from 'react-hot-toast'; -import { addRentProperty, addSaleProperty, getCurrencies, uploadPicture } from '../../../utils/api'; +import { addRentProperty, addSaleProperty, buildRentPropertyPayload, getCurrencies, uploadPicture } from '../../../utils/api'; import { BuildingType, RentPropertyCondition, @@ -683,6 +683,7 @@ const handleMarkerDragEnd = async (lat, lng) => { propertyType: formData.furnished ? RentPropertyCondition.WITH_FURNITURE : RentPropertyCondition.WITHOUT_FURNITURE, documentType: formData.documentType, governorate: formData.city, + city: formData.city, }; try { @@ -696,8 +697,11 @@ const handleMarkerDragEnd = async (lat, lng) => { toast.success(t('toast.salePropertySuccess')); } else { const rentTypeMap = { daily: RentType.DAILY, monthly: RentType.MONTHLY, both: RentType.MONTHLY }; - const payload = { + const payload = buildRentPropertyPayload({ propertyInformation: propInfo, + city: formData.city, + governorate: formData.city, + documentType: formData.documentType, deposit: parseFloat(formData.deposit) || 0, monthlyRent: parseFloat(formData.monthlyPrice) || 0, dailyRent: parseFloat(formData.dailyPrice) || 0, @@ -706,7 +710,7 @@ const handleMarkerDragEnd = async (lat, lng) => { rentType: rentTypeMap[formData.offerType] ?? RentType.MONTHLY, type: formData.furnished ? RentPropertyType.FURNISHED : RentPropertyType.UNFURNISHED, allowedPaymentPeriod: formData.allowedPaymentPeriod || '', - }; + }); const res = await addRentProperty(payload); toast.success(t('toast.rentPropertySuccess')); } diff --git a/app/owner/properties/page.js b/app/owner/properties/page.js index 0435256..ccf5a32 100644 --- a/app/owner/properties/page.js +++ b/app/owner/properties/page.js @@ -56,6 +56,7 @@ import { import toast, { Toaster } from "react-hot-toast"; import AuthService from "../../services/AuthService"; import { + buildRentPropertyPayload, getMyRentListings, getMySaleListings, editRentProperty, @@ -1588,8 +1589,11 @@ export default function OwnerPropertiesPage() { if (formData.purpose === 'rent') { const rentTypeMap = { daily: 1, monthly: 0, both: 0 }; - const payload = { + const payload = buildRentPropertyPayload({ propertyInformation: propInfo, + city: formData.city || property?.city || property?.governorate || "", + governorate: formData.city || property?.city || property?.governorate || "", + documentType: formData.documentType || property?.documentType || "", deposit: parseFloat(formData.deposit) || 0, monthlyRent: parseFloat(formData.monthlyPrice) || 0, dailyRent: parseFloat(formData.dailyPrice) || 0, @@ -1599,7 +1603,7 @@ export default function OwnerPropertiesPage() { rentType: rentTypeMap[formData.rentType] ?? 0, type: formData.furnished ? 0 : 1, allowedPaymentPeriod: formData.allowedPaymentPeriod || '', - }; + }); await editRentProperty(property.id, payload); } else { const payload = { diff --git a/app/utils/api.js b/app/utils/api.js index 1f0ee27..f824624 100644 --- a/app/utils/api.js +++ b/app/utils/api.js @@ -299,10 +299,35 @@ export async function getMyRentListings() { return apiFetch("/RentProperties/GetMyRentListings"); } +export function buildRentPropertyPayload(data = {}) { + const propertyInformation = data?.propertyInformation || {}; + const cityValue = + data?.city ?? + data?.governorate ?? + propertyInformation?.city ?? + propertyInformation?.governorate ?? + ""; + const documentTypeValue = + data?.documentType ?? propertyInformation?.documentType ?? ""; + + return { + ...data, + city: cityValue, + governorate: cityValue, + documentType: documentTypeValue, + propertyInformation: { + ...propertyInformation, + city: cityValue, + governorate: propertyInformation?.governorate ?? cityValue, + documentType: documentTypeValue, + }, + }; +} + export async function addRentProperty(data) { return apiFetch("/RentProperties/AddRentProperty", { method: "POST", - body: data, + body: buildRentPropertyPayload(data), }); }