protected void PreparePrice(ParentItemDTO parentItemDto) { var priceService = new PriceService(_dbFactory); IList <RateByCountryDTO> allRates = new List <RateByCountryDTO>(); using (var db = _dbFactory.GetRWDb()) { foreach (var item in parentItemDto.Variations) { var rateForMarketplace = RateHelper.GetRatesByStyleItemId(db, item.StyleItemId.Value); var newPrice = priceService.GetMarketPrice(item.CurrentPrice, null, item.IsPrime, item.IsFBA, item.Weight, (MarketType)item.Market, item.MarketplaceId, rateForMarketplace); _log.Info("Price changed, SKU=" + item.SKU + ": " + item.CurrentPrice + "=>" + newPrice); item.CurrentPrice = newPrice; } } }
private decimal?GetNewPrice(IUnitOfWork db, long itemId) { var itemInfo = db.Items.GetAllViewActual() .Select(i => new { Id = i.Id, ListingId = i.ListingEntityId, StyleId = i.StyleId, StyleItemId = i.StyleItemId, CurrentPrice = i.CurrentPrice, IsFBA = i.IsFBA, IsPrime = i.IsPrime, Weight = i.Weight, Market = i.Market, MarketplaceId = i.MarketplaceId, }) .Where(i => i.ListingId == itemId) .FirstOrDefault(); if (itemInfo == null) { return(null); } decimal?sourcePrice = db.Items.GetAllViewActual() .Where(i => i.MarketplaceId == MarketplaceKeeper.AmazonComMarketplaceId && i.StyleItemId == itemInfo.StyleItemId && !i.IsFBA && !i.IsPrime) .Select(i => i.CurrentPrice) .OrderBy(i => i) .FirstOrDefault(); if (sourcePrice == null || sourcePrice == 0) { return(null); } var priceService = new PriceService(_dbFactory); var newPrice = priceService.GetMarketPrice(sourcePrice.Value, null, itemInfo.IsPrime, itemInfo.IsFBA, itemInfo.Weight, (MarketType)itemInfo.Market, itemInfo.MarketplaceId, itemInfo.StyleItemId.Value); return(newPrice); }