public ExternalOrderShippedResult SetOrderShipped(IOrderShipmentRequest shipmentRequests) { CompleteSaleCall completeSales = new CompleteSaleCall(eBayContext); ExternalOrderShippedResult result = new ExternalOrderShippedResult() { Success = false, ShippingResults = new List<ShippingResult>() }; bool allSuccess = true; int successCount = 0; int failedCount = 0; StringBuilder errorBuilder = new StringBuilder(); foreach (eBayOrderShipmentIfo request in shipmentRequests.ShipmentList) { ShippingResult shippingResult = new ShippingResult() { StoreProviderOrderId = request.OrderId, ExternalOrderHeaderId = request.ExternalOrderHeaderId, ShippedDate = request.ShipmentDate, }; try { completeSales.OrderID = request.OrderId; ShipmentType shipment = new ShipmentType(); shipment.ShippedTime = request.ShipmentDate; completeSales.Shipment = shipment; completeSales.Shipped = true; completeSales.Site = SiteCodeType.UK; completeSales.DetailLevelList.Add(DetailLevelCodeType.ReturnAll); completeSales.Execute(); if (completeSales.ApiResponse.Ack == AckCodeType.Success) { shippingResult.Success = true; successCount += 1; } else { allSuccess = false; shippingResult.Success = false; StringBuilder sb = new StringBuilder(); foreach (ErrorType error in completeSales.ApiResponse.Errors) { sb.Append(error.LongMessage + "; "); } shippingResult.ErrorMessage = string.Format("eBay Code returned : {0}; Error: {1}", completeSales.ApiResponse.Ack.ToString(), sb.ToString().Trim()); errorBuilder.Append(sb.ToString() + " | "); failedCount += 1; } } catch (Exception ex) { allSuccess = false; shippingResult.Success = false; shippingResult.ErrorMessage = string.Format("Error occurred while updating shipping info: {0}, Error: {1}", request.OrderId, ex.Message); errorBuilder.Append(shippingResult.ErrorMessage + " | "); failedCount += 1; } } if (allSuccess) { result.Success = true; } else { result.Success = false; result.ErrorMessage = "Some orders could not be shipped"; } if (successCount > 0) { result.SuccessMessage = string.Format("Successfully Shipped {0} Orders ", successCount); } if (failedCount > 0) { result.ErrorMessage = string.Format("Failed to Ship {0} Orders, please check and try again.", failedCount); result.ErrorMessage += "<br/> " + errorBuilder.ToString(); } return result; }
public Stream CreateOrderStream(IOrderShipmentRequest shipmentRequest ) { OrderFeedRequest envelop = new OrderFeedRequest(); Stream stream = new MemoryStream(); XmlWriterSettings settings = new XmlWriterSettings(); settings.NamespaceHandling = NamespaceHandling.OmitDuplicates; settings.Indent = true; //StringBuilder sb = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(stream, settings)) { envelop.Header = new AmazonMessageHeader() { DocumentVersion = "1.01", MerchantIdentifier = _context.MerchantId, }; envelop.MessageType = MESSAGE_TYPE; int messageId = 0; List<OrderMessage> messages = new List<OrderMessage>(); foreach (var shipment in shipmentRequest.ShipmentList) { messageId += 1; OrderMessage message = new OrderMessage() { MessageId = messageId, OrderFulfillment = new OrderFulfillment { AmazonOrderId = shipment.OrderId, FulfillmentDate = shipment.ShipmentDate } }; messages.Add(message); } envelop.OrderMessage = messages.ToArray(); XmlSerializer serializer = new XmlSerializer(typeof(OrderFeedRequest)); XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces(); xmlns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); serializer.Serialize(writer, envelop, xmlns); //Debug.Print(sb.ToString()); //stream.Position = 0; //stream.Seek(0, SeekOrigin.Begin); stream.Position = 0; stream.Seek(0, SeekOrigin.Begin); return stream; } }