protected override PagedResponse <NewsArticleModel> GetNews(int pageIndex, SportKind sportKind) { return(NewsService .GetPopularNews(DateTimeOffset.Now.AddDays(-1), new PagedRequest(NewsPerPage, pageIndex), sportKind)); }
protected string GetSportKindText(string value, SportKind sportKind) { string sportKindText = sportKind switch { SportKind.Football => "футбола", SportKind.Basketball => "баскетбола", SportKind.Hockey => "хоккея", _ => string.Empty, }; return(string.Join(' ', value, sportKindText)); }
public IQueryable <NewsArticle> GetPopularNews( DateTimeOffset fromDate, SportKind sportKind = SportKind.Undefined) { var date = fromDate.UtcDateTime; IQueryable <NewsArticle> query = _sportsContext.NewsArticles; if (sportKind != SportKind.Undefined && sportKind != SportKind.All) { query = query.Where(x => x.SportKind == sportKind); } return(query .Where(x => x.PublishedDate >= date) .OrderByDescending(x => x.CommentsCount)); }
private static void MapSportKind(NewsArticleInfo from, NewsArticle to) { SportKind sportKind = SportKind.Undefined; if (from.Section != null) { string webname = from.Section.WebName; sportKind = webname switch { "football" => SportKind.Football, "hockey" => SportKind.Hockey, "basketball" => SportKind.Basketball, _ => SportKind.Other, }; } to.SportKind = sportKind; }
private SportKind GetSportKind(SportsRequest sportsRequest) { SportKind sportKind = SportKind.Undefined; if (sportsRequest.Request.Nlu.Intents != null && sportsRequest.Request.Nlu.Intents.Read != null && sportsRequest.Request.Nlu.Intents.Read.Slots.Sport != null && sportsRequest.Request.Nlu.Intents.Read.Slots.Sport.Value != SportKind.Undefined) { sportKind = sportsRequest.Request.Nlu.Intents.Read.Slots.Sport.Value; } else if (sportsRequest.State.Session != null && sportsRequest.State.Session.CurrentScene == SceneType && sportsRequest.State.Session.SportKind != SportKind.Undefined) { sportKind = sportsRequest.State.Session.SportKind; } return(sportKind); }
public override IAliceResponseBase Reply(SportsRequest sportsRequest) { SportKind sportKind = GetSportKind(sportsRequest); int pageIndex = GetPageIndex(sportsRequest); var newsResponse = GetNews(pageIndex, sportKind); int maxPageIndex = (int)Math.Ceiling(newsResponse.Total / (float)NewsPerPage) - 1; var buttons = new List <AliceButtonModel>(); if (pageIndex > 0) { buttons.Add(new SportsButtonModel("назад")); } if (pageIndex >= 0 && pageIndex < maxPageIndex) { buttons.Add(new SportsButtonModel("вперед")); } buttons.AddRange(Buttons); var news = newsResponse.Items; if (news.Any()) { var titles = news.Select(x => x.Title); string headerTts = GetSportKindText(HeaderTts, sportKind); string text = $"{headerTts}\n\n{string.Join("\n\n", titles)}"; string tts = $"{headerTts}{AliceHelper.SilenceString500}{string.Join(AliceHelper.SilenceString500, titles)}{AliceHelper.SilenceString1000}{Sports_Resources.Tips_Help}"; var response = new SportsGalleryResponse(sportsRequest, text, tts, buttons); response.Response.Card = new AliceGalleryCardModel { Items = new List <AliceGalleryCardItem>(), Header = new AliceGalleryCardHeaderModel(GetSportKindText(HeaderText, sportKind)) }; foreach (var newsArticle in news) { response.Response.Card.Items.Add(new AliceGalleryCardItem() { Title = AliceHelper .PrepareGalleryCardItemTitle(newsArticle.Title, GetTitleEnding(newsArticle), AliceHelper.DefaultReducedStringEnding), Button = new AliceImageCardButtonModel() { Url = newsArticle.Url } }); } response.Response.Buttons.AddRange(new List <AliceButtonModel>() { new AliceButtonModel("футбол"), new AliceButtonModel("хоккей"), new AliceButtonModel("баскетбол"), new AliceButtonModel("все") }); response.SessionState.PageIndex = pageIndex; response.SessionState.SportKind = sportKind; response.SessionState.CurrentScene = SceneType; return(response); } else { var response = new SportsResponse(sportsRequest, NoNewsText, buttons); response.SessionState.CurrentScene = SceneType; return(response); } }
protected abstract PagedResponse <NewsArticleModel> GetNews(int pageIndex, SportKind sportKind);
protected override PagedResponse <NewsArticleModel> GetNews(int pageIndex, SportKind sportKind) { return(NewsService .GetLatestNews(new PagedRequest(NewsPerPage, pageIndex), sportKind)); }
public PagedResponse <NewsArticleModel> GetPopularNews(DateTimeOffset fromDate, PagedRequest pagedRequest, SportKind sportKind = SportKind.Undefined) { var popularNewsQuery = _newsDataService.GetPopularNews(fromDate, sportKind); var totalCount = popularNewsQuery.Count(); var popularNews = popularNewsQuery .Skip(pagedRequest.PageIndex * pagedRequest.PageSize) .Take(pagedRequest.PageSize) .Select(x => new NewsArticleModel() { Id = x.NewsArticleId, Title = x.Title, Url = x.Url, CommentsCount = x.CommentsCount, IsHotContent = x.IsHotContent, ExternalId = x.ExternalId }) .ToArray(); var results = new PagedResponse <NewsArticleModel>(popularNews, totalCount); return(results); }
public PagedResponse <NewsArticleModel> GetLatestNews(PagedRequest pagedRequest, SportKind sportKind = SportKind.Undefined) { IQueryable <NewsArticle> query = _sportsContext.NewsArticles; if (sportKind != SportKind.Undefined && sportKind != SportKind.All) { query = query.Where(x => x.SportKind == sportKind); } query = query .OrderByDescending(x => x.PublishedDate); int totalCount = query.Count(); var latestNews = query .Skip(pagedRequest.PageIndex * pagedRequest.PageSize) .Take(pagedRequest.PageSize) .Select(x => new NewsArticleModel() { Title = x.Title, Url = x.Url, CommentsCount = x.CommentsCount, IsHotContent = x.IsHotContent }) .ToArray(); var result = new PagedResponse <NewsArticleModel>(latestNews, totalCount); return(result); }