예제 #1
0
        public void Deve_somar_a_pontuacao_da_familia_e_aumentar_quantidade_de_criterios_atendidos_quando_ela_atender_o_criterio()
        {
            const int quantidadeDeCriteriosInicialmenteAtendidos = 1;
            const int pontuacaoInicialDaFamilia = 4;
            const int valorDaRendaUm            = 400;
            const int valorDaRendaDois          = 500;
            var       rendaDaPessoaUm           = FluentBuilder <Renda> .New().With(renda => renda.Valor, valorDaRendaUm).Build();

            var rendaDaPessoaDois = FluentBuilder <Renda> .New().With(renda => renda.Valor, valorDaRendaDois).Build();

            var pessoaUm = FluentBuilder <Pessoa> .New().With(pessoa => pessoa.Renda, rendaDaPessoaUm).Build();

            var pessoaDois = FluentBuilder <Pessoa> .New().With(pessoa => pessoa.Renda, rendaDaPessoaDois).Build();

            var pessoas = new[] { pessoaUm, pessoaDois };
            var familia = FluentBuilder <Familia> .New()
                          .With(f => f.QuantidadeDeCriteriosAtendidos, quantidadeDeCriteriosInicialmenteAtendidos)
                          .With(f => f.Pontuacao, pontuacaoInicialDaFamilia)
                          .WithCollection(f => f.Pessoas, pessoas).Build();

            var       pontuacaoDaFamiliaEsperada = pontuacaoInicialDaFamilia + _criterioDeRendaInferiorA900.Pontos;
            const int quantidadeDeCriteriosAtendidosEsperados = quantidadeDeCriteriosInicialmenteAtendidos + 1;

            _pontuacaoDeFamilias.Pontuar(_criterioDeRendaInferiorA900, familia);

            Assert.Equal(pontuacaoDaFamiliaEsperada, familia.Pontuacao);
            Assert.Equal(quantidadeDeCriteriosAtendidosEsperados, familia.QuantidadeDeCriteriosAtendidos);
        }
예제 #2
0
        public IEnumerable <Familia> Classificar(FamiliaDto[] familiasDto)
        {
            var criterios = _criterioRepositorio.ObterTodos();
            var familias  = familiasDto.Where(f => f.Status == Status.CadastroValido)
                            .Select(MapeadorDeFamilia.Mapear).ToList();
            var pontuadorDeFamilias = new PontuacaoDeFamilias();

            foreach (var familia in familias)
            {
                foreach (var criterio in criterios)
                {
                    pontuadorDeFamilias.Pontuar(criterio, familia);
                }
            }

            var familiasOrdenadasPorPontuacao = familias.OrderByDescending(f => f.Pontuacao).ToList();

            EnviarParaOContemplados(familiasOrdenadasPorPontuacao);
            return(familiasOrdenadasPorPontuacao);
        }