//--------------------------------------------------------------------
//     此代码由T4模板自动生成  byzhouhang 20210918
//	   生成时间 2022-10-20 11:51:58 
//     对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
using System;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Collections.Generic;
using System.Linq;

namespace IRaCIS.Core.Domain.Models
{
    ///<summary>
    ///TrialEmailNoticeConfig
    ///</summary>
    [Table("TrialEmailNoticeConfig")]
    public class TrialEmailNoticeConfig : Entity, IAuditUpdate, IAuditAdd, ISoftDelete
    {
        [JsonIgnore]

        public Trial Trial { get; set; }

        [Required]
        public Guid TrialId { get; set; }


        public string SMTPServerAddress { get; set; } = string.Empty;

        public int SMTPServerPort { get; set; }

        [Required]
        public string AuthorizationCode { get; set; } = string.Empty;


        public string FromName { get; set; } = string.Empty;


        public string FromEmail { get; set; } = string.Empty;

        [JsonIgnore]
        public List<TrialEmailNoticeUser> TrialEmailNoticeUserList { get; set; } = new List<TrialEmailNoticeUser>();

        public List<TrialEmailBlackUser> TrialEmailBlackUserList { get; set; } = new List<TrialEmailBlackUser>();


        /// <summary> 业务模块 /// </summary>
        public int BusinessModuleEnum { get; set; }

        /// <summary> 业务层级 /// </summary>
        public int BusinessLevelEnum { get; set; }

        /// <summary> 邮件类型 /// </summary>
        public int EmailTypeEnum { get; set; }

        /// <summary> 邮件加急类型 /// </summary>
        public int EmailUrgentEnum { get; set; }

        /// <summary> 定时周期 /// </summary>
        public string EmailCron { get; set; } = string.Empty;

        /// <summary> 邮件主题 /// </summary>
        public string EmailTopic { get; set; } = string.Empty;

        public string EmailTopicCN { get; set; } = string.Empty;

        /// <summary> 附件 /// </summary>
        public string AttachPath { get; set; } = string.Empty;

        public string AttachCNPath { get; set; } = string.Empty;

        public string Description { get; set; } = string.Empty;


        public string AttachName { get; set; }
        public string AttachNameCN { get; set; }


        public string EmailHtmlContent { get; set; } = string.Empty;
        public string EmailHtmlContentCN { get; set; } = string.Empty;



        [JsonIgnore]

        public EmailNoticeConfig SysEmailNoticeConfig { get; set; }
        public Guid? SysEmailNoticeConfigId { get; set; }


        [Required]
        public string Code { get; set; } = string.Empty;

        [Required]
        public bool IsReturnRequired { get; set; }
        [Required]
        public bool IsAutoSend { get; set; }

        public bool IsEnable { get; set; }


        public EmailBusinessScenario BusinessScenarioEnum { get; set; }

        public CriterionType? CriterionTypeEnum { get; set; }


        public Guid? TrialReadingCriterionId { get; set; }

        [ForeignKey("TrialReadingCriterionId")]
        [JsonIgnore]
        public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }

        [Required]
        public Guid CreateUserId { get; set; }

        [Required]
        public DateTime CreateTime { get; set; }

        [Required]
        public Guid UpdateUserId { get; set; }

        [Required]
        public DateTime UpdateTime { get; set; }

        public bool IsDeleted { get; set; }

        public DateTime? DeletedTime { get; set; }

        public Guid? DeleteUserId { get; set; }


    }

    public class TrialEmailBlackUser : Entity
    {
        [JsonIgnore]
        public TrialEmailNoticeConfig TrialEmailNoticeConfig { get; set; }

        [JsonIgnore]
        public User User { get; set; }


        public Guid TrialEmailNoticeConfigId { get; set; }


        public Guid UserId { get; set; }
    }

}