# إصلاح مشاكل حذف العقار

## المشكلة المكتشفة من error.log

من السجلات، المشكلة الرئيسية هي:
```
error=property_not_found
```

### السبب الجذري:
الاستعلام في `delete_property.php` كان يتحقق من الملكية بشكل خاطئ:
- كان يتحقق فقط من `p.woner_id = usercode` أو `w.owner_id = usercode`
- **لم يتحقق من ربط العقار بالمكتب (`office_id`)**

### المشكلة:
المكتب العقاري يمكنه إدارة عقارات الملاك المرتبطين به، لكن الاستعلام كان يبحث فقط عن العقارات التي يملكها المستخدم مباشرة، وليس العقارات المرتبطة بالمكتب.

## الإصلاحات المطبقة

### 1. إصلاح منطق التحقق من الملكية

**قبل الإصلاح:**
```php
$stmt = $connect->prepare("
    SELECT p.id 
    FROM properties p
    LEFT JOIN woner w ON p.woner_id = w.id
    WHERE p.id = ? AND (p.woner_id = ? OR w.owner_id = ?)
");
$stmt->execute([$property_id, $usercode, $usercode]);
```

**بعد الإصلاح:**
```php
// الحصول على معرف المكتب من الجلسة
$office_id = $_SESSION['office_id'] ?? null;

$stmt = $connect->prepare("
    SELECT p.id, p.main_title, p.office_id
    FROM properties p
    LEFT JOIN woner w ON p.woner_id = w.id
    WHERE p.id = ? 
    AND (
        (p.office_id = ? AND ? IS NOT NULL)
        OR (w.office_id = ? AND ? IS NOT NULL)
    )
");
$stmt->execute([$property_id, $office_id, $office_id, $office_id, $office_id]);
```

### 2. إضافة تسجيل الأخطاء

تم إضافة `error_log` لتسجيل الأخطاء بشكل أفضل:
```php
if (!$property) {
    error_log("Property delete failed: Property ID $property_id not found or not owned by office $office_id (user: $usercode)");
    header('Location: view_properties.php?error=property_not_found');
    exit();
}
```

### 3. تحسين معالجة الأخطاء

```php
} catch (Exception $e) {
    error_log("Error deleting property: " . $e->getMessage());
    error_log("Stack trace: " . $e->getTraceAsString());
    header('Location: view_properties.php?error=database_error&message=' . urlencode($e->getMessage()));
    exit();
}
```

## المنطق الصحيح للتحقق

المكتب يمكنه حذف العقار إذا:
1. ✅ العقار مرتبط مباشرة بالمكتب: `p.office_id = office_id`
2. ✅ المالك مرتبط بالمكتب: `w.office_id = office_id`

## الاختبار

للتحقق من الإصلاح:
1. تأكد من وجود `office_id` في الجلسة
2. جرب حذف عقار مرتبط بالمكتب
3. راجع `error.log` للتأكد من عدم وجود أخطاء جديدة

## ملاحظات إضافية

- يجب التأكد من أن `$_SESSION['office_id']` موجود في الجلسة
- إذا كان المستخدم مكتباً، يجب أن يكون `office_id` محدداً
- يمكن استخدام `delete_property_safe.php` للحذف الآمن مع فحص شامل

---

**تاريخ الإصلاح:** 2025-11-19

