#P1666
PATCH /v2/charter (updateCharter)
Charter: Update Charter (Status / Sell)
این اندپوینت برایجهت تغییر وضعیت کلی چارتر (Status) و یا مدیریت وضعیت فروش (Sell) برای همکاران /و HUB)HUB طراحی شده است. این متد فقطبرخلاف دوویرایش رفتارکامل، اصلیعملیات دارد: status و sell. کنترل حذف با ظرفیت کامل و وضعیت پایانیافته نیز در همین متدسبکتری انجام میشود.دهد اما قوانین سختگیرانهای برای حذف (Delete) دارد.
Request Overview
URL:
/v2/charterMethod: PATCH
Controller: CharterController@updateCharter
SupportedAccess ActionsControl
دسترسیstatus→معتبرتغییر وضعیت چارترJWT- ارسال پارامتر
sellaction→الزامیفعال/غیرفعال کردن فروش همکاری یا HUBاست.
PayloadRequest SchemaParameters
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer | شناسه رکورد چارتر | |
| action | string | مقادیر مجاز: status یا sell |
|
| data | object |
Action:Logic: statusAction "status"
وظیفه:برای تغییر وضعیت چارتر (فعال/غیرفعالسازیغیرفعال/حذف) یااستفاده حذفمیشود.
- بررسی وضعیت پایان یافته: اگر وضعیت فعلی چارتر
3باشد، امکان ویرایش وجود ندارد (Error: چارتر مورد نظر در وضعیت پایان یافته می باشد). - بررسی حذف (
status =Status 4):تنها- فراخوانی
مجازمتداستcapacityItemCharter. - اگر
هیچcapacity.totalرزرویباcapacity.capacityبرابر نباشد (قطعی/موقت/warranty)یعنی رزرو قطعی، موقت یا گارانتی وجودنداشتهدارد): - جلوگیری از حذف → Error Code 1000.
- در غیر این صورت وضعیت آپدیت میشود.
data.field Type Description status integer مقداروضعیت جدید (مثلاً 4 برای حذف)# Rule 1 — Deleting a charter if (new_status == 4 && (capacity.total != capacity.capacity)): error: cannot delete, charter has reservations # Rule 2 — Charter already ended if charter.status == 3: error: charter is finishedAction:Logic:sellAction "sell"فعالبراییاکنترلغیرفعال کردنسوئیچهای فروشبرایاستفادههمکاران یا HUB.میشود.- اگر
data.colleagueارسال شود → فیلدcolleague_sellآپدیت میشود. - اگر
data.hubارسال شود → فیلدhub_sellآپدیت میشود. - پس از موفقیت، کش مربوط به عنوان چارتر در Redis پاک میشود.
data.field Type Description colleague boolean فعال/غیرفعالسازی فروش همکارانهمکارhub boolean فعال/غیرفعالسازی فروش HUB Response (Success)
در صورت موفقیت، هیچ محتوایی برگردانده نمیشود (HTTP 204).
# Example: if data.colleague exists: update colleague_sell =HTTP/1.1or204nullNoif data.hub exists: update hub_sell = 1 or nullContentCapacity CalculationResponse (capacityItemCharter)در اکشن حذف، سیستم باید بررسی کند آیا مجموع رزروهای: قطعی + موقت + warranty صفر هستند یا خیر.can_delete = (capacity.total == capacity.capacity)Execution FlowchartStart (PATCH /v2/charter)↓Load Charter by ID↓If Not Found → Error 404↓Switch(action)↓Action = status↓If status=4 → Check capacityItemCharter()↓If has reservations → Error 422↓If charter.status=3 → Error 404↓Update status↓Action = sell↓If colleague/hub in data → Update fields↓Redis::del(charter:*:title)↓Return 204 No ContentResponse SamplesError)#//204Error:successDeletion(nofailedbody)due#to404existingcharter not found { "error": { "code": 1000, "message": "چارتر مورد نظر یافت نشد." } } # cannot delete (status=4)reservations { "error": { "code": 1000, "message": "بر روی این چارتر رزرو انجام شده است و امکان حذف وجود ندارد." } }#//charterError:endedCharter Not Found { "error": { "code": 1000, "message": "چارتر مورد نظردریافتوضعیت پایان یافته می باشد.نشد." } }Flowchart
Start (PATCH /v2/charter)↓Find Charter by ID↓Check Action Type↓Action: Status↓Is Status = 4 (Delete)?↓Check Capacity (Reservations)↓If Has Reserve → Error↓Update StatusAction: Sell↓Update colleague_sell / hub_sell↓Clear Redis Cache↓Return 204 No Content
زمانیکهباشد. - فراخوانی