protected override void ProcessFeedItem(IUnitOfWork db, WalmartFeedItemDTO feedItem, DateTime feedSubmitDate) { var status = WalmartUtils.ConvertFromFeedItemPublishedStatusToStandard(feedItem.Status); var dbListing = db.Listings.GetAll().FirstOrDefault(l => l.SKU == feedItem.ItemId && l.Market == (int)_api.Market); if (dbListing != null && status == PublishedStatuses.Published) { dbListing.PriceUpdateRequested = false; _log.Info("Status has been updated"); } }
protected abstract void ProcessFeedItem(IUnitOfWork db, WalmartFeedItemDTO feedItem, DateTime feedSubmitDate);
protected override void ProcessFeedItem(IUnitOfWork db, WalmartFeedItemDTO feedItem, DateTime feedSubmitDate) { var status = WalmartUtils.ConvertFromFeedItemPublishedStatusToStandard(feedItem.Status); var dbListing = db.Listings.GetAll().FirstOrDefault(l => l.SKU == feedItem.ItemId && l.Market == (int)_api.Market && !l.IsRemoved); feedItem.Errors = feedItem.Errors ?? new List <ItemErrorDTO>(); if (dbListing != null) { var dbItem = db.Items.GetAll().FirstOrDefault(i => i.Id == dbListing.ItemId); if (dbItem != null) { _log.Info("Status has been updated"); var dbItemAdditions = db.ItemAdditions .GetAll() .Where(ia => ia.ItemId == dbItem.Id && ia.Field == ItemAdditionFields.PublishError) .ToList(); if (dbItemAdditions.Count > 0 && !feedItem.Errors.Any()) { foreach (var dbItemAddition in dbItemAdditions) { db.ItemAdditions.Remove(dbItemAddition); } } else { if (dbItemAdditions.Count == 0 && feedItem.Errors.Any()) { foreach (var feedError in feedItem.Errors) { db.ItemAdditions.Add(new Core.Entities.Listings.ItemAddition() { CreateDate = _time.GetAmazonNowTime(), Field = ItemAdditionFields.PublishError, ItemId = dbItem.Id, Value = feedError.Message + ", Code: " + feedError.Code + ", Type: " + feedError.Type, Source = feedItem.FeedId.ToString() }); } } else { if (dbItemAdditions.Count == feedItem.Errors.Count) { for (var i = 0; i < dbItemAdditions.Count; i++) { dbItemAdditions[i].CreateDate = _time.GetAmazonNowTime(); dbItemAdditions[i].Value = feedItem.Errors[i].Message + ", Code: " + feedItem.Errors[i].Code + ", Type: " + feedItem.Errors[i].Type; dbItemAdditions[i].Source = feedItem.FeedId.ToString(); } } else { foreach (var dbItemError in dbItemAdditions) { db.ItemAdditions.Remove(dbItemError); } foreach (var feedError in feedItem.Errors) { db.ItemAdditions.Add(new Core.Entities.Listings.ItemAddition() { CreateDate = _time.GetAppNowTime(), Field = ItemAdditionFields.PublishError, ItemId = dbItem.Id, Value = feedError.Message + ", Code: " + feedError.Code + ", Type: " + feedError.Type, Source = feedItem.FeedId.ToString() }); } } } } if (dbItem.ItemPublishedStatusDate < feedSubmitDate.AddMinutes(15)) //NOTE: update status when if they was updated before submittion { dbItem.ItemPublishedStatus = (int)status; dbItem.ItemPublishedStatusDate = _time.GetAppNowTime(); } } } }