public ActionResult Calcula(TarifaFacade facade)
        {
            ResultadoFacade resultado = new ResultadoFacade();

            if (facade.Valido)
            {
                TarifaRepository tarifaRepository = new TarifaRepository(this.DBContext);
                var tarifa = tarifaRepository.RetornaPorOrigemEDestino(facade.Tarifa.OrigemNumero, facade.Tarifa.DestinoNumero);

                if (tarifa != null)
                {
                    FaleMaisPlanoRepository faleMaisPlanoRepository = new FaleMaisPlanoRepository();
                    var plano = faleMaisPlanoRepository.RetornaPorId(facade.Plano.Id);

                    resultado.FaleMaisValor = plano.CalculaTarifa(tarifa, facade.Minutos);
                    resultado.TarifaComumValor = tarifa.CalculaValor(facade.Minutos);
                }
            }
            else
            {
                resultado.Erros = facade.RetornaErrosDeValidacao().ToList();
            }

            return PartialView("_Resultado", resultado);
        }
        private TarifaFacade CriaFacade(TarifaFacade facade = null)
        {
            if (facade == null)
                facade = new TarifaFacade();

            FaleMaisPlanoRepository faleMaisPlanoRepository = new FaleMaisPlanoRepository(this.DBContext);
            var planos = faleMaisPlanoRepository.RetornaTodos();

            DDDRepository dddRepository = new DDDRepository(this.DBContext);
            var origens = dddRepository.RetornaTodos();
            var destinos = dddRepository.RetornaDestinosPossiveis(facade.Tarifa == null ? origens.First().Numero : facade.Tarifa.OrigemNumero);

            return new TarifaFacade(planos, origens, destinos, facade.Tarifa, facade.Plano, facade.Minutos);
        }