# ادغام ربات تلگرام با اپلیکیشن AVA PAY + انتقال پنل‌های مدیریت

این بسته شامل فایل‌های تغییر‌یافته و جدید برای موارد زیر است. همه‌ی فایل‌ها را با حفظ ساختار پوشه‌ها روی سرور جایگزین کنید (مسیر پایه: `/ledor/`).

---

## ۱) قبل از هر چیز: اجرای مهاجرت دیتابیس

فایل `migration_avapay.sql` را روی دیتابیس **`aradexch_app`** اجرا کنید (یک‌بار):

```sql
-- ستون‌های جدید جدول money_transfers:
--   admin_accounts   : شماره‌حساب‌هایی که ادمین اعلام می‌کند (JSON)
--   payment_receipts : فیش‌های آپلودشده توسط کاربر (JSON، چند عکس)
```

> این ستون‌ها به‌صورت خودکار توسط `api/transfer_api.php` هم ساخته می‌شوند، اما اجرای دستی امن‌تر است.

---

## ۲) فایل‌های این بسته و محل قرارگیری

| فایل | وضعیت | مسیر روی سرور |
|---|---|---|
| `includes/offer_actions.php` | **جدید** | `/ledor/includes/offer_actions.php` |
| `api/admin_exchange_api.php` | **جدید** | `/ledor/api/admin_exchange_api.php` |
| `api/offer_api.php` | تغییر‌یافته | `/ledor/api/offer_api.php` |
| `api/transfer_api.php` | تغییر‌یافته | `/ledor/api/transfer_api.php` |
| `admin_panel.php` | تغییر‌یافته | `/ledor/admin_panel.php` |
| `money_transfer.php` | تغییر‌یافته | `/ledor/money_transfer.php` |
| `arad.php` | تغییر‌یافته | `/ledor/arad.php` |
| `includes/withdrawal_modal_system.php` | تغییر‌یافته | `/ledor/includes/withdrawal_modal_system.php` |
| `mainbot/update.php` | تغییر‌یافته | مسیر وب‌هوک ربات (همان جای فعلی) |
| `migration_avapay.sql` | اسکریپت SQL | فقط برای اجرا |

---

## ۳) ادغام ربات تلگرام با AVA PAY (پیشنهاد قیمت روی آگهی)

**رفتار جدید:** وقتی کاربری از داخل اپلیکیشن روی یک آگهی «پیشنهاد قیمت» می‌فرستد،
آگهی‌دهنده در ربات تلگرام پیام دریافت می‌کند که شامل موارد زیر است:

- برچسب صریح **«📲 دریافت‌شده از طریق اپلیکیشن AVA PAY»**
- مقدار، قیمت، مبلغ کل، و **کمیسیون** (با همان فرمول `arad.php`)
- دو دکمه‌ی شیشه‌ای **✅ پذیرش پیشنهاد** و **❌ رد پیشنهاد**

با زدن دکمه‌ها، ربات مستقیماً همان منطق پذیرش/رد اپ را اجرا می‌کند و:

- پیشنهاد در دیتابیس پذیرفته/رد می‌شود، معامله (`ad_deals`) ساخته می‌شود، و کد معامله صادر می‌گردد.
- **هر دو طرف** (آگهی‌دهنده و پیشنهاد‌دهنده) پیام دریافت می‌کنند — **فقط اگر نوتیفیکیشن تلگرام را از پروفایل فعال کرده باشند** (`notify_telegram`).
- کمیسیون در پیام‌ها درج می‌شود و به ادمین هم گزارش می‌رود.

### منطق مشترک (تک‌منبع حقیقت)
فایل `includes/offer_actions.php` شامل توابع `avapay_offer_accept()` و `avapay_offer_reject()` است که:

- توسط `api/offer_api.php` (اکشن‌های `accept` / `reject` اپ) استفاده می‌شود.
- توسط ربات (`mainbot/update.php`) هم استفاده می‌شود.

بنابراین رفتار پذیرش/رد در اپ و تلگرام کاملاً یکسان است.

### نکات فنی ربات
- هندلر جدید در `update.php` با کلید callback به نام `avapay` اضافه شده است.
  فرمت داده‌ی دکمه‌ها: `avapay accept {offerId}` و `avapay reject {offerId}`.
- چون **دیتابیس ربات (`aradexch_bot`) با دیتابیس اپ (`aradexch_app`) فرق دارد**،
  هندلر یک اتصال مستقیم `mysqli` به دیتابیس اپ باز می‌کند (اعتبارنامه‌ها از `config/database.php` اپ).
- تطبیق کاربر ربات با کاربر اپ از طریق `users.telegram_id` انجام می‌شود؛
  یعنی کاربر باید تلگرام خود را به حساب AVA PAY متصل کرده باشد.

> **اگر اعتبارنامه‌ی دیتابیس اپ عوض شد،** آن را در دو جا به‌روزرسانی کنید:
> `config/database.php` و بلوک اتصال داخل هندلر `avapay` در `mainbot/update.php`.

---

## ۴) مرحله‌ی جدید پرداخت حواله ارزی (شماره‌حساب + چند فیش)

**فلوی جدید حواله ارزی:**

1. کاربر درخواست حواله ثبت می‌کند → وضعیت `pending`
2. ادمین **تایید** می‌کند → وضعیت `approved`
3. ادمین یک یا **چند شماره‌حساب** برای واریز می‌فرستد → وضعیت `awaiting_payment`
   (کاربر شماره‌حساب‌ها را در اپ می‌بیند + پیام تلگرام دریافت می‌کند)
4. کاربر واریز می‌کند و **یک یا چند فیش** آپلود می‌کند → وضعیت `payment_submitted`
5. ادمین **تسویه نهایی** را انجام می‌دهد (آپلود فیش تسویه) → وضعیت `completed`

### اکشن‌های جدید در `api/transfer_api.php`
- `admin_send_accounts` — ادمین شماره‌حساب‌ها را می‌فرستد (آرایه‌ی `accounts`).
- `upload_receipt` — حالا **چند فایل** را می‌پذیرد (`file[]`)؛ فیش‌های جدید به قبلی‌ها اضافه می‌شوند.

---

## ۵) انتقال سه پنل مدیریت به `admin_panel.php`

پنل‌های مدیریت که قبلاً در پایین صفحات بودند، حذف و به تب‌های اختصاصی در `admin_panel.php` منتقل شدند.
در هر صفحه‌ی قبلی، فقط یک دکمه‌ی «ورود به پنل مدیریت» باقی مانده است.

| صفحه‌ی قبلی | تب جدید در admin_panel | لینک مستقیم |
|---|---|---|
| `money_transfer.php` | **حواله ارزی** | `admin_panel.php#transfers` |
| `includes/withdrawal_modal_system.php` | **تسویه حساب** | `admin_panel.php#settlements` |
| `arad.php` | **تبادل ارزی** | `admin_panel.php#exchange` |

### نمایش در «درخواست‌های جدید و اقدامات لازم»
سه کاشی جدید در تابلوی کلی (Overview) اضافه شده که تعداد آیتم‌های نیازمند اقدام را نشان می‌دهند
و هر ۲۰ ثانیه به‌روزرسانی می‌شوند (از طریق `api/admin_exchange_api.php?action=counts`):

- **حواله‌های نیازمند اقدام** (در انتظار تایید یا فیش‌دریافت‌شده)
- **تسویه‌های در انتظار**
- **معاملات در انتظار تسویه**

روی هر کاشی که کلیک شود، مستقیماً به تب مربوطه می‌رود.

### API فقط-خواندنی جدید
`api/admin_exchange_api.php` سه اکشن دارد: `list_transfers`، `list_deals`، `counts`.
اکشن‌های نوشتنی از APIهای موجود استفاده می‌کنند:
- تایید/رد/ارسال‌حساب/تسویه‌ی حواله → `api/transfer_api.php`
- تایید/رد/آپلود‌فیش تسویه → `api/withdraw.php`
- تکمیل معامله‌ی بازار ارز → `api/deals_api.php`
- تخفیف کمیسیون → `api/discount_api.php`

---

## ۶) نکات سازگاری و ریسک

- همه‌ی تغییرات **افزایشی** طراحی شده‌اند؛ ستون‌ها با بررسی وجود اضافه می‌شوند و رکوردهای قدیمی
  (که فقط `payment_receipt` تکی دارند) هم درست نمایش داده می‌شوند.
- توابع نوتیفیکیشن اپ (`sendPushToUser` / ایمیل) در فایل مشترک با `function_exists` محافظت شده‌اند،
  بنابراین در محیط ربات که وجود ندارند، بی‌خطر نادیده گرفته می‌شوند (خطا نمی‌دهند).
- نوتیفیکیشن‌های تلگرام همیشه به تنظیم `notify_telegram` پروفایل کاربر احترام می‌گذارند.

### پس از استقرار، این‌ها را تست کنید
1. ارسال پیشنهاد از اپ → دریافت پیام + دکمه‌ها در تلگرام آگهی‌دهنده.
2. زدن «✅ پذیرش» در تلگرام → ساخت معامله، پیام به هر دو طرف، درج کمیسیون.
3. زدن «❌ رد» در تلگرام → رد پیشنهاد و پیام به پیشنهاد‌دهنده.
4. فلوی حواله: تایید ادمین → ارسال چند شماره‌حساب → آپلود چند فیش توسط کاربر → تسویه نهایی.
5. باز شدن سه تب جدید در `admin_panel.php` و کارکرد کاشی‌های «اقدامات لازم».

---

*همه‌ی فایل‌های PHP از نظر ساختاری بررسی و متعادل‌سازی شده‌اند. پیش از استقرار روی محیط لایو،
یک بار روی محیط تست یا با `php -l` روی سرور خودتان اعتبارسنجی نهایی را انجام دهید.*
