public async Task <ApiResponse <CalculateOrderResponse> > CalculateOrder(CalculateOrderRequest calculateOrderRequest) { var action = "calculate-order"; var response = await _restClient.Post <CalculateOrderResponse>(action, calculateOrderRequest); return(response); }
public async Task <Response <CalculatedOrderResponse> > CalculateOrder(CalculateOrderRequest request) { var calculatedData = await CalculateOrder(request.Products, request.TransportId, request.PaymentId); var response = _mapService.MapCalculatedOrder(calculatedData); return(new Response <CalculatedOrderResponse>(ResponseStatus.Ok, response)); }
public static OrderCalculationResponse CalculateOrder(OrderCalculationRequest request) { var result = new OrderCalculationResponse(); if (!request.Items.Any()) { return(result); } if (request.Address == null) { request.Address = GlobalSettings.Company.Address; } if (request.ShipMethodID == 0) { request.ShipMethodID = request.Configuration.DefaultShipMethodID; } var apirequest = new CalculateOrderRequest { WarehouseID = request.Configuration.WarehouseID, CurrencyCode = request.Configuration.CurrencyCode, PriceType = request.Configuration.PriceTypeID, ShipMethodID = request.ShipMethodID, ReturnShipMethods = request.ReturnShipMethods, Address1 = request.Address.Address1, Address2 = request.Address.Address2, City = request.Address.City, State = request.Address.State, Zip = request.Address.Zip, Country = request.Address.Country, Details = request.Items.Select(c => new OrderDetailRequest(c)).ToArray() }; var apiresponse = WebService().CalculateOrder(apirequest); result.Subtotal = apiresponse.SubTotal; result.Shipping = apiresponse.ShippingTotal; result.Tax = apiresponse.TaxTotal; result.Discount = apiresponse.DiscountTotal; result.Total = apiresponse.Total; // Assemble the ship methods var shipMethods = new List <ShipMethod>(); if (apiresponse.ShipMethods != null && apiresponse.ShipMethods.Length > 0) { shipMethods.AddRange(apiresponse.ShipMethods.Select(shipMethod => (ShipMethod)shipMethod)); // Ensure that at least one ship method is selected var shipMethodID = (request.ShipMethodID != 0) ? request.ShipMethodID : request.Configuration.DefaultShipMethodID; if (shipMethods.Any(c => c.ShipMethodID == shipMethodID)) { shipMethods.First(c => c.ShipMethodID == shipMethodID).Selected = true; } else { shipMethods.First().Selected = true; } } result.ShipMethods = shipMethods.AsEnumerable(); return(result); }
public static OrderCalculationResponse CalculateOrder(OrderCalculationRequest request) { var result = new OrderCalculationResponse(); if (request.Items.Count() == 0) { return(result); } if (request.Address == null) { request.Address = GlobalSettings.Company.Address; } if (request.ShipMethodID == 0) { request.ShipMethodID = request.Configuration.DefaultShipMethodID; } var apirequest = new CalculateOrderRequest(); apirequest.CustomerID = (int)request.CustomerID; apirequest.WarehouseID = request.Configuration.WarehouseID; apirequest.CurrencyCode = request.Configuration.CurrencyCode; apirequest.PriceType = request.Configuration.PriceTypeID; apirequest.ShipMethodID = request.ShipMethodID; apirequest.ReturnShipMethods = request.ReturnShipMethods; apirequest.City = request.Address.City; apirequest.State = request.Address.State; apirequest.Zip = request.Address.Zip; apirequest.Country = request.Address.Country; apirequest.Details = request.Items.Select(c => new OrderDetailRequest(c)).ToArray(); apirequest.Other15 = request.Other15; apirequest.OrderType = Common.Api.ExigoWebService.OrderType.ShoppingCart; var apiresponse = Exigo.WebService().CalculateOrder(apirequest); result.Subtotal = apiresponse.SubTotal; result.Shipping = apiresponse.ShippingTotal; result.Tax = apiresponse.TaxTotal; result.Discount = apiresponse.DiscountTotal; result.Total = apiresponse.Total; result.Details = apiresponse.Details; result.Other16 = apiresponse.Other16; // Assemble the ship methods var shipMethods = new List <ShipMethod>(); if (apiresponse.ShipMethods != null && apiresponse.ShipMethods.Length > 0) { foreach (var shipMethod in apiresponse.ShipMethods) { shipMethods.Add((ShipMethod)shipMethod); } // Ensure that at least one ship method is selected var shipMethodID = (request.ShipMethodID != 0) ? request.ShipMethodID : request.Configuration.DefaultShipMethodID; if (shipMethods.Any(c => c.ShipMethodID == (int)shipMethodID)) { shipMethods.First(c => c.ShipMethodID == shipMethodID).Selected = true; } else { shipMethods.First().Selected = true; } } result.ShipMethods = shipMethods.AsEnumerable(); return(result); }
/// <remarks/> public void CalculateOrderAsync(CalculateOrderRequest CalculateOrderRequest, object userState) { if ((this.CalculateOrderOperationCompleted == null)) { this.CalculateOrderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCalculateOrderOperationCompleted); } this.InvokeAsync("CalculateOrder", new object[] { CalculateOrderRequest}, this.CalculateOrderOperationCompleted, userState); }
/// <remarks/> public void CalculateOrderAsync(CalculateOrderRequest CalculateOrderRequest) { this.CalculateOrderAsync(CalculateOrderRequest, null); }
public async Task <IHttpActionResult> CalculateOrder([FromBody] CalculateOrderRequest request) { var response = await _orderService.CalculateOrder(request); return(new CreateResult(response)); }
public static OrderCalculationResponse CalculateOrder(OrderCalculationRequest request) { var result = new OrderCalculationResponse(); if (request.Items.Count() == 0 || request.Address == null || request.Address.Country.IsNullOrEmpty() || request.Address.State.IsNullOrEmpty()) { return(result); } if (request.ShipMethodID == 0) { request.ShipMethodID = request.Configuration.DefaultShipMethodID; } var apirequest = new CalculateOrderRequest(); apirequest.WarehouseID = request.Configuration.WarehouseID; apirequest.CurrencyCode = request.Configuration.CurrencyCode; apirequest.PriceType = request.Configuration.PriceTypeID; apirequest.ShipMethodID = request.ShipMethodID; apirequest.ReturnShipMethods = request.ReturnShipMethods; apirequest.City = request.Address.City; apirequest.State = request.Address.State; apirequest.Zip = request.Address.Zip; apirequest.Country = request.Address.Country; apirequest.Details = request.Items.Select(c => new OrderDetailRequest(c)).ToArray(); var apiresponse = Exigo.WebService().CalculateOrder(apirequest); result.Subtotal = apiresponse.SubTotal; result.Shipping = apiresponse.ShippingTotal; result.Tax = apiresponse.TaxTotal; result.Discount = apiresponse.DiscountTotal; result.Total = apiresponse.Total; // Assemble the ship methods, if requested if (request.ReturnShipMethods) { var shipMethods = new List <ShipMethod>(); if (apiresponse.ShipMethods != null && apiresponse.ShipMethods.Length > 0) { var webShipMethods = new List <ShipMethod>(); using (var sql = Exigo.Sql()) { webShipMethods = sql.Query <ShipMethod>(@" SELECT [ShipMethodID] ,[ShipMethodDescription] ,[WarehouseID] ,[ShipCarrierID] ,[DisplayOnWeb] FROM [dbo].[ShipMethods] WHERE DisplayOnWeb = 1 AND WarehouseID = @wid", new { wid = request.Configuration.WarehouseID }).ToList(); } if (webShipMethods.Count() > 0) { var webShipMethodIds = webShipMethods.Select(s => s.ShipMethodID); foreach (var shipMethod in apiresponse.ShipMethods.Where(x => webShipMethodIds.Contains(x.ShipMethodID))) { shipMethods.Add((ShipMethod)shipMethod); } if (shipMethods.Any()) { // Ensure that at least one ship method is selected var shipMethodID = (request.ShipMethodID != 0) ? request.ShipMethodID : request.Configuration.DefaultShipMethodID; if (shipMethods.Any(c => c.ShipMethodID == shipMethodID)) { shipMethods.First(c => c.ShipMethodID == shipMethodID).Selected = true; } else { shipMethods.First().Selected = true; } } } else { throw new Exception("Error: You need at least one Ship Method set up as DisplayOnWeb."); } } result.ShipMethods = shipMethods.AsEnumerable(); } return(result); }
// Order Calculation public OrderCalculationResult CalculateOrder(OrderCalculationRequest request) { var result = new OrderCalculationResult(); if (request.Items.Count() == 0) { return(result); } if (request.Address == null) { request.Address = GlobalSettings.Company.DefaultCalculationAddress; } if (request.ShipMethodID == 0) { request.ShipMethodID = request.Configuration.DefaultShipMethodID; } var apirequest = new CalculateOrderRequest(); apirequest.WarehouseID = request.Configuration.WarehouseID; apirequest.CurrencyCode = request.Configuration.CurrencyCode; apirequest.PriceType = request.Configuration.PriceTypeID; apirequest.ShipMethodID = request.ShipMethodID; apirequest.ReturnShipMethods = request.ReturnShipMethods; apirequest.City = request.Address.City; apirequest.State = request.Address.State; apirequest.Zip = request.Address.Zip; apirequest.Country = request.Address.Country; apirequest.Details = request.Items.Select(c => new OrderDetailRequest(c)).ToArray(); var apiresponse = Exigo.WebService().CalculateOrder(apirequest); result.Subtotal = apiresponse.SubTotal; result.Shipping = apiresponse.ShippingTotal; result.Tax = apiresponse.TaxTotal; result.Discount = apiresponse.DiscountTotal; result.Total = apiresponse.Total; // Assemble the ship methods var shipMethods = new List <IShipMethod>(); if (apiresponse.ShipMethods != null) { foreach (var shipMethod in apiresponse.ShipMethods.Where(s => request.Configuration.AvailableShipMethods.Contains(s.ShipMethodID))) { shipMethods.Add(GlobalUtilities.TranslateShipMethods((ShipMethod)shipMethod)); } // Ensure that at least one ship method is selected var shipMethodID = (request.ShipMethodID != 0) ? request.ShipMethodID : request.Configuration.DefaultShipMethodID; if (shipMethods.Any(c => c.ShipMethodID == shipMethodID)) { shipMethods.First(c => c.ShipMethodID == shipMethodID).Selected = true; } else { shipMethods.First().Selected = true; } } result.ShipMethods = shipMethods.AsEnumerable(); var test = ""; return(result); }