using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Domain.Notification;
using ZhonTai.Admin.Core.Repositories;
namespace NPP.SmartSchedue.Api.Contracts.Core.Repositories;
///
/// 通知设置仓储接口
///
public interface INotificationSettingRepository : IRepositoryBase
{
///
/// 根据启用状态获取通知设置列表
///
/// 是否启用
///
Task> GetByEnabledAsync(bool enabled);
///
/// 根据人员组ID获取通知设置列表
///
/// 人员组ID
///
Task> GetByPersonnelGroupIdAsync(long personnelGroupId);
///
/// 根据通知方式获取通知设置列表
///
/// 通知方式
///
Task> GetByNotificationTypeAsync(int notificationType);
///
/// 根据触发条件获取匹配的通知设置列表
///
/// 业务类型
/// 业务上下文数据
///
Task> GetMatchingNotificationSettingsAsync(
string businessType,
Dictionary businessContext);
///
/// 检查通知设置名称是否存在
///
/// 通知名称
/// 排除的ID
///
Task ExistsNotificationNameAsync(string notificationName, long? excludeId = null);
///
/// 获取需要在当前时间执行的通知设置列表
///
/// 当前时间
///
Task> GetActiveNotificationSettingsForTimeAsync(DateTime currentTime);
}