using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
using WIDESEAWCS_Core.DB.Models;
using WIDESEAWCS_Core.Tenants;

namespace WIDESEAWCS_Model.Models
{
    [SugarTable("Sys_Menu", "菜单配置"), MultiTenant]
    public class Sys_Menu : BaseEntity
    {
        /// <summary>
        /// 菜单ID
        /// </summary>
        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "菜单ID")]
        public int MenuId { get; set; }

        /// <summary>
        /// 菜单名称
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "菜单名称")]
        public string MenuName { get; set; }

        /// <summary>
        /// 权限
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "权限")]
        public string Auth { get; set; }

        /// <summary>
        /// 图标
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "图标")]
        public string Icon { get; set; }

        /// <summary>
        /// 描述
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "描述")]
        public string Description { get; set; }

        /// <summary>
        /// 是否启用
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "是否启用")]
        public byte? Enable { get; set; }

        /// <summary>
        /// 表名
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "表名")]
        public string TableName { get; set; }

        /// <summary>
        /// 父级ID
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDescription = "父级ID")]
        public int ParentId { get; set; }

        /// <summary>
        /// 路径
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "路径")]
        public string Url { get; set; }

        /// <summary>
        /// 排序号
        /// </summary>
        [SugarColumn(IsNullable = true,ColumnDescription ="排序号")]
        public int? OrderNo { get; set; }

        /// <summary>
        /// 菜单类型
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "菜单类型")]
        public int? MenuType { get; set; }

        [Navigate(NavigateType.OneToMany, nameof(ParentId), nameof(MenuId)), SugarColumn(IsIgnore = true, IsNullable = true)]
        public List<Sys_Menu> Menus { get; set; }

        [SugarColumn(IsIgnore = true)]
        public List<Sys_Actions> Actions { get; set; }
    }
}