Ejemplo n.º 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());
        }
Ejemplo n.º 2
0
        private Familia CriarCenarioComDependentesMenoresDeIdade()
        {
            var familiaComDoisDependentesMenoresDeIdade = FamiliaFactory.Criar(
                Status);

            FamiliaFactory.CriarPessoa(
                familiaComDoisDependentesMenoresDeIdade,
                Nome.CriarNovo("Pretendente"),
                Idade.CriarNovo(new DateTime(1997, 10, 25)),
                Tipo.Pretendente,
                Renda.CriarNovo(1000));

            FamiliaFactory.CriarPessoa(
                familiaComDoisDependentesMenoresDeIdade,
                Nome.CriarNovo("Conjugue"),
                Idade.CriarNovo(new DateTime(1997, 01, 01)),
                Tipo.Conjuge,
                Renda.CriarNovo(500));

            FamiliaFactory.CriarPessoa(
                familiaComDoisDependentesMenoresDeIdade,
                Nome.CriarNovo("Dependente 1"),
                Idade.CriarNovo(new DateTime(2010, 01, 01)),
                Tipo.Dependente);

            FamiliaFactory.CriarPessoa(
                familiaComDoisDependentesMenoresDeIdade,
                Nome.CriarNovo("Dependente 2"),
                Idade.CriarNovo(new DateTime(2010, 01, 01)),
                Tipo.Dependente);

            return(familiaComDoisDependentesMenoresDeIdade);
        }
Ejemplo n.º 3
0
        public void DeveRetornarExceptionQuandoDataDeNascimentoForNoFuturo()
        {
            var exception = Record.Exception(() => Idade.CriarNovo(DateTime.Today.AddDays(1)));

            Assert.NotNull(exception);
            Assert.IsType <DataDeNascimentoNaoPodeSerNoFuturo>(exception);
        }
Ejemplo n.º 4
0
        public void DeveRetornarExceptionQuandoDataDeNascimentoInforamadaForMinima()
        {
            var exception = Record.Exception(() => Idade.CriarNovo(DateTime.MinValue));

            Assert.NotNull(exception);
            Assert.IsType <DataDeNascimentoNaoPodeTerValorMinimoException>(exception);
        }
        public void Configure(EntityTypeBuilder <Pessoa> builder)
        {
            builder.ToTable("Pessoas");

            builder.Property(p => p.Id)
            .HasConversion(
                v => v.ToGuid(),
                v => new PessoaId(v))
            .IsRequired();

            builder.Property(p => p.Nome)
            .HasConversion(
                v => v.ToString(),
                v => Nome.CriarNovo(v))
            .IsRequired();

            builder.Property(p => p.Idade)
            .HasColumnName("DataDeNascimento")
            .HasConversion(
                v => v.DataDeNascimento,
                v => Idade.CriarNovo(v))
            .IsRequired();

            builder.Property(p => p.Renda)
            .HasConversion(
                v => v.Valor.ToDecimal(),
                v => Renda.CriarNovo(v))
            .IsRequired(false);

            builder.Property(p => p.Tipo);

            builder.HasOne(p => p.Familia)
            .WithMany(p => p.Pessoas)
            .HasForeignKey(p => p.FamiliaId);
        }
Ejemplo n.º 6
0
        public void DeveRetornarIdade(int anoDeNascimento, int mes, int dia, int idadeEsperada)
        {
            var idadeVO = Idade.CriarNovo(new DateTime(anoDeNascimento, mes, dia));

            var idadeCalculada = idadeVO.Obter();

            Assert.Equal(idadeEsperada, idadeCalculada);
        }