using System.Threading.Tasks;
using System.Collections.Generic;
using NPP.SmartSchedue.Api.Contracts.Services.Notification.Input;
using NPP.SmartSchedue.Api.Contracts.Services.Notification.Output;
namespace NPP.SmartSchedue.Api.Contracts.Services.Notification;
///
/// 系统消息服务接口
/// 决策点1:基础通知方式 - 系统消息通知
///
public interface ISystemMessageService
{
#region 单个消息发送
///
/// 发送系统消息
///
/// 发送系统消息输入模型
/// 发送结果
Task SendSystemMessageAsync(SendSystemMessageInput input);
///
/// 发送带操作按钮的系统消息
///
/// 发送带操作按钮的系统消息输入模型
/// 发送结果
Task SendSystemMessageWithActionsAsync(SendSystemMessageWithActionsInput input);
#endregion
#region 批量消息发送
///
/// 批量发送系统消息
///
/// 批量发送系统消息输入模型
/// 批量发送结果
Task BatchSendSystemMessageAsync(BatchSendSystemMessageInput input);
///
/// 个性化批量发送系统消息
/// 每个收件人可以有不同的消息内容
///
/// 消息项列表
/// 批量发送结果
Task BatchSendPersonalizedSystemMessageAsync(List messageItems);
#endregion
#region 消息模板
///
/// 使用模板发送系统消息
///
/// 使用模板发送系统消息输入模型
/// 发送结果
Task SendSystemMessageByTemplateAsync(SendSystemMessageByTemplateInput input);
#endregion
#region 消息管理
///
/// 标记消息为已读
///
/// 消息ID
/// 接收人员ID
/// 操作结果
Task MarkMessageAsReadAsync(long messageId, long recipientPersonnelId);
///
/// 批量标记消息为已读
///
/// 消息ID列表
/// 接收人员ID
/// 操作结果
Task BatchMarkMessagesAsReadAsync(List messageIds, long recipientPersonnelId);
///
/// 删除消息
///
/// 消息ID
/// 接收人员ID
/// 操作结果
Task DeleteMessageAsync(long messageId, long recipientPersonnelId);
///
/// 获取用户未读消息数量
///
/// 接收人员ID
/// 未读消息数量
Task GetUnreadMessageCountAsync(long recipientPersonnelId);
#endregion
}