Skip to main content
#P1439

POST /api/v2/personnel/traffic/license/update

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/personnel/traffic/license/update UserController@updateTrafficLicensePersonnel authWithJwt ویرایش یا انجام عملیات (جایگزینی/تأیید) روی رکورد مرخصی.

منطق عملکرد

  • رفتار تابع وابسته به پارامتر action است:
    • action='update' → ویرایش داده‌های مرخصی.
    • action='substitute' → جایگزینی اپراتور با status جدید.
    • action='confirm' → تأیید اولیه توسط مدیر.
    • action='final_approval' → تأیید نهایی توسط ادمین یا دفتر منابع انسانی.
  • پس از تعیین عملیات، رکورد در rollcall_licenses آپدیت می‌شود.
  • در پاسخ، وضعیت موفقیت و timestamp بازگردانده می‌شود.

پارامترهای ورودی کلیدی

نام نوع ضروری توضیح
id integer بله شناسه رکورد مرخصی.
action string بله نوع عملیات (update, substitute, confirm, final_approval).
details string/integer خیر توضیح یا وضعیت جایگزینی/تأیید.
operator object بله از JWT برای ثبت شناسه تأییدکننده استفاده می‌شود.
POST /api/v2/personnel/traffic/license/update
{
  "id": 40,
  "action": "confirm",
  "details": 3,
  "operator": { "id": 12 }
}

نمونه خروجی موفق

{ "status": true, "time": 1732038200 }

امنیت

  • JWT لازم است.
  • دسترسی اپراتور برای تأییدها باید از دپارتمان واگذار شده خوانده شود.

Dependencies

  • DB Facade
  • Carbon
  • Functions::checkDatetime
  • Exception

کارایی

بدنه تابع فقط شامل یک کوئری UPDATE است و در بازه 1–2 ms اجرا می‌شود.

مدیریت خطا

استثناها در قالب JSON با کد HTTP=400 بازگردانده می‌شوند.

اثرات جانبی

تأییدها می‌توانند زنجیره‌ای باشند؛ هر مرحله مهر زمانی و آیدی تأییدکننده را ثبت می‌کند.

ردپای حسابرسی

پیشنهاد می‌شود لاگ جداگانه برای عملیات تأیید ثبت شود با type=LicenseApproval.

پیشنهاد بهبود

  • جدا کردن مسیرهای تأیید از ویرایش (برای کنترل مجوزها).
  • افزودن تأیید چندمرحله‌ای و نوتیفیکیشن خودکار برای اپراتور جایگزین.

جمع‌بندی

این روت ستون فقرات چرخه تأیید مرخصی است؛ چند حالت عملیاتی (ویرایش، تأیید اولیه، نهایی، جایگزینی) در یک نقطه متمرکز شده‌اند.