コード例 #1
0
        public DirectionLatLong getDirection(string placeAddressSource, string placeAddressDestination)
        {
            DirectionLatLong      res             = new DirectionLatLong();
            GoogleLocationService locationService = new GoogleLocationService("AIzaSyBjS9eZc7OB_Hk2PDalIJYGowUUeCFQvk4");
            AddressData           addressSource   = new AddressData();

            addressSource.Address = placeAddressSource;
            AddressData addressDest = new AddressData();

            addressDest.Address = placeAddressDestination;
            var        p1  = locationService.GetLatLongFromAddress(addressSource); //addressSource
            var        p2  = locationService.GetLatLongFromAddress(addressDest);
            Directions dir = new Directions();

            dir                 = locationService.GetDirections(addressSource, addressDest);
            res.Duration        = dir.Duration;
            res.SourceLat       = p1.Latitude.ToString().Replace(",", "."); //null reference ??
            res.SourceLong      = p1.Longitude.ToString().Replace(",", ".");
            res.DestinationLat  = p2.Latitude.ToString().Replace(",", ".");
            res.DestinationLong = p2.Longitude.ToString().Replace(",", ".");
            return(res);
        }
コード例 #2
0
        public ActionResult Comparar(string listaFinal, string localizacao)
        {
            string endereco = "";

            while (string.IsNullOrWhiteSpace(endereco))
            {
                try
                {
                    string  url            = "https://maps.googleapis.com/maps/api/geocode/json?key=AIzaSyA-sAUEFZVEDmzTx4DYXxwoEusdL7IsGSc&latlng=" + localizacao.Split(',')[0] + "," + localizacao.Split(',')[1] + "&sensor=false";
                    JObject jsonEndereco   = getJsonByUrl(url);
                    JArray  jarrayEndereco = (JArray)jsonEndereco.SelectToken("results");
                    endereco = (string)jarrayEndereco[0].SelectToken("formatted_address");
                }
                catch
                {
                }
            }
            string                   json            = Server.UrlDecode(listaFinal);
            RootObject               root            = JsonConvert.DeserializeObject <RootObject>(json);
            List <Item>              itens           = root.value.items;
            SupermercadoBLL          bll             = new SupermercadoBLL();
            List <Supermercado>      supermercados   = bll.selecionaTodosSupermercado();
            List <MercadoViewModels> lista           = new List <MercadoViewModels>();
            GoogleLocationService    locationSvc     = new GoogleLocationService("AIzaSyA-sAUEFZVEDmzTx4DYXxwoEusdL7IsGSc");
            AddressData              enderecoCliente = new AddressData();

            enderecoCliente.Address = endereco;

            foreach (Supermercado supermercado in supermercados)
            {
                MercadoViewModels Mercado      = new MercadoViewModels();
                double            Preco        = 0;
                List <Item>       itensMercado = new List <Item>();
                foreach (Item item in itens)
                {
                    Item itemMercado = new Item();
                    itemMercado.amount = SetorBLL.TrazPreco(item, supermercado.ID);
                    if (itemMercado.amount != 0)
                    {
                        itemMercado = item;
                        Preco      += itemMercado.amount * itemMercado.quantity;
                        itensMercado.Add(itemMercado);
                    }
                }
                Mercado.Itens = itensMercado;
                Mercado.ItensNaoEncontrados = itens.Except(Mercado.Itens).ToList();
                Mercado.PrecoFinal          = Preco;
                Mercado.SuperMercado        = supermercado;
                lista.Add(Mercado);
                AddressData enderecoMercado = new AddressData();
                enderecoMercado.Address = supermercado.Endereco;
                Directions directions = new Directions();
                while (directions.Distance == null)
                {
                    try
                    {
                        directions = locationSvc.GetDirections(enderecoCliente, enderecoMercado);
                    }
                    catch (Exception)
                    {
                    }
                }
                Mercado.Proximidade = Convert.ToDouble(directions.Distance.Split(' ')[0], new CultureInfo("en-us"));
            }
            ComparadorMercadosViewModels Comparador = new ComparadorMercadosViewModels();

            Comparador.OutrosMercados       = lista;
            Comparador.MercadosMenorPreco   = lista.FindAll(o => o.ItensNaoEncontrados.Count() == 0).ToList().OrderBy(o => o.PrecoFinal).Take(3).ToList();
            Comparador.OutrosMercados       = Comparador.OutrosMercados.Except(Comparador.MercadosMenorPreco).ToList();
            Comparador.MercadosMaisProximos = lista.FindAll(o => o.ItensNaoEncontrados.Count() == 0).ToList().OrderBy(o => o.Proximidade).Take(3).ToList();
            Comparador.OutrosMercados       = Comparador.OutrosMercados.Except(Comparador.MercadosMaisProximos).ToList();
            try
            {
                Comparador.MercadoNossaSugestao = (MercadoViewModels)lista.FindAll(o => o.ItensNaoEncontrados.Count() == 0).ToList().OrderBy(o => (o.Proximidade * 0.3 + o.PrecoFinal * 0.7)).ToArray()[0];
            }
            catch { }
            Comparador.OutrosMercados.Remove(Comparador.MercadoNossaSugestao);

            return(View(Comparador));
        }