Ejemplo n.º 1
0
        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);
        }