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

namespace GxPress.Service.Interface.Topic
{
    public interface ITopicService : IService
    {


        /// <summary>
        /// 根据GroupId删除
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<bool> DeleteTopicGroupAsync(List<int> ids);

        /// <summary>
        /// 添加话题分组成员
        /// </summary>
        /// <param name="userIds"></param>
        /// <param name="topicGroupId"></param>
        /// <returns></returns>
        Task<bool> InsertTopicGroupUserAsync(List<int> userIds, int topicGroupId);

        /// <summary>
        /// 根据ID删除换题分组成员
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<bool> DeleteTopicGroupUserAsync(List<int> ids);


        /// <summary>
        /// 创建话题
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<AppResultJson<Entity.Topic.Topic>> InsertTopicAsync(TopicInRequest request);

        /// <summary>
        /// 删除话题
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<bool> DeleteAsync(int id);

        /// <summary>
        /// 修改话题
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<bool> UpdateAsync(TopicUpdateRequest request);

        /// <summary>
        /// 话题分组移动成员到
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<bool> MoveToGroupAsync(MoveToGroupRequest request);

        /// <summary>
        /// 获取话题详情
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<TopicDetailResult> GetTopicDetailResultAsync(TopicDetailRequest request);

        /// <summary>
        /// 根据GroupId获取通知
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<TopicListPageResult>> FindTopicByGroupIdAsync(TopicDetailListRequest request);
        /// <summary>
        /// 获取话题列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<TopicListPageResult>> GetTopicPageAsync(TopicPageSearchRequest request);
        Task<PagedList<TopicListPageResult>> GetTopicByGroupAsync(TopicPageSearchRequest request);
        /// <summary>
        ///最新 小组话题分页列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<TopicListPageResult>> GetGroupTopicPageAsync(TopicDetailListRequest request);
    }
}