using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using GxPress.Common.Page;
using GxPress.Entity;
using GxPress.Request.App.User;
using GxPress.Request.User;
using GxPress.Result.App.User;
using GxPress.Result.User;

namespace GxPress.Service.Interface
{
   public interface IUserService:IService
    {
        /// <summary>
        /// 根据部门或者自建ID获取用户
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<IEnumerable<UserInfoResult>> FindUser(FindUserRequest request);

        /// <summary>
        /// 根据用户ID查询用户数据
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="blackUserId"></param>
        /// <returns></returns>
        Task<UserDetail> GetUserByIdAsync(int userId,int blackUserId);

        /// <summary>
        /// 生成excel
        /// </summary>
        /// <returns></returns>
        Task<string> ExcelUserAsync(List<int> userIds);
        /// <summary>
        /// 用户分页列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<UserResult>> GetPagedListAsync(UserPageSearchRequest request);

        Task<bool> DeleteUsersAsync(IEnumerable<int> userIds);

        /// <summary>
        /// 获取用户未读数据
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<UserCountResult> GetUserCountAsync(int userId);

       Task<PagedList<User>> GetPageListAsync(UserPageSearchRequest request);
    }
}