using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using GxPress.Request.AddressBookGroupUser;
using GxPress.Result.AddressBookGroupUser;
using Datory;
using GxPress.Entity;

namespace GxPress.Repository.Interface
{
    public interface IAddressBookGroupUserRepository : IRepository
    {
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<bool> DeleteAsync(int id);

        /// <summary>
        /// 获取
        /// </summary>
        /// <param name="request"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<AddressBookGroupUserListResult> GetAddressBookGroupUserListAsync(
            AddressBookGroupUserSearchRequest request, int userId);

        Task<bool> InsertAsync(AddressBookGroupUserInRequest request);

        /// <summary>
        /// 批量删除通讯录自建分组用户
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<bool> DeletesAsync(List<int> ids);
        /// <summary>
        /// 移动分组成员到分组下面
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<bool> AddressBookGroupUserMoveAsync(AddressBookGroupUserMoveRequest request);


        Task<IEnumerable<AddressBookGroupUser>> GetAllAsync(SqlKata.Query query);
    }
}