using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;
namespace NPP.SmartSchedue.Api.Contracts.Services.Notification.Input;
///
/// 通知设置创建输入
///
public class NotificationSettingCreateInput
{
#region 基础信息
///
/// 通知名称
///
[Required(ErrorMessage = "通知名称不能为空")]
[MaxLength(200, ErrorMessage = "通知名称长度不能超过200个字符")]
public string NotificationName { get; set; } = "";
///
/// 通知描述
///
[MaxLength(500, ErrorMessage = "通知描述长度不能超过500个字符")]
public string Description { get; set; } = "";
///
/// 是否启用
///
public bool IsEnabled { get; set; } = true;
#endregion
#region 通知方式配置
///
/// 是否启用邮件通知
///
public bool IsEmailEnabled { get; set; } = false;
///
/// 是否启用系统消息通知
///
public bool IsSystemMessageEnabled { get; set; } = true;
#endregion
#region 时间配置
///
/// 通知开始时间(HH:mm格式,如:09:00)
///
[Required(ErrorMessage = "通知开始时间不能为空")]
[RegularExpression(@"^([01][0-9]|2[0-3]):[0-5][0-9]$", ErrorMessage = "时间格式不正确,请使用HH:mm格式")]
public string StartTime { get; set; } = "09:00";
///
/// 通知结束时间(HH:mm格式,如:18:00)
///
[Required(ErrorMessage = "通知结束时间不能为空")]
[RegularExpression(@"^([01][0-9]|2[0-3]):[0-5][0-9]$", ErrorMessage = "时间格式不正确,请使用HH:mm格式")]
public string EndTime { get; set; } = "18:00";
#endregion
#region 频次配置
///
/// 通知频次类型
///
public NotificationFrequencyEnum FrequencyType { get; set; } = NotificationFrequencyEnum.Once;
///
/// 间隔时间(分钟)
/// 当FrequencyType为FixedInterval时必填
///
public int? IntervalMinutes { get; set; }
#endregion
#region 人员组配置
///
/// 关联的人员组ID
///
[Required(ErrorMessage = "人员组不能为空")]
public long PersonnelGroupId { get; set; }
#endregion
#region 模板配置
///
/// 邮件主题模板
///
[MaxLength(500, ErrorMessage = "邮件主题模板长度不能超过500个字符")]
public string EmailSubjectTemplate { get; set; } = "";
///
/// 邮件内容模板
///
public string EmailContentTemplate { get; set; } = "";
///
/// 系统消息标题模板
///
[MaxLength(500, ErrorMessage = "系统消息标题模板长度不能超过500个字符")]
public string SystemMessageTitleTemplate { get; set; } = "";
///
/// 系统消息内容模板
///
public string SystemMessageContentTemplate { get; set; } = "";
#endregion
#region 触发条件
///
/// 触发条件表达式(JSON格式)
///
public string TriggerConditions { get; set; } = "";
#endregion
}