#P1436
POST /api/v2/personnel/traffic/update
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| POST | /api/v2/personnel/traffic/update | UserController@updateTrafficPersonnel | authWithJwt | ویرایش وضعیت تردد پرسنل در جدول rollcalls. |
منطق عملکرد
- از
Requestسه مقدار اصلی دریافت میشود:id،statusوoperator. - با استفاده از کوئری
DB::table('rollcalls')->where('id', id)->update($update)رکورد تردد موردنظر بهروزرسانی میشود. - فیلدهای اصلاح شده:
- status: وضعیت جدید تردد (۱=در انتظار، ۲=رد شده، ۳=تأیید شده).
- updated_at: زمان آخرین بهروزرسانی با فرمت ISO.
- updated_by: شناسه اپراتور از JWT.
- در پایان پاسخ JSON برمیگردد با status=true و timestamp.
پارامترهای ورودی
| نام | نوع | ضروری | توضیح |
| id | integer | بله | شناسه رکورد در جدول rollcalls. |
| status | integer | بله | نوع وضعیت جدید: (۱،۲،۳). |
| operator | object | بله | از JWT گرفته میشود برای ثبت شناسه و کنترل دسترسی. |
POST /api/v2/personnel/traffic/update
{
"id": 84,
"status": 3,
"operator": { "id": 19 }
}
نمونه خروجی موفق
{
"status": true,
"time": 1732037500
}
امنیت و کنترل دسترسی
- از JWT اپراتور برای احراز هویت و تعیین شعبه استفاده میشود.
- دسترسی صرفاً در محدوده شعبه کاربر معتبر است.
- عدم وجود رکورد یا تلاش برای ویرایش رکورد خارجی با پاسخ
400 Bad Requestمدیریت میشود.
Dependencies
- DB Facade
- Carbon
- Exception
کارایی
عملیات فوق فقط شامل یک کوئری UPDATE است و معمولاً کمتر از 1 ms زمان اجرا دارد.
مدیریت خطا
در صورت بروز استثنا، خطا با پیام $e->getMessage() بهصورت JSON بازگردانده شده و کد HTTP=400 تنظیم میشود.
اثرات جانبی
ویرایش مستقیم رکورد تردد در جدول rollcalls، بدون ایجاد لاگ سیستم.
ردپای حسابرسی
پیشنهاد میشود فراخوانی SystemLog::dispatch(['type' => 'UpdateTraffic']) اضافه گردد تا تغییرات ثبت دائمی شوند.
پیشنهاد بهبود
- اعتبارسنجی مقدار
statusقبل از آپدیت برای جلوگیری از حالتهای نامعتبر. - افزودن فیلد
reasonدر آینده برای ثبت دلیل رد یا تأیید تردد.
جمعبندی
روت ویرایش تردد نقطه مرکزی کنترل روزانه در سیستم Attendance است. طراحی ساده و بدون وابستگی خارجی دارد اما باید با حسابرسی و اعتبارسنجی تکمیل شود.