public ActionResult CriarLancamento([FromBody] CalculoSeguroVeiculoInput inputs) { try { double valorSeguro = _serv.CalcularSeguro(inputs); return(Ok(valorSeguro)); } catch (Exception ex) { return(BadRequest($"Ocorreu um erro ao calcular o valor do seguro: {ex.Message}")); } }
public void TaxaDeveSer3eLucro5() { CalculoSeguroVeiculoInput input = new CalculoSeguroVeiculoInput(); input.ValorVeiculo = 10000; double expect = 270.375; var mockRepo = new Mock <ICalculoSeguroVeiculoRepository>(); mockRepo.Setup(x => x.CriarCalculoSeguro(new CalculoSeguroVeiculo())).Returns(true); SeguroVeiculoService service = new SeguroVeiculoService(mockRepo.Object); double v_seguro = service.CalcularSeguro(input); Assert.AreEqual(expect, v_seguro, "taxa deve ser 3 e lucro 5"); }
public void ValorNaoPodeSerNegativo() { CalculoSeguroVeiculoInput input = new CalculoSeguroVeiculoInput(); input.ValorVeiculo = -10000; double expect = 0; var mockRepo = new Mock <ICalculoSeguroVeiculoRepository>(); mockRepo.Setup(x => x.CriarCalculoSeguro(new CalculoSeguroVeiculo())).Returns(true); SeguroVeiculoService service = new SeguroVeiculoService(mockRepo.Object); double v_seguro = service.CalcularSeguro(input); Assert.AreEqual(expect, v_seguro, "Valor não pode ser negativo"); }
public double CalcularSeguro(CalculoSeguroVeiculoInput input) { double taxaRisco = ((input.ValorVeiculo * 5) / (input.ValorVeiculo * 2) / 100); double premioRisco = taxaRisco * input.ValorVeiculo; double premioPuro = premioRisco * (1 + MARGEM_SEGURA); double premioComercial = (LUCRO * premioPuro) + premioPuro; if (premioComercial < 0) { premioComercial = 0; } CalculoSeguroVeiculo model = new CalculoSeguroVeiculo { CPF = input.CPF, Idade = input.Idade, Marca = input.Marca, Modelo = input.Modelo, Veiculo = input.Veiculo, Nome = input.Nome, ValorVeiculo = input.ValorVeiculo, DataCalculo = DateTime.Now, IdCalculo = Guid.NewGuid(), Lucro = LUCRO, Margem = MARGEM_SEGURA, PremioComercial = premioComercial, PremioPuro = premioPuro, TaxaRisco = taxaRisco }; _repo.CriarCalculoSeguro(model); return(premioComercial); }