using System.Collections.Generic;
using System.Threading.Tasks;
using GxPress.Common.Page;
using GxPress.Request.ArticleGroup;
using GxPress.Request.Media;
using GxPress.Request.Navigation;
using GxPress.Request.TeacherRequest;
using GxPress.Result.AppChannel;
using GxPress.Result.Media;
using GxPress.Result.Navigation;
using GxPress.Result.SystemLabel;
using GxPress.Result.Teacher;

namespace GxPress.Service.Interface.AppHomePage
{
    public interface IAppHomePageService : IService
    {
        /// <summary>
        /// 大咖讲座
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<AppLabelResult<MediaCathedraResult>>> GetMediasByTeacherAsync(ArticleGroupRequest request);
        /// <summary>
        /// 大咖讲座分页
        /// </summary>
        /// <returns></returns>
        Task<PagedList<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request);
        /// <summary>
        /// 每日好文
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<MediaCathedraResult>> GetDayGoodTextAsync(MediaSearchRequest request);
        /// <summary>
        /// 根据IDs
        /// </summary>
        /// <returns></returns>
        Task<IEnumerable<MediaCathedraResult>> GetMediaByLableIdsAsync(MediaIdsRequest request);
        /// 名师
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<TeacherResult>> GetTeacherAsync(TeacherRequest request);
        /// <summary>
        /// 根据IDs
        /// </summary>
        /// <returns></returns>
        Task<PagedList<MediaCathedraResult>> GetMediaByLableIdAsync(MediaLableIdRequest request);
        /// <summary>
        /// 书城
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<AppLabelResult<MediaCathedraResult>>> GetBookCityAsync(ArticleGroupRequest request);
        /// <summary>
        /// 获取每日微课
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<MediaCathedraResult>> GetDayWeBookAsync(MediaDayWeBookRequest request);
        /// <summary>
        /// 导航内容分页
        /// </summary>
        /// <returns></returns>
        Task<PagedList<MediaCathedraResult>> GetContentNavigationAsync(MediaContentNavigationRequest request);
        /// <summary>
        /// 获取搜索作者
        /// </summary>
        /// <returns></returns>
        Task<IEnumerable<NavigationSearchTeacherResult>> GetNavigationSearchResultAysnc(NavigationSearchRequest request);
        /// <summary>
        /// 获取出版社
        /// </summary>
        /// <param name="categoryId"></param>
        /// <returns></returns>
        Task<IEnumerable<PressResult>> GetNavigationPressAsync(NavigationSearchRequest request);
        /// <summary>
        /// 获取年份数据
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<IEnumerable<NavigationYearResult>> GetNavigationYearResult(NavigationSearchRequest request);
        /// <summary>
        /// 获取搜索内容
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<NavigationSearchResult> GetNavigationSearchResultAsync(NavigationSearchRequest request);

        /// <summary>
        /// 书籍SKU
        /// </summary>
        /// <returns></returns>
        Task<SkuResult> SkuResultAsync();
    }
}