示例#1
0
        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;
            //}
        }
示例#2
0
        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);
            }
        }
示例#3
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();
            }
        }
示例#4
0
        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();
            }
        }
示例#5
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;
        }
示例#6
0
        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);
        }
示例#7
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();
            }
        }
示例#8
0
        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));
                }
            }
        }
示例#9
0
            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);
                    }
                }
            }
示例#10
0
            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;
                    }
                }
            }
示例#11
0
        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";
                    }
                }
            }
        }
示例#12
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);
                }
            }