Ejemplo n.º 1
0
        public FeedContainerVM SyncroniceFeeds()
        {
            FeedContainerVM feedContainerVM = new FeedContainerVM();

            feedRepository         = new FeedRepository(new FeedContext());
            subscriptionRepository = new SubscriptionRepository(new FeedContext());

            feedContainerVM.feeds = ConvertToSubscription().Where(x => x.isSubscribed == true);

            feedContainerVM.hasSubscriptions = hasSubscriptions();

            List <FeedItemEntity> downloadFeeds = new List <FeedItemEntity>();

            temporalFeedRepository = new TemporalFeedRepository(new FeedContext());

            var userId = 1;  //harcoded userId for demo purposes

            var currentFeeds = temporalFeedRepository.FindBy(x => x.userId == userId).ToList();

            //Wipeout table before syncronization
            foreach (TemporalFeed tmpFeed in currentFeeds)
            {
                temporalFeedRepository.Erase(tmpFeed);
            }

            foreach (FeedEntity subscribedFeed in feedContainerVM.feeds)
            {
                downloadFeeds.AddRange(WriteFeedsToTemporalDatabase(GetFeeds(subscribedFeed.url), subscribedFeed.Id));
            }

            feedContainerVM.feedItems = downloadFeeds;

            return(feedContainerVM);
        }
Ejemplo n.º 2
0
        public FeedContainerVM PopulateFeedContainer(FeedContainerInputModel searchModel = null)
        {
            var userId = 1;  //harcoded userId for demo purposes

            FeedContainerVM feedContainerVM = new FeedContainerVM();

            feedRepository         = new FeedRepository(new FeedContext());
            subscriptionRepository = new SubscriptionRepository(new FeedContext());
            temporalFeedRepository = new TemporalFeedRepository(new FeedContext());

            feedContainerVM.feeds = ConvertToSubscription().Where(x => x.isSubscribed == true);

            feedContainerVM.hasSubscriptions = hasSubscriptions();

            List <FeedItemEntity> downloadFeeds = new List <FeedItemEntity>();

            //TODO: Search parameter

            if (searchModel == null)
            {
                var syncedFeeds = temporalFeedRepository.FindBy(x => x.userId == userId).ToList();

                var lastSyncedItem = syncedFeeds.FirstOrDefault();

                TimeSpan elapsedTime = TimeSpan.MinValue;

                if (lastSyncedItem != null)
                {
                    elapsedTime = DateTime.Now - lastSyncedItem.lastSynced;
                }

                //Syncronize every 8 hours
                if (elapsedTime.Hours >= 8 || lastSyncedItem == null)
                {
                    return(SyncroniceFeeds());
                }
                else
                {
                    feedContainerVM.feedItems =
                        syncedFeeds.Select(x => new FeedItemEntity
                    {
                        Id          = x.Id,
                        description = x.description != null ? x.description : "",
                        IsActive    = x.IsActive,
                        link        = x.link != null ? x.link : "",
                        author      = x.author != null ? x.author : "",
                        imageUrl    = x.imageUrl != null ? x.imageUrl : "",
                        pubDate     = x.pubDate != null ? x.pubDate : "",
                        title       = x.title != null ? x.title : ""
                    }).ToList();

                    return(feedContainerVM);
                }
            }
            else
            {
                var syncedFeeds = temporalFeedRepository.FindBy(x => x.userId == userId).ToList();

                IEnumerable <FeedItemEntity> filteredFeeds;

                if (searchModel.selectedFeedId > 0)
                {
                    filteredFeeds = syncedFeeds.Where(x => x.feedId == searchModel.selectedFeedId && (x.title.ToLower().Contains(searchModel.searchKey != null ? searchModel.searchKey.ToLower() : string.Empty) || x.description.ToLower().Contains(searchModel.searchKey != null ? searchModel.searchKey.ToLower() : string.Empty))).Select(x => new FeedItemEntity
                    {
                        Id          = x.Id,
                        description = x.description != null ? x.description : "",
                        IsActive    = x.IsActive,
                        link        = x.link != null ? x.link : "",
                        author      = x.author != null ? x.author : "",
                        imageUrl    = x.imageUrl != null ? x.imageUrl : "",
                        pubDate     = x.pubDate != null ? x.pubDate : "",
                        title       = x.title != null ? x.title : ""
                    }).ToList();
                }
                else
                {
                    filteredFeeds = syncedFeeds.Where(x => x.title.ToLower().Contains(searchModel.searchKey != null ? searchModel.searchKey.ToLower() : string.Empty) || x.description.ToLower().Contains(searchModel.searchKey != null ? searchModel.searchKey.ToLower() : string.Empty)).Select(x => new FeedItemEntity
                    {
                        Id          = x.Id,
                        description = x.description != null ? x.description : "",
                        IsActive    = x.IsActive,
                        link        = x.link != null ? x.link : "",
                        author      = x.author != null ? x.author : "",
                        imageUrl    = x.imageUrl != null ? x.imageUrl : "",
                        pubDate     = x.pubDate != null ? x.pubDate : "",
                        title       = x.title != null ? x.title : ""
                    }).ToList();
                }


                feedContainerVM.feedItems = filteredFeeds;
            }



            return(feedContainerVM);
        }