using System.Collections.Generic;
using System.Threading.Tasks;
using GxPress.Request.UserMiddle;

namespace GxPress.Service.Interface.UserMiddle
{
    public interface IUserMiddleService : IService
    {
        /// <summary>
        /// 添加用户中间表
        /// </summary>
        /// <param name="userMiddles"></param>
        /// <returns></returns>
        Task<bool> AddUserMiddleAsync(List<UserMiddleInRequest> request);
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<bool> DeleteAsync(SqlKata.Query query);
        /// <summary>
        /// 获取用户列表
        /// </summary>
        /// <param name="middleType">类型类型 1 通知 2话题 3 收藏 4笔记 5 普通站内信 6匿名站内信 7小组  10:通知收件人 20:通知抄送人 30:站内信收集人 40:站内信抄送人 </param>
        /// <param name="sourceId"></param>
        /// <returns></returns>
        Task<List<Entity.User>> FindUsersAsync(List<Request.UserMiddle.UserMiddleInRequest> userMiddles,int userId);
        /// <summary>
        /// 查询列表
        /// </summary>
        /// <param name="middleType">类型类型 1 通知 2话题 3 收藏 4笔记 5 普通站内信 6匿名站内信 7小组  10:通知收件人 20:通知抄送人 30:站内信收集人 40:站内信抄送人 </param>
        /// <param name="sourceId"></param>
        /// <returns></returns>
        Task<IEnumerable<Entity.UserMiddle.UserMiddle>> FindUserMiddlesAsync(int middleType, int sourceId);
         /// <summary>
        /// 是否存在
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
       Task<bool> ExistsAsync(SqlKata.Query query);

           /// <summary>
       ///  删除收件人
       /// </summary>
       /// <param name="dataSourceId"></param>
       /// <param name="middleType">类型类型 1 通知 2话题 3 收藏 4笔记 5 普通站内信 6匿名站内信 7小组  10:通知收件人 20:通知抄送人 30:站内信收集人 40:站内信抄送人 400 会议纪要</param>
       /// <returns></returns>
         Task<bool> DeleteAsync(int dataSourceId, int middleType);
    }
}