diff --git a/app/owner/properties/add/page.js b/app/owner/properties/add/page.js index 62585af..dc6bbe7 100644 --- a/app/owner/properties/add/page.js +++ b/app/owner/properties/add/page.js @@ -100,6 +100,10 @@ export default function AddPropertyPage() { bedrooms: 1, bathrooms: 1, livingRooms: 1, + floorNumber: '', + salons: '', + balconies: '', + space: '', services: { [PropertyService.ELECTRICITY]: false, @@ -123,6 +127,7 @@ export default function AddPropertyPage() { dailyPrice: '', monthlyPrice: '', + deposit: '', city: '', district: '', @@ -132,7 +137,31 @@ export default function AddPropertyPage() { description: '', - images: [] + images: [], + + nearbySchool: '', + nearbyHospital: '', + nearbyRestaurant: '', + nearbyUniversity: '', + nearbyPark: '', + nearbyMall: '', + + roomAreaType: 'Private room', + roomPeopleAllowed: '', + roomFurniture: '', + roomEntrance: 'Shared entrance', + roomBathroom: 'Shared', + roomKitchen: 'Not available', + roomRestrictedAreas: false, + roomResidents: '', + roomGender: 'Family', + roomLanguage: '', + roomChildren: false, + roomPets: false, + roomDedicatedTo: 'Everyone', + roomVisitors: true, + roomQuietTimes: false, + roomQuietTimesDetails: '', }); const [imagePreviews, setImagePreviews] = useState([]); @@ -559,44 +588,63 @@ const handleMapClick = async (coords) => { .filter(([, v]) => v) .map(([k]) => k); - const detailsJSON = JSON.stringify({ + const details = { + description: formData.description || '', services: selectedServices, - serviceDetails: selectedServices.reduce((acc, s) => ({ ...acc, [s]: 'in general' }), {}), - terms: selectedTerms, + serviceDetails: selectedServices.reduce((acc, s) => ({ ...acc, [s]: formData.serviceDetails[s] || 'in general' }), {}), + terms: selectedTerms.reduce((acc, k) => ({ ...acc, [k]: true }), {}), displayType: formData.offerType === 'both' ? 'Both' : formData.offerType === 'daily' ? 'Daily' : 'Monthly', - propertyCondition: formData.furnished ? 'Furnished' : 'Unfurnished', - photos: imagePreviews.map((_, i) => `photo_${i}.jpg`), - room: { - areaType: formData.propertyType === 'room' ? 'Shared room' : 'Private room', - peopleAllowed: String(formData.bedrooms), - entranceType: formData.propertyType === 'room' ? 'Shared entrance' : 'Private entrance', - bathroomType: formData.bathrooms > 1 ? 'Private' : 'Shared', - kitchenType: 'Not available', - hasRestrictedOwnerAreas: false, - languageDialect: '', - hasChildren: false, - hasPets: false, - dedicatedTo: 'Everyone', - visitorsAllowed: true, - quietTimesEnabled: false, - quietTimes: '', - } - }); + propertyCondition: formData.furnished ? 'WithFurniture' : 'WithoutFurniture', + floorNumber: parseInt(formData.floorNumber) || 0, + numberOfSalons: parseInt(formData.salons) || 0, + numberOfBalconies: parseInt(formData.balconies) || 0, + nearbyDistances: { + school: formData.nearbySchool || '', + hospital: formData.nearbyHospital || '', + restaurant: formData.nearbyRestaurant || '', + university: formData.nearbyUniversity || '', + park: formData.nearbyPark || '', + mall: formData.nearbyMall || '', + }, + }; + + if (formData.propertyType === 'room') { + details.room = { + areaType: formData.roomAreaType || 'Private room', + peopleAllowed: formData.roomPeopleAllowed || String(formData.bedrooms), + furnitureDetails: formData.roomFurniture || '', + entranceType: formData.roomEntrance || 'Shared entrance', + bathroomType: formData.roomBathroom || 'Shared', + kitchenType: formData.roomKitchen || 'Not available', + hasRestrictedOwnerAreas: formData.roomRestrictedAreas || false, + homeResidentsCount: formData.roomResidents || '', + currentPopulationGender: formData.roomGender || 'Family', + languageDialect: formData.roomLanguage || '', + hasChildren: formData.roomChildren || false, + hasPets: formData.roomPets || false, + dedicatedTo: formData.roomDedicatedTo || 'Everyone', + visitorsAllowed: formData.roomVisitors ?? true, + quietTimesEnabled: formData.roomQuietTimes ?? false, + quietTimes: formData.roomQuietTimesDetails || '', + }; + } + + const detailsJSON = JSON.stringify(details); const propInfo = { cordsX: formData.lat ? String(formData.lat) : '', cordsY: formData.lng ? String(formData.lng) : '', + images: uploadedImagePaths, address: `${formData.city} - ${formData.district} - ${formData.address}`.trim(), description: formData.description || '', numberOfBathRooms: formData.bathrooms || 0, - numberOfRooms: (formData.bedrooms || 0) + (formData.livingRooms || 0), + numberOfRooms: formData.bedrooms || 0, numberOfBedRooms: formData.bedrooms || 0, space: parseFloat(formData.space) || 0, detailsJSON, buildingType: buildingTypeMap[formData.propertyType] ?? BuildingType.APARTMENT, status: 0, propertyType: formData.furnished ? RentPropertyCondition.WITH_FURNITURE : RentPropertyCondition.WITHOUT_FURNITURE, - images: uploadedImagePaths, }; try { @@ -617,13 +665,11 @@ const handleMapClick = async (coords) => { deposit: parseFloat(formData.deposit) || 0, monthlyRent: parseFloat(formData.monthlyPrice) || 0, dailyRent: parseFloat(formData.dailyPrice) || 0, - rating: 0, + rating: 1, currencyId: selectedCurrencyId, rentType: rentTypeMap[formData.offerType] ?? RentType.MONTHLY, - isSmokeAllow: !formData.terms[PropertyTerm.NO_SMOKING], - specializedFor: false, - isVisitorAllow: !formData.terms[PropertyTerm.NO_PARTIES], type: formData.furnished ? RentPropertyType.FURNISHED : RentPropertyType.UNFURNISHED, + allowedPaymentPeriod: '01:00:00:00', }; console.log('[AddProperty] Rent payload:', JSON.stringify(payload, null, 2)); const res = await addRentProperty(payload); @@ -786,7 +832,23 @@ const handleMapClick = async (coords) => {
أدخل التفاصيل والخدمات المتاحة
-