#P1106
Function setAccommodationRooms
· هدف:
این متد برای تغییر وضعیت یک یا چند اتاق در یک چارتر اقامتی طراحی شده است. هدف اصلی آن، امکان خارج کردن اتاقها از دسترس (status = 2) یا بازگرداندن آنها به حالت در دسترس (status = 1) است. یک منطق امنیتی مهم در این متد وجود دارد: قبل از خارج کردن یک اتاق از دسترس، بررسی میکند که آیا آن اتاق در بازه زمانی درخواستی (from, to) دارای رزرو قطعی است یا خیر. اگر رزروی وجود داشته باشد، عملیات متوقف شده و با یک خطای 400 به کاربر اطلاع داده میشود. این کار از ایجاد تداخل و از دسترس خارج کردن اتاقی که به مسافری فروخته شده است، جلوگیری میکند و یکپارچگی دادههای رزرو را تضمین مینماید.
| ویژگیها | توضیحات |
| هدف کلی | تغییر وضعیت در دسترس بودن اتاقهای هتل. |
| بررسی امنیتی | جلوگیری از خارج کردن اتاقی که دارای رزرو است. |
| عملیات گروهی | قابلیت تغییر وضعیت چندین اتاق در یک درخواست. |
| عملیات اصلی | بهروزرسانی فیلد status در جدول charter_accommodation_rooms. |
| خطایابی | بازگرداندن پیام خطای واضح در صورت وجود رزرو روی اتاق. |
· ورودیها (پارامترها):
| توضیحات | موقعیت | نوع داده | نام پارمتر |
| آبجکت اصلی درخواست حاوی تمام دادههای لازم برای ایجاد چارتر. | Route |
integer |
$request->id |
کلید اصلی. نوع چارتر را مشخص میکند. مقادیر معتبر: 'route' یا 'accommodation'. |
Body |
array |
$request->items |
(برای type: 'route') نوع وسیله نقلیه را مشخص میکند: 'aircraft', 'train', 'bus'. |
Body |
integer |
$request->status |
| آرایهای حاوی جزئیات اصلی چارتر، مانند مبدأ، مقصد، تاریخ و اطلاعات وسیله نقلیه. | Body |
string (date) |
$request->from |
| مهم. آرایهای از آبجکتها که کلاسهای مختلف قیمتی و ظرفیتی چارتر را تعریف میکنند. | Body |
string (date) |
$request->to |
· خروجی (Return):
| توضیحات | نوع داده |
در صورت موفقیت، یک آبجکت JSON با payload: true. |
Illuminate\Http\JsonResponse |
در صورت وجود رزرو روی یکی از اتاقها، یک پاسخ با کد 400 Bad Request و پیام خطا. |
Illuminate\Http\JsonResponse |
· مثال استفاده / سناریو:
سناریو: تلاش برای خارج کردن اتاقی که رزرو دارد
- Request Body:
json
{
"items": [201],
"status": 2,
"from": "2025-10-15",
"to": "2025-10-25"
}
- Action:
- متد روی
itemsحلقه میزند (برای اتاق201). - کوئری برای یافتن رزروهای اتاق
201در بازه زمانی مشخص شده اجرا میشود. - فرض: یک رزرو پیدا میشود.
- عملیات متوقف میشود.
- Response:
HTTP Status:400 Bad RequestBody:{"error": {"message": "این اتاق در بازه درخواستی شما دارای رزرو می باشد..."}}