POST /v2/core/accommodation/update Core Accommodation Update این اندپوینت برای به‌روزرسانی اطلاعات یک اقامتگاه موجود استفاده می‌شود. رفتار اندپوینت در دو حالت انجام می‌شود: method = "update" → به‌روزرسانی کامل رکورد اصلی (hotels)، ثبت لوگو و رسانه، به‌روزرسانی یا ایجاد Mapping، و اجرای Jobها. method = "board" → فقط آپدیت فیلد Board و اجرای Jobهای مرتبط. Request Overview URL: /v2/core/accommodation/update Method: POST Controller: CoreController@updateAccommodation Middleware Stack: authWithJwt → core Access Control JWT معتبر operator.branch == "[0]" Request Body Schema Field Type Required Description id integer yes ID اقامتگاه method string yes مقدار: update یا board data object yes شیء اصلی داده‌های ورودی در حالت method = update ، ساختار data شامل تمام فیلدهای زیر است: Field Type Description type string نوع اقامتگاه title_fa string نام فارسی title_en string نام انگلیسی rate int ستاره country int ID کشور state int ID استان city int ID شهر location string موقعیت جغرافیایی address string آدرس کامل description string توضیحات board array BB/HB/FB … یا خالی possibilities array امکانات هتل details object JSON کامل جزئیات site string وب‌سایت email string ایمیل mobile string موبایل phone string تلفن ثابت leader_name string نام مدیر leader_mobile string موبایل مدیر confirm_status int تأیید/عدم‌تأیید priority int اولویت نمایش logo string|null مسیر عکس لوگو media array گالری تصاویر mapping object|null اطلاعات Supplier Mapping Update Logic (method = "update") آپدیت کامل رکورد در جدول hotels با Query Builder board و possibilities در صورت خالی بودن → null details همیشه json_encode می‌شود updated_at ← Carbon::now() Media Update Rules اگر logo جدید ارسال شده باشد: extract extension چک تکراری بودن در Media در صورت عدم وجود → create media[]: برای هر آیتم extension استخراج می‌شود چک وجود رکورد در صورت نبودن → create Mapping Logic اگر mapping وجود داشته باشد: اگر رکورد mapping_accommodations وجود داشته باشد → update در غیر اینصورت → insert کلیدهای پشتیبانی‌شده: tport, sepehr, snapptrip, alibaba, eghamat24, iranhotelonline Update Logic (method = "board") فقط فیلد board آپدیت می‌شود null در صورت خالی بودن updated_at آپدیت می‌شود Background Jobs Job Queue Delay Scope UpdateRedis fastJob none method = update → hotels و hotels_details method = board → فقط hotels_details SystemLog snailJob 10 minutes update → نوع UpdateAccommodation board → نوع BoardAccommodation Response (Success) { "status": true, "time": 1710000000, "message": "1402 | Accommodation updated!" } Response (Error) { "status": false, "code": "1003", "message": "(Exception message)", "trace": [...] } Flowchart Validate JWT → Validate Core Access ↓ Read method / id / data ↓ IF method = update ↓ Update hotels Record ↓ Insert logo if new ↓ Insert media images if new ↓ Insert/Update Supplier Mapping ↓ Dispatch UpdateRedis + SystemLog ↓ Return Success IF method = board ↓ Update board Field Only ↓ Dispatch UpdateRedis(board) + SystemLog ↓ Return Success