Exemple #1
0
        public async Task <IActionResult> Predictive([FromBody] BGBA.Models.N.Location.MapOptions options)
        {
            try
            {
                var fullAddress = await _mapServices.GetPrediction(options);

                if (fullAddress.Status == "ZERO_RESULTS")
                {
                    return(NotFound());
                }

                return(new ObjectResult(fullAddress.Results));
            }
            catch (Exception e)
            {
                _logger.LogError(e.ToString());
                return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError, "Error al predecir la direccion."));
            }
        }
Exemple #2
0
        public async Task <string> GetMapSucursal(string numeroSucursal)
        {
            var sucursales = await _objectFactory.InstantiateFromJsonFile <List <Sucursal> >(_configuration["Sucursales:Path"]);

            var sucu = sucursales.FirstOrDefault(s => s.Numero == numeroSucursal);

            if (sucu == null)
            {
                return(null);
            }

            var mapOptions = new BGBA.Models.N.Location.MapOptions
            {
                Location = new BGBA.Models.N.Location.Location
                {
                    Latitude  = sucu.Latitud,
                    Longitude = sucu.Longitud
                },
                DefaultMarker   = true,
                LocationIsCoord = true,
            };

            return($"{_configuration["GoogleMaps:UrlMap"].Replace("{key}", _configuration["GoogleMaps:Key"])}&{mapOptions.ToString()}");
        }
Exemple #3
0
        public async Task <bool> NormalizeAddress(BGBA.Models.N.Location.MapOptions mapOptions, GoogleMapsAddress mapAddress)
        {
            var firstCoincidence = mapAddress.Results.FirstOrDefault().AddressComponents;

            mapOptions.Address.LocalityDescription = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.LOCALITY_SUBLOCALITY.Contains(t)))?.ShortName ?? mapOptions.Address.LocalityDescription;
            mapOptions.Address.Number = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.STREET_NUMBER.Contains(t)))?.LongName ?? mapOptions.Address.Number;
            mapOptions.Address.Street = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.STREET.Contains(t)))?.LongName ?? mapOptions.Address.Street;

            var provinces = await _tableHelper.GetProvincesAsync();

            var provinceName = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.PROVINCE.Contains(t)))?.ShortName.RemoveDiacritics();

            if (provinceName == "CABA")
            {
                provinceName = "CAPITAL FEDERAL";
                mapOptions.Address.LocalityDescription = "CIUDAD AUTONOMA BUENOS AI";
            }

            mapOptions.Address.Province = provinces.FirstOrDefault(p => p.Name.ToLower() == provinceName.ToLower()) ?? mapOptions.Address.Province;

            var country = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.COUNTRY.Contains(t)))?.LongName;

            mapOptions.Address.Country = (await _tableHelper.GetCountriesAsync()).FirstOrDefault(c => c.Description.ToLower() == country.ToLower()) ?? mapOptions.Address.Country;



            var cpGoogle = $"{firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.POSTAL_CODE.Contains(t)))?.LongName}{firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.POSTAL_CODE_SUFFIX.Contains(t)))?.LongName}";

            if (!string.IsNullOrEmpty(cpGoogle) && cpGoogle.Length < 8)
            {
                cpGoogle = Regex.Replace(cpGoogle, "[a-z]*", "", RegexOptions.IgnoreCase).Trim();

                if (cpGoogle.Length == 4)
                {
                    mapOptions.Address.PostalCode = cpGoogle;
                }
            }
            else if (!string.IsNullOrEmpty(cpGoogle) && cpGoogle.Length == 8)
            {
                mapOptions.Address.PostalCode = cpGoogle;
            }
            else if (string.IsNullOrWhiteSpace(mapOptions.Address.PostalCode))
            {
                var cps = await _tableHelper.GetLocalitiesByProvinceWithCPAsync(mapOptions.Address.Province);

                var localityCP = cps.Where(l => l.Name == mapOptions.Address.LocalityDescription || l.Name.Contains(mapOptions.Address.LocalityDescription) || mapOptions.Address.LocalityDescription.Contains(l.Name)).ToList();
                if (localityCP.Count > 0)
                {
                    mapOptions.Address.PostalCodeOcurrencies = localityCP.Select(c => c.PostalCode).ToList();
                }
                else
                {
                    mapOptions.Address.PostalCodeOcurrencies = cps.Select(c => c.PostalCode).ToList();
                }
            }

            mapOptions.Address.Location = mapAddress.Results.FirstOrDefault()?.Geometry.Location;
            mapOptions.Location         = mapOptions.Address.Location;
            mapOptions.LocationIsCoord  = true;

            mapOptions.Address.UrlMap = GetUrlMap(mapOptions);

            return(true);
        }