using IRaCIS.Core.Domain.Share;

namespace IRaCIS.Core.Domain.Models;

[Comment("后台 - 邮件配置表表（需要同步）")]
[Table("EmailNoticeConfig")]
public class EmailNoticeConfig : BaseFullDeleteAuditEntity
{
    #region 导航属性
    [JsonIgnore]
    public List<TrialEmailNoticeConfig> TrialEmailNoticeConfigList { get; set; }

    [JsonIgnore]
    public List<EmailNoticeUserType> EmailNoticeUserTypeList { get; set; } = new List<EmailNoticeUserType>();
    #endregion

    public string AttachCNPath { get; set; } = null!;

    public string AttachName { get; set; } = null!;

    public string AttachNameCN { get; set; } = null!;

    public string AttachPath { get; set; } = null!;

    [Comment("业务级别")]
    public int BusinessLevelEnum { get; set; }

    [Comment("业务模块")]
    public int BusinessModuleEnum { get; set; }

    [Comment("业务场景")]
    public EmailBusinessScenario BusinessScenarioEnum { get; set; }

    public string Code { get; set; } = null!;

    [Comment("标准枚举")]
    public CriterionType? CriterionTypeEnum { get; set; }

    public string Description { get; set; } = null!;

    [Comment("发送周期")]
    public string EmailCron { get; set; } = null!;
    [MaxLength]
    public string EmailHtmlContent { get; set; } = null!;
    [MaxLength]
    public string EmailHtmlContentCN { get; set; } = null!;

    public string EmailTopic { get; set; } = null!;

    public string EmailTopicCN { get; set; } = null!;

    [Comment("加急枚举")]
    public int EmailUrgentEnum { get; set; }

    [Comment("是否自动发送")]
    public bool IsAutoSend { get; set; }

    [Comment("是否区分标准")]
    public bool IsDistinguishCriteria { get; set; }

    public bool IsEnable { get; set; }

    [Comment("是否需要回执")]
    public bool IsReturnRequired { get; set; }

    public SysEmailLevel SystemLevel { get; set; }
}
[Comment("后台 - 邮件配置用户类型表（需要同步）")]
[Table("EmailNoticeUserType")]

public class EmailNoticeUserType : Entity
{
    [JsonIgnore]
    public EmailNoticeConfig EmailNoticeConfig { get; set; }

    public Guid EmailNoticeConfigId { get; set; }
    public UserTypeEnum UserType { get; set; }

    public EmailUserType EmailUserType { get; set; }
}

