//--------------------------------------------------------------------
//     此代码由T4模板自动生成  byzhouhang 20210918
//	   生成时间 2022-02-15 11:55:57 
//     对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Share;
using Newtonsoft.Json;
namespace IRaCIS.Core.Application.Contracts
{
    public class TrialSelectEmailNoticeConfigView : EmailNoticeConfigView
    {
        public bool IsHaveSelected { get; set; }
    }

    /// <summary> EmailNoticeConfigView  列表视图模型 </summary>
    public class EmailNoticeConfigView : EmailNoticeConfigAddOrEdit
    {

        public DateTime CreateTime { get; set; }
        public Guid CreateUserId { get; set; }
        public Guid UpdateUserId { get; set; }

        public DateTime UpdateTime { get; set; }



        public List<EmailUserTypeDto> EmailNoticeUserList { get; set; }


        public new List<UserTypeEnum> ToUserTypeList => EmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(t => t.UserType).ToList();
        public new List<UserTypeEnum> CopyUserTypeList => EmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.Copy).Select(t => t.UserType).ToList();

        //[JsonIgnore]
        //public SystemBasicDataSelect Scenario { get; set; }
        ////public Guid? ScenarioParentId => Scenario.ParentId;
        //public string ScenarioName => Scenario.Value;
        //public string ScenarioNameCN => Scenario.ValueCN;
        //public List<CriterionType> CriteriaEnumList { get; set; }

    }

    public class EmailUserTypeDto
    {
        public UserTypeEnum UserType { get; set; }

        public EmailUserType EmailUserType { get; set; }
    }

    ///<summary>EmailNoticeConfigQuery  列表查询参数模型</summary>
    public class EmailNoticeConfigQuery : PageInput
    {
        //public Guid? ScenarioId { get; set; }

        public EmailBusinessScenario? BusinessScenarioEnum { get; set; }

        public bool? IsReturnRequired { get; set; }
        public bool? IsEnable { get; set; }

        public CriterionType? CriterionTypeEnum { get; set; }

        public Guid? TrialId { get; set; }

        public bool? IsDistinguishCriteria { get; set; }

    }

    ///<summary> EmailNoticeConfigAddOrEdit  列表查询参数模型</summary>
    public class EmailNoticeConfigAddOrEdit
    {
        public Guid? Id { get; set; }
        public string Code { get; set; } = String.Empty;

        public EmailBusinessScenario BusinessScenarioEnum { get; set; }

        /// <summary>
        /// 是否区分标准
        /// </summary>
        public bool IsDistinguishCriteria { get; set; }

        public bool IsReturnRequired { get; set; }
        public bool IsEnable { get; set; }
        public bool IsAutoSend { get; set; }

        public bool IsDeleted { get; set; }



        public CriterionType? CriterionTypeEnum { get; set; }

        /// <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; }
        public string Description { get; set; } = string.Empty;


        /// <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;


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

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

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

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

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


        public List<UserTypeEnum> ToUserTypeList { get; set; }
        public List<UserTypeEnum> CopyUserTypeList { get; set; }

    }




}