Ejemplo n.º 1
0
        /// <summary>
        /// Converts the response object into MarketplaceOrder object. Also makes the call to get the items for the order.
        /// </summary>
        /// <param name="order">The given amazon order object.</param>
        /// <returns>A MarketplaceOrder object</returns>
        private Contracts.MarketplaceOrder ConvertOrderResponseToMarketplaceOrder(Order order)
        {
            var marketplaceOrder = new Contracts.MarketplaceOrder()
            {
                BuyerShippingAddress1 = order.ShippingAddress.AddressLine1,
                BuyerShippingAddress2 = order.ShippingAddress.AddressLine2,
                BuyerShippingAddress3 = order.ShippingAddress.AddressLine3,
                BuyerShippingCity     = order.ShippingAddress.City,
                BuyerShippingState    = order.ShippingAddress.StateOrRegion,
                BuyerShippingZip      = order.ShippingAddress.PostalCode,
                BuyerShippingName     = order.ShippingAddress.Name,
                BuyerShippingPhone    = order.ShippingAddress.Phone,
                BuyerEmail            = order.BuyerEmail,
                BuyerName             = order.BuyerName,
                OrderTotal            = decimal.Parse(order.OrderTotal.Amount),
                MarketplaceOrderId    = order.AmazonOrderId,
                OrderStatus           = order.OrderStatus == OrderStatusEnum.PartiallyShipped
                    ? Contracts.EOrderStatus.PartiallyShipped
                    : Contracts.EOrderStatus.Unshipped,
                Marketplace          = Contracts.EMarketplace.Amazon,
                ShipmentServiceLevel = order.ShipmentServiceLevelCategory
            };

            var listItemsResponse = _AmazonOrdersClient.ListOrderItems(CreateListOrderItemsRequest(order));

            if (!string.IsNullOrWhiteSpace(listItemsResponse.ListOrderItemsResult.NextToken))
            {
                throw new MarketplaceWebServiceException("ListOrderItems returned a next token. Please restructure the code to continue pulling order items with this token.");
            }
            // Convert the item responses to marketplace order item objects.
            marketplaceOrder.Items = listItemsResponse.ListOrderItemsResult.OrderItems.OrderItem.Select(item =>
                                                                                                        new Contracts.MarketplaceOrderItem()
            {
                MarketplaceItemId      = item.ASIN,
                MarketplaceOrderItemId = item.OrderItemId,
                SKU               = item.SellerSKU,
                Price             = decimal.Parse(item.ItemPrice.Amount),
                ShippingPrice     = decimal.Parse(item.ShippingPrice.Amount),
                Tax               = decimal.Parse(item.ItemTax.Amount),
                ShippingTax       = decimal.Parse(item.ShippingTax.Amount),
                QuantityShipped   = Convert.ToInt32(item.QuantityShipped),
                QuantityUnshipped = Convert.ToInt32(item.QuantityOrdered - item.QuantityShipped)
            }
                                                                                                        );
            return(marketplaceOrder);
        }
        /// <summary>
        /// Converts the response object into MarketplaceOrder object. Also makes the call to get the items for the order.
        /// </summary>
        /// <param name="order">The given amazon order object.</param>
        /// <returns>A MarketplaceOrder object</returns>
        private Contracts.MarketplaceOrder ConvertOrderResponseToMarketplaceOrder(Order order)
        {
            var marketplaceOrder = new Contracts.MarketplaceOrder()
            {
                BuyerShippingAddress1 = order.ShippingAddress.AddressLine1,
                BuyerShippingAddress2 = order.ShippingAddress.AddressLine2,
                BuyerShippingAddress3 = order.ShippingAddress.AddressLine3,
                BuyerShippingCity = order.ShippingAddress.City,
                BuyerShippingState = order.ShippingAddress.StateOrRegion,
                BuyerShippingZip = order.ShippingAddress.PostalCode,
                BuyerShippingName = order.ShippingAddress.Name,
                BuyerShippingPhone = order.ShippingAddress.Phone,
                BuyerEmail = order.BuyerEmail,
                BuyerName = order.BuyerName,
                OrderTotal = decimal.Parse(order.OrderTotal.Amount),
                MarketplaceOrderId = order.AmazonOrderId,
                OrderStatus = order.OrderStatus == OrderStatusEnum.PartiallyShipped
                    ? Contracts.EOrderStatus.PartiallyShipped
                    : Contracts.EOrderStatus.Unshipped,
                Marketplace = Contracts.EMarketplace.Amazon,
                ShipmentServiceLevel = order.ShipmentServiceLevelCategory
            };

            var listItemsResponse = _AmazonOrdersClient.ListOrderItems(CreateListOrderItemsRequest(order));
            if (!string.IsNullOrWhiteSpace(listItemsResponse.ListOrderItemsResult.NextToken))
                throw new MarketplaceWebServiceException("ListOrderItems returned a next token. Please restructure the code to continue pulling order items with this token.");
            // Convert the item responses to marketplace order item objects.
            marketplaceOrder.Items = listItemsResponse.ListOrderItemsResult.OrderItems.OrderItem.Select(item =>
                new Contracts.MarketplaceOrderItem()
                {
                    MarketplaceItemId = item.ASIN,
                    MarketplaceOrderItemId = item.OrderItemId,
                    SKU = item.SellerSKU,
                    Price = decimal.Parse(item.ItemPrice.Amount),
                    ShippingPrice = decimal.Parse(item.ShippingPrice.Amount),
                    Tax = decimal.Parse(item.ItemTax.Amount),
                    ShippingTax = decimal.Parse(item.ShippingTax.Amount),
                    QuantityShipped = Convert.ToInt32(item.QuantityShipped),
                    QuantityUnshipped = Convert.ToInt32(item.QuantityOrdered - item.QuantityShipped)
                }
            );
            return marketplaceOrder;
        }