public async Task <List <Tour> > FetchToursAsync(bool cached, int count) { if (cached) { return(await _tourRepository.GetLatestAsync(count)); } var tags = new[] { "гарячітури", "тур", "поїхализнами_львів", "поїхализнами_зелена37" }; var posts = await GetAllPosts(tags); var upcomingTours = posts .Where(p => p.PostUrl != null) .DistinctBy(p => p.PostUrl) .Select(MapTourInfo) .ToList(); var cachedTours = await _tourRepository.GetLatestAsync(100); var cachedUrls = cachedTours.Select(tour => tour.PostUrl); var newTours = upcomingTours.Where(tour => cachedUrls.All(url => tour.PostUrl != url)).ToList(); await _tourRepository.InsertRangeAsync(newTours); return(newTours); }