public PlacesResponse GetAllPlaces(PlaceSearchRequest request)
        {
            var validator = new PlaceSearchValidator().Validate(request).ToResponse();

            if (!validator.Result)
            {
                return new PlacesResponse {
                           Errors = validator.Errors, Result = false
                }
            }
            ;

            var response = new PlacesResponse();

            try
            {
                response = _placeRepository.GetAllPlaces(request);
            }
            catch (Exception ex)
            {
                _logger.Error(ExceptionMessages.GetPlacesException, ex);
                response.Result = false;
                response.Errors.Add(new ResponseError {
                    Name = "GetEventsException", Error = ExceptionMessages.GetPlacesException
                });
                return(response);
            }

            return(response);
        }
        public PlaceSearchRequest Build()
        {
            var request = _request;

            _request = CreateADefaultRequest();

            return(request);
        }
Example #3
0
        public void ExecuteRectangeSearch()
        {
            var baiduClient   = ClientCreator.Create();
            var rectangeModel = new PlaceRectangeModel
            {
                Query  = "银行",
                Bounds = "39.915,116.404,39.975,116.414"
            };
            var req = new PlaceSearchRequest <PlaceRectangeModel>(rectangeModel);
            PlaceSearchResponse resp = baiduClient.Execute(req);

            resp.Status.ShouldBe(0);
            resp.Message.ShouldBe("ok");
        }
Example #4
0
        public void ExecuteCircumSearch()
        {
            var baiduClient = ClientCreator.Create();
            var circumModel = new PlaceCircumModel
            {
                Query    = "银行",
                Location = "39.915,116.404",
                Radius   = "2000"
            };
            var req = new PlaceSearchRequest <PlaceCircumModel>(circumModel);
            PlaceSearchResponse resp = baiduClient.Execute(req);

            resp.Status.ShouldBe(0);
            resp.Message.ShouldBe("ok");
        }
        public PlaceSearchResult ByRadius(PlaceSearchRequest placeSearchRequest)
        {
            var searchRequest = _requestBuilder
                                .WithUriPath("/places/byradius")
                                .WithLicenseInfo(placeSearchRequest.LicenseInfo)
                                .WithStartIndex(placeSearchRequest.StartIndex)
                                .WithArgument("radius", placeSearchRequest.Radius.ToString(UnitedStatesCultureInfo))
                                .WithArgument("latitude", placeSearchRequest.Latitude.ToString(UnitedStatesCultureInfo))
                                .WithArgument("longitude", placeSearchRequest.Longitude.ToString(UnitedStatesCultureInfo))
                                .WithArgument("term", placeSearchRequest.Term)
                                .WithArgument("category", placeSearchRequest.CategoryId.ToString())
                                .Build();

            return(RetrievePlacesFor(searchRequest));
        }
Example #6
0
        private void WhenFindingByRadius()
        {
            _placeSearchRequest = new PlaceSearchRequest
            {
                CategoryId  = CategoryId,
                Latitude    = Latitude,
                LicenseInfo = _aLicenseInfo,
                Longitude   = Longitude,
                Radius      = Radius,
                Term        = Term,
                StartIndex  = StartIndex
            };

            _placeSearchRetrievedByProvider = _provider.ByRadius(_placeSearchRequest);
        }
Example #7
0
        public void ExecuteRegionSearch()
        {
            var baiduClient = ClientCreator.Create();
            var regionModel = new PlaceRegionModel
            {
                Query  = "ATM机",
                Tag    = "银行",
                Region = "杭州"
            };
            var req = new PlaceSearchRequest <PlaceRegionModel>(regionModel);
            PlaceSearchResponse resp = baiduClient.Execute(req);

            resp.Status.ShouldBe(0);
            resp.Message.ShouldBe("ok");
            resp.Results.Count.ShouldBe(10);
        }
Example #8
0
        /// <summary>
        /// Gets all places
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public IEnumerable <Place> GetPlaces(PlaceSearchRequest request)
        {
            var response = GetAsync($"places?name={request.Name}&city={request.City}" +
                                    $"&location={request.Location}" +
                                    $"&limit={request.Limit}" +
                                    $"&offset={request.Offset}").Result;

            var places = new List <Place>();

            if (!response.IsSuccessStatusCode)
            {
                return(places);
            }

            var responseDate = response.Content.ReadAsStringAsync().Result;

            places = JsonConvert.DeserializeObject <List <Place> >(responseDate);
            return(places);
        }
Example #9
0
        public IActionResult GetAllPlaces(string name, string location, string city, int offset, int limit = 10)
        {
            var request = new PlaceSearchRequest()
            {
                Name = name, Location = location, City = city, Limit = limit, Offset = offset
            };

            _logger.Information(request.ToString());
            var response = _placeServices.GetAllPlaces(request);

            if (!response.Result)
            {
                return(BadRequest(response.Errors));
            }

            if (response.Places.Count == 0)
            {
                return(NotFound(request));
            }

            return(Ok(response.Places));
        }
Example #10
0
        public PlacesResponse GetAllPlaces(PlaceSearchRequest placeRequest)
        {
            Expression <Func <string, string, bool> > startsWith = (p, e) => p.ToLower().StartsWith(e.ToLower());
            Expression <Func <string, string, bool> > contains   = (p, e) => p.ToLower().Contains(e.ToLower());

            using (var db = new EventSourceDbContext(_contextOptions))
            {
                IQueryable <Place> placeQuery = db.Places;
                placeQuery = !string.IsNullOrEmpty(placeRequest.Name) ? placeQuery.Where(p => startsWith.Compile()(p.Name, placeRequest.Name)) :
                             !string.IsNullOrEmpty(placeRequest.City) ? placeQuery.Where(p => contains.Compile()(p.City, placeRequest.City)) :
                             !string.IsNullOrEmpty(placeRequest.Location) ? placeQuery.Where(p => contains.Compile()(p.Location, placeRequest.Location)) : placeQuery;


                var places = placeQuery
                             .OrderBy(p => p.Name)
                             .Skip(placeRequest.Offset)
                             .Take(placeRequest.Limit)
                             .ToList();

                return(new PlacesResponse {
                    Places = places, TotalPlaces = places.Count()
                });
            }
        }
 public PlaceSearchRequestBuilder()
 {
     _request = CreateADefaultRequest();
 }