using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;
using ZhonTai.Admin.Core.Repositories;
namespace NPP.SmartSchedue.Api.Contracts.Domain.Notification;
///
/// 通知历史记录仓储接口
///
public interface INotificationHistoryRepository : IRepositoryBase
{
///
/// 根据通知设置ID获取历史记录列表
///
Task> GetByNotificationSettingIdAsync(long notificationSettingId);
///
/// 根据接收人员ID获取历史记录列表
///
Task> GetByRecipientPersonnelIdAsync(long recipientPersonnelId);
///
/// 根据发送状态获取历史记录列表
///
Task> GetBySendStatusAsync(NotificationStatusEnum sendStatus);
///
/// 根据通知方式获取历史记录列表
///
Task> GetByNotificationTypeAsync(NotificationTypeEnum notificationType);
///
/// 根据业务类型和业务ID获取历史记录列表
///
Task> GetByBusinessAsync(string businessType, long? businessId = null);
///
/// 获取需要重试的失败通知列表
///
Task> GetFailedNotificationsForRetryAsync(int? maxRetryCount = null);
///
/// 获取指定时间范围内的通知统计信息
///
Task> GetNotificationStatisticsAsync(
DateTime startTime,
DateTime endTime,
long? notificationSettingId = null);
///
/// 根据日期范围获取历史记录列表
///
Task> GetByDateRangeAsync(DateTime startDate, DateTime endDate);
///
/// 更新通知发送状态
///
Task UpdateSendStatusAsync(long id, NotificationStatusEnum sendStatus, string sendResult = "", string errorMessage = "");
///
/// 批量更新通知发送状态
///
Task BatchUpdateSendStatusAsync(List<(long Id, NotificationStatusEnum Status, string Result, string Error)> updates);
}