# POST /api/v2/online/reservation/penalty

## Route Info

<div id="bkmrk-method-endpoint-cont" style="direction: rtl; font-family: Vazir; text-align: justify; line-height: 1.9;"><table border="1" style="width: 96%; margin: auto; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #efefef; font-weight: bold;"><td>Method</td><td>Endpoint</td><td>Controller</td><td>Middleware</td><td>Purpose</td></tr><tr><td>POST</td><td style="direction: ltr;">/api/v2/online/reservation/penalty</td><td style="direction: ltr;">OnlineController@reservationPenalty</td><td style="direction: ltr;">authWithJwt</td><td>قفل موقت و محاسبه‌ی جریمه لغو رزرو آنلاین</td></tr></tbody></table>

</div>### منطق (در کد کامنت‌شده)

<div id="bkmrk-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF%E2%80%AF%D9%86%D9%85%D9%88%D9%86%D9%87%E2%80%AF%D8%A7%D8%B2%E2%80%AF%5Capp%5C" style="font-family: Vazir; line-height: 1.9;">1. ایجاد نمونه از `\App\Lib\BaseService()`.
2. فراخوانی `$BaseService‑>LockFlights($request‑>data)`.
3. در صورت موفقیت (`Status=true`): 
    - درج در جدول `temporary_reservations` با فیلدهای `data`، `operator`، `result`.
    - بازگرداندن `{"status":true,"data":LockId}`
4. در صورت شکست: 
    - بازگرداندن وضعیت false به همراه کد `1002` و پیام خطای دریافتی.
    - افزودن مراجع پشتیبانی (تلفن، ایمیل، Helpdesk‑Panel).

</div>### ورودی‌ها

<div id="bkmrk-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%D9%86%D9%88%D8%B9-%D8%B6%D8%B1%D9%88%D8%B1%DB%8C-%D8%AA%D9%88" style="direction: rtl; font-family: Vazir; text-align: justify; line-height: 1.9;"><table border="1" style="width: 94%; margin: auto; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #fafafa; font-weight: bold;"><td>پارامتر</td><td>نوع</td><td>ضروری</td><td>توضیح</td></tr><tr><td>data</td><td>object/array</td><td>بله</td><td>داده‌های رزرو پرواز/قطار جهت قفل کردن</td></tr></tbody></table>

</div>### پاسخ موفق نمونه

```
{
 "status": true,
 "time": 1732050050,
 "data": 9423
}
```

### پاسخ در صورت خطا

```
{
 "status": false,
 "time": 1732050050,
 "error": {"code":1002,"message":"Seat lock failed"},
 "support": {
   "phone": "021‑91016838 in 121",
   "email": "ict@airplus.app",
   "panel": "helpdesk.airplus.app"
 }
}
```

### وابستگی‌ها

<div class="align-right" id="bkmrk-%5Capp%5Clib%5Cbaseservice" style="font-family: Vazir; line-height: 1.9;">- `\App\Lib\BaseService` → تابع `LockFlights()`
- DB Facade → جدول `temporary_reservations`

</div>### وضعیت فعلی

تمام کدها در کامنت هستند؛ تابع در مرحله‌ی طراحی است و به عنوان Placeholder وجود دارد، اما طرح پاسخ و منطق نهایی مشخص‌شده است.

### پیشنهاد توسعه

<div id="bkmrk-online-reservation-penalty-post" style="font-family: Vazir; line-height: 1.9;">- انتقال منطق Lock به Queue برای جلوگیری از timeout.
- ثبت SystemLog با نوع `ReservationPenaltyCreate`.
- بازگرداندن TTL لاک (ِمثلاً ۳ دقیقه مجاز برای تأیید رزرو).

</div>