public ActionResult SendIngramOrder() { using (StreamReader sreader = new StreamReader(this.HttpContext.Request.InputStream)) { XmlSerializer serializer = new XmlSerializer(typeof(IngramMailData)); XmlSerializerNamespaces nm = new XmlSerializerNamespaces(); nm.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); IngramMailData data = (IngramMailData)serializer.Deserialize(sreader); UserMailer.SendIngramOrder(data.CustomerName, data.Address, data.Email, data.PhoneNumber, data.ProductList).Send(); View("IngramOrderSent"); return(Json(new { Success = true })); } }
public int DispatchOrders(Dictionary <Models.Orders.Order, List <Models.Orders.OrderLine> > orderLines, Models.Vendors.Vendor vendor, AuditLog4Net.Adapter.IAuditLogAdapter log, DataAccess.UnitOfWork.IUnitOfWork uni) { try { if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["ConcentratorMailerUrl"])) { throw new Exception("ConcentratorMailerUrl setting empty or not in Config"); } var mailerUrl = new Uri(new Uri(ConfigurationManager.AppSettings["ConcentratorMailerUrl"]), "SendIngramOrder"); List <IngramMailProduct> productList = new List <IngramMailProduct>(); foreach (var order in orderLines.Keys) { foreach (var orderline in orderLines[order]) { IngramMailProduct product = new IngramMailProduct(); product.CustomItemNumber = orderline.Product.VendorAssortments.FirstOrDefault().CustomItemNumber; product.ProductDescription = orderline.Product.VendorAssortments.FirstOrDefault().ShortDescription; product.Price = orderline.Price.ToString(); product.NumberOfProducts = orderline.Quantity.ToString(); productList.Add(product); } var data = new IngramMailData { CustomerName = order.ShippedToCustomer.CustomerName, Address = order.ShippedToCustomer.CustomerAddressLine1, Email = order.ShippedToCustomer.CustomerEmail, PhoneNumber = order.ShippedToCustomer.CustomerTelephone, ProductList = productList }; StringBuilder requestString = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.Encoding = Encoding.UTF8; using (XmlWriter xw = XmlWriter.Create(requestString, settings)) { XmlSerializer serializer = new XmlSerializer(typeof(IngramMailData)); XmlSerializerNamespaces nm = new XmlSerializerNamespaces(); nm.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); serializer.Serialize(xw, data); XmlDocument document = new XmlDocument(); document.LoadXml(requestString.ToString()); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(mailerUrl); request.Method = "POST"; byte[] byteData = UTF8Encoding.UTF8.GetBytes(document.OuterXml); using (Stream s = request.GetRequestStream()) { s.Write(byteData, 0, byteData.Length); } var result = request.GetResponse(); log.AuditSuccess("The order has been successfully mailed to the customer"); LogOrder(document, vendor.VendorID, string.Format("{0}.xml", order.OrderID), log); } } return(1); } catch (Exception e) { log.Error(e.Message, e.InnerException); return(0); } }