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

namespace GxPress.Service.Interface.Missive
{
    public interface IMissiveService:IService
   {
       /// <summary>
       /// 添加站内信
       /// </summary>
       /// <param name="request"></param>
       /// <returns></returns>
       Task<bool> InsertOrUpdateAsync(MissiveInRequest request);
       /// <summary>
       /// 获取站内信详情
       /// </summary>
       /// <param name="missiveId"></param>
       /// <param name="userId"></param>
       /// <returns></returns>
       Task<MissiveInfoResult> GetMissiveInfoAsync(int missiveId,int userId);

       /// <summary>
       /// 获取站内信
       /// </summary>
       /// <param name="request"></param>
       /// <returns></returns>
        Task<PagedList<MissiveSearchResult>> GetMissiveSearchResultAsync(MissiveSearchRequest request);


       /// <summary>
       /// 获取站内信详情
       /// </summary>
       /// <param name="id"></param>
       /// <returns></returns>
       Task<MissiveDetailResult> GetMissiveDetailAsync(int id);
       Task<IEnumerable<MissiveReadListResult>> GetMissiveReadListAsync(MissiveReadListRequest request);

        /// <summary>
        /// 站内信撤回
        /// </summary>
        /// <param name="missiveId"></param>
        /// <returns></returns>
       Task<bool> RecallAsync(int missiveId);
   }
}
