private void MapListingItem(BonanzaListing listing, dynamic variationDtos) { //var currentSkus = variationDtos.Variation.ToArray().Select(p => p.SKU); //foreach (var listingItem in listing.ListingItems) //{ // if (!currentSkus.Any(p => p.Equals(listingItem.Sku))) // { // listingItem.Quantity = 0; // } //} //foreach (VariationType variationDto in variationDtos.Variation) //{ // string sku = variationDto.SKU.ToUpper().Trim(); // EbayListingItem listingItem = GetListingItem(listing, sku); // listingItem.Price = variationDto.StartPrice != null ? Convert.ToDecimal(variationDto.StartPrice.Value) : listingItem.Price; // listingItem.Quantity = // variationDto.QuantitySpecified && // variationDto.SellingStatus != null && // variationDto.SellingStatus.QuantitySoldSpecified ? // variationDto.Quantity - variationDto.SellingStatus.QuantitySold : listingItem.Quantity; //} }
private void Map(BonanzaListing listing, dynamic listingDto) { listing.Code = listingDto.ItemID; listing.Marketplace = _marketplace; listing.Title = listingDto.Title != null ? listingDto.Title : listing.Title; listing.Sku = listingDto.SKU != null ? listingDto.SKU : listing.Sku != null ? listing.Sku : string.Empty; listing.Status = listingDto.SellingStatus != null && listingDto.SellingStatus.ListingStatusSpecified ? listingDto.SellingStatus.ListingStatus.ToString() : listing.Status; listing.LastSyncTime = DateTime.UtcNow; if (listingDto.Variations == null) { listing.IsVariation = false; MapListingItem(listing, listingDto); } else { listing.IsVariation = true; MapListingItem(listing, listingDto.Variations); } }
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 Update(string code, string status) { using (berkeleyEntities dataContext = new berkeleyEntities()) { BonanzaListing listing = dataContext.BonanzaListings.Single(p => p.MarketplaceID == _marketplace.ID && p.Code.Equals(code)); listing.Status = status; listing.LastSyncTime = DateTime.UtcNow; 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 BonanzaListingItem GetListingItem(BonanzaListing listing, string sku) { //BonanzaListingItem listingItem = listing.ListingItems.SingleOrDefault(p => p.Sku.Equals(sku)); //if (listingItem == null) //{ // Item item = _dataContext.Items.SingleOrDefault(p => p.ItemLookupCode.Equals(sku)); // listingItem = new EbayListingItem() { Item = item, Listing = listing, Sku = sku }; //} //return listingItem; return(null); }
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 ProcessListingData(ItemTypeCollection listingsDtos) { foreach (ItemType listingDto in listingsDtos) { BonanzaListing listing = _marketplace.Listings.SingleOrDefault(p => p.Code.Equals(listingDto.ItemID)); if (listing == null) { listing = new BonanzaListing(); } try { Map(listing, listingDto); } catch (PropertyConstraintException e) { //Map(listing, SyncListing(listingDto.ItemID)); } } }
private void PublishEntries(IEnumerable <BonanzaEntry> entries) { using (_dataContext = new berkeleyEntities()) { _marketplace = _dataContext.BonanzaMarketplaces.Single(p => p.Code.Equals(_marketplaceCode)); var update = entries.Where(p => !string.IsNullOrWhiteSpace(p.Code)).GroupBy(p => p.Code); foreach (var group in update) { BonanzaListing listing = _marketplace.Listings.Single(p => p.Code.Equals(group.Key)); TryUpdateListing(listing, group); } var create = entries.Where(p => string.IsNullOrWhiteSpace(p.Code)).GroupBy(p => p.ClassName); foreach (var group in create) { TryCreateListing(group); } } }
private void TryUpdateListing(BonanzaListing listing, IEnumerable <BonanzaEntry> entries) { try { entries.ToList().ForEach(p => p.Status = StatusCode.Processing); UpdateListing(listing, entries); foreach (var entry in entries) { entry.Command = string.Empty; entry.Status = StatusCode.Completed; } } catch (Exception e) { foreach (var entry in entries) { entry.Message = e.Message; entry.Status = StatusCode.Error; } } }
private void UpdateGroup(Item item, IEnumerable <BonanzaEntry> group) { var active = item.BonanzaListingItems.Where(p => p.Listing.Marketplace.Code.Equals(_marketplaceCode) && !p.Listing.Status.Equals(BonanzaMarketplace.STATUS_ENDED)); var existingEntries = group.ToList(); foreach (var listingItem in active) { BonanzaEntry entry = existingEntries.FirstOrDefault(p => p.IsValid()); if (entry != null) { entry.Code = listingItem.Listing.Code; if (entry.Q.Value == listingItem.Quantity && decimal.Compare(entry.P.Value, listingItem.Price) == 0 && entry.GetUpdateFlags().Count == 0) { entry.Status = StatusCode.Completed; } else { entry.Message = string.Format("({0}|{1})", listingItem.Quantity, Math.Round(listingItem.Price, 2)); } existingEntries.Remove(entry); } else { entry = existingEntries.FirstOrDefault(p => !p.IsValid()); if (entry != null) { entry.Message = "modified by program"; existingEntries.Remove(entry); } else { entry = new BonanzaEntry(); entry.Sku = item.ItemLookupCode; entry.Brand = item.SubDescription1; entry.ClassName = item.ClassName; entry.Message = "added by program"; _addedEntries.Add(entry); } entry.Format = "GTC"; entry.Code = listingItem.Listing.Code; entry.P = listingItem.Price; entry.Q = listingItem.Quantity; entry.FullDescription = listingItem.Listing.FullDescription; entry.Title = listingItem.Listing.Title; entry.Status = StatusCode.Completed; } } foreach (var entry in existingEntries) { BonanzaListing listing = _dataContext.BonanzaListings.SingleOrDefault(p => p.Sku.Equals(item.ClassName) && !p.Status.Equals(BonanzaMarketplace.STATUS_ENDED)); if (listing != null) { if (!entry.IsValid()) { entry.Code = listing.Code; entry.Title = listing.Title; entry.FullDescription = listing.FullDescription; entry.Format = "GTC"; entry.Message = "modified by program"; } else if (entry.Format.Equals("GTC")) { entry.Code = listing.Code; entry.Message = "modified by program"; } } } }
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); } }