예제 #1
0
 public DTOResponse <List <DTOPlace> > SearchPlaces(DTOPlaceSearch searchQuery)
 {
     return(_domain.SearchPlaces(searchQuery));
 }
예제 #2
0
 public DTOResponse <DTOPlace> GetPlaceDetail(DTOPlaceSearch searchPlaceInfo)
 {
     return(_domain.GetPlaceDetails(searchPlaceInfo.PlaceId));
 }
        public DTOResponse <List <DTOPlace> > SearchPlaces(DTOPlaceSearch searchQuery)
        {
            var result = new List <DTOPlace>();

            var countryInformation = new Dictionary <string, Dictionary <string, List <string> > >()
            {
                {
                    "brazil",
                    new Dictionary <string, List <string> >()
                    {
                        { "são paulo", new List <string>()
                          {
                              "36", "-23.5475", "-46.63611", "br"
                          } },
                        { "rio de janeiro", new List <string>()
                          {
                              "36", "-22.90278", "-43.2075", "br"
                          } }
                    }
                },
                {
                    "italy",
                    new Dictionary <string, List <string> >()
                    {
                        { "rome", new List <string>()
                          {
                              "23", "41.89193", "12.51133", "it"
                          } }
                    }
                }
            };

            var cityInfo = countryInformation[searchQuery.CountryName.ToLower()][searchQuery.CityName.ToLower()];

            var placeSearchResult = _googlePlaces.TextSearch(double.Parse(cityInfo[1]), double.Parse(cityInfo[2]), int.Parse(cityInfo[0]), searchQuery.SearchTerms, 50000, searchQuery.PageToken);

            if (placeSearchResult.Code != 200)
            {
                return(new DTOResponse <List <DTOPlace> >()
                {
                    Code = 400,
                    Message = placeSearchResult.Message
                });
            }

            foreach (var searchResult in placeSearchResult.Data.Results)
            {
                result.Add(new DTOPlace()
                {
                    Name            = searchResult.Name,
                    FormatedAddress = searchResult.FormattedAddress,
                    PlaceId         = searchResult.PlaceId
                });
            }

            return(new DTOResponse <List <DTOPlace> >()
            {
                Code = 200,
                Data = result,
                NextPageToken = placeSearchResult.Data.NextPageToken
            });
        }