using APT.BaseData.Domain.Dtos;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.Infrastructure.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace APT.BaseData.Domain.ApiModel
{
	/// 
	/// 用户角色
	/// 
	public class UserRoleModel
	{
		/// 
		/// 
		/// 
		public UserRoleModel()
		{
			this.Roles = new List();
		}
		/// 
		/// 用户
		/// 
		public virtual T_FM_USER User { get; set; }
		/// 
		/// 角色
		/// 
		public virtual ICollection Roles { get; set; }
		/// 
		/// 角色授权
		/// 
		public virtual RolePerm Nav_RolePerm { get; set; }
        public bool CanMenuRework { get; set; }
	}
	/// 
	/// 登录
	/// 
	public class UserLoginBaseModel : UserRoleModel
	{
		public UserLoginBaseModel()
		{
			this.NeedRemoveCookieKeys = new List();
			//this.Nav_Notifications = new List();
		}
		
		public dynamic BaseConfig { get; set; }
		/// 
		/// 用户类型 PFUserTypeEnum
		/// 
		public int UserType { get; set; }
		public int ShowStyle { get; set; }
		/// 
		/// 组织权限
		/// 
		public List OrgRule { get; set; }
		/// 
		/// 表单设置版本
		/// 
		public decimal FormConfigVersion { get; set; }
		public virtual ICollection NeedRemoveCookieKeys { get; set; }
		/// 
		/// 通知公告
		/// 
		//public virtual ICollection Nav_Notifications { get; set; }
		
	}
	/// 
	/// 登录
	/// 
	public class UserLoginModel: UserLoginBaseModel
	{
		public UserLoginModel()
		{
			//this.Menus = new List();
		}
		/// 
		/// 菜单
		/// 
		//public virtual ICollection Menus { get; set; }
		public virtual IEnumerable> Menus { get; set; }
		public virtual List DataRule { get; set; }
		//public virtual ICollection Menus { get; set; }
		//public virtual ICollection WorkStages { get; set; }
	}
    /// 登入菜单
    public class UserLoginMenuModel
	{
		public UserLoginMenuModel()
		{
			this.ChildMenus = new List();
		}
		public T_PF_MENU Menu { get; set; }
		public List ChildMenus { get; set; }
        //public List WorkStages { get; set; }
    }
	/// 
	/// 登录
	/// 
	public class UserClientLoginModel : UserLoginBaseModel
	{
		/// 
		/// 菜单
		/// 
		//public List Menus { get; set; }
		public virtual IEnumerable> Menus { get; set; }
		public T_FM_TEAM Team { get; set; }
		//public List WorkStages { get; set; }
	}
	/// 登入菜单
	public class UserClientLoginMenuModel
	{
		public UserClientLoginMenuModel()
		{
			this.ChildMenus = new List();
		}
		public T_PF_CLIENT_MENU Menu { get; set; }
		public List ChildMenus { get; set; }
		 
	}
	/// 
	/// 登录
	/// 
	public class UserAppLoginModel : UserLoginBaseModel
	{
	
		public virtual IEnumerable> Menus { get; set; }
		public virtual List DataRule { get; set; }//数据权限
		/// 
		/// 菜单
		/// 
		//public List Menus { get; set; }
		//public List WorkStages { get; set; }
	}
	/// 登入菜单
	public class UserAppLoginMenuModel
	{
		public UserAppLoginMenuModel()
		{
			this.ChildMenus = new List();
		}
		public T_PF_APPMENU Menu { get; set; }
		public List ChildMenus { get; set; }
	}
	/// 
	/// 角色授权
	/// 
	public class RolePerm
	{
		public RolePerm()
		{
			this.Nav_RolePermForms = new List();
			this.Nav_RolePermWorkStages = new List();
			this.Nav_RolePermPanels = new List();
		}
		/// 
		/// 角色授权表单列表
		/// 
		public virtual ICollection Nav_RolePermForms { get; set; }
		/// 
		/// 角色授权工作中心列表
		/// 
		public virtual ICollection Nav_RolePermWorkStages { get; set; }
		/// 
		/// 角色授权区域列表
		/// 
		public virtual ICollection Nav_RolePermPanels { get; set; }
	}
	public class RolePermForm
	{
		public RolePermForm()
		{
			this.Nav_Btns = new List();
			this.Nav_Columns = new List();
		}
		
		public Guid PermFormId { get; set; }
		public Guid MenuId { get; set; }
		/// 授权页面
		public virtual T_PF_FORM Nav_PermForm { get; set; }
		/// 
		/// 授权按钮列表
		/// 
		public virtual ICollection Nav_Btns { get; set; }
		/// 
		/// 授权列列表
		/// 
		public virtual ICollection Nav_Columns { get; set; }
	}
	public class RolePermFormBtn
	{
		public Guid BtnId { get; set; }
		public Guid MenuId { get; set; }
		public virtual T_PF_BTN Nav_Btn { get; set; }
	}
	public class RolePermFormColumn
	{
		public Guid ColumnId { get; set; }
		public Guid MenuId { get; set; }
		public virtual T_PF_COLUMN Nav_Column { get; set; }
	}
	public class RolePermWorkStage
	{
		public Guid WorkstageId { get; set; }
		//public virtual T_FM_WORKSTAGE Nav_WorkStage { get; set; }
	}
	public class RolePermPanel
	{
		public Guid PanelId { get; set; }
		public virtual T_FM_PANEL Nav_Panel { get; set; }
	}
}