namespace IRaCIS.Application.Contracts
{
    public class MenuCommand 
    {
        public Guid? MenuId { get; set; }

        //上级菜单
        public Guid? ParentId { get; set; } = Guid.Empty;

        // 类型(M目录 C菜单 F按钮 L链接)
        public string MenuType { get; set; } = string.Empty;

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

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

        //路由地址
        public string Path { get; set; } = string.Empty;

        //组件路径
        public string Component { get; set; } = string.Empty;

        public int ShowOrder { get; set; }

        //启用 禁用
        public bool IsEnable { get; set; } = true;

        public bool IsCache { get; set; } = false;

        public bool IsDisplay { get; set; }

        public bool IsInTabDisplay { get; set; }

        public bool IsExternalLink { get; set; }

        //权限点
        public string PermissionStr { get; set; } = String.Empty;

        //Api 接口地址
        public string ApiPath { get; set; } = String.Empty;

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

        public string  Note { get; set; }

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


    public class MenuDTO : MenuCommand
    {
        public DateTime CreateTime { get; set; }
        public Guid CreateUserId { get; set; }
        public DateTime UpdateTime { get; set; }
        public Guid UpdateUserId { get; set; }
    }

    public class MenuQueyDTO
    {
        public Guid? ParentId { get; set; }

        public string? MenuType { get; set; } 

        public bool? IsEnable { get; set; } 

        public bool? IsCache { get; set; } 

        public bool? IsDisplay { get; set; }

        public bool? IsInTabDisplay { get; set; }

        public bool? IsExternalLink { get; set; }
    }


    public class MenuFunctionDTO:MenuCommand
    {
        public List<MenuFunctionDTO> Children { get; set; }=new List<MenuFunctionDTO>();

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

    public class RoleMenuFunctionSelectDTO
    {
        public Guid RoleId { get; set; }
        public List<Guid> MenuFunctionId { get; set; }=new List<Guid>();
    }


    public class FunctionSelectDTO
    {
        public Guid RoleId { get; set; }
        public Guid FunctionId { get; set; }
        public bool IsSelect { get; set; }
    }

}