public DealthPreimumModel CalculateMonthlyDeathPremium(InsuredInput insuredInput)
        {
            var factor         = _deathPremiumRepository.GetFactor(insuredInput.Occupation);
            var monthlyPremium = insuredInput.DeathSumInsured * factor * insuredInput.Age / (1000 * 12);

            return(new DealthPreimumModel {
                MonthlyDeathPremium = Math.Round(monthlyPremium, 2)
            });
        }
        public ActionResult <DealthPreimumModel> CalculateMonthlyDeathPremium(InsuredInput insured)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = _deathPremiumService.CalculateMonthlyDeathPremium(insured);

            return(Ok(result));
        }
        private InsuredInput InvalidInputwithInsuredSumEqualThan10B()
        {
            var insuredInput = new InsuredInput
            {
                Name            = "Nick",
                Age             = 30,
                DeathSumInsured = 10000000000,
                Occupation      = "Doctor",
                DateOfBirth     = DateTime.Now.Date.AddYears(-30)
            };

            return(insuredInput);
        }
        private InsuredInput InvalidInputwithAgeGreaterThan150()
        {
            var insuredInput = new InsuredInput
            {
                Name            = "Nick",
                Age             = 1234,
                DeathSumInsured = 12344,
                Occupation      = "Doctor",
                DateOfBirth     = DateTime.Now.Date.AddYears(-30)
            };

            return(insuredInput);
        }
        public void GivenServiceCalcMonthlyDeathPremiumReturnValidResult()
        {
            var insuredInput = new InsuredInput {
                Age = 30, DeathSumInsured = 10000, DateOfBirth = DateTime.Now.Date.AddYears(-30), Name = "Nick", Occupation = "Doctor"
            };

            _proxy.GetFactor(insuredInput.Occupation).Returns(0.1M);
            var service       = new DeathPremiumService(_proxy);
            var expectedValue = Math.Round(insuredInput.DeathSumInsured * 0.1M * insuredInput.Age / (1000 * 12), 2);
            var actualValue   = service.CalculateMonthlyDeathPremium(insuredInput);

            actualValue.MonthlyDeathPremium.Should().Be(expectedValue);
        }