# دليل الرفع إلى الاستضافة الحالية

هذه الحزمة مشروع Laravel كامل. بما أن Laravel مثبت بالفعل على خادمك، يُفضّل وضع التطبيق في مجلد مستقل أو أخذ نسخة احتياطية كاملة قبل استبدال أي مشروع موجود.

## 1. رفع الملفات

1. ارفع ملف `rental-manager-upload.zip` من مدير الملفات في لوحة الاستضافة.
2. فك الضغط داخل مجلد مستقل مثل `rental-manager`.
3. اجعل جذر النطاق أو النطاق الفرعي يشير إلى `rental-manager/public`.
4. لا تنقل كل المشروع إلى `public_html`. إذا كانت الاستضافة لا تسمح بتغيير جذر الموقع، اطلب من الدعم توجيهه إلى مجلد `public` لأن باقي ملفات Laravel يجب ألا تكون متاحة للزوار.

## 2. تثبيت المكتبات

من Terminal داخل مجلد المشروع شغّل:

```text
composer install --no-dev --optimize-autoloader
```

إذا كانت الاستضافة قد ثبّتت Laravel فقط دون Composer، استخدم خيار Composer في لوحة التحكم أو اطلب من الدعم تشغيل الأمر السابق.

## 3. إعداد الاتصال بقاعدة MySQL

انسخ `.env.example` إلى `.env`. القيم غير السرية المطلوبة جاهزة:

```text
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=wiziv_f9dy1
DB_USERNAME=wiziv_f9dy1
DB_PASSWORD=ضع_كلمة_المرور_هنا
```

عدّل أيضًا `APP_URL` إلى رابط الموقع الحقيقي. لا تضع ملف `.env` داخل ملف ZIP، ولا ترسله لأي شخص.

## 4. تجهيز التطبيق والقاعدة

شغّل الأوامر التالية بالترتيب:

```text
php artisan key:generate
php artisan migrate --seed --force
php artisan storage:link
php artisan optimize
```

الأمر `migrate --seed` ينشئ الجداول والمبنيين فقط: مصر الجديدة والظاهر، مع بنود الرسوم الأساسية. لا ينشئ مستأجرين أو مبالغ تجريبية.

## 5. الصلاحيات والمهام المجدولة

تأكد أن مستخدم PHP يستطيع الكتابة في:

```text
storage
bootstrap/cache
```

أضف Cron كل دقيقة، بعد استبدال المسار بمسار مشروعك:

```text
cd /home/USER/rental-manager && php artisan schedule:run >> /dev/null 2>&1
```

## 6. فحص ما بعد التثبيت

1. افتح لوحة التحكم وتأكد أن المبنيين ظاهران.
2. افتح **الإعدادات** واضبط المقسّم وعنوان الإيصال واسم المالك.
3. أضف شقة وعقدًا تجريبيًا، ثم أنشئ شهرًا واعتمده وسجّل السداد.
4. نزّل PDF الإيصال وتأكد أن الصفحة A4 وأن الطابعة مضبوطة على مقياس 100%.
5. احذف البيانات التجريبية يدويًا إن أنشأتها للفحص.

## النسخ الاحتياطي والاستعادة

زر النسخة الاحتياطية داخل التطبيق يحتاج إلى توفر `mysqldump` و`mysql` لمستخدم الموقع. إذا كانت الاستضافة تمنعهما، استخدم النسخ الاحتياطي من لوحة الاستضافة أو phpMyAdmin. الاستعادة عملية استبدال للبيانات ومحمية بتأكيد صريح؛ احتفظ دائمًا بنسخة خارج الخادم واختبرها على قاعدة منفصلة.

## تحديث نسخة مستقبلية

خذ نسخة من قاعدة البيانات وملف `.env` أولًا، ثم ارفع الملفات الجديدة مع الإبقاء على `.env` و`storage`، وبعدها شغّل:

```text
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan optimize
```
