public async Task <int> Handle(AddRssSourseCommand request, CancellationToken cancellationToken) { var rssSourseDto = new RssSourceDto { Id = request.Id, Name = request.Name, Url = request.Url, DateOfReceiving = DateTime.Now }; var rssSourseEnt = _mapper.Map <RssSource>(rssSourseDto); await _dbContext.RssSource.AddAsync(rssSourseEnt, cancellationToken); return(await _dbContext.SaveChangesAsync(cancellationToken));//метод возвращает количество измененных записей }
public async Task <IEnumerable <NewsDto> > GetNewsFromRssSource(RssSourceDto rssSource) { var newsList = new List <NewsDto>(); using (var reader = XmlReader.Create(rssSource.Url)) { var feed = SyndicationFeed.Load(reader); reader.Close(); var feedUrls = feed.Items.Select(i => i.Id).ToList(); var currentNewsUrls = await _unitOfWork.News .FindBy(news => news.RssSourceId == rssSource.Id) .ToListAsync(); Log.Information($"News count in DB: {currentNewsUrls.Count}"); foreach (var feedItem in feed.Items) { if (!currentNewsUrls.Any(news => news.Url.Equals(feedItem.Id))) { var newsDto = new NewsDto() { Id = Guid.NewGuid(), RssSourceId = rssSource.Id, Url = feedItem.Id, Title = feedItem.Title.Text, Summary = SyndicationHelper.GetSyndicationItemSummary(feedItem), NewsDate = feedItem.PublishDate.UtcDateTime, DateCollect = DateTime.UtcNow }; newsList.Add(newsDto); } } } return(newsList); }
public async Task <IEnumerable <NewsDto> > GetNewsFromRssSource(RssSourceDto rssSource) { throw new NotImplementedException(); }