private static OrderTemplate MapOrder(AllfleXML.FlexOrder.OrderHeader order) { var config = new AutoMapper.MapperConfiguration( cfg => { cfg.CreateMap <AllfleXML.FlexOrder.OrderHeader, OrderTemplate>(); cfg.CreateMap <AllfleXML.FlexOrder.OrderLineHeader, OrderLineTemplate>(); } ); var mapper = config.CreateMapper(); var result = mapper.Map <OrderTemplate>(order); result.OrderNumber = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "OrderNumber")?.Value; result.MasterId = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "MasterId")?.Value; result.OrderDate = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "OrderDate")?.Value; result.DueDate = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "DueDate")?.Value; result.Requisitioner = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "Requisitioner")?.Value; result.PrePaidFreight = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "PrePaidFreight")?.Value; result.BillToName = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "BillToName")?.Value; result.BillToAddress1 = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "BillToAddress1")?.Value; result.BillToAddress2 = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "BillToAddress2")?.Value; result.BillToAddress3 = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "BillToAddress3")?.Value; result.BillToCity = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "BillToCity")?.Value; result.BillToState = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "BillToState")?.Value; result.BillToPostalCode = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "BillToPostalCode")?.Value; result.BillToPhone = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "BillToPhone")?.Value; result.SubTotal = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "SubTotal")?.Value; result.Tax = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "Tax")?.Value; result.ShippingCharge = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "ShippingCharge")?.Value; result.Total = order.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "Total")?.Value; var i = 0; foreach (var orderLine in order.OrderLineHeaders) { result.OrderLineHeaders[i].JobNumber = orderLine.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "JobNumber")?.Value; result.OrderLineHeaders[i].SkuDescription = orderLine.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "SkuDescription")?.Value; result.OrderLineHeaders[i].UnitPrice = orderLine.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "UnitPrice")?.Value; result.OrderLineHeaders[i].SubTotal = orderLine.UserDefinedFields.Fields.SingleOrDefault(f => f.Key == "SubTotal")?.Value; i++; } return(result); }
public void PostOrderTest() { // TODO: Build order object var order = new AllfleXML.FlexOrder.OrderHeader(); AllfleXML.FlexOrder.OrderHeader result; using (var c = new Allflex.API.Client(apiKey, apiUrl)) { result = c.PostOrderAsync(order).Result; } Assert.IsNotNull(result); Assert.AreNotEqual(order.WSOrderId, result.WSOrderId); order.WSOrderId = result.WSOrderId; Assert.AreEqual(order, result); }
/// <summary> /// Posts the order to flex service asynchronous. /// </summary> /// <param name="order">The order.</param> /// <returns></returns> /// <exception cref="Exception"></exception> public async Task <AllfleXML.FlexOrder.OrderHeader> PostOrderAsync(AllfleXML.FlexOrder.OrderHeader order) { var endpoint = "api/orders"; var putMessage = new StringContent(order.Export().ToString(), Encoding.UTF8, "text/xml"); var response = await _client.PostAsync(endpoint, putMessage); if (!response.IsSuccessStatusCode) { var httpErrorObject = await response.Content.ReadAsStringAsync(); var uri = new Uri(_client.BaseAddress, endpoint); throw new Exception($"Bad response from {uri.ToString()}: {response.StatusCode} - {response.ReasonPhrase}\nThere was an issue saving the purchase order {order.PO} to the Allflex Order API\n{httpErrorObject}"); } var result = await response.Content.ReadAsStringAsync(); return(AllfleXML.FlexOrder.Parser.Import(XDocument.Parse(result)).OrderHeaders.SingleOrDefault()); }
/// <summary> /// Posts the order to flex service. /// </summary> /// <param name="order">The order.</param> /// <returns></returns> /// <exception cref="Exception"></exception> public AllfleXML.FlexOrder.OrderHeader PostOrder(AllfleXML.FlexOrder.OrderHeader order) { return(PostOrderAsync(order).Result); }
private static string ToHtml(AllfleXML.FlexOrder.OrderHeader order, string htmlTemplate) { var template = HandlebarsDotNet.Handlebars.Compile(htmlTemplate); return(template(order)); }
public static string SalesOrder(AllfleXML.FlexOrder.OrderHeader order, string htmlTempalte = null, string outputPath = null) { return(SalesOrder(MapOrder(order), htmlTempalte, outputPath)); }