Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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());
        }
Esempio n. 4
0
 /// <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);
 }
Esempio n. 5
0
        private static string ToHtml(AllfleXML.FlexOrder.OrderHeader order, string htmlTemplate)
        {
            var template = HandlebarsDotNet.Handlebars.Compile(htmlTemplate);

            return(template(order));
        }
Esempio n. 6
0
 public static string SalesOrder(AllfleXML.FlexOrder.OrderHeader order, string htmlTempalte = null, string outputPath = null)
 {
     return(SalesOrder(MapOrder(order), htmlTempalte, outputPath));
 }