private void Persist(ListingDto listingDto, string sellingState) { using (berkeleyEntities dataContext = new berkeleyEntities()) { BonanzaListing listing = new BonanzaListing(); listing.MarketplaceID = _marketplace.ID; listing.Code = listingDto.Code; listing.FullDescription = listingDto.FullDescription; listing.Title = listingDto.Title; listing.Status = sellingState; listing.LastSyncTime = DateTime.UtcNow; listing.Sku = listingDto.Sku; listing.IsVariation = listingDto.IsVariation; foreach (ListingItemDto listingItemDto in listingDto.Items) { BonanzaListingItem listingItem = new BonanzaListingItem(); listingItem.Listing = listing; listingItem.Item = dataContext.Items.Single(p => p.ItemLookupCode.Equals(listingItemDto.Sku)); listingItem.Quantity = listingItemDto.Qty.Value; listingItem.Price = listingItemDto.Price.Value; } dataContext.SaveChanges(); } }
private void MapListingItem(BonanzaListing listing, ItemType listingDto) { string sku = listingDto.SKU != null?listingDto.SKU.ToUpper().Trim() : listing.Sku; BonanzaListingItem listingItem = GetListingItem(listing, sku); listingItem.Price = listingDto.StartPrice != null?decimal.Parse(listingDto.StartPrice.Value.ToString()) : listingItem.Price; listingItem.Quantity = listingDto.QuantitySpecified && listingDto.SellingStatus != null && listingDto.SellingStatus.QuantitySoldSpecified ? listingDto.Quantity - listingDto.SellingStatus.QuantitySold : listingItem.Quantity; }
private void Update(ListingDto listingDto) { using (berkeleyEntities dataContext = new berkeleyEntities()) { BonanzaListing listing = dataContext.BonanzaListings.Single(p => p.MarketplaceID == _marketplace.ID && p.Code.Equals(listingDto.Code)); if (!string.IsNullOrWhiteSpace(listingDto.FullDescription)) { listing.FullDescription = listingDto.FullDescription; } if (!string.IsNullOrWhiteSpace(listingDto.Title)) { listing.Title = listingDto.Title; } foreach (ListingItemDto listingItemDto in listingDto.Items) { Item item = dataContext.Items.Single(p => p.ItemLookupCode.Equals(listingItemDto.Sku)); BonanzaListingItem listingItem = listing.ListingItems.SingleOrDefault(p => p.Item.ID == item.ID); if (listingItem == null) { listingItem = new BonanzaListingItem() { Item = item, Listing = listing }; } if (listingItemDto.Qty.HasValue) { listingItem.Quantity = listingItemDto.Qty.Value; } if (listingItemDto.Price.HasValue) { listingItem.Price = listingItemDto.Price.Value; } } listing.LastSyncTime = DateTime.UtcNow; dataContext.SaveChanges(); } }
private void UpdateListing(BonanzaListing listing, IEnumerable <BonanzaEntry> entries) { ListingDto listingDto = new ListingDto(); listingDto.Code = listing.Code; listingDto.Brand = entries.First(p => !string.IsNullOrWhiteSpace(p.Brand)).Brand; listingDto.IsVariation = (bool)listing.IsVariation; if ((bool)listing.IsVariation) { listingDto.IsVariation = true; listingDto.Sku = entries.First(p => !string.IsNullOrWhiteSpace(p.ClassName)).ClassName; } else { listingDto.IsVariation = false; listingDto.Sku = listingDto.Sku = entries.First().Sku; } if (entries.Any(p => !string.IsNullOrWhiteSpace(p.FullDescription))) { listingDto.FullDescription = entries.First(p => !string.IsNullOrWhiteSpace(p.FullDescription)).FullDescription; } foreach (BonanzaEntry entry in entries) { BonanzaListingItem listingItem = listing.ListingItems.SingleOrDefault(p => p.Item.ItemLookupCode.Equals(entry.Sku)); ListingItemDto listingItemDto = new ListingItemDto(); listingItemDto.Sku = entry.Sku; listingItemDto.Qty = entry.Q; listingItemDto.Price = entry.P; listingDto.Items.Add(listingItemDto); } var activeSkus = listing.ListingItems.Where(p => p.Quantity != 0).Select(p => p.Item.ItemLookupCode); bool mustIncludeProductData = listingDto.Items.Any(p => !activeSkus.Any(s => s.Equals(p.Sku))); foreach (BonanzaListingItem listingItem in listing.ListingItems) { if (!listingDto.Items.Any(p => p.Sku.Equals(listingItem.Item.ItemLookupCode))) { ListingItemDto listingItemDto = new ListingItemDto(); listingItemDto.Qty = listingItem.Quantity; listingItemDto.Price = listingItem.Price; listingDto.Items.Add(listingItemDto); } } bool includeTemplate = entries.Any(p => p.GetUpdateFlags().Any(s => s.Trim().ToUpper().Equals("TEMPLATE"))); bool includeProductData = entries.Any(p => p.GetUpdateFlags().Any(s => s.Trim().ToUpper().Equals("PRODUCTDATA"))) || mustIncludeProductData; if (listingDto.Items.All(p => p.Qty == 0)) { _services.End(_marketplace.ID, listing.Code); } else { _services.Revise(_marketplace.ID, listingDto, includeProductData, includeTemplate); } }