Example #1
0
        public FeedDTO CheckFeedStatus(TimeSpan waitTimeOfProcessing)
        {
            var currentFeed = GetExistFeed();

            if (currentFeed == null)
            {
                return(null);
            }
            //if (waitTimeOfProcessing != TimeSpan.Zero && currentFeed.SubmitDate < _time.GetAppNowTime().Subtract(waitTimeOfProcessing))
            //    return null;

            var feedStatusUpdated = false;
            var feedItemsResult   = _api.GetFeedItems(currentFeed.AmazonIdentifier);

            if (feedItemsResult.IsSuccess)
            {
                using (var db = _dbFactory.GetRWDb())
                {
                    foreach (var item in feedItemsResult.Data)
                    {
                        _log.Info("Item status: itemId=" + item.ItemId + ", status=" + item.Status);
                        item.FeedId = currentFeed.Id;

                        ProcessFeedItem(db, item, currentFeed.SubmitDate);
                    }

                    db.Commit();

                    UpdateFeedStatus(db, currentFeed, feedItemsResult.Data, waitTimeOfProcessing);
                    feedStatusUpdated = true;
                }
            }

            if (!feedStatusUpdated)
            {
                var feedResult = _api.GetFeed(currentFeed.AmazonIdentifier);
                if (feedResult.IsSuccess)
                {
                    if (feedResult.Data.Status == (int)WalmartFeedStatus.ERROR)
                    {
                        _log.Info("Feed Status=ERROR, FeedId=" + currentFeed.AmazonIdentifier);
                        using (var db = _dbFactory.GetRWDb())
                        {
                            UpdateFeedStatus(db, currentFeed, new List <WalmartFeedItemDTO>(), waitTimeOfProcessing);
                        }
                    }
                }
            }

            return(currentFeed);
        }