Beispiel #1
0
        public static decimal CalculeProbabilidadeDeComparecimento(IVoo voo)
        {
            if (voo.Passageiros.Count == 0)
            {
                return(0);
            }

            return(voo.Passageiros.Sum(passageiro => CalculeProbabilidadeDeComparecimentoDoPassageiro(voo, passageiro)) / voo.Passageiros.Count);
        }
Beispiel #2
0
        private static decimal CalculeProbabilidadeDeComparecimentoDoPassageiro(IVoo voo, IPassageiro passageiro)
        {
            const int VALOR_CASAS_DECIMAIS = 2;

            decimal porcentagemRota  = ObtenhaPicRota(voo.Rota) / 100;
            decimal porcentagemData  = ObtenhaPicData(voo.DataDeSaida) / 100;
            decimal porcentagemIdade = ObtenhaPicIdade(passageiro.IdadePassageiro) / 100;

            return(Math.Round(100 * (porcentagemRota * porcentagemData * porcentagemIdade), VALOR_CASAS_DECIMAIS));
        }
Beispiel #3
0
        private IVoo CrieVoo(IGrouping <dynamic, IPassageiro> passageirosPorVoo)
        {
            IVoo voo = FabricaDeVoo.Crie(FabricaDeRota.Crie(passageirosPorVoo.Key.Origem, passageirosPorVoo.Key.Destino),
                                         FabricaDeDataDeSaida.Crie(passageirosPorVoo.Key.Data));

            voo.Passageiros = passageirosPorVoo.ToList();

            voo.RiscoDeOverbooking = CalculadoraDeRisco.CalculeProbabilidadeDeComparecimento(voo);

            return(voo);
        }