Skip to main content
#P1554

DELETE /personnel/shift

Route Info

Method Endpoint Controller Middleware Purpose
DELETE /personnel/shift OfficialController@shiftWorkDestroy authWithJwt حذف (یا غیرفعال‌سازی) یک شیفت کاری موجود

منطق عملکرد تابع

تابع shiftWorkDestroy‌ بسته به نوع درخواست دریافتی، یا شیفت را به‌صورت کامل از جدول حذف می‌کند یا با تغییر وضعیت آن به حالت غیرفعال، حذف منطقی انجام می‌دهد. این کنترل ضمن بررسی نقش کاربر، اطمینان حاصل می‌کند که شیفت درحال استفاده (مثلاً تخصیص‌داده‌شده به پرسنل) قابل حذف نیست.

  1. دریافت شناسه شیفت از پارامتر ورودی.
  2. بررسی وجود شیفت در دیتابیس.
  3. در صورت فعال بودن پرچم force → حذف فیزیکی رکورد.
  4. در غیر این صورت → تغییر فیلد status به ۰ (غیرفعال).
  5. بازگرداندن پاسخ 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 مسیر رسمی حذف شیفت است که قابلیت حذف منطقی و دائمی را فراهم می‌کند. حذف ایمن با کنترل وابستگی، و ورود لاگ کامل در سامانه حسابرسی از ویژگی‌های کلیدی آن محسوب می‌شود.