using System.Collections.Generic;
using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Domain.Notification;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;
using ZhonTai.Admin.Core.Repositories;
namespace NPP.SmartSchedue.Api.Contracts.Core.Repositories;
///
/// 人员组仓储接口
///
public interface IPersonnelGroupRepository : IRepositoryBase
{
///
/// 根据启用状态获取人员组列表
///
/// 是否启用
///
Task> GetByEnabledAsync(bool enabled);
///
/// 根据人员组类型获取人员组列表
///
/// 人员组类型
///
Task> GetByGroupTypeAsync(PersonnelGroupTypeEnum groupType);
///
/// 检查人员组名称是否存在
///
/// 人员组名称
/// 排除的ID
///
Task ExistsGroupNameAsync(string groupName, long? excludeId = null);
///
/// 获取包含指定人员的人员组列表
///
/// 人员ID
///
Task> GetGroupsContainingPersonnelAsync(long personnelId);
///
/// 获取包含指定部门的人员组列表
///
/// 部门ID
///
Task> GetGroupsContainingDepartmentAsync(long departmentId);
///
/// 获取包含指定职位的人员组列表
///
/// 职位
///
Task> GetGroupsContainingPositionAsync(string position);
///
/// 计算人员组的实际人员数量
///
/// 人员组ID
///
Task CalculatePersonnelCountAsync(long personnelGroupId);
}