using System.Threading.Tasks;
using System.Collections.Generic;
using ZhonTai.Admin.Core.Dto;
using NPP.SmartSchedue.Api.Contracts.Services.Personnel.Input;
using NPP.SmartSchedue.Api.Contracts.Services.Personnel.Output;
using NPP.SmartSchedue.Api.Contracts.Domain.Personnel;

namespace NPP.SmartSchedue.Api.Contracts.Services.Personnel;

/// <summary>
/// 人员工作限制服务接口
/// </summary>
public interface IPersonnelWorkLimitService
{
    Task<PersonnelWorkLimitGetOutput> GetAsync(long id);

    Task<PageOutput<PersonnelWorkLimitGetPageOutput>> GetPageAsync(PageInput<PersonnelWorkLimitGetPageInput> input);

    Task<long> AddAsync(PersonnelWorkLimitAddInput input);

    Task UpdateAsync(PersonnelWorkLimitUpdateInput input);

    Task DeleteAsync(long id);

    Task SoftDeleteAsync(long id);

    Task BatchSoftDeleteAsync(long[] ids);

    Task<PersonnelWorkLimitEntity> GetPersonnelWorkLimitAsync(long personnelId);

    /// <summary>
    /// 根据人员ID获取其所有工作限制记录
    /// </summary>
    /// <param name="personnelId">人员ID</param>
    /// <returns>人员的所有工作限制记录</returns>
    Task<List<PersonnelWorkLimitGetPageOutput>> GetByPersonnelIdAsync(long personnelId);
} 