# GET /b2c/v1/discount/submit

## Submit Discount Code

این اندپوینت برای بررسی و اعمال کد تخفیف‌های فعال هر `branch` (دفتر عامل) طراحی شده است. کد تخفیف فقط در صورتی قابل استفاده است که هنوز منقضی نشده باشد، محدودیت استفاده آن تمام نشده باشد و در صورت تعریف کاربر خاص، توسط همان کاربر ارسال شود.

<div class="api-docs" id="bkmrk-">---

</div>### Endpoint Info

<div class="api-docs" id="bkmrk-url%3A-%2Fb2c%2Fv1%2Fdiscoun"><div class="endpoint-info"><div>**URL:** `/b2c/v1/discount/submit`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** `CreditDebitController@discountSubmit`</div><div>**Authorization:** اختیاری (استفاده از JWT برای استخراج `operator`)</div><div>**Related Table:** `payment_discount`</div></div>---

</div>### Query Parameters

<div class="api-docs" id="bkmrk-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%D9%86%D9%88%D8%B9-%D8%A7%D9%84%D8%B2%D8%A7%D9%85%DB%8C-%D8%AA"><table class="schema-table" dir="rtl"><thead><tr><th>پارامتر</th><th>نوع</th><th>الزامی</th><th>توضیح</th></tr></thead><tbody><tr><td>branch</td><td>integer</td><td>✅</td><td>شناسه دفتر (Branch ID)</td></tr><tr><td>type</td><td>string</td><td>✅</td><td>نوع استفاده از تخفیف (مثلاً `flight`، `hotel`، `train`)</td></tr><tr><td>code</td><td>string</td><td>✅</td><td>کد تخفیف واردشده توسط کاربر</td></tr></tbody></table>

---

</div>### Logic Flow

<div class="api-docs" id="bkmrk-%DB%B1%EF%B8%8F%E2%83%A3-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%D8%B1%D9%88%DB%8C-%D8%AC%D8%AF%D9%88%D9%84-p"><div class="flowchart" dir="rtl"><div class="flow-item">۱️⃣ کوئری روی جدول `payment_discount`</div></div></div>```
SELECT * FROM payment_discount
WHERE branch = :branch
  AND status = 1
  AND type = :type
  AND code = LOWER(:code)
LIMIT 1;
```

<div class="api-docs" id="bkmrk-%E2%86%93-%D8%A2%DB%8C%D8%A7-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%DB%8C%D8%A7%D9%81%D8%AA-%D8%B4%D8%AF%D8%9F"><div class="flowchart" dir="rtl"><div class="flow-arrow">↓</div><div class="flow-item-decision">آیا رکورد یافت شد؟ - ✅ بله → ادامه
- ❌ خیر → پیام خطای «کد تخفیف معتبر نمی‌باشد»

</div><div class="flow-arrow">↓</div><div class="flow-item-decision">آیا محدودیت استفاده (`limit`) دارد؟ - اگر null → بدون محدودیت
- اگر &gt;0 → قابل استفاده
- اگر 0 → پیام خطای «کد تخفیف تمام شده است»

</div><div class="flow-arrow">↓</div><div class="flow-item-decision">آیا تخفیف برای کاربر خاص تعریف شده؟ - اگر user=null → برای همه مجاز
- اگر user=id اپراتور → مجاز
- در غیر این صورت → «کد تخفیف برای کاربر دیگری می‌باشد»

</div><div class="flow-arrow">↓</div><div class="flow-item-decision">بررسی انقضا (`expiration`) - اگر null → همیشه معتبر
- اگر زمان فعلی &lt; expiration → معتبر
- در غیر این صورت → «کد تخفیف منقضی شده است»

</div><div class="flow-arrow">↓</div><div class="flow-item-process">🔄 اگر limit برابر 1 → بروزرسانی رکورد:</div></div></div>```
status = 3, limit = 0
```

<div class="api-docs" id="bkmrk-%D8%AF%D8%B1-%D8%BA%DB%8C%D8%B1-%D8%A7%DB%8C%D9%86-%D8%B5%D9%88%D8%B1%D8%AA-%D9%81%D9%82%D8%B7-"><div class="flowchart" dir="rtl"><div class="flow-item-process">در غیر این صورت فقط عدد limit یک واحد کاهش می‌یابد.</div><div class="flow-arrow">↓</div><div class="flow-item-success">✅ بازگرداندن پاسخ موفق با داده‌های تخفیف: - `id`
- `title`
- `type` (discount\_type در DB)
- `value` (discount\_value در DB)

</div></div>---

</div>### Response Samples

#### ✅ تخفیف معتبر

```json
{
  "status": true,
  "time": 1733756000,
  "data": {
    "id": 47,
    "title": "تخفیف ویژه پرواز نوروزی",
    "type": "percent",
    "value": 10
  }
}
```

#### ❌ کد تخفیف منقضی شده

```json
{
  "status": false,
  "time": 1733756005,
  "message": "کد تخفیف وارد شده منقضی شده است."
}
```

#### ❌ کد تخفیف برای کاربر دیگری است

```json
{
  "status": false,
  "time": 1733756010,
  "message": "کد تخفیف وارد شده برای کاربر دیگری می باشد."
}
```

#### ❌ کد تخفیف پیدا نشد

```json
{
  "status": false,
  "time": 1733756020,
  "message": "کد تخفیف وارد شده معتبر نمی باشد."
}
```

<div class="api-docs" id="bkmrk--1">---

</div>### Technical Notes

<div class="api-docs" id="bkmrk-%D8%AC%D8%AF%D9%88%D9%84-%D9%85%D9%88%D8%B1%D8%AF-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87%3A-p">- جدول مورد استفاده: `payment_discount` فیلدهای کلیدی: `id`, `title`, `type`, `discount_type`, `discount_value`, `branch`, `user`, `limit`, `status`, `expiration`.
- در صورت `status = 3` تخفیف عملاً غیرفعال محسوب می‌شود.
- کیس‑اِنسنسیتیو بودن بررسی کد با `strtolower($request->code)`.
- مدیریت TTL (انقضا) و محدودیت استفاده در همان جدول انجام می‌شود؛ نیازی به Redis نیست.
- پاسخ‌ها ساختاری ساده و سازگار با سایر اندپوینت‌های B2C دارند: کلیدهای مشترک `status`، `time` و `message` در اختیاری‌ترین حالت.

</div>