Exemple #1
0
        private void Publisher_Result(List <PublishingResult> results)
        {
            foreach (var result in results)
            {
                AmznEntry entry = _processingEntries.Single(p => p.Sku.Equals(result.Data.Sku));

                if (result.HasError)
                {
                    entry.Status  = StatusCode.Error;
                    entry.Message = result.Message;
                }
                else
                {
                    entry.Status  = StatusCode.Completed;
                    entry.Command = string.Empty;
                }
            }

            var productErrors = results.Where(p => p.HasError && p.Data.ProductData != null);

            if (productErrors.Count() > 0)
            {
                _pendingResubmission.Enqueue(productErrors);
            }
        }
Exemple #2
0
        public async override void Publish(IEnumerable <ListingEntry> entries)
        {
            _processingEntries.AddRange(entries.Cast <AmznEntry>());

            List <ListingItemDto> listingItems = new List <ListingItemDto>();

            foreach (AmznEntry entry in entries)
            {
                ListingItemDto listingItem = new ListingItemDto();

                listingItem.Sku = entry.Sku;

                listingItem.Title = entry.Title;

                var existingListingItem = _dataContext.AmznListingItems.SingleOrDefault(p => p.IsActive && p.Item != null && p.Item.ItemLookupCode.Equals(entry.Sku) && p.MarketplaceID == _marketplace.ID);

                listingItem.IncludeProductData = existingListingItem == null || entry.GetUpdateFlags().Any(p => p.Equals("PRODUCTDATA"));

                listingItem.Qty   = entry.Q;
                listingItem.Price = entry.P;

                if (entry.SalePrice.HasValue && entry.SaleStart.HasValue && entry.SaleEnd.HasValue)
                {
                    listingItem.SaleData = new SaleData()
                    {
                        SalePrice = entry.SalePrice.Value, StartDate = entry.SaleStart.Value, EndDate = entry.SaleEnd.Value
                    };
                }

                listingItems.Add(listingItem);

                entry.Status = StatusCode.Processing;
            }

            BerkeleyEntities.Amazon.AmazonServices services = new BerkeleyEntities.Amazon.AmazonServices();

            services.Result += Publisher_Result;

            await Task.Run(() => services.Publish(_marketplace.ID, listingItems, "Publisher"));

            while (_pendingResubmission.Count > 0)
            {
                var results = _pendingResubmission.Dequeue();

                RepublishDataWindow republishForm = new RepublishDataWindow();
                republishForm.DataContext = CollectionViewSource.GetDefaultView(results);
                republishForm.ShowDialog();

                if ((bool)republishForm.DialogResult)
                {
                    foreach (var result in results)
                    {
                        AmznEntry entry = _processingEntries.Single(p => p.Sku.Equals(result.Data.Sku));
                        entry.Status = StatusCode.Processing;
                    }

                    await Task.Run(() => services.Publish(_marketplace.ID, results.Select(p => p.Data), "Publisher"));
                }
            }

            this.RaisePublishCompleted();
        }