# BASCORE Invoice System - Namecheap Deployment

هذا الدليل لتشغيل النظام على Namecheap/cPanel باستخدام subdomain.

## 1. المطلوب من الاستضافة

- PHP 8.3 أو PHP 8.4.
- MySQL database.
- تفعيل هذه الإضافات من cPanel PHP Extensions:
  - `pdo_mysql`
  - `mbstring`
  - `openssl`
  - `fileinfo`
  - `gd`
  - `zip`
  - `curl`
  - `xml`
  - `tokenizer`

مهم جدا: إضافة `gd` مطلوبة لتوليد ملفات PDF، وإضافة `zip` مطلوبة لصفحة تحديث النظام.

## 2. إنشاء قاعدة البيانات

من cPanel افتح MySQL Databases:

1. أنشئ database جديدة، مثال: `cpaneluser_bascore`.
2. أنشئ database user وكلمة مرور قوية.
3. اربط المستخدم بقاعدة البيانات مع صلاحيات `ALL PRIVILEGES`.

## 3. إنشاء subdomain

من cPanel افتح Subdomains وأنشئ مثلا:

`invoice.yourdomain.com`

أفضل إعداد:

- ارفع ملفات النظام في مجلد خارج `public_html` مثل:
  `/home/USERNAME/bascore-invoice`
- اجعل Document Root للـ subdomain يشير إلى:
  `/home/USERNAME/bascore-invoice/public`

إذا cPanel لا يسمح بتحديد `public` كـ Document Root، ارفع النظام في:

`/home/USERNAME/bascore-invoice`

ثم اجعل مجلد الـ subdomain يحتوي ملفات `public` فقط، وعدل مسارات `index.php` لتشير إلى مجلد النظام.

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

ارفع ملف:

`dist/bascore-invoice-namecheap.zip`

ثم فك الضغط في مجلد النظام.

بعد فك الضغط، انسخ `.env.production.example` إلى `.env` وعدل القيم:

- `APP_URL`
- `DB_DATABASE`
- `DB_USERNAME`
- `DB_PASSWORD`
- `MAIL_FROM_ADDRESS`

لا ترفع ملف `.env` في تحديثات النظام لاحقا.

## 5. أوامر التشغيل من cPanel Terminal أو SSH

ادخل إلى مجلد النظام ثم شغل:

```bash
php artisan key:generate
php artisan migrate --seed --force
php artisan storage:link
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

إذا لم يتوفر Terminal في الاستضافة، اطلب من دعم Namecheap تشغيل هذه الأوامر أو فعل SSH للحساب.

## 6. الصلاحيات

تأكد أن هذه المجلدات قابلة للكتابة:

- `storage`
- `bootstrap/cache`

عادة صلاحيات `755` للمجلدات و `644` للملفات كافية، لكن بعض الاستضافات تحتاج صلاحية كتابة للمجلدين أعلاه.

## 7. الدخول للنظام

بعد التشغيل افتح:

`https://invoice.yourdomain.com`

بيانات الدخول الافتراضية:

- Email: `admin@bascore.ae`
- Password: `ChangeMe@12345`

غير كلمة المرور مباشرة بعد أول دخول.

## 8. تحديث النظام من داخل لوحة المدير

تمت إضافة صفحة:

`Company Settings > System Update`

وتظهر للمدير فقط.

طريقة التحديث:

1. خذ Backup من cPanel للملفات وقاعدة البيانات.
2. جهز ملف ZIP يحتوي فقط الملفات المتغيرة من هذه المجلدات:
   - `app`
   - `bootstrap`
   - `config`
   - `database`
   - `public`
   - `resources`
   - `routes`
3. ارفع ملف ZIP من صفحة System Update.
4. النظام سيشغل migrations تلقائيا ويمسح Laravel cache.

لا تضع هذه الملفات أو المجلدات داخل ملف التحديث:

- `.env`
- `storage`
- `vendor`
- `.git`
- `.runtime`
- `composer.phar`

ملاحظة: إذا كان التحديث يحتاج package جديد في `composer.json`، ارفعه كتحديث كامل أو شغل `composer install` من SSH.

## 9. ملاحظات مهمة لـ PDF

إذا ظهر خطأ في PDF متعلق بـ GD، فعّل `gd` من PHP Extensions في Namecheap.

إذا ظهر خطأ في تحديث النظام متعلق بـ ZIP، فعّل `zip` من PHP Extensions.
