Beispiel #1
0
        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());
        }
Beispiel #2
0
        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);
        }