public async Task <Resultado> Cadastrar(FamiliaDto familiaDto) { var status = await _familiaRepository.ObterStatus(familiaDto.StatusId); var familia = _familiaFactory.Criar(status); foreach (var pessoa in familiaDto.Pessoas) { familia.CriarPessoa( Nome.CriarNovo(pessoa.Nome), Idade.CriarNovo(pessoa.DataDeNascimento), pessoa.Tipo, pessoa.Renda.HasValue ? Renda.CriarNovo(pessoa.Renda.Value) : null); } if (!familia.Validar()) { return(Resultado.Erro("Familia deve possuir apenas um pretendente e apenas um cônjuge.")); } await _familiaRepository.Adicionar(familia); if (familia.Status.CadastroValido) { await _calculoDePontosDosCriteriosAtendidos.Executar(familia); } return(Resultado.OK()); }
public ResultViewModel CadastrarFamilia(FamiliaViewModel familiaViewModel) { var resultViewModel = new ResultViewModel(); var status = _familiaRepository.ObterStatus(familiaViewModel.StatusId); var familia = _familiaFactory.Criar(status); foreach (var pessoa in familiaViewModel.Pessoas) { familia.AdicionarPessoa( new NomeCompleto(pessoa.Nome), pessoa.Tipo, new Idade(pessoa.DataNascimento), pessoa.Renda.HasValue ? new Renda(pessoa.Renda.Value) : new Renda(0)); } if (!familia.EhValido()) { foreach (var notification in familia.Notifications) { resultViewModel.AdicionarMensagem(notification.Message); } return(resultViewModel); } _familiaRepository.Adicionar(familia); if (familia.Status.StatusValido) { _calculoDePontosDosCriteriosAppService.CalcularPontosDeFamiliasAptas(familia); } return(resultViewModel); }