예제 #1
0
        private TimeInTransitResponse GetUPSEstimatedDeliveryDate(string shipToZip)
        {
            TimeInTransitResponse result = new TimeInTransitResponse();

            Uri url            = new Uri("https://onlinetools.ups.com/ups.app/xml/TimeInTransit");
            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

            httpWebRequest.ContentType = "application/xml; charset=utf-8";
            httpWebRequest.Method      = "POST";
            httpWebRequest.Accept      = "application/xml; charset=utf-8";

            string requestXMLInString = InitializeAccess();

            requestXMLInString += ComposeRequest(shipToZip);

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                requestXMLInString = requestXMLInString.Replace("\r\n", "");
                streamWriter.Write(requestXMLInString);
                streamWriter.Flush();
                streamWriter.Close();
            }

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(TimeInTransitResponse));
                result = (TimeInTransitResponse)serializer.Deserialize(streamReader);
            }

            return(result);
        }
예제 #2
0
        public List <ShippingService> GetAvailableShippingService(string shipToZip, DateTime expectedDeliveryDate)
        {
            List <ShippingService> availableService = new List <ShippingService>();

            try
            {
                TimeInTransitResponse result = GetUPSEstimatedDeliveryDate(shipToZip);

                if (result != null)
                {
                    if (!string.IsNullOrEmpty(result.Response.ResponseStatusCode))
                    {
                        if (result.Response.ResponseStatusCode == "1")
                        {
                            if (result.Items.Length > 0)
                            {
                                TransitResponseType response = (TransitResponseType)result.Items[0];

                                if (response.ServiceSummary.Length > 0)
                                {
                                    var services = response.ServiceSummary
                                                   .Where(s => Convert.ToDateTime(s.EstimatedArrival.Date) <= expectedDeliveryDate)
                                                   .OrderByDescending(s => s.Service.Code).ToList();

                                    if (services.Count > 0)
                                    {
                                        for (int i = 0; i < services.Count; i++)
                                        {
                                            ShippingService service = new ShippingService();
                                            service.ExpectedDeliverDate = Convert.ToDateTime(services[i].EstimatedArrival.Date);
                                            service.ServiceName         = services[i].Service.Description;
                                            service.DayOfWeek           = services[i].EstimatedArrival.DayOfWeek;
                                            service.TotalDays           = Convert.ToInt16(services[i].EstimatedArrival.BusinessTransitDays);
                                            if (!string.IsNullOrEmpty(services[i].SaturdayDelivery))
                                            {
                                                if (services[i].SaturdayDelivery == "1")
                                                {
                                                    service.IsSaturday = true;
                                                }
                                            }

                                            if (services[i].Guaranteed.Length > 0)
                                            {
                                                if (!string.IsNullOrEmpty(services[i].Guaranteed[0].Code))
                                                {
                                                    if (services[i].Guaranteed[0].Code == "Y")
                                                    {
                                                        service.Guaranteed = true;
                                                    }
                                                }
                                            }

                                            availableService.Add(service);
                                        }
                                    }
                                }
                            }
                            else
                            {
                                error += "No available service returned.\n";
                            }
                        }
                        else
                        {
                            error += !string.IsNullOrEmpty(result.Response.Error[0].ErrorDescription) ? result.Response.Error[0].ErrorDescription + "\n": "Unknown Error.\n";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                error += ex.Message + "\n";
            }



            return(availableService);
        }