using MadRunFabric.Model;
using MadRunFabric.Common;
using System;
using System.Collections.Generic;

namespace SignTokenApi.IRepositories
{
    public interface ISys_User_AccountRepository : IRepository<Sys_User_Account, string>
    {
        /// <summary>
        /// 分页列表 - 根据分页查询数据列表 包含查询条件，显示字段，排序 - 关联
        /// </summary>
        /// <param name="keyword"></param>
        /// <param name="stime"></param>
        /// <param name="etime"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="recordCount"></param>
        /// <returns></returns>
        IEnumerable<object> GetListsByPage(string keyword, string deptid, string roleid, string projectid, int type, int pageindex, int pagesize, out int recordCount);

        /// <summary>
        /// 列表 - 根据分页查询数据列表 包含查询条件，显示字段，排序 - 关联 - App
        /// </summary>
        /// <param name="keyword"></param>
        /// <param name="stime"></param>
        /// <param name="etime"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="recordCount"></param>
        /// <returns></returns>
        IEnumerable<object> GetAppLists(string keyword, string deptid, string roleid, string projectid, int type);

        /// <summary>
        /// 详情 - 获取用户详情 by id
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        object GetDetails(string id);

        /// <summary>
        /// 详情 - 获取用户详情 by usercode
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        object GetUserInfo(string usercode);

        /// <summary>
        /// 列表 - 根据项目id，权限code获取列表
        /// </summary>
        /// <param name="projectid"></param>
        /// <param name="rolecode"></param>
        /// <returns></returns>
        IEnumerable<object> GetProjectUser(string projectid, string rolecode);

        //公司售后系统使用
        /// <summary>
        /// 分页列表 - 根据分页查询数据列表 包含查询条件，显示字段，排序 - 关联
        /// </summary>
        /// <param name="keyword"></param>
        /// <param name="deptid"></param>
        /// <param name="roleid"></param>
        /// <param name="projectid"></param>
        /// <param name="type"></param>
        /// <param name="allprojectrole"></param>
        /// <param name="pageindex"></param>
        /// <param name="pagesize"></param>
        /// <param name="recordCount"></param>
        /// <returns></returns>
        IEnumerable<object> HyGetListsByPage(string keyword, string deptid, string roleid, string projectid, int type,  int pageindex, int pagesize, out int recordCount);

        /// <summary>
        /// 列表 - 根据分页查询数据列表 包含查询条件，显示字段，排序 - 关联 - App
        /// </summary>
        /// <param name="keyword"></param>
        /// <param name="deptid"></param>
        /// <param name="roleid"></param>
        /// <param name="projectid"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        IEnumerable<object> HyGetAppLists(string keyword, string deptid, string roleid, string projectid, int type);

        /// <summary>
        /// 详情 - 获取用户详情 by id
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        object HyGetDetails(string id);

        /// <summary>
        /// 详情 - 获取用户详情 by usercode
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        object HyGetUserInfo(string usercode);

        /// <summary>
        /// 列表 - 根据项目id，权限code获取列表
        /// </summary>
        /// <param name="projectid"></param>
        /// <param name="rolecode"></param>
        /// <returns></returns>
        IEnumerable<object> HyGetProjectUser(string projectid, string rolecode);
        IEnumerable<object> GetProjectUser(string projectid, string rolecode, string rolename);
    }
}
