diff --git a/app/owner/properties/add/page.js b/app/owner/properties/add/page.js index 357b4d3..654dd6a 100644 --- a/app/owner/properties/add/page.js +++ b/app/owner/properties/add/page.js @@ -227,7 +227,6 @@ export default function AddPropertyPage() { }; useEffect(() => { - // Fetch available currencies getCurrencies().then((data) => { if (Array.isArray(data) && data.length > 0) { setCurrencies(data); @@ -278,7 +277,7 @@ export default function AddPropertyPage() { }; const handleGeolocation = () => { -if (!navigator.geolocation) { + if (!navigator.geolocation) { toast.error(t('toast.geolocationNotSupported')); return; } @@ -291,7 +290,7 @@ if (!navigator.geolocation) { setMapCenter([latitude, longitude]); setMapZoom(18); -try { + try { const response = await fetch( `https://nominatim.openstreetmap.org/reverse?format=json&lat=${latitude}&lon=${longitude}&accept-language=ar` ); @@ -319,57 +318,59 @@ try { ); }; -const handleMapClick = async (coords) => { - try { - const [lat, lng] = coords; - - toast.loading(t('addProperty.locationSelecting'), { id: 'location' }); - -const response = await fetch( - `https://nominatim.openstreetmap.org/reverse?format=json&lat=${lat}&lon=${lng}&accept-language=ar` - ); - const data = await response.json(); - - setSelectedLocation({ - lat: lat, - lng: lng, + const handleMapClick = async (coords) => { + try { + const [lat, lng] = coords; + + toast.loading(t('addProperty.locationSelecting'), { id: 'location' }); + + const response = await fetch( + `https://nominatim.openstreetmap.org/reverse?format=json&lat=${lat}&lon=${lng}&accept-language=ar` + ); + const data = await response.json(); + + setSelectedLocation({ + lat: lat, + lng: lng, + address: data.display_name || t('addProperty.defaultAddress') + }); + + setMapZoom(18); + toast.success(t('toast.locationSelectedSuccess'), { id: 'location' }); + + } catch (error) { + console.error(t('addProperty.locationError'), error); + const [lat, lng] = coords; + setSelectedLocation({ + lat: lat, + lng: lng, + address: t('addProperty.defaultAddress') + }); + setMapZoom(18); + toast.success(t('toast.locationConfirmed'), { id: 'location' }); + } + }; + + const handleMarkerDragEnd = async (lat, lng) => { + try { + const response = await fetch( + `https://nominatim.openstreetmap.org/reverse?format=json&lat=${lat}&lon=${lng}&accept-language=ar` + ); + const data = await response.json(); + setSelectedLocation({ + lat, + lng, address: data.display_name || t('addProperty.defaultAddress') - }); - - setMapZoom(18); - toast.success(t('toast.locationSelectedSuccess'), { id: 'location' }); - - } catch (error) { - console.error(t('addProperty.locationError'), error); - const [lat, lng] = coords; - setSelectedLocation({ - lat: lat, - lng: lng, - address: t('addProperty.defaultAddress') - }); - setMapZoom(18); - toast.success(t('toast.locationConfirmed'), { id: 'location' }); - } -}; -const handleMarkerDragEnd = async (lat, lng) => { - try { - const response = await fetch( - `https://nominatim.openstreetmap.org/reverse?format=json&lat=${lat}&lon=${lng}&accept-language=ar` - ); - const data = await response.json(); - setSelectedLocation({ - lat, - lng, - address: data.display_name || t('addProperty.defaultAddress') - }); - } catch (error) { - setSelectedLocation({ - lat, - lng, - address: t('addProperty.defaultAddress') - }); - } -}; + }); + } catch (error) { + setSelectedLocation({ + lat, + lng, + address: t('addProperty.defaultAddress') + }); + } + }; + const confirmLocation = () => { if (selectedLocation) { setFormData({ @@ -414,7 +415,6 @@ const handleMarkerDragEnd = async (lat, lng) => { continue; } - // Show preview const reader = new FileReader(); reader.onloadend = () => { setImagePreviews(prev => [...prev, reader.result]); @@ -426,7 +426,6 @@ const handleMarkerDragEnd = async (lat, lng) => { images: [...prev.images, file] })); - // Upload to server immediately try { const path = await uploadPicture(file); setUploadedImagePaths(prev => [...prev, path]); @@ -648,7 +647,6 @@ const handleMarkerDragEnd = async (lat, lng) => { return; } - // Map UI property type to API BuildingType enum const buildingTypeMap = { apartment: BuildingType.APARTMENT, villa: BuildingType.VILLA, sweet: BuildingType.SWEET, suite: BuildingType.SWEET, room: BuildingType.ROOM, studio: BuildingType.STUDIO, office: BuildingType.OFFICE, farms: BuildingType.FARMS, shop: BuildingType.SHOP, warehouse: BuildingType.WAREHOUSE }; const selectedServices = Object.entries(formData.services) @@ -750,7 +748,7 @@ const handleMarkerDragEnd = async (lat, lng) => { currencyId: selectedCurrencyId, rentType: rentTypeMap[formData.offerType] ?? RentType.MONTHLY, type: formData.furnished ? RentPropertyType.FURNISHED : RentPropertyType.UNFURNISHED, - allowedPaymentPeriod: formData.allowedPaymentPeriod || '', + allowedPaymentPeriod: formData.allowedPaymentPeriod || '1.00:00:00', }); const res = await addRentProperty(payload); toast.success(t('toast.rentPropertySuccess')); @@ -787,7 +785,7 @@ const handleMarkerDragEnd = async (lat, lng) => { )}
- @@ -838,7 +836,7 @@ const handleMarkerDragEnd = async (lat, lng) => {
-