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