public static IList <OrderChangeViewModel> BuildChanges(OrderShippingInfoDTO shippingInfo) { var results = new List <OrderChangeViewModel>(); if (!String.IsNullOrEmpty(shippingInfo.TrackingNumber)) { var printLabel = new OrderChangeViewModel() { ChangeType = OrderChangeTypes.PrintLabel, Value = shippingInfo.TrackingNumber, ValueUrl = MarketUrlHelper.GetTrackingUrl(shippingInfo.TrackingNumber, shippingInfo.ShippingMethod.CarrierName, shippingInfo.TrackingStateSource), Message = shippingInfo.ShippingMethod.CarrierName + " - " + shippingInfo.ShippingMethod.Name.ToString(), ChangeDate = shippingInfo.LabelPurchaseDate, ChangedBy = shippingInfo.LabelPurchaseBy, ChangedByName = shippingInfo.LabelPurchaseByName, }; results.Add(printLabel); } if (shippingInfo.ActualDeliveryDate.HasValue) { var deliveredEvent = new OrderChangeViewModel() { ChangeType = OrderChangeTypes.Delivered, Message = shippingInfo.TrackingStateEvent, ChangeDate = shippingInfo.ActualDeliveryDate.Value, ChangedBy = null }; results.Add(deliveredEvent); } return(results); }
public void GetLargeImage(string asin, MarketType market, string marketplaceId) { var url = MarketUrlHelper.GetMarketUrl(asin, market, marketplaceId); var imageService = new ImageRequestingService(_log, _htmlScraper); var webPageParserFactory = new WebPageParserFactory(); var pageParser = webPageParserFactory.GetPageParser(market); long size = 0; var image = imageService.GetMainImageFromUrl(url, pageParser, out size); Console.WriteLine(image); }
public static string GetMarketUrl(string asin, string sourceMarketId, MarketType market, string marketplaceId) { var itemId = asin; if (market == MarketType.Magento || market == MarketType.Walmart || market == MarketType.WalmartCA || market == MarketType.Jet || market == MarketType.eBay) { itemId = sourceMarketId; } if (!String.IsNullOrEmpty(itemId)) { return(MarketUrlHelper.GetMarketUrl(itemId, market, marketplaceId)); } return(""); }
private IList <ImageInfo> UpdateForItems(IList <ItemDTO> items) { var imageService = new ImageRequestingService(_log, _htmlScraper); var resultList = new List <ImageInfo>(); foreach (var item in items) { var url = String.Empty; if (item.Market == (int)MarketType.Amazon || item.Market == (int)MarketType.AmazonEU || item.Market == (int)MarketType.AmazonAU) { url = MarketUrlHelper.GetMarketUrl(item.ASIN, (MarketType)item.Market, item.MarketplaceId); } if (item.Market == (int)MarketType.Walmart || item.Market == (int)MarketType.WalmartCA || item.Market == (int)MarketType.Jet || item.Market == (int)MarketType.Shopify || item.Market == (int)MarketType.eBay) { url = MarketUrlHelper.GetMarketUrl(item.SourceMarketId, (MarketType)item.Market, item.MarketplaceId); } long downloadedSize = 0; CallResult <IList <ImageInfo> > result = null; var pageParser = new WebPageParserFactory().GetPageParser((MarketType)item.Market); result = imageService.GetMainImageFromUrl(url, pageParser, out downloadedSize); var imageInfoList = result?.Data ?? new List <ImageInfo>(); imageInfoList.ForEach(i => { i.Tag = item.Id; i.ImageType = (int)ProductImageType.Large; }); if (imageInfoList.Any()) { _log.Info("Image updated, page size=" + downloadedSize + " asin=" + item.ASIN + ", market=" + item.Market + ", marketplaceId=" + item.MarketplaceId + ", image=" + String.Join("; ", imageInfoList.Select(i => i.Image).ToList())); } else { var image = new ImageInfo(); image.Tag = item.Id; if (result.Exception != null && result.Exception.Message.Contains("404") && result.Exception.Message.IndexOf("Not Found", StringComparison.OrdinalIgnoreCase) > 0) { image.UpdateFailAttempts = 100; } else { image.UpdateFailAttempts++; } _log.Info("Image update failed, page size=" + downloadedSize + ", asin=" + item.ASIN + ", market=" + item.Market + ", marketplaceId=" + item.MarketplaceId); imageInfoList.Add(image); } resultList.AddRange(imageInfoList); Thread.Sleep(300); } return(resultList); }
private bool UpdateOrder(IUnitOfWork db, ShippingDTO shipping) { _log.Info("Update order: id=" + shipping.OrderId + ", orderId=" + shipping.AmazonIdentifier + ", marketId=" + shipping.MarketOrderId); IList <OrderItemDTO> orderItems; if (shipping.IsFromMailPage) { orderItems = db.OrderItems.GetByOrderIdAsDto(shipping.OrderId) //Remove canceled items with 0 price .Where(m => m.ItemPrice > 0 || m.QuantityOrdered > 0).ToList(); } else { orderItems = db.OrderItems.GetByShippingInfoIdAsDto(shipping.Id) //Remove canceled items with 0 price .Where(m => m.ItemPrice > 0 || m.QuantityOrdered > 0).ToList(); } OrderHelper.PrepareSourceItemOrderId(orderItems); orderItems = OrderHelper.GroupBySourceItemOrderId(orderItems); DateTime?orderDate = null; if (shipping.OrderDate.HasValue) { orderDate = shipping.OrderDate.Value.ToUniversalTime(); } var shippingDate = shipping.ShippingDate.ToUniversalTime(); if (orderDate.HasValue && shippingDate < orderDate) { shippingDate = orderDate.Value.AddHours(2); } var result = _api.SubmitTrackingInfo(shipping.MarketOrderId, shipping.TrackingNumber, MarketUrlHelper.GetTrackingUrl(shipping.TrackingNumber, shipping.ShippingMethod.CarrierName), shipping.ShippingMethod, shipping.ShippingMethod.Name, ShippingUtils.GetShippingType(shipping.ShippingMethodId), ShippingUtils.FormattedToMarketCurrierName(shipping.ShippingMethod.CarrierName, shipping.ShippingMethod.IsInternational, _api.Market), shippingDate, orderItems, shipping.MessageIdentifier.ToString()); if (result.Status == CallStatus.Success) { _log.Info("Order was updated"); } else { _log.Info("Order update errors: Message=" + result.Message); /* * Walmart.Api.WalmartException: No response, statusCode=InternalServerError. * Details: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><ns4:errors xmlns:ns2="http://walmart.com/mp/orders" xmlns:ns3="http://walmart.com/mp/v3/orders" xmlns:ns4="http://walmart.com/"><ns4:error><ns4:code>INVALID_REQUEST_CONTENT.GMP_ORDER_API</ns4:code><ns4:field>data</ns4:field><ns4:description>Unable to process this request. The Line: 4 of PO: 4576930294354 is in SHIPPED status</ns4:description><ns4:info>Request content is invalid.</ns4:info><ns4:severity>ERROR</ns4:severity><ns4:category>DATA</ns4:category><ns4:causes/><ns4:errorIdentifiers/></ns4:error></ns4:errors> ---> System.Net.WebException: The remote server returned an error: (400) Bad Request. */ } return(result.Status == CallStatus.Success); }
private bool UpdateOrder(IUnitOfWork db, ShippingDTO shipping) { _log.Info("Update order: id=" + shipping.OrderId + ", orderId=" + shipping.AmazonIdentifier + ", marketId=" + shipping.MarketOrderId); IList <OrderItemDTO> orderItems; if (shipping.IsFromMailPage) { orderItems = db.OrderItems.GetByOrderIdAsDto(shipping.OrderId) //Remove canceled items with 0 price .Where(m => m.ItemPrice > 0 || m.QuantityOrdered > 0).ToList(); } else { orderItems = db.OrderItems.GetByShippingInfoIdAsDto(shipping.Id) //Remove canceled items with 0 price .Where(m => m.ItemPrice > 0 || m.QuantityOrdered > 0).ToList(); } OrderHelper.PrepareSourceItemOrderId(orderItems); orderItems = OrderHelper.GroupBySourceItemOrderId(orderItems); DateTime?orderDate = null; if (shipping.OrderDate.HasValue) { orderDate = shipping.OrderDate.Value.ToUniversalTime(); } var shippingDate = shipping.ShippingDate.ToUniversalTime(); if (orderDate.HasValue && shippingDate < orderDate) { shippingDate = orderDate.Value.AddHours(2); } var carrierName = shipping.ShippingMethod.CarrierName; if (!String.IsNullOrEmpty(shipping.CustomCurrier)) { carrierName = shipping.CustomCurrier; } var result = _api.SubmitTrackingInfo(shipping.MarketOrderId, shipping.TrackingNumber, MarketUrlHelper.GetTrackingUrl(shipping.TrackingNumber, carrierName), shipping.ShippingMethod.Name, ShippingUtils.GetShippingType(shipping.ShippingMethodId), ShippingUtils.FormattedToMarketCurrierName(carrierName, shipping.ShippingMethod.IsInternational, _api.Market), shippingDate, orderItems); if (result.Status == CallStatus.Success) { _log.Info("Order was updated"); } else { _log.Fatal(_api.Market + ": Order update errors: Message=" + result.Message + ", Order=" + shipping.MarketOrderId); /* * Walmart.Api.WalmartException: No response, statusCode=InternalServerError. * Details: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><ns4:errors xmlns:ns2="http://walmart.com/mp/orders" xmlns:ns3="http://walmart.com/mp/v3/orders" xmlns:ns4="http://walmart.com/"><ns4:error><ns4:code>INVALID_REQUEST_CONTENT.GMP_ORDER_API</ns4:code><ns4:field>data</ns4:field><ns4:description>Unable to process this request. The Line: 4 of PO: 4576930294354 is in SHIPPED status</ns4:description><ns4:info>Request content is invalid.</ns4:info><ns4:severity>ERROR</ns4:severity><ns4:category>DATA</ns4:category><ns4:causes/><ns4:errorIdentifiers/></ns4:error></ns4:errors> ---> System.Net.WebException: The remote server returned an error: (400) Bad Request. */ if (StringHelper.ContainsNoCase(result.Exception?.Message, "doesn't have enough quantity to ship requested quantity")) { var allUpdated = true; //Send update by one items foreach (var orderItem in orderItems) { var oneItemResult = _api.SubmitTrackingInfo(shipping.MarketOrderId, shipping.TrackingNumber, MarketUrlHelper.GetTrackingUrl(shipping.TrackingNumber, carrierName), shipping.ShippingMethod.Name, ShippingUtils.GetShippingType(shipping.ShippingMethodId), ShippingUtils.FormattedToMarketCurrierName(carrierName, shipping.ShippingMethod.IsInternational, _api.Market), shippingDate, new List <OrderItemDTO>() { orderItem }); if (oneItemResult.Status == CallStatus.Success) { _log.Info("Order item " + orderItem.SKU + " was updated"); } else { if (!StringHelper.ContainsNoCase(oneItemResult.Exception?.Message, "is in SHIPPED status") && !StringHelper.ContainsNoCase(oneItemResult.Exception?.Message, "qtyAvailableToShip :: 0")) { allUpdated = false; _log.Fatal(_api.Market + ": Order item \"" + orderItem.SKU + "\" update errors: Message=" + oneItemResult.Message + ", Order=" + shipping.MarketOrderId); } } } if (allUpdated) { result = CallResult <DTOOrder> .Success(new DTOOrder()); } } } return(result.Status == CallStatus.Success); }
public static string GetSellerCentralOrderUrl(MarketType market, string marketplaceId, string orderId) { return(MarketUrlHelper.GetSellarCentralOrderUrl(market, marketplaceId, orderId, null)); }
public static string GetSellarCentralInventoryUrl(string asin, MarketType market, string marketplaceId) { return(MarketUrlHelper.GetSellarCentralInventoryUrl(asin, market, marketplaceId)); }
private bool UpdateOrder(IUnitOfWork db, ShippingDTO shipping) { _log.Info("Update order: id=" + shipping.OrderId + ", orderId=" + shipping.AmazonIdentifier + ", marketId=" + shipping.MarketOrderId); IList <OrderItemDTO> orderItems; if (shipping.IsFromMailPage) { orderItems = db.OrderItems.GetWithListingInfo() //Remove canceled items with 0 price .Where(m => m.ItemPrice > 0 && m.Quantity > 0 && m.OrderId == shipping.OrderId) .Select(oi => new OrderItemDTO() { ItemPrice = oi.ItemPrice, QuantityOrdered = oi.Quantity, ItemOrderIdentifier = oi.ItemOrderId, SKU = oi.SKU, //Jet used SKU insted of ItemOrderId SourceItemOrderIdentifier = oi.SourceItemOrderId, ReplaceType = oi.ReplaceType, }) .ToList(); } else { orderItems = db.OrderItems.GetWithListingInfoByShippingInfoIdAsDto(shipping.Id) //Remove canceled items with 0 price .Where(m => m.ItemPrice > 0 && m.QuantityOrdered > 0) .ToList(); } OrderHelper.PrepareSourceItemOrderId(orderItems); orderItems = OrderHelper.GroupBySourceItemOrderId(orderItems); DateTime?orderDate = null; if (shipping.OrderDate.HasValue) { orderDate = shipping.OrderDate.Value.ToUniversalTime(); } var shippingDate = shipping.ShippingDate.ToUniversalTime(); if (orderDate.HasValue && shippingDate < orderDate) { shippingDate = orderDate.Value.AddHours(2); } var result = _api.SubmitTrackingInfo(shipping.MarketOrderId, shipping.TrackingNumber, MarketUrlHelper.GetTrackingUrl(shipping.TrackingNumber, shipping.ShippingMethod.CarrierName), shipping.ShippingMethod.Id, shipping.ShippingMethod.CarrierName, shippingDate, orderItems); if (result.Status == CallStatus.Success) { _log.Info("Order was updated"); } else { _log.Info("Order update errors: Message=" + result.Message); } return(result.Status == CallStatus.Success); }