//--------------------------------------------------------------------
//     此代码由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
	 {
		[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 CommonDocumentBusinessScenario 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 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; }
    }

}