Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 4
0
            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);
                }
            }