public async System.Threading.Tasks.Task WhenPremiumQuoteIsNull_ThenResultShouldBeNull() { PremiumQuoteModel premiumQuote = null; var result = await _premiumCalculationService.CalculatePremiumAsync(premiumQuote); result.Should().BeNull(); }
public async System.Threading.Tasks.Task WhenPremiumQuoteValuesAreZero_ThenPremiumShouldBeZero() { var premiumQuote = new PremiumQuoteModel(); var result = await _premiumCalculationService.CalculatePremiumAsync(premiumQuote); result.Should().NotBeNull(); result.Premium.Should().Be(0); }
public async System.Threading.Tasks.Task WhenPremiumQuoteRatingIsInvalid_ThenPremiumShouldBeZero() { var premiumQuote = new PremiumQuoteModel() { Amount = 10, DOB = "01/01/2000", OccupationRating = 0 }; var result = await _premiumCalculationService.CalculatePremiumAsync(premiumQuote); premiumQuote.OccupationRating = 10; var result2 = await _premiumCalculationService.CalculatePremiumAsync(premiumQuote); result.Should().NotBeNull(); result.Premium.Should().Be(0); result2.Should().NotBeNull(); result2.Premium.Should().Be(0); }
public async Task <PremiumQuoteModel> CalculatePremiumAsync(PremiumQuoteModel premiumQuote) { if (premiumQuote is null) { return(await Task.FromResult(premiumQuote)); } premiumQuote.Premium = 0; premiumQuote.Msg = string.Empty; var age = 0; if (DateTime.TryParseExact(premiumQuote.DOB, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out var value)) { age = (DateTime.Today - value).Days / 365; } else { age = premiumQuote.Age; } premiumQuote.Age = age; if (age < 18 || age > 100) { premiumQuote.Msg = "Invalid age"; return(await Task.FromResult(premiumQuote)); } var rating = await _occupationRatingService.OccupationRatingFactorAsync(premiumQuote.OccupationRating); var premium = (premiumQuote.Amount * rating * age) / 1000 * 12; premiumQuote.Premium = premium; return(await Task.FromResult(premiumQuote)); }
public Task <PremiumQuoteModel> CalculatePremiumAsync(PremiumQuoteModel premiumQuote) { var age = 0; if (DateTime.TryParseExact(premiumQuote.DOB, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out var value)) { age = (DateTime.Today - value).Days / 365; } else { age = premiumQuote.Age; } var rating = premiumQuote.OccupationRating >= 1 && premiumQuote.OccupationRating <= 4 ? OccupationRatingFactor[premiumQuote.OccupationRating - 1] : 0; var premium = (premiumQuote.Amount * rating * age) / 1000 * 12; premiumQuote.Age = age; premiumQuote.Premium = premium; return(Task.FromResult <PremiumQuoteModel>(premiumQuote)); }
public async Task <IActionResult> Get([FromQuery] PremiumQuoteModel premiumQuote) { var premium = await _premiumCalculationService.CalculatePremiumAsync(premiumQuote); return(Ok(premium)); }