//public void SynchronizeListings(int marketplaceID) //{ // using (berkeleyEntities dataContext = new berkeleyEntities()) // { // EbayMarketplace marketplace = dataContext.EbayMarketplaces.Single(p => p.ID == marketplaceID); // ListingSynchronizer synchronizer = new ListingSynchronizer(marketplace, dataContext); // DateTime syncTime = DateTime.UtcNow.AddMinutes(-3); // if (marketplace.ListingSyncTime.HasValue && marketplace.ListingSyncTime.Value > syncTime.AddDays(-2)) // { // DateTime from = marketplace.ListingSyncTime.Value.AddMinutes(-5); // synchronizer.SyncByCreatedTime(from, syncTime); // try // { // synchronizer.SyncByModifiedTime(from, syncTime); // } // catch (ApiException e) // { // if (e.Errors.ToArray().Any(p => p.ErrorCode.Equals("21917062"))) // { // synchronizer.SyncActiveListings(); // } // } // } // else // { // synchronizer.SyncActiveListings(); // } // marketplace.ListingSyncTime = syncTime; // dataContext.SaveChanges(); // } //} //public void SynchronizeOrders(int marketplaceID) //{ // using (berkeleyEntities dataContext = new berkeleyEntities()) // { // EbayMarketplace marketplace = dataContext.EbayMarketplaces.Single(p => p.ID == marketplaceID); // OrderSynchronizer synchronizer = new OrderSynchronizer(marketplace, dataContext); // DateTime syncTime = DateTime.UtcNow.AddMinutes(-3); // DateTime from = marketplace.OrdersSyncTime.HasValue ? marketplace.OrdersSyncTime.Value.AddMinutes(-5) : DateTime.UtcNow.AddDays(-29); // synchronizer.SyncOrdersByModifiedTime(from, syncTime); // marketplace.OrdersSyncTime = syncTime; // dataContext.SaveChanges(); // } //} //public void FixOverpublished(int marketplaceID) //{ // using (berkeleyEntities dataContext = new berkeleyEntities()) // { // EbayMarketplace marketplace = dataContext.EbayMarketplaces.Single(p => p.ID == marketplaceID); // if (!marketplace.ListingSyncTime.HasValue || marketplace.ListingSyncTime.Value < DateTime.UtcNow.AddHours(-1)) // { // throw new InvalidOperationException(marketplace.Name + " listings must be synchronized in order to fix overpublished"); // } // if (!marketplace.OrdersSyncTime.HasValue || marketplace.OrdersSyncTime.Value < DateTime.UtcNow.AddHours(-1)) // { // throw new InvalidOperationException(marketplace.Name + " orders must be synchronized in order to fix overpublished"); // } // var listings = dataContext.EbayListings.Where(p => p.Status.Equals(EbayMarketplace.STATUS_ACTIVE) && p.MarketplaceID == marketplace.ID).ToList(); // foreach (EbayListing listing in listings.Where(p => !p.ListingItems.Any(s => s.Item == null))) // { // if(listing.Format.Equals(EbayMarketplace.FORMAT_AUCTION)) // { // var listingItem = listing.ListingItems.First(); // if(listingItem.Item.AuctionCount > listingItem.Item.QtyAvailable) // { // try // { // End(marketplaceID, listing.Code); // } // catch (Exception e) // { // _logger.Error(e.Message); // } // } // } // else // { // var listingItems = listing.ListingItems.ToList(); // if (listingItems.Any(p => p.Quantity > p.Item.QtyAvailable)) // { // List<ListingItemDto> listingItemDtos = new List<ListingItemDto>(); // foreach (var listingItem in listingItems) // { // if (listingItem.Quantity > listingItem.Item.QtyAvailable) // { // listingItemDtos.Add(new ListingItemDto() { Sku = listingItem.Item.ItemLookupCode, Qty = listingItem.Item.QtyAvailable, QtySpecified = true }); // } // else // { // listingItemDtos.Add(new ListingItemDto() { Sku = listingItem.Item.ItemLookupCode, Qty = listingItem.Quantity, QtySpecified = true }); // } // } // if (listingItemDtos.All(p => p.Qty == 0)) // { // try // { // End(marketplaceID, listing.Code); // } // catch (Exception e) // { // _logger.Error(e.Message); // } // } // else // { // ListingDto listingDto = new ListingDto(); // listingDto.MarketplaceID = marketplaceID; // listingDto.Code = listing.Code; // listingDto.Items.AddRange(listingItemDtos); // listingDto.IsVariation = (bool)listing.IsVariation; // try // { // Revise(listingDto, false, false); // } // catch (Exception e) // { // _logger.Error(e.Message); // } // } // } // } // } // } //} public void SynchronizeListing(int marketplaceID) { using (berkeleyEntities dataContext = new berkeleyEntities()) { BonanzaMarketplace marketplace = dataContext.BonanzaMarketplaces.Single(p => p.ID == marketplaceID); ListingSynchronizer synchronizer = new ListingSynchronizer(marketplace, dataContext); string[] status = new string[] { "for_sale", "ready_to_post", "missing_fields", "sold", "pending_pickup", "reserved" }; marketplace.ListingSyncTime = DateTime.UtcNow; synchronizer.SyncByStatus(status); dataContext.SaveChanges(); } }
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); } } }
public ListingSynchronizer(BonanzaMarketplace marketplace, berkeleyEntities dataContext) { _marketplace = marketplace; _dataContext = dataContext; }
public Publisher(int marketplaceID) { _dataContext.MaterializeAttributes = true; _marketplace = _dataContext.BonanzaMarketplaces.Single(p => p.ID == marketplaceID); }