# POST /api/v2/pledger/delete

<div id="bkmrk-" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"></div>### Route Info

<div id="bkmrk-method-endpoint-cont" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"><table border="1" style="width: 95%; margin: auto; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>Method</td><td>Endpoint</td><td>Controller</td><td>Middleware</td><td>Purpose</td></tr><tr><td style="direction: ltr;">POST</td><td style="direction: ltr;">/api/v2/pledger/delete</td><td style="direction: ltr;">V2TradeController@deletePledger</td><td style="direction: ltr;">authWithJwt</td><td style="direction: rtl; text-align: right;">حذف رکورد تعهدکننده از جدول `pledgers`</td></tr></tbody></table>

</div>### منطق عملکرد

<div id="bkmrk-%D8%A7%D9%BE%D8%B1%D8%A7%D8%AA%D9%88%D8%B1-%D8%AC%D8%A7%D8%B1%DB%8C-%D8%A7%D8%B2-%24req" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">- اپراتور جاری از `$request->get('operator')` استخراج می‌شود.
- با استفاده از `id` فیلد `pledger_id`، رکورد متناظر در جدول `pledgers` حذف می‌شود.
- در صورت موفقیت حذف: 
    - رخداد `DeletePledger` به صف `snailJob` با تأخیر ۱۰ دقیقه ارسال می‌گردد.
    - داده‌های مالی و اطلاعاتی در Redis از طریق `UpdateRedis` به‌روزرسانی می‌شوند.
- در صورت بروز هرگونه استثنا، کد خطای ۵۰۰۳ بازگردانده شده و گزارش در `Visa::AddSystemReport()` ثبت می‌شود.

</div>### پارامترهای ورودی

<div id="bkmrk-%D9%86%D8%A7%D9%85-%D9%86%D9%88%D8%B9-%D8%B6%D8%B1%D9%88%D8%B1%DB%8C-%D8%AA%D9%88%D8%B6%DB%8C%D8%AD-" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"><table border="1" style="width: 95%; margin: auto; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>نام</td><td>نوع</td><td>ضروری</td><td>توضیح</td></tr><tr><td>pledger\_id</td><td>integer</td><td>بله</td><td>شناسه رکورد تعهدکننده جهت حذف</td></tr><tr><td>serial\_id</td><td>integer</td><td>بله</td><td>شناسه فاکتور برای sync با Redis</td></tr></tbody></table>

</div>```
{
  "pledger_id": 582,
  "serial_id": 10234
}
```

<div id="bkmrk--1" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"></div>### ساختار خروجی

```
موفق:
{
  "status": true,
  "time": 1732027111
}

خطا:
{
  "status": false,
  "time": 1732027111,
  "code": 5003,
  "message": "SQLSTATE[23000]: Integrity constraint violation..."
}
```

<div id="bkmrk--2" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"></div>### امنیت

<div id="bkmrk-jwt-%D8%A7%D9%84%D8%B2%D8%A7%D9%85%DB%8C-%D8%A7%D8%B3%D8%AA.-%D9%84%D8%A7%DA%AF-" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">- JWT الزامی است.
- لاگ دسترسی از طریق SystemLog به‌صورت asynchronous ثبت می‌گردد.

</div>### وابستگی‌ها

<div id="bkmrk-db%3A%3Atable%28%27pledgers%27" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">- DB::table('pledgers')
- SystemLog Queue (type=DeletePledger)
- UpdateRedis Job
- Visa::AddSystemReport()

</div>### کارایی

عملیات حذف تک‌خطی، زمان متوسط &lt;20 ms. صف‌ها به‌صورت ناهمگام اجرا می‌شوند.

<div id="bkmrk--3" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"></div>### مدیریت خطا

<div id="bkmrk-%DA%A9%D8%AF-%DB%B5%DB%B0%DB%B0%DB%B3-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%D9%87" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">- کد ۵۰۰۳ برای استثناهای SQL یا حذف غیرممکن.
- ثبت کامل Trace در Visa SystemReport.

</div>### اثرات جانبی

<div id="bkmrk-%D8%A2%D8%BA%D8%A7%D8%B2-%D8%AF%D9%88-%D8%B5%D9%81-%D9%85%D8%B3%D8%AA%D9%82%D9%84-%28sn" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">- آغاز دو صف مستقل (snailJob و fastJob).
- عدم بازگردانی تراکنش (delete مستقیم بدون Transaction).

</div>### ردپای حسابرسی

جزئیات حذف در SystemLog ثبت می‌شود (goal=pledger\_id ، by=operator\_id).

<div id="bkmrk--4" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"></div>### پیشنهاد بهبود

<div id="bkmrk-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-transacti" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">- اضافه کردن Transaction هنگام حذف اگر وابستگی به پرداخت‌ها وجود دارد.
- اضافه کردن وضعیت soft delete.

</div>### جمع‌بندی

این Endpoint ساده‌ترین ولی حیاتی‌ترین عملیات حذف تعهد را مدیریت می‌کند و برای حفظ صحت داده‌ها در Redis و SystemLog از Jobهای مجزا بهره می‌گیرد.

<div id="bkmrk-root-pledger-delete" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"></div>