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;
            }
        }