예제 #1
0
        public decimal Calculate(CalculateTrolleyTotalRequest request)
        {
            var trolleryTotal = 0m;

            if (request.Specials != null)
            {
                foreach (var eachSpecial in request.Specials)
                {
                    trolleryTotal += _specialsProcessor.Calculate(eachSpecial, request.Quantities);
                }
            }

            foreach (var eachPurchasedQuantity in request.Quantities)
            {
                trolleryTotal += _normalPriceProcessor.Calculate(
                    eachPurchasedQuantity,
                    request.Products);
            }

            return(trolleryTotal);
        }
        public async Task <decimal> Calculate(CalculateTrolleyTotalRequest request)
        {
            using (var client = new HttpClient())
            {
                //1. Create wooliex trolley total request
                var requestUrl = string.Format("{0}/{1}?token={2}", _wooliesXApiDetail.BaseUrl.Trim('/'), _wooliesXApiDetail.TrolleyCalculatorMethodName, _wooliesXApiDetail.ApiToken);

                var requestString  = JsonConvert.SerializeObject(request);
                var requestContent = new StringContent(requestString, System.Text.Encoding.UTF8, "application/json");

                //2. Post
                var response = await client.PostAsync(requestUrl, requestContent);

                response.EnsureSuccessStatusCode();

                //2. Read response
                var result = await response.Content.ReadAsStringAsync();

                var trolleyTotal = JsonConvert.DeserializeObject <decimal>(result);

                return(trolleyTotal);
            }
        }
예제 #3
0
 public ActionResult Post([FromBody] CalculateTrolleyTotalRequest request)
 {
     _logger.LogInformation(System.Text.Json.JsonSerializer.Serialize(request));
     return(Ok(_service.Calculate(request)));
 }
 public async Task <decimal> CalculateTrolleyTotal(CalculateTrolleyTotalRequest request)
 {
     return(await _shoppingService.CalculateTrolleyTotalAsync(request));
 }
예제 #5
0
        public async Task <decimal> CalculateTrolleyTotalAsync(CalculateTrolleyTotalRequest request)
        {
            var trolleyTotal = await _trolleyTotalCalculator.Calculate(request);

            return(trolleyTotal);
        }