namespace IRaCIS.Core.Domain.Models;

[Comment("稽查 - 配置表 (需要同步)")]
[Table("FrontAuditConfig")]
public class FrontAuditConfig : BaseFullAuditEntity
{
    #region 导航属性

    #endregion
    public string ChildDataEnLabel { get; set; } = null!;

    [Comment("前端渲染数组  数组名 和数组值")]
   
    public string ChildDataLabel { get; set; } = null!;

    [Comment("子数据Value")]
   
    public string ChildDataValue { get; set; } = null!;

    public Guid? ChildrenTypeId { get; set; }

    [Comment("翻译的字段名   这里有可能是一个数组名  那么具体的翻译字段名就不是这个了")]
    public string Code { get; set; } = null!;

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

    [Comment("前端使用 C  M")]
    public string ConfigType { get; set; } = null!;

    [Comment("前端展示类型   Router, Array,Table")]
    public string DataType { get; set; } = null!;

    [Comment("日期格式")]
    public string DateType { get; set; } = null!;

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

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

    [Comment("翻译的字典名(单个字段翻译的时候)")]
    public string DictionaryCode { get; set; } = null!;

    [Comment("字典名称-待废弃核查")]
    public string DictionaryKey { get; set; } = null!;

    [Comment("枚举字典Type")]
    public string DictionaryType { get; set; } = null!;

    [Comment("后端翻译的类型  对应前端界面  Dictionary Date")]
    public string EnumType { get; set; } = null!;

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

    [Comment("外键表")]
    public string ForeignKeyTableName { get; set; } = null!;

    [Comment("外键Text")]
    public string ForeignKeyText { get; set; } = null!;

    [Comment("外键Value")]
    public string ForeignKeyValue { get; set; } = null!;

    [Comment("标识")]
   
    public string Identification { get; set; } = null!;

    [Comment("接口名")]
    public string InterfaceName { get; set; } = null!;

    [Comment("未知是否有用-废弃核查")]
    public bool IsConfig { get; set; }

    public bool IsEnable { get; set; }

    [Comment("是否完成")]
    public bool IsFinish { get; set; }

    [Comment("是否有原因")]
    public bool IsHaveReason { get; set; }

    [Comment("是否有签名")]
    public bool IsHaveSign { get; set; }

    [Comment("是否加入计划")]
    public bool? IsJoinPlan { get; set; }

    [Comment("待废弃核查")]
    public bool IsShowByTrialConfig { get; set; }

    public int IsShowParent { get; set; }

    [Comment("是否为特殊类型")]
    public bool? IsSpecialType { get; set; }

    public Guid? ModuleTypeId { get; set; }

    public Guid? ObjectTypeId { get; set; }

    public Guid? OptTypeId { get; set; }

    public Guid? ParentId { get; set; }

    public int Sort { get; set; }

    [MaxLength]
    public string? TableConfigJsonStr { get; set; }

    [Comment("待废弃核查")]
    public string TrialConfigRelyFieldName { get; set; } = null!;

    [MaxLength]
    public string? UrlConfigJsonStr { get; set; }

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

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

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

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

    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 FixedColumnEnName { 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 string MergeColumnEnName { get; set; } = String.Empty;

    public string ColumnEnName { 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; }

}