コード例 #1
0
        public async Task <IEnumerable <TravelOptions> > Get(string origin, string destination)
        {
            MotoristaBusiness  motoristaBusiness  = new MotoristaBusiness();
            BestRoutesBusiness bestRoutesBusiness = new BestRoutesBusiness();

            MotoristaPreferencias motoristaPreferencias = motoristaBusiness.GetPreferencias(string.Empty);

            List <TravelOptions> lsjson     = new List <TravelOptions>();
            List <Options>       bestRoutes = await bestRoutesBusiness.GetBestRoutes(origin, destination, motoristaPreferencias);

            if (bestRoutes.Any())
            {
                foreach (var br in bestRoutes)
                {
                    TravelOptions json = new TravelOptions();

                    json.Status = "Rota encontrada";

                    lsjson.Add(json);
                }
            }
            else
            {
                TravelOptions json = new TravelOptions();
                json.Status = "Rota não encontrada.";

                lsjson.Add(json);
            }

            return(lsjson);
        }
コード例 #2
0
        public async Task <List <Comparatives> > Get(string option, int scenarioId, double acceptableParkingDistance)
        {
            ScenarioOption cenarioOption = new ScenarioOption {
                Option = option, ScenarioID = scenarioId
            };

            BestRoutesBusiness   bestRoutesBusiness   = new BestRoutesBusiness();
            TransportAppBusiness transportAppBusiness = new TransportAppBusiness();
            CabBusiness          cabBusiness          = new CabBusiness();
            ParkingBusiness      parkingBusiness      = new ParkingBusiness();

            CenariosTester       cenariosTester       = new CenariosTester();
            EstacionamentoTester estacionamentoTester = new EstacionamentoTester();

            var cenarios        = cenariosTester.CriarCenariosParaTeste();
            var estacionamentos = estacionamentoTester.CriaEstacionamentosParaTeste();

            List <Comparatives>       lsComparatives       = new List <Comparatives>();
            List <ComparativeOptions> lsComparativeOptions = new List <ComparativeOptions>();

            if (cenarioOption.Option.Equals("transportOption"))
            {
                //Cenario
                var cenarioSelecionado = cenarios.Where(x => x.CenarioID == cenarioOption.ScenarioID).FirstOrDefault();

                List <Options> optionTraffic = await bestRoutesBusiness.GetBestRoutes(cenarioSelecionado.EnderecoOrigem, cenarioSelecionado.EnderecoDestino, cenarioSelecionado.HorarioSaida, string.Empty, "transit");

                List <Options> optionDriver = await bestRoutesBusiness.GetBestRoutes(cenarioSelecionado.EnderecoOrigem, cenarioSelecionado.EnderecoDestino, cenarioSelecionado.HorarioSaida, string.Empty, "driving");

                ComparativeOptions comparativeOptions = new ComparativeOptions();

                foreach (var item in optionTraffic)
                {
                    Comparatives comparatives = new Comparatives();
                    comparatives.AddressOrigin = new Address {
                        StreetName = cenarioSelecionado.EnderecoOrigem
                    };
                    comparatives.AddressDestine = new Address {
                        StreetName = cenarioSelecionado.EnderecoDestino
                    };
                    comparatives.Duration       = item.DurationValue;
                    comparatives.Distance       = item.DistanceValue;
                    comparatives.Cost           = item.CostValue;
                    comparatives.TransporteType = eTransportOptions.PublicTransportation.ToString();

                    lsComparatives.Add(comparatives);
                }

                //Driver
                foreach (var item in optionDriver)
                {
                    int duration = item.DurationValue;
                    int distance = item.DistanceValue;

                    double valorTransporteAplicativo = transportAppBusiness.GetCosts(duration, distance);
                    double valorTaxi           = cabBusiness.GetCosts(duration, distance, cenarioSelecionado.HorarioSaida);
                    double valorEstacionamento = parkingBusiness.GetBestCostFromAllParkings(estacionamentos, cenarioSelecionado.EnderecoDestino, cenarioSelecionado.HorarioSaida, acceptableParkingDistance).Result;

                    //Aplicativos
                    Comparatives comparativesAplicativos = new Comparatives();
                    comparativesAplicativos.AddressOrigin = new Address {
                        StreetName = cenarioSelecionado.EnderecoOrigem
                    };
                    comparativesAplicativos.AddressDestine = new Address {
                        StreetName = cenarioSelecionado.EnderecoDestino
                    };
                    comparativesAplicativos.Duration       = item.DurationValue;
                    comparativesAplicativos.Distance       = item.DistanceValue;
                    comparativesAplicativos.Cost           = valorTransporteAplicativo;
                    comparativesAplicativos.TransporteType = eTransportOptions.TransportApp.ToString();

                    lsComparatives.Add(comparativesAplicativos);

                    //Taxi
                    Comparatives comparativesTaxi = new Comparatives();
                    comparativesTaxi.AddressOrigin = new Address {
                        StreetName = cenarioSelecionado.EnderecoOrigem
                    };
                    comparativesTaxi.AddressDestine = new Address {
                        StreetName = cenarioSelecionado.EnderecoDestino
                    };
                    comparativesTaxi.Duration       = item.DurationValue;
                    comparativesTaxi.Distance       = item.DistanceValue;
                    comparativesTaxi.Cost           = valorTaxi;
                    comparativesTaxi.TransporteType = eTransportOptions.Cab.ToString();

                    lsComparatives.Add(comparativesTaxi);


                    //Estacionamentos
                    Comparatives comparativesEstacionamentos = new Comparatives();
                    comparativesEstacionamentos.AddressOrigin = new Address {
                        StreetName = cenarioSelecionado.EnderecoOrigem
                    };
                    comparativesEstacionamentos.AddressDestine = new Address {
                        StreetName = cenarioSelecionado.EnderecoDestino
                    };
                    comparativesEstacionamentos.Duration       = item.DurationValue;
                    comparativesEstacionamentos.Distance       = item.DistanceValue;
                    comparativesEstacionamentos.Cost           = valorEstacionamento;
                    comparativesEstacionamentos.TransporteType = eTransportOptions.Driver.ToString();

                    lsComparatives.Add(comparativesEstacionamentos);
                }

                return(lsComparatives);
            }
            else if (cenarioOption.Option.Equals("preferenceOption"))
            {
                //Melhor opção de transporte para cada preferencia do usuario
                List <ePreferences> preferencias = new List <ePreferences> {
                    ePreferences.Cost, ePreferences.Distance, ePreferences.Duration
                };

                foreach (var prefencia in preferencias)
                {
                }


                return(lsComparatives);
            }

            return(null);

            //foreach (var cen in cenarios)
            //{
            //Get Google maps para transporte publico
            //List<Options> optionsTransportePublico = await bestRoutesBusiness.GetBestRoutes(cen.EnderecoOrigem, cen.EnderecoDestino, cen.HorarioSaida, "transit");
            //foreach (var optp in optionsTransportePublico)
            //{
            //    optionValues.Add(new OptionValue { TransportOptions = eTransportOptions.PublicTransportation, Value = optp.CostValue });
            //    optionDistance.Add(new OptionDistance { TransportOptions = eTransportOptions.PublicTransportation, Value = optp.DistanceValue });
            //    optionDuration.Add(new OptionDuration { TransportOptions = eTransportOptions.PublicTransportation, Value = optp.DurationValue });
            //}

            //Get Google maps para veiculos
            //List<Options> optionsVeiculos = await bestRoutesBusiness.GetBestRoutes(cen.EnderecoOrigem, cen.EnderecoDestino, cen.HorarioSaida, "driving");

            //Fazer estimativa de custo com aplicativos de transporte
            //Fazer estimativa de custo com taxi
            //double valorTransporteAplicativo = 0.0;
            //double valorTaxi = 0.0;

            //foreach (var opt in optionsVeiculos)
            //{
            //    valorTransporteAplicativo = transportAppBusiness.GetCosts(opt.DurationValue, opt.DistanceValue);
            //    optionValues.Add(new OptionValue { TransportOptions = eTransportOptions.TransportApp, Value = valorTransporteAplicativo });
            //    optionDistance.Add(new OptionDistance { TransportOptions = eTransportOptions.TransportApp, Value = opt.DistanceValue });
            //    optionDuration.Add(new OptionDuration { TransportOptions = eTransportOptions.TransportApp, Value = opt.DurationValue });

            //    //

            //    valorTaxi = cabBusiness.GetCosts(opt.DurationValue, opt.DistanceValue, cen.HorarioSaida);
            //    optionValues.Add(new OptionValue { TransportOptions = eTransportOptions.Cab, Value = valorTaxi });
            //    optionDistance.Add(new OptionDistance { TransportOptions = eTransportOptions.Cab, Value = opt.DistanceValue });
            //    optionDuration.Add(new OptionDuration { TransportOptions = eTransportOptions.Cab, Value = opt.DurationValue });
            //}

            //Buscar estacionamentos perto da localização de destino
            //buscar preferencias do usuario
            //foreach (var est in estacionamentos)
            //{

            //}
            //}
        }