Skip to main content
#P1433

POST /api/v2/cartable/request/operation

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/cartable/request/operation UserController@operationCartableRequest authWithJwt ثبت یا حذف عملیات کارتابل برای مرخصی‌ها و ترددها (جانشین، تایید، تصویب نهایی، حذف)

منطق عملکرد

  • بر اساس نوع type تصمیم گرفته می‌شود:
    • rollcall_licenses: مرخصی‌ها و مأموریت‌ها.
    • rollcall: درخواست‌های تردد.
  • فیلد operation_type مشخص‌کننده نوع اقدام:
    • substitute → جانشین شدن.
    • confirm → تایید درخواست.
    • final_approval → تصویب نهایی مدیر.
    • delete → حذف رکورد.
  • در هر حالت، جدول متناظر (rollcall_licenses یا rollcalls) با داده زمان فعلی `Carbon::now()->toDateTimeString()` و یادداشت (`note`) بروزرسانی می‌شود.
  • در صورت `delete`، رکورد موردنظر از جدول حذف کامل می‌گردد.

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

نام نوع ضروری توضیح
type enum('rollcall_licenses','rollcall') بله نوع درخواست هدف در کارتابل.
id integer بله شناسه رکورد هدف عملیات.
operation_type enum('substitute','confirm','final_approval','delete') بله نوع اقدام در مسیر.
status integer بله کد وضعیت جدید رکورد.
note string خیر توضیح متنی اقدام.
POST /api/v2/cartable/request/operation
{
  "type": "rollcall_licenses",
  "id": 551,
  "operation_type": "confirm",
  "status": 3,
  "note": "تایید شد توسط مدیر واحد"
}

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

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

امنیت

  • نیاز به JWT فعال دارد؛ اپراتور از درون توکن خوانده می‌شود.
  • احراز سطح دسترسی برای حذف باید در سمت کلاینت یا سرویس مدیریت اضافه شود؛ در این کد هنوز بررسی نمی‌شود.

Dependencies

  • Carbon
  • DB Facade
  • Request (Illuminate\Http)

کارایی

به‌خاطر استفاده از update() مستقیم روی DB، زمان اجرا کمتر از 3 ms است. هیچ کوئری پیچیده ندارد.

مدیریت خطا

با try/catch، در صورت خطای دیتابیس یا پارامتر، پاسخ JSON با کد 400 و فیلدهای `error` یا `message` بازگردانده می‌شود.

اثرات جانبی

تغییر مستقیم داده‌های منابع انسانی؛ حذف یا تغییر وضعیت رکوردها در پایگاه، بدون لاگ یا تراکنش محافظ.

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

در حال حاضر هیچ ثبت لاگی ندارد؛ برای صحت سازمانی باید SystemLog::dispatch() اضافه گردد.

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

  • مدیریت سطح دسترسی و جلوگیری از حذف توسط کاربران غیرمجاز.
  • افزودن تراکنش DB برای جلوگیری از حذف ناقص رکوردهای وابسته.

جمع‌بندی

این روت نسخه اجرایی کارتابل است که نتیجه درخواست‌ها را ثبت می‌کند. ساختار ساده و سریع دارد، اما نیاز مبرم به کنترل امنیتی و حسابرسی دقیق دارد.