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(PremiumCalculatorRequest calculator) { try { ValidatePremiumCalculatorRequest(calculator); PremiumCalculatorDTO calculatorDTO = new PremiumCalculatorDTO { Age = calculator.Age, BirthDate = calculator.BirthDate, State = calculator.State, BirthDateFormatted = DateTime.ParseExact(calculator.BirthDate, Formats.DateFormatValid, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind) }; calculatorDTO.NumberOfMonth = calculatorDTO.BirthDateFormatted.Month; return(_premiumCalculatorRepository.CalculatePremium(calculatorDTO)); } catch (Exception e) { HttpResponseException ex = new HttpResponseException { Value = e.Message, Status = (int)HttpStatusCode.InternalServerError }; throw ex; } }
private void ValidatePremiumCalculatorRequest(PremiumCalculatorRequest calculator) { try { if (calculator.Age < StaticData.MinimumAgeDefined || calculator.Age > StaticData.MaximumAgeDefined) { throw new Exception(ValidateMessages.AgeOutOfRange); } if (!DateTime.TryParseExact(calculator.BirthDate, Formats.DateFormatValid, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out DateTime birthDate)) { throw new Exception(ValidateMessages.DateFormatInvalid + " " + Formats.DateFormatValid); } DateTime today = DateTime.Today; DateTime zeroTime = new DateTime(StaticNumbers.NumberOne, StaticNumbers.NumberOne, StaticNumbers.NumberOne); TimeSpan span = today - birthDate; int years = (zeroTime + span).Year - StaticNumbers.NumberOne; if (years != calculator.Age) { throw new Exception(ValidateMessages.AgeNotCorresponding); } if (!Regex.IsMatch(calculator.State, Formats.StateFormat)) { throw new Exception(ValidateMessages.StateInvalidCharacters); } if (calculator.State.Length > StaticNumbers.StateNumberOfCharacters) { throw new Exception(ValidateMessages.StateQuantityCharacters); } } catch (Exception e) { throw e; } }
public PremiumCalculatorResponse CalculatePremium(PremiumCalculatorRequest calculator) { var premium = _calculator.CalculatePremium(calculator); return(premium); }