public async Task <JsonResult> GetValuePremium(PremiumCalculatorModel premiumCalculatorRequest) { PremiumCalculatorRequest premiumCalculatorRequestApi = new PremiumCalculatorRequest { Age = (int)premiumCalculatorRequest.Age, BirthDate = premiumCalculatorRequest.DateBirth.ToString(Configuration.GetSection("MySettings").GetSection("BirthDateFormat").Value), State = premiumCalculatorRequest.State }; using (var httpClient = new HttpClient()) { StringContent content = new StringContent(JsonConvert.SerializeObject(premiumCalculatorRequestApi), Encoding.UTF8, Configuration.GetSection("MySettings").GetSection("JsonFormat").Value); using var response = await httpClient.PostAsync(Configuration.GetSection ("MySettings").GetSection ("UrlApi").Value, content); string apiResponse = await response.Content.ReadAsStringAsync(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { PremiumCalculatorResponse responseCalculator = new PremiumCalculatorResponse(); responseCalculator = JsonConvert.DeserializeObject <PremiumCalculatorResponse>(apiResponse); premiumCalculatorRequest.PremiumValue = responseCalculator.Premium; premiumCalculatorRequest.IsSuccess = true; } else { premiumCalculatorRequest.ErrorMessage = apiResponse; premiumCalculatorRequest.IsSuccess = false; } } return(Json(premiumCalculatorRequest)); }
public PremiumCalculatorResponse CalculatePremium(PremiumCalculatorDTO calculatorDTO) { DataTable dt = GetPremiumRules(); var availableStates = (from states in dt.AsEnumerable() where states.Field <string>(StaticColumns.StateColumn) != StaticStrings.GenericCodeState select states.Field <string>(StaticColumns.StateColumn) ).Distinct().ToList(); var availableMonths = (from months in dt.AsEnumerable() where months.Field <int>(StaticColumns.MonthColumn) != StaticNumbers.GenericCodeMonth select months.Field <int>(StaticColumns.MonthColumn) ).Distinct().ToList(); if (availableStates.Contains(calculatorDTO.State)) { if (!availableMonths.Contains(calculatorDTO.NumberOfMonth)) { calculatorDTO.NumberOfMonth = StaticNumbers.GenericCodeMonth; } } else { calculatorDTO.State = StaticStrings.GenericCodeState; calculatorDTO.NumberOfMonth = StaticNumbers.GenericCodeMonth; } try { PremiumCalculatorResponse premiumResponse = new PremiumCalculatorResponse { Premium = (from stateMonthsPremium in dt.AsEnumerable() where stateMonthsPremium.Field <string>(StaticColumns.StateColumn) == calculatorDTO.State where stateMonthsPremium.Field <int>(StaticColumns.MinimumAgeColumn) <= calculatorDTO.Age where stateMonthsPremium.Field <int>(StaticColumns.MaximumAgeColumn) >= calculatorDTO.Age where stateMonthsPremium.Field <int>(StaticColumns.MonthColumn) == calculatorDTO.NumberOfMonth select stateMonthsPremium.Field <double>(StaticColumns.PremiumColumn)).ToList().ElementAt(0) }; return(premiumResponse); } catch (Exception) { throw new Exception(ValidateMessages.RuleValidation); } }