Skip to main content
#P1678

DELETE /v2/charter/reservation/temporary

Charter: Soft Delete Temporary Reservation

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

Request Overview

URL: /v2/charter/reservation/temporary
Method: DELETE
Controller: CharterController@deleteTemporaryCharterReservation
Middleware Stack: authWithJwt

Access Control

  • دسترسی معتبر JWT

Request Parameters

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

Field Type Location Description
id integer Query (الزامی) شناسه یکتای رزرو موقت در جدول charter_temporary_reservation که قصد حذف نرم آن را دارید.

Example URL

/v2/charter/reservation/temporary?id=451

Logic Details

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

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

  • سیستم با استفاده از کوئری‌بیلدر لاراول، یک دستور UPDATE بر روی جدول charter_temporary_reservation اجرا می‌کند.
  • این دستور، رکوردی را که مقدار ستون id آن با id ارسال شده در درخواست برابر است، پیدا می‌کند.
  • سپس مقدار ستون status آن رکورد را به 2 به‌روزرسانی می‌کند.
  • این عملیات به صورت اتمیک انجام می‌شود. اگر رکوردی با شناسه مورد نظر یافت نشود، هیچ خطایی رخ نمی‌دهد و عملیات بدون هیچ تغییری در پایگاه داده به پایان می‌رسد و پاسخ موفقیت‌آمیز بازگردانده می‌شود.

۲. مدیریت خطا

  • اگر در حین اجرای کوئری UPDATE هرگونه خطای پایگاه داده (مانند قطع ارتباط، خطای سینتکس و...) رخ دهد، اجرای کد به بلوک catch منتقل می‌شود.
  • در این حالت، یک پاسخ خطا شامل پیام دقیق استثنا (Exception) و ردپای آن (Trace) برای اهداف اشکال‌زدایی (Debugging) بازگردانده می‌شود.

Response Structure

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

پاسخ موفق

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

  • Status Code: 200 OK
  • Body:
    {
      "status": true,
      "time": 1733284200
    }

پاسخ خطا

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

  • Status Code: 200 OK
  • Body:
    {
      "status": false,
      "time": 1733284205,
      "message": "SQLSTATE[...]: Base table or view not found: ... (or any other DB error)",
      "trace": [
        // ... Stack trace for debugging ...
      ]
    }

Flowchart

Start (DELETE /reservation/temporary)
Receive Request
Query Parameter: id
Execute DB Query:
UPDATE charter_temporary_reservation SET status = 2 WHERE id = ?
Did a DB Exception Occur?
↓ No
Return 200 OK
{"status": true, "time": ...}
↓ Yes
Return 200 OK
{"status": false, "message": ..., "trace": ...}
End