# DELETE /v2/charter/reservation/temporary

# Charter: Soft Delete Temporary Reservation

این اندپوینت برای حذف نرم (soft-delete) یک رزرو موقت از سیستم استفاده می‌شود. رزروهای موقت در جدول جداگانه‌ای به نام `charter_temporary_reservation` نگهداری می‌شوند. این عملیات رکورد را به طور کامل از پایگاه داده حذف نمی‌کند، بلکه فقط ستون `status` آن را به مقدار `2` (به معنای لغو شده یا حذف شده) تغییر می‌دهد تا در پردازش‌های بعدی نادیده گرفته شود.

<div class="api-docs" id="bkmrk-"></div>## Request Overview

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fcharter%2Fres"><div class="endpoint-info"><div>**URL:** `/v2/charter/reservation/temporary`</div><div>**Method:** <span class="method-delete">DELETE</span></div><div>**Controller:** CharterController@deleteTemporaryCharterReservation</div><div>**Middleware Stack:** authWithJwt</div></div></div>## Access Control

<div class="api-docs" id="bkmrk-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D9%85%D8%B9%D8%AA%D8%A8%D8%B1-jwt">- دسترسی معتبر JWT

</div>## Request Parameters

شناسه رزرو موقت باید به عنوان یک پارامتر کوئری (Query Parameter) در URL ارسال شود.

<div class="api-docs" id="bkmrk-field-type-location-"><table class="schema-table" dir="rtl"><thead><tr><th>Field</th><th>Type</th><th>Location</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>integer</td><td>Query</td><td>**(الزامی)** شناسه یکتای رزرو موقت در جدول `charter_temporary_reservation` که قصد حذف نرم آن را دارید.</td></tr></tbody></table>

</div>#### Example URL

<div class="api-docs" id="bkmrk-%2Fv2%2Fcharter%2Freservat">`/v2/charter/reservation/temporary?id=451` </div>## Logic Details

فرآیند این اندپوینت بسیار ساده و سرراست است و در یک بلوک `try...catch` برای مدیریت خطاهای احتمالی پایگاه داده محصور شده است.

### ۱. اجرای عملیات حذف نرم (Soft Delete)

<div class="api-docs" id="bkmrk-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-">- سیستم با استفاده از کوئری‌بیلدر لاراول، یک دستور `UPDATE` بر روی جدول `charter_temporary_reservation` اجرا می‌کند.
- این دستور، رکوردی را که مقدار ستون `id` آن با `id` ارسال شده در درخواست برابر است، پیدا می‌کند.
- سپس مقدار ستون `status` آن رکورد را به `2` به‌روزرسانی می‌کند.
- این عملیات به صورت اتمیک انجام می‌شود. اگر رکوردی با شناسه مورد نظر یافت نشود، هیچ خطایی رخ نمی‌دهد و عملیات بدون هیچ تغییری در پایگاه داده به پایان می‌رسد و پاسخ موفقیت‌آمیز بازگردانده می‌شود.

</div>### ۲. مدیریت خطا

<div class="api-docs" id="bkmrk-%D8%A7%DA%AF%D8%B1-%D8%AF%D8%B1-%D8%AD%DB%8C%D9%86-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%DA%A9%D9%88%D8%A6">- اگر در حین اجرای کوئری `UPDATE` هرگونه خطای پایگاه داده (مانند قطع ارتباط، خطای سینتکس و...) رخ دهد، اجرای کد به بلوک `catch` منتقل می‌شود.
- در این حالت، یک پاسخ خطا شامل پیام دقیق استثنا (Exception) و ردپای آن (Trace) برای اهداف اشکال‌زدایی (Debugging) بازگردانده می‌شود.

</div>## Response Structure

برخلاف بسیاری از اندپوینت‌های RESTful که در پاسخ به متد `DELETE` موفق، کد وضعیت `204 No Content` را برمی‌گردانند، این اندپوینت همیشه یک بدنه پاسخ (JSON) با کد وضعیت `200 OK` باز می‌گرداند. وضعیت موفقیت یا شکست عملیات از طریق فیلد `status` در بدنه JSON مشخص می‌شود.

### پاسخ موفق

در صورتی که کوئری `UPDATE` بدون خطا اجرا شود (حتی اگر هیچ رکوردی برای به‌روزرسانی پیدا نشود)، پاسخ زیر بازگردانده می‌شود.

<div class="api-docs" id="bkmrk-status-code%3A-200-ok-">- **Status Code:** `200 OK`
- **Body:**```json
    {
      "status": true,
      "time": 1733284200
    }
    ```

</div>### پاسخ خطا

در صورت بروز هرگونه استثنا (Exception) در سطح پایگاه داده، پاسخ زیر بازگردانده می‌شود.

<div class="api-docs" id="bkmrk-status-code%3A-200-ok--1">- **Status Code:** `200 OK`
- **Body:**```json
    {
      "status": false,
      "time": 1733284205,
      "message": "SQLSTATE[...]: Base table or view not found: ... (or any other DB error)",
      "trace": [
        // ... Stack trace for debugging ...
      ]
    }
    ```

</div>## Flowchart

<div class="api-docs" id="bkmrk-start-%28delete-%2Freser"><div class="flowchart"><div class="flow-item">Start (DELETE /reservation/temporary)</div><div class="flow-arrow">↓</div><div class="flow-item">Receive Request  
<small>Query Parameter: `id`</small></div><div class="flow-arrow">↓</div><div class="flow-item-process" style="background-color: #e3f2fd;">Execute DB Query:  
`UPDATE charter_temporary_reservationSET status = 2WHERE id = ?`</div><div class="flow-decision" style="background-color: #fff9c4;">Did a DB Exception Occur?</div><div class="flow-split"><div class="flow-path"><div class="flow-arrow">↓ No</div><div class="flow-item-success">Return 200 OK  
<small>`{"status": true, "time": ...}`</small></div></div><div class="flow-path"><div class="flow-arrow">↓ Yes</div><div class="flow-item-error">Return 200 OK  
<small>`{"status": false, "message": ..., "trace": ...}`</small></div></div></div><div class="flow-item" style="clear: both; margin-top: 20px;">End</div></div></div>