Exemplo n.º 1
0
        public IHttpActionResult Post([FromBody] NewAreaRequest area)
        {
            var validator = new NewAreaRequestValidator(this._areaService);
            var results   = validator.Validate(area);

            var detailedError = new StringBuilder();

            foreach (var error in results.Errors.Select(e => e.ErrorMessage))
            {
                detailedError.Append(error + "; ");
            }

            if (!results.IsValid)
            {
                return(BadRequest(detailedError.ToString())); // TODO: Think of returning the errors in a better way
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var newAreaId = this._areaService.InsertNewArea(area);
                return(Created("api/v1/areas/" + newAreaId, "Success"));
            }
            catch (Exception ex)
            {
                var errorMessage = _apiLogger.OnActionException(ActionContext, ex);
                return(InternalServerError(new HttpException(errorMessage)));
            }
        }
Exemplo n.º 2
0
        public Guid InsertNewArea(NewAreaRequest newArea)
        {
            var areaEntity = this._mapper.Map <NewAreaRequest, Area>(newArea);

            areaEntity.Id = Guid.NewGuid();

            areaEntity.ApproximateAddress = this._geoCodingManager.GetApproximateAddress(newArea);

            areaEntity.IsActive = true;

            return(this._unitOfWork.AreaRepository.Insert(areaEntity));
        }
Exemplo n.º 3
0
        public void We_Can_Insert_New_Area()
        {
            // arrange
            var newAreaRequest = new NewAreaRequest()
            {
                Latitude  = 10,
                Longitude = 10,
                Radius    = RadiusRangeEnum.FiftyMeters
            };

            // act
            var newAreaId = this._areaService.InsertNewArea(newAreaRequest);

            // assert
            var newlyCreatedArea = this._areaService.GetAreaById(newAreaId);

            Assert.IsNotNull(newlyCreatedArea);
        }
Exemplo n.º 4
0
        public string GetApproximateAddress(NewAreaRequest newArea)
        {
            var request = new RestRequest($"/api/geocode/json?language=en&latlng={newArea.Latitude},{newArea.Longitude}&key={this._reverseGeocodingKey}", Method.GET);

            // execute the request
            var tcs = new TaskCompletionSource <ReverseGeoCoordinateResponseRootObject>();

            _restClient.ExecuteAsync <ReverseGeoCoordinateResponseRootObject>(request, restResponse =>
            {
                tcs.SetResult(restResponse.Data);
            });

            var reverseGeoCoordinateResponse = tcs.Task.Result.results.FirstOrDefault();


            return(reverseGeoCoordinateResponse != null
                ? $"{reverseGeoCoordinateResponse.formatted_address} ({(int)newArea.Radius} meters radius)"
                : $"{newArea.Latitude}, {newArea.Longitude}");
        }