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