From 7b333f9b53255a27ec51c00467d205d0c55a58ad Mon Sep 17 00:00:00 2001 From: mouazkh Date: Mon, 25 May 2026 22:37:05 +0300 Subject: [PATCH] fixed my propries page and fixed the sidebar again mouaz is the best in the west --- app/owner/properties/page.js | 130 +++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 53 deletions(-) diff --git a/app/owner/properties/page.js b/app/owner/properties/page.js index 07ba4d6..2bd2299 100644 --- a/app/owner/properties/page.js +++ b/app/owner/properties/page.js @@ -43,7 +43,9 @@ import { Pencil, Save, X, - Star + Star, + Ban, + Check } from 'lucide-react'; import toast, { Toaster } from 'react-hot-toast'; import AuthService from '../../services/AuthService'; @@ -97,23 +99,29 @@ const DeleteConfirmationModal = ({ isOpen, onClose, onConfirm, propertyTitle }) ); }; +const serviceLabels = { + Electricity: 'كهرباء', Internet: 'إنترنت', Heating: 'تدفئة', Water: 'ماء', + Pool: 'مسبح', PrivateGarden: 'حديقة خاصة', Parking: 'موقف سيارات', + Security247: 'حراسة 24 س', CentralHeating: 'تدفئة مركزية', + CentralAirConditioning: 'تكييف مركزي', EquippedKitchen: 'مطبخ مجهز', + MaidsRoom: 'غرفة خادمة', Elevator: 'مصعد', Gym: 'نادي رياضي', + Sauna: 'ساونا', Jacuzzi: 'جاكوزي', Balcony: 'بلكونة', + Rooftop: 'سطح', Furnished: 'مفروش', AirConditioning: 'تكييف', + SatelliteTV: 'تلفاز', Fireplace: 'مدفأة', StudyRoom: 'غرفة دراسة', + Storage: 'مستودع', Laundry: 'غرفة غسيل', SmartHome: 'منزل ذكي', +}; + +const termLabels = { + NoSmoking: 'ممنوع التدخين', NoAnimals: 'ممنوع الحيوانات الأليفة', + NoParties: 'ممنوع الحفلات', NoAlcohol: 'ممنوع الكحول', + SuitableForChildren: 'مناسب للأطفال', SuitableForFamilies: 'مناسب للعائلات', + SuitableForStudents: 'مناسب للطلاب', SuitableForElderly: 'مناسب لكبار السن', + OnlyFemales: 'إناث فقط', OnlyMales: 'ذكور فقط', +}; + const PropertyViewModal = ({ isOpen, onClose, property }) => { if (!isOpen || !property) return null; - const getServiceIcon = (serviceId) => { - const icons = { - electricity: Zap, - internet: Wifi, - heating: Flame, - water: Droplets, - airConditioning: Wind, - parking: Warehouse, - elevator: Layers - }; - const Icon = icons[serviceId]; - return Icon ? : null; - }; - return ( {

نوع العقار: - - {property.propertyType === 'apartment' ? 'شقة' : - property.propertyType === 'villa' ? 'فيلا' : - property.propertyType === 'suite' ? 'سويت' : 'غرفة ضمن شقة'} - -

-

- الحالة: - - {property.furnished ? 'مفروش' : 'غير مفروش'} - + {property.propertyTypeLabel || 'عقار'}

+ {property.purpose === 'rent' && ( +

+ حالة التأثيث: + + {property.furnished ? 'مفروش' : 'غير مفروش'} + +

+ )}

حالة العقار: - + {property.status === 'available' ? 'متاح' : 'مؤجر'}

@@ -213,13 +217,27 @@ const PropertyViewModal = ({ isOpen, onClose, property }) => { {property.area} م²
- {property.livingRooms && ( + {property.floor > 0 && ( +
+ + {property.floor} + طابق +
+ )} + {property.salons > 0 && (
- {property.livingRooms} + {property.salons} صالونات
)} + {property.balconies > 0 && ( +
+ + {property.balconies} + بلكونات +
+ )} @@ -236,23 +254,17 @@ const PropertyViewModal = ({ isOpen, onClose, property }) => {

- {property.services && Object.values(property.services).some(v => v) && ( + {property.services && Object.keys(property.services).length > 0 && (

الخدمات المتوفرة

{Object.entries(property.services).map(([key, value]) => { if (!value) return null; - const Icon = getServiceIcon(key); + const detail = typeof value === 'object' && value.detail ? value.detail : null; return ( - {Icon} - {key === 'electricity' && 'كهرباء'} - {key === 'internet' && 'انترنت'} - {key === 'heating' && 'تدفئة'} - {key === 'water' && 'ماء'} - {key === 'airConditioning' && 'تكييف'} - {key === 'parking' && 'موقف سيارات'} - {key === 'elevator' && 'مصعد'} + {serviceLabels[key] || key} + {detail && · {detail}} ); })} @@ -260,21 +272,21 @@ const PropertyViewModal = ({ isOpen, onClose, property }) => {
)} - {property.terms && Object.values(property.terms).some(v => v) && ( + {property.terms && Object.keys(property.terms).length > 0 && (

شروط الاستخدام

-
+
{Object.entries(property.terms).map(([key, value]) => { if (!value) return null; return ( - - {key === 'noSmoking' && ' ممنوع التدخين'} - {key === 'noPets' && ' ممنوع الحيوانات'} - {key === 'noParties' && ' ممنوع الحفلات'} - {key === 'noAlcohol' && ' ممنوع الكحول'} - {key === 'suitableForChildren' && ' مناسب للأطفال'} - {key === 'suitableForElderly' && ' مناسب لكبار السن'} - +
+ {key.startsWith('No') || key.startsWith('Only') ? ( + + ) : ( + + )} + {termLabels[key] || key} +
); })}
@@ -285,24 +297,36 @@ const PropertyViewModal = ({ isOpen, onClose, property }) => {

معلومات السعر

{property.purpose === 'rent' ? (
- {property.dailyPrice && ( + {property.dailyPrice > 0 && (

السعر اليومي: {Number(property.dailyPrice).toLocaleString()} ل.س

)} - {property.monthlyPrice && ( + {property.monthlyPrice > 0 && (

السعر الشهري: {Number(property.monthlyPrice).toLocaleString()} ل.س

)} + {property.deposit > 0 && ( +

+ التأمين: + {Number(property.deposit).toLocaleString()} ل.س +

+ )}

نوع الإيجار: { property.rentType === 'daily' ? 'يومي' : property.rentType === 'monthly' ? 'شهري' : 'يومي وشهري' }

+ {property.rating > 0 && ( +

+ التقييم: + {Number(property.rating).toFixed(1)} +

+ )}
) : (