#P1554
DELETE /personnel/shift
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| DELETE |
/personnel/shift |
OfficialController@shiftWorkDestroy |
authWithJwt |
حذف (یا غیرفعالسازی) یک شیفت کاری موجود |
منطق عملکرد تابع
تابع shiftWorkDestroy بسته به نوع درخواست دریافتی، یا شیفت را بهصورت کامل از جدول حذف میکند یا با تغییر وضعیت آن به حالت غیرفعال، حذف منطقی انجام میدهد. این کنترل ضمن بررسی نقش کاربر، اطمینان حاصل میکند که شیفت درحال استفاده (مثلاً تخصیصدادهشده به پرسنل) قابل حذف نیست.
- دریافت شناسه شیفت از پارامتر ورودی.
- بررسی وجود شیفت در دیتابیس.
- در صورت فعال بودن پرچم
force → حذف فیزیکی رکورد.
- در غیر این صورت → تغییر فیلد
status به ۰ (غیرفعال).
- بازگرداندن پاسخ JSON بر اساس نتیجه عملیات.
پارامترهای ورودی
| نام |
محل |
نوع |
الزامی |
توضیح |
| id |
Body |
integer |
بله |
شناسه شیفت قابل حذف |
| force |
Body |
boolean |
خیر |
در صورت true، رکورد بهصورت دائمی حذف میشود |
ساختار خروجی
{
"status": true,
"time": 1732369925,
"data": {
"id": 24,
"deleted_type": "soft",
"message": "شیفت با موفقیت غیرفعال شد."
}
}
نکات امنیتی
- دسترسی فقط برای کاربران دارای نقش HR یا Admin مجاز است.
- در صورت ارتباط شیفت با رکوردهای دیگر (مثلاً time‑table پرسنل)، حذف مسدود میشود.
عملکرد
- عملیات حذف منطقی زیر ۲۰ms (در حذف نرم) و حذف فیزیکی ~۳۰ms زمان میبرد.
- Transaction Database برای اطمینان از Atomic بودن بهکار میرود.
Dependencies
- Illuminate\Support\Facades\DB
- Carbon\Carbon
- App\Models\ShiftWork
کدهای خطا
| کد |
شرح |
منبع |
| 404 |
شیفت یافت نشد |
Database |
| 409 |
شیفت دارای وابستگی است (قابل حذف نیست) |
Business Rule |
| 500 |
خطای داخلی سرور |
Exception Handler |
پیشنهادهای امنیتی
- ثبت لاگ نوع حذف و شناسه کاربر حذفکننده در
shift_audit_log.
- در حذف دائمی، ارسال هشدار تأیید دوم در رابط کاربری.
پیشنهادهای توسعهای
- افزودن Endpoint برای بازیابی شیفتهای حذفشده (Recycle Bin).
- بازطراحی حذف بهصورت asynchronous با صف پردازش در Redis Queue.
ممیزی و ثبت وقایع
- در جدول
system_audit ثبت میشود با event='shift:delete'.
- فیلدهای کلیدی: user_id, shift_id, delete_type, ip
جمعبندی
shiftWorkDestroy مسیر رسمی حذف شیفت است که قابلیت حذف منطقی و دائمی را فراهم میکند. حذف ایمن با کنترل وابستگی، و ورود لاگ کامل در سامانه حسابرسی از ویژگیهای کلیدی آن محسوب میشود.