Skip to main content
#P1653

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