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

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

        public string Value { get; set; } = String.Empty;

        public string ValueCN { get; set; } = String.Empty;

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

        public string DescriptionCN { get; set; } = String.Empty;

        public DateTime CreateTime { get; set; }

        public Guid CreateUserId { get; set; }
        public DateTime UpdateTime { get; set; }

        public Guid UpdateUserId { get; set; }

        /// <summary>
        /// 是否有签名
        /// </summary>
        public bool IsHaveSign { get; set; }

        /// <summary>
        /// 是否有原因
        /// </summary>
        public bool IsHaveReason { get; set; }

        /// <summary>
        /// 是否完成
        /// </summary>
        public bool IsFinish { get; set; }

        /// <summary>
        /// 是否加入计划
        /// </summary>
        public bool IsJoinPlan { get; set; }

        /// <summary>
        /// 标识
        /// </summary>
        public string Identification { get; set; } = string.Empty;

        public Guid? ParentId { get; set; }


        public bool IsEnable { get; set; }

        public int Sort { get; set; }


        public Guid? ModuleTypeId { get; set; }

        public Guid? ObjectTypeId { get; set; }
        public Guid? OptTypeId { get; set; }

        public Guid? ChildrenTypeId { get; set; }

        public int IsShowParent { get; set; }

        public string InterfaceName { get; set; } = String.Empty;

        //前端使用 C  M
        public string ConfigType { get; set; } = String.Empty;


        //翻译的字段名   这里有可能是一个数组名  那么具体的翻译字段名就不是这个了
        public string Code { get; set; } = String.Empty;


        //前端渲染数组  数组名 和数组值
        public string ChildDataLabel { get; set; }
        public string ChildDataValue { get; set; }



        /// <summary>
        /// 翻译的字典名(单个字段翻译的时候)
        /// </summary>

        public string DictionaryCode { get; set; } = String.Empty;


        /// <summary>
        /// 前端展示类型   Router, Array,Table
        /// </summary>

        public string DataType { get; set; }

        // 后端翻译的类型  对应前端界面  "",Dictionary,Date
        public string EnumType { get; set; }



        /// <summary>
        /// 翻译的类型    FrontAudit 的描述 可能是Id  Code  
        /// </summary>
        public string DictionaryType { get; set; } = String.Empty;


        /// <summary>
        ///  后端翻译的 日期类型
        /// </summary>

        public string DateType { get; set; } = String.Empty;




        /// <summary> 字典表  </summary>
        public string ForeignKeyTableName { get; set; } = String.Empty;

        /// <summary> 字典Value  </summary>
        public string ForeignKeyValue { get; set; } = String.Empty;

        /// <summary> 字典  </summary>
        public string ForeignKeyText { get; set; } = String.Empty;




        public string TableConfigJsonStr { get; set; } = String.Empty;

        public string UrlConfigJsonStr { get; set; } = String.Empty;




        #region 废弃
        //未知是否有用
        public bool IsConfig { get; set; }
        /// <summary>
        /// 是否为特殊类型
        /// </summary>
        public bool IsSpecialType { get; set; }
        public string DictionaryKey { get; set; }


        public bool IsShowByTrialConfig { get; set; }
        public string TrialConfigRelyFieldName { get; set; }

        #endregion

    }




    public class UrlConfig
    {
        public bool IsRoute { get; set; }

        public string RoutePath { get; set; }

        public bool IsHaveParameters { get; set; }

        public List<ParameterConfig> ParameterList { get; set; } = new List<ParameterConfig>();

        public class ParameterConfig
        {
            public string UrlParameterName { get; set; } = String.Empty;
            public string UrlParameterValueName { get; set; } = String.Empty;
        }
    }

    public class TableConfig
    {
        public bool IsList { get; set; }
        public string ListName { get; set; } = String.Empty;
        public bool IsFixedColumn { get; set; }
        public string FixedColumnName { get; set; } = String.Empty;
        public string ColumnName { get; set; } = String.Empty;
        public string ColumnValue { get; set; } = String.Empty;
        public bool IsMerge { get; set; }
        public string MergeColumnName { get; set; } = String.Empty;


        public bool IsPicture { get; set; }


        public bool IsNeedTransalate { get; set; }
        public string  TranslateDictionaryName { get; set; } = String.Empty;


        public bool IsDynamicTranslate { get; set; }

    }

}