using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Domain.Time;
using ZhonTai.Admin.Core.Repositories;

namespace NPP.SmartSchedue.Api.Contracts;

/// <summary>
/// 班次规则仓储接口
/// </summary>
public interface IShiftRuleRepository : IRepositoryBase<ShiftRuleEntity>
{
    /// <summary>
    /// 获取适用于特定人员、日期和班次的排班规则
    /// </summary>
    /// <param name="personnelId">人员ID</param>
    /// <param name="targetDate">目标日期</param>
    /// <param name="shiftId">班次ID（可选）</param>
    /// <returns>适用的排班规则列表</returns>
    Task<List<ShiftRuleEntity>> GetApplicableRulesAsync(long personnelId, DateTime targetDate, long? shiftId);
} 