using Newtonsoft.Json.Linq;

namespace Tiobon.Core.Model;

public class MenuParam
{
    public int langId { get; set; }
    public string menuName { get; set; }
    public string timestamp { get; set; }
    public string token { get; set; }
    public dynamic jsonParam { get; set; }
}
public class MenuReturn
{
    public List<DT_SubMenu> DT_SubMenu { get; set; }
    public List<DT_MenuColType> DT_MenuColType { get; set; }

}
public class DT_SubMenu
{
    public string IconType { get; set; }
    public string MenuGroupTitle { get; set; }
    public string MenuName { get; set; }
    public string MenuNo { get; set; }
    public string MenuUrl { get; set; }

}

public class DT_MenuColType
{
    public string MenuColType { get; set; }
}

public class ModuleParam
{
    public int langId { get; set; }
    public string menuName { get; set; }
    public string timestamp { get; set; }
    public string token { get; set; }
    public ModulejsonParam jsonParam { get; set; }

    private JObject _jsonParam;
    public JObject jsonParam1
    {
        get { return _jsonParam; }
        set
        {
            _jsonParam = value;
        }
    }
}
public class ModulejsonParam
{
    public long? MasterId { get; set; }
}

public class ModuleReturn
{
    public JM_PageControlT1 JM_PageControlT1 { get; set; } = new JM_PageControlT1();
    public JM_TableColumnT1 JM_TableColumnT1 { get; set; } = new JM_TableColumnT1();
    public List<DT_PageMutiMsg> DT_PageMutiMsg { get; set; }

    public DT_Procedure DT_Procedure { get; set; } = new DT_Procedure();
}

public class ModuleESSReturn
{
    public JM_PageControlT1 JM_PageControlT1 { get; set; } = new JM_PageControlT1();
    public List<TableColumn> DT_TableColumnT1 { get; set; } = new List<TableColumn>();
    public List<TableColumn> DT_TableDataSearchT1 { get; set; } = new List<TableColumn>();
    public List<DT_PageMutiMsg> DT_PageMutiMsg { get; set; }

    public DT_Procedure DT_Procedure { get; set; } = new DT_Procedure();
}

public class JM_PageControlT1
{
    public List<Toolbar> Toolbar { get; set; }
}
public class Toolbar
{
    public string fnKey { get; set; }
    public string fnKeyValue { get; set; }
    public string fnTitle { get; set; }
    public string fnType { get; set; }
    public string position { get; set; }
    public string icon { get; set; }
    public bool display { get; set; } = true;
}
public class JM_TableColumnT1
{
    public List<TableColumn> TableColumn { get; set; }
}
public class TableColumn
{
    public string PageSettingQueryId { get; set; }
    public string elementType { get; set; }
    public string field { get; set; }
    public string label { get; set; }
    public string Meky { get; set; }
    public string multipleSelect { get; set; }
    public string dataType { get; set; }
    public bool? required { get; set; }
    public string palceholder { get; set; }
    public string dataSourceType { get; set; }
    public string dataSource { get; set; }
    public bool? sortable { get; set; }
    public string sortOrder { get; set; }
    public bool? defaultHidden { get; set; }
    public bool? ConfigIsShow { get; set; }
    public string filterable { get; set; }
    public int width { get; set; }
    public string align { get; set; }
    public string fixed1 { get; set; }
    public bool? @fixed { get; set; }
    public bool? editable { get; set; }
    public bool? searchable { get; set; }
    public bool? searchRequired { get; set; }
    public int? searchColumnSeq { get; set; }
    public string multipleSearchValue { get; set; }
    public string maxTagCount { get; set; }
    public string selfDefine { get; set; }
    public string selectUI { get; set; }
    public string isPrimaryKey { get; set; }
    public bool? isSorted { get; set; }
    public bool? isHidden { get; set; }
    public bool? isSearched { get; set; }
    public int SortNo { get; set; }
    public string searchOperator1 { get; set; }
    public List<searchOperator> searchOperator { get; set; }
    public object searchColumnDefaultValue { get; set; } = "";
    public string AppColumnType { get; set; }
    public int pageColumnID { get; set; }
    public int IsRange { get; set; } = 0;
    public string GroupName { get; set; }
}
public class searchOperator
{
    public string @operator { get; set; }
    public string operatorDesc { get; set; }
    public string operatorIcon { get; set; }
}
public class TableColumn1
{
    public string PageSettingQueryId { get; set; }
    public string elementType { get; set; }
    public string field { get; set; }
    public string label { get; set; }
    public string Meky { get; set; }
    public string multipleSelect { get; set; }
    public string dataType { get; set; }
    public string required { get; set; }
    public string palceholder { get; set; }
    public string dataSourceType { get; set; }
    public string dataSource { get; set; }
    public string sortable { get; set; }
    public string sortOrder { get; set; }
    public string defaultHidden { get; set; }
    public string ConfigIsShow { get; set; }
    public string filterable { get; set; }
    public int width { get; set; }
    public string align { get; set; }
    public bool? @fixed { get; set; }
    public string fixed1 { get; set; }
    public string editable { get; set; }
    public string searchable { get; set; }
    public string searchRequired { get; set; }
    public int? searchColumnSeq { get; set; }
    public string searchColumnSeq1 { get; set; }
    public string multipleSearchValue { get; set; }
    public string maxTagCount { get; set; }
    public string selfDefine { get; set; }
    public string selectUI { get; set; }
    public string isPrimaryKey { get; set; }
    public string isSorted { get; set; }
    public string isHidden { get; set; }
    public string isSearched { get; set; }
    public int SortNo { get; set; }
    public string searchOperator1 { get; set; }
    public string searchColumnDefaultValue { get; set; }
    public string AppColumnType { get; set; }
    public int pageColumnID { get; set; }
}

public class DT_PageMutiMsg
{
    public string field { get; set; }
    public string label { get; set; }
}


public class DT_Procedure
{
    public string EditProcedure { get; set; }
    public string IUDProcedure { get; set; }
    public string QueryProcedure { get; set; }
    public string ImportExcel { get; set; }

    public string DownExcelTemplate { get; set; }
    public string ExportExcel { get; set; }
}
public class FlowParam
{
    public string doType { get; set; }
    public int? id { get; set; }
    public FlowJsonParam jsonParam { get; set; }
    public int langId { get; set; }
    public string menuName { get; set; }
    public string timestamp { get; set; }
    public string token { get; set; }
    public int? userId { get; set; }
}
public class FlowJsonParam
{
    public int? FlowID { get; set; }
}
public class FlowReturn
{
    public JM_PageFormT1 JM_PageFormT1 { get; set; } = new JM_PageFormT1();
    public List<DT_PageMutiMsg> DT_PageMutiMsg { get; set; } = new List<DT_PageMutiMsg>();
    public JM_PageFormActionsT1 JM_PageFormActionsT1 { get; set; } = new JM_PageFormActionsT1();
    public FlowJM_TableColumnT1 JM_TableColumnT1 { get; set; } = new FlowJM_TableColumnT1();
    public object DT_TableDataT1 { get; set; }

}

public class JM_PageFormActionsT1
{
    public List<Toolbar> Toolbar { get; set; }
}
public class JM_PageFormT1
{
    public List<PageForm> PageForm { get; set; } = new List<PageForm>();
}
public class PageForm
{
    public string FlowPageStyle { get; set; }
    public string RowDisplayType { get; set; }
    public string apiName { get; set; }
    public string disabled { get; set; }
    public string labelAlign { get; set; }
    public string labelCol { get; set; }
    public int labelWidth { get; set; }
    public string layout { get; set; }
    public string pageTitle { get; set; }
}
public class FlowJM_TableColumnT1
{
    public List<FlowTableColumn> TableColumn { get; set; }
}

public class FlowTableColumn
{
    public bool canBatchPageDisplay { get; set; }
    public int colNum { get; set; }
    public int columnWidth { get; set; }
    public string dataSource { get; set; }
    public string dataType { get; set; }
    public bool defaultHidden { get; set; }
    public int dynamicShow { get; set; }
    public bool editable { get; set; }
    public string elementType { get; set; }
    public string field { get; set; }
    public bool isPrimaryKey { get; set; }
    public int isSingleColumn { get; set; }
    public string label { get; set; }
    public bool @required { get; set; }
    public bool multipleSelect { get; set; }
    public int rowNum { get; set; }
    public int? isFullWidth { get; set; }
    public int? hasMarginLeft { get; set; }

    public string GroupName { get; set; }
}
public class FlowCommitParam
{
    public string doType { get; set; }
    public int? id { get; set; }
    public object jsonParam { get; set; }
    public int langId { get; set; }
    public string menuName { get; set; }
    public string timestamp { get; set; }
    public string token { get; set; }
    public int? userId { get; set; }
}