Пример #1
0
        public async Task <Result <ListResult <RouteInfo> > > GetRoutesInRange(RoutesInRangeRequestModel model)
        {
            try
            {
                var query = new QueryPager();

                ApplyPaging(model, query);
                string point = $"POINT({model.Point.Lng} {model.Point.Lat})";

                var results = await _routeRepository.GetRoutesInRange(query, point, model.Kilometers);

                var listResult = new ListResult <RouteInfo>()
                {
                    Count   = results.Count,
                    HasNext = results.HasNext,
                    Results = results.Results.Select(r => new RouteInfo()
                    {
                        Id = r.ID, Name = r.Name, Difficulty = (Difficulty)r.Difficulty, UserId = r.UserId
                    }).ToList()
                };

                return(new Result <ListResult <RouteInfo> >(listResult));
            }
            catch (Exception ex)
            {
                ErrorResult error = GenerateError(ex);
                return(new Result <ListResult <RouteInfo> >(error));
            }
        }
Пример #2
0
        public async Task <IActionResult> GetInRange([FromQuery] decimal?lat, [FromQuery] decimal?lng, [FromQuery] int kilometers, [FromQuery] int?pagesize, [FromQuery] int?page)
        {
            var model = new RoutesInRangeRequestModel(kilometers, lat, lng, page, pagesize);

            var validationResult = new RoutesInRangeRequestModelValidator().Validate(model);

            if (!validationResult.IsValid)
            {
                return(WrapResponse(new Result <ListResult <RouteInfo> >(WrapModelStateErrors(validationResult))));
            }

            var result = await _routeService.GetRoutesInRange(model);

            return(WrapResponse(result, HttpStatusCode.OK));
        }