示例#1
0
        public RedirectToRouteResult RemoveFromCart(Cart cart, string EbayListingId, string returnUrl)
        {
            Guid        guidID  = Guid.Parse(EbayListingId);
            EbayListing listing = _repository.GetEbayListings().FirstOrDefault(x => x.EbayListingId == guidID);

            if (listing != null)
            {
                cart.RemoveLine(listing);
            }

            return(RedirectToAction("Index", new { returnUrl }));
        }
示例#2
0
        public void AddItem(EbayListing item, int quantity)
        {
            var listing = _lineCollection.FirstOrDefault(x => x.EbayListing.EbayListingId == item.EbayListingId);

            if (listing == null)
            {
                _lineCollection.Add(new CartLine {
                    EbayListing = item, Quantity = quantity
                });
            }
            else
            {
                listing.Quantity += quantity;
            }
        }
示例#3
0
        private EbayOrderItem CreateOrderItem(EbayOrder order, TransactionType orderItemDto)
        {
            EbayOrderItem orderItem = new EbayOrderItem();

            string sku = orderItemDto.Variation == null ? orderItemDto.Item.SKU : orderItemDto.Variation.SKU;

            string listingID = orderItemDto.Item.ItemID;

            EbayListing listing = _marketplace.Listings.Single(p => p.Code.Equals(listingID));

            orderItem.ListingItem = listing.ListingItems.Single(p => p.Sku.Equals(sku));
            orderItem.Order       = order;
            orderItem.CreatedDate = orderItemDto.CreatedDate;
            orderItem.Code        = orderItemDto.OrderLineItemID;


            return(orderItem);
        }
        private void PublishEntries(IEnumerable <EbayEntry> entries)
        {
            var pendingEntries = entries.Cast <EbayEntry>();

            using (_dataContext = new berkeleyEntities())
            {
                _marketplace = _dataContext.EbayMarketplaces.Single(p => p.Code.Equals(_marketplaceCode));

                var update = entries.Where(p => !string.IsNullOrWhiteSpace(p.Code)).GroupBy(p => p.Code);

                foreach (var entryGroup in update)
                {
                    EbayListing listing = _marketplace.Listings.Single(p => p.Code.Equals(entryGroup.Key));

                    TryUpdateListing(listing, entryGroup);
                }

                var pendingCreate = entries.Where(p => string.IsNullOrWhiteSpace(p.Code));

                var individuals = pendingCreate.Where(p => !p.IsVariation());
                var variations  = pendingCreate.Where(p => p.IsVariation()).GroupBy(p => p.ClassName);

                foreach (var entryGroup in variations)
                {
                    TryCreateListing(entryGroup, true);
                }

                foreach (var entry in individuals)
                {
                    TryCreateListing(new List <EbayEntry>()
                    {
                        entry
                    }, false);
                }
            }
        }
        private void TryUpdateListing(EbayListing listing, IEnumerable <EbayEntry> 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 UpdateListing(EbayListing listing, IEnumerable <EbayEntry> entries)
        {
            ListingDto listingDto = new ListingDto();

            listingDto.Code        = listing.Code;
            listingDto.Format      = entries.First(p => !string.IsNullOrWhiteSpace(p.Format)).GetFormat();
            listingDto.Brand       = entries.First(p => !string.IsNullOrWhiteSpace(p.Brand)).Brand;
            listingDto.IsVariation = (bool)listing.IsVariation;

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.Template)))
            {
                listingDto.Template = entries.First(p => !string.IsNullOrWhiteSpace(p.Template)).Template;
            }

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.Design)))
            {
                listingDto.Design = entries.First(p => !string.IsNullOrWhiteSpace(p.Design)).Design;
            }

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.FullDescription)))
            {
                listingDto.FullDescription = entries.First(p => !string.IsNullOrWhiteSpace(p.FullDescription)).FullDescription;
            }

            if (entries.Any(p => !string.IsNullOrWhiteSpace(p.Title)))
            {
                if ((bool)listing.IsVariation)
                {
                    listingDto.Title = GetParentTitle(entries.First(p => !string.IsNullOrWhiteSpace(p.Title)));
                }
                else
                {
                    listingDto.Title = entries.First(p => !string.IsNullOrWhiteSpace(p.Title)).Title;
                }
            }

            foreach (EbayEntry entry in entries)
            {
                ListingItemDto listingItemDto = new ListingItemDto();
                listingItemDto.Sku   = entry.Sku;
                listingItemDto.Qty   = entry.Q;
                listingItemDto.Price = entry.P;
                listingDto.Items.Add(listingItemDto);
            }

            var activeListingItems = listing.ListingItems.Where(p => p.Quantity != 0);

            foreach (EbayListingItem listingItem in activeListingItems)
            {
                if (!listingDto.Items.Any(p => p.Sku.Equals(listingItem.Sku)))
                {
                    ListingItemDto listingItemDto = new ListingItemDto();
                    listingItemDto.Sku   = listingItem.Sku;
                    listingItemDto.Qty   = listingItem.Quantity;
                    listingItemDto.Price = listingItem.Price;
                    listingDto.Items.Add(listingItemDto);
                }
            }

            var activeSkus = activeListingItems.Select(p => p.Item.ItemLookupCode);

            bool mustIncludeProductData = listingDto.Items.Any(p => !activeSkus.Any(s => s.Equals(p.Sku)));

            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))
            {
                _ebayServices.End(_marketplace.ID, listing.Code, "Publisher");
            }
            else
            {
                _ebayServices.Revise(_marketplace.ID, listingDto, includeProductData, includeTemplate, "Publisher");
            }
        }
示例#7
0
        private void UpdateGroup(Item item, IEnumerable <EbayEntry> group)
        {
            var active = item.EbayListingItems.Where(p => p.Listing.Marketplace.Code.Equals(_marketplaceCode) && p.Listing.Status.Equals(EbayMarketplace.STATUS_ACTIVE));

            var entries = group.ToList();

            foreach (var listingItem in active)
            {
                string format = listingItem.Listing.Format.Equals(EbayMarketplace.FORMAT_STOREFIXEDPRICE) ? EbayMarketplace.FORMAT_FIXEDPRICE : listingItem.Listing.Format;

                EbayEntry entry = entries.FirstOrDefault(p => p.IsValid() && p.GetFormat().Equals(format));

                if (entry != null)
                {
                    entry.Code = listingItem.Listing.Code;

                    entry.SetFormat(listingItem.Listing.Format, listingItem.Listing.Duration, (bool)listingItem.Listing.IsVariation);

                    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}|{2})", listingItem.FormatCode, listingItem.Quantity, Math.Round(listingItem.Price, 2));
                    }

                    entries.Remove(entry);
                }
                else
                {
                    entry = entries.FirstOrDefault(p => p.IsValid() == false);

                    if (entry != null)
                    {
                        entry.Message = "modified by program";
                        entries.Remove(entry);
                    }
                    else
                    {
                        entry           = new EbayEntry();
                        entry.Brand     = item.SubDescription1;
                        entry.ClassName = item.ClassName;
                        entry.Sku       = item.ItemLookupCode;
                        entry.Message   = "added by program";

                        entry.ParentRowIndex = group.First().RowIndex;

                        _addedEntries.Add(entry);
                    }


                    entry.Code = listingItem.Listing.Code;
                    entry.SetFormat(listingItem.Listing.Format, listingItem.Listing.Duration, (bool)listingItem.Listing.IsVariation);
                    entry.P               = listingItem.Price;
                    entry.Q               = listingItem.Quantity;
                    entry.Title           = listingItem.Listing.Title;
                    entry.FullDescription = listingItem.Listing.FullDescription;
                    entry.Status          = StatusCode.Completed;
                }
            }

            foreach (var entry in entries)
            {
                EbayListing listing = _dataContext.EbayListings.SingleOrDefault(p => p.Sku.Equals(item.ClassName) && p.Status.Equals(EbayMarketplace.STATUS_ACTIVE) && p.Marketplace.Code.Equals(_marketplaceCode));

                if (listing != null)
                {
                    if (!entry.IsValid())
                    {
                        entry.Code            = listing.Code;
                        entry.Title           = listing.Title;
                        entry.FullDescription = listing.FullDescription;
                        entry.SetFormat(listing.Format, listing.Duration, (bool)listing.IsVariation);
                        entry.Message = "modified by program";
                    }
                    else if (entry.GetFormat().Equals(EbayMarketplace.FORMAT_FIXEDPRICE))
                    {
                        entry.Code = listing.Code;
                        entry.SetFormat(listing.Format, listing.Duration, (bool)listing.IsVariation);
                        entry.Message = "modified by program";
                    }
                }
            }
        }
示例#8
0
 public void RemoveLine(EbayListing product)
 {
     _lineCollection.RemoveAll(p => p.EbayListing.EbayListingId == product.EbayListingId);
 }