using System;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;

namespace NPP.SmartSchedue.Api.Contracts.Services.Notification.Output;

/// <summary>
/// 通知设置输出
/// </summary>
public class NotificationSettingOutput
{
    #region 基础信息
    
    /// <summary>
    /// 通知设置ID
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    /// 通知名称
    /// </summary>
    public string NotificationName { get; set; } = "";

    /// <summary>
    /// 通知描述
    /// </summary>
    public string Description { get; set; } = "";

    /// <summary>
    /// 是否启用
    /// </summary>
    public bool IsEnabled { get; set; } = true;

    #endregion

    #region 通知方式配置
    
    /// <summary>
    /// 是否启用邮件通知
    /// </summary>
    public bool IsEmailEnabled { get; set; } = false;

    /// <summary>
    /// 是否启用系统消息通知
    /// </summary>
    public bool IsSystemMessageEnabled { get; set; } = true;

    #endregion

    #region 时间配置
    
    /// <summary>
    /// 通知开始时间（HH:mm格式，如：09:00）
    /// </summary>
    public string StartTime { get; set; } = "";

    /// <summary>
    /// 通知结束时间（HH:mm格式，如：18:00）
    /// </summary>
    public string EndTime { get; set; } = "";

    #endregion

    #region 频次配置
    
    /// <summary>
    /// 通知频次类型
    /// </summary>
    public NotificationFrequencyEnum FrequencyType { get; set; } = NotificationFrequencyEnum.Once;

    /// <summary>
    /// 间隔时间（分钟）
    /// </summary>
    public int? IntervalMinutes { get; set; }

    #endregion

    #region 人员组配置
    
    /// <summary>
    /// 关联的人员组ID
    /// </summary>
    public long PersonnelGroupId { get; set; }

    /// <summary>
    /// 人员组名称
    /// </summary>
    public string PersonnelGroupName { get; set; } = "";

    #endregion

    #region 模板配置
    
    /// <summary>
    /// 邮件主题模板
    /// </summary>
    public string EmailSubjectTemplate { get; set; } = "";

    /// <summary>
    /// 邮件内容模板
    /// </summary>
    public string EmailContentTemplate { get; set; } = "";

    /// <summary>
    /// 系统消息标题模板
    /// </summary>
    public string SystemMessageTitleTemplate { get; set; } = "";

    /// <summary>
    /// 系统消息内容模板
    /// </summary>
    public string SystemMessageContentTemplate { get; set; } = "";

    #endregion

    #region 触发条件
    
    /// <summary>
    /// 触发条件表达式（JSON格式）
    /// </summary>
    public string TriggerConditions { get; set; } = "";

    #endregion

    #region 时间信息
    
    /// <summary>
    /// 创建时间
    /// </summary>
    public DateTime CreatedTime { get; set; }

    /// <summary>
    /// 修改时间
    /// </summary>
    public DateTime? ModifiedTime { get; set; }

    /// <summary>
    /// 最后修改时间
    /// </summary>
    public DateTime? LastModifiedTime { get; set; }

    #endregion
}