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)}
+
+ )}
) : (