#P1673
DELETE /v2/charter/reservation
Charter: Soft Delete Reservation(s)
این اندپوینت برای حذف نرم (soft delete) یک یا چند رزرو به صورت همزمان طراحی شده است. عملیات حذف به صورت فیزیکی رکوردها را از پایگاه داده پاک نمیکند، بلکه وضعیت (status) آنها را به 2 (حذف شده) تغییر داده و فیلد deleted_at را با زمان فعلی پر میکند. این متد همچنین رزرو اتاقهای مرتبط با چارترهای اقامتی را نیز مدیریت میکند.
Request Overview
/v2/charter/reservationAccess Control
- دسترسی معتبر JWT
Request Body (JSON)
| Field | Type | Description |
|---|---|---|
| type | string | (الزامی) نوع چارتر (مثلاً 'route' یا 'accommodation'). این فیلد برای تعیین جدول صحیح رزروها در پایگاه داده استفاده میشود. |
| reserves_id | array[integer] | (الزامی) آرایهای از شناسههای رزروهایی که باید حذف شوند. |
Logic Details
فرآیند حذف در دو مرحله کلیدی انجام میشود تا از هماهنگی دادهها اطمینان حاصل شود:
۱. بهروزرسانی جدول اصلی رزروها
ابتدا، سیستم با استفاده از پارامتر type، نام جدول مربوط به رزروها (مثلاً charter_reservation_route) را از طریق متد getTableCharter به دست میآورد. سپس یک دستور UPDATE گروهی اجرا میکند که تمام رکوردهای موجود در آرایه reserves_id را پیدا کرده و فیلدهای زیر را در آنها بهروزرسانی میکند:
statusبه مقدار 2 تغییر میکند.deleted_atبا تاریخ و زمان فعلی سرور پر میشود.
۲. بهروزرسانی جدول اتاقهای اقامتی
بلافاصله پس از مرحله اول، یک دستور UPDATE دیگر بر روی جدول charter_reservation_accommodation_rooms اجرا میشود. این عملیات نیز تمام رکوردهایی را که reservation_id آنها در آرایه reserves_id وجود دارد، پیدا کرده و آنها را نیز به صورت نرم حذف میکند (status=2 و deleted_at=now()).
نکته مهم: این مرحله دوم همیشه اجرا میشود، حتی اگر نوع چارتر route باشد. در این حالت، چون هیچ رکوردی در جدول اتاقها با شناسههای رزرو پرواز مطابقت ندارد، این دستور تأثیری نخواهد داشت، اما وجود آن برای مدیریت صحیح رزروهای اقامتی ضروری است.
Response Structure
پاسخ موفق
اگر هر دو عملیات بهروزرسانی با موفقیت انجام شوند، سرور یک پاسخ خالی با کد وضعیت 204 No Content باز میگرداند. این نشان میدهد که درخواست با موفقیت پردازش شده و نیازی به بازگرداندن محتوا نیست.
پاسخ خطا
در صورت بروز هرگونه استثنا (Exception) در حین اجرای عملیات پایگاه داده، سرور با کد 400 Bad Request پاسخ میدهد. بدنه پاسخ شامل یک آبجکت خطا با جزئیاتی مانند کد خطا، پیام و ردپای آن (trace) برای کمک به فرآیند اشکالزدایی خواهد بود.
Flowchart
type and reserves_id (array)typeUPDATE charter_reservation_[type]SET status = 2, deleted_at = NOW()WHERE id IN (reserves_id) UPDATE charter_reservation_accommodation_roomsSET status = 2, deleted_at = NOW()WHERE reservation_id IN (reserves_id)