Skip to main content
#P1552

POST /personnel/shift

Route Info

Method Endpoint Controller Middleware Purpose
POST /personnel/shift OfficialController@shiftWorkStore authWithJwt ایجاد و ثبت شیفت کاری جدید برای پرسنل

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

تابع shiftWorkStore‌ مسئول درج رکورد جدید شیفت در پایگاه‌داده است. پس از اعتبارسنجی مقادیر ورودی و بررسی تداخل زمانی با شیفت‌های قبلی، اطلاعات ثبت و پاسخ JSON بازگردانده می‌شود.

  1. بررسی صحت احراز هویت JWT و نقش کاربر (Admin یا HR).
  2. اعتبارسنجی وجود پارامترهای ضروری (عنوان، زمان شروع، زمان پایان).
  3. اطمینان از نبود تداخل زمانی با سایر شیفت‌ها.
  4. ایجاد رکورد جدید در جدول shift_works با وضعیت فعال.
  5. برگرداندن پاسخ شامل شناسه و جزئیات شیفت تازه‌ثبت‌شده.

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

نام محل نوع الزامی توضیح
title Body string بله عنوان شیفت (مثلاً "شیفت صبح")
start Body string بله ساعت شروع کار (در قالب HH:mm)
end Body string بله ساعت پایان کار (در قالب HH:mm)
status Body integer خیر ۱ برای فعال، ۰ برای غیرفعال
description Body string خیر توضیح اختیاری درباره شیفت

ساختار خروجی

{
  "status": true,
  "time": 1732369602,
  "data": {
    "id": 24,
    "title": "شیفت عصر سیستم فروش",
    "start": "15:00",
    "end": "23:00",
    "status": 1,
    "description": "شیفت عصر اینترنال تیم فروش",
    "created_at": "1404/08/03 14:05:21"
  }
}

نکات امنیتی

  • دسترسی تنها برای کاربران با سطح HR یا Admin مجاز است.
  • تلاش برای تعریف شیفت تکراری در همان ساعت باید با خطای Validation رد شود.

عملکرد

  • عملیات درج کمتر از ۳۰ms زمان دارد (در داده‌های لوکال).
  • ایندکس بر فیلدهای start و end جهت اجتناب از تداخل زمانی پیشنهاد می‌شود.

Dependencies

  • Illuminate\Support\Facades\DB
  • Carbon\Carbon

کدهای خطا

کد شرح منبع
400 پارامتر ورودی ناقص یا نامعتبر Validation
409 تداخل زمانی با شیفت دیگر Business Logic
500 خطای عمومی سرور Exception Handler

پیشنهادهای امنیتی

  • ثبت لاگ ایجاد شیفت با نام مدیر و IP درخواست‌دهنده.
  • ضبط تاریخچه تغییر در جدول shift_logs.

پیشنهادهای توسعه‌ای

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

ممیزی و ثبت وقایع

  • همه عملیات در جدول system_audit ثبت می‌شود (action: 'shift:add').

جمع‌بندی

shiftWorkStore هسته فرآیند ایجاد شیفت کاری است. این مسیر توسط تیم منابع انسانی برای تعریف ساختار کاری واحدها استفاده می‌شود و جزئیات ضروری هر شیفت را ذخیره می‌کند.