Example #1
0
        public Response <OrderResponse> CreateOrder(Packages package, ShippingMethod method = null)
        {
            Orders    order   = package.Orders;
            Addresses address = order.Addresses;

            if (method == null)
            {
                method = package.Method;
            }

            try
            {
                var serviceTypeList = GetServiceTypeList();

                string buyerName     = string.Join(" ", new string[] { address.FirstName, address.MiddleInitial, address.LastName });
                string buyerAddress2 = !string.IsNullOrEmpty(address.StreetLine2) ? address.StreetLine2.Trim() : "";
                if (!string.IsNullOrEmpty(address.CompanyName))
                {
                    string companyName = address.CompanyName.Trim();
                    if (string.Format("{0} {1}", buyerName, companyName).Length <= 50)
                    {
                        buyerName = string.Format("{0} {1}", buyerName, companyName).Trim();
                    }
                    else
                    {
                        buyerAddress2 = string.Format("{0} {1}", companyName, buyerAddress2).Trim();
                    }
                }

                List <Items> itemList = package.Items.Where(i => i.IsEnable.Value).ToList();

                var orderData = new OrderData()
                {
                    service_type        = serviceTypeList[method.MethodType.Value],
                    sales_record_number = string.Format("{0}-{1}", package.OrderID, Convert.ToInt32(package.ShipDate.Value.Subtract(new DateTime(1970, 1, 1)).TotalSeconds)),
                    product_type        = string.Join(",", itemList.Select(i => i.Skus.ProductType).Select(t => t.ProductTypeName).Distinct()),
                    buyer_name          = buyerName,
                    buyer_phone         = !string.IsNullOrEmpty(address.PhoneNumber) ? address.PhoneNumber.Trim() : "",
                    buyer_address1      = address.StreetLine1.Trim(),
                    buyer_address2      = buyerAddress2,
                    buyer_city          = address.City.Trim(),
                    buyer_country       = address.CountryName.Trim(),
                    buyer_state         = !string.IsNullOrEmpty(address.StateName) ? (address.CountryCode.Equals("US") && address.StateName.Length > 2 ? EnumData.StateAbbreviationExpand(address.StateName.Trim()) : address.StateName.Trim()) : "",
                    buyer_zip           = address.CountryCode.Equals("US") ? address.PostalCode.Split('-').First() : address.PostalCode.Trim(),
                    cost = itemList.Sum(i => i.Qty.Value * i.DLDeclaredValue)
                };

                var request = new
                {
                    data = new CreateOrderRequest
                    {
                        orders = new OrderData[] { orderData }
                    }
                };

                return(Request <OrderResponse>("orders", "POST", request));
            }
            catch (Exception e)
            {
                return(new Response <OrderResponse>()
                {
                    status = 400,
                    message = e.InnerException?.Message ?? e.Message
                });
            }
        }