using System.Collections.Generic;

namespace Ewide.Core
{
    /// <summary>
    /// 通用输入扩展参数（带权限）
    /// </summary>
    public class InputBase : PageInputBase
    {
        /// <summary>
        /// 授权菜单
        /// </summary>
        public List<string> GrantMenuIdList { get; set; } = new List<string>();

        /// <summary>
        /// 授权角色
        /// </summary>
        public virtual List<string> GrantRoleIdList { get; set; } = new List<string>();

        /// <summary>
        /// 授权数据
        /// </summary>
        public virtual List<string> GrantOrgIdList { get; set; } = new List<string>();
        /// <summary>
        /// 授权区域
        /// </summary>
        public virtual List<string> GrantAreaCodeList { get; set; } = new List<string>();
    }

    /// <summary>
    /// 通用分页输入参数
    /// </summary>
    public class PageInputBase
    {
        /// <summary>
        /// 搜索值
        /// </summary>
        public virtual string SearchValue { get; set; }

        /// <summary>
        /// 当前页码
        /// </summary>
        public virtual int PageIndex { get; set; } = 1;

        /// <summary>
        /// 页码容量
        /// </summary>
        public virtual int PageSize { get; set; } = 20;

        /// <summary>
        /// 搜索开始时间
        /// </summary>
        public virtual string SearchBeginTime { get; set; }

        /// <summary>
        /// 搜索结束时间
        /// </summary>
        public virtual string SearchEndTime { get; set; }

        /// <summary>
        /// 排序字段
        /// </summary>
        public virtual string SortField { get; set; }

        /// <summary>
        /// 排序方法,默认升序,否则降序(配合antd前端,约定参数为 Ascend,Dscend)
        /// </summary>
        public virtual string SortOrder { get; set; }

        /// <summary>
        /// 降序排序(不要问我为什么是descend不是desc，前端约定参数就是这样)
        /// </summary>
        public virtual string DescStr => "descend";

        /// <summary>
        /// 查询条件 
        /// </summary>
        public virtual SearchInfo[] SearchInfo { get; set; }

        /// <summary>
        /// 树节点数据范围 （1"只看本级" 2"查看本级及以下"）
        /// </summary>
        public virtual int? TreeNodeDataScope { get; set; }
    }

}
