Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
        public PremiumCalculatorResponse CalculatePremium(PremiumCalculatorRequest calculator)
        {
            var premium = _calculator.CalculatePremium(calculator);

            return(premium);
        }