public async Task <Response> MeasureDistance
            (Location location1, Location location2)
        {
            Response measureResponse;

            //check input coordinats is Double
            if (IsDouble(location1.Lat, location1.Long) &&
                IsDouble(location2.Lat, location2.Long))
            {
                double distance = GeoCalculator.
                                  GetDistance(
                    double.Parse(location1.Lat),
                    double.Parse(location1.Long),
                    double.Parse(location2.Lat),
                    double.Parse(location2.Long), 1);
                measureResponse = new MeasureResponse()
                {
                    Location1 = location1,
                    Location2 = location2,
                    Distance  = distance,
                    Code      = StatusCodes.Status200OK,
                    Message   = "Ok"
                };

                return(measureResponse);
            }

            return(new Response()
            {
                Code = StatusCodes.Status500InternalServerError,
                Message = "Input Location Coordinates is Incorrect"
            });
        }
コード例 #2
0
        public async Task <object> Measure(Measure measure)
        {
            var userName = string.Empty;

            if (HttpContext.User.Identity is ClaimsIdentity identity)
            {
                userName = identity.FindFirst(ClaimTypes.Name).Value;
            }

            if (!ModelState.IsValid)
            {
                return(new { Error = ModelState.Errors() });;
            }

            MeasureResponse result = await distanceMeasureDataProvider.
                                     MeasureDistance(measure.Location1, measure.Location2);

            if (result.Code != StatusCodes.Status200OK)
            {
                return(result);
            }

            await historyDataProvider.InsertHistory
                (new RequestHistory()
            {
                Date      = DateTime.Now.ToShortDateString(),
                Locations = "{" + measure.Location1.Lat + "," + measure.Location1.Long + "} To {" +
                            measure.Location2.Lat + "," + measure.Location2.Long + "}",
                Result = result.Distance + "",
                User   = await userDataProvider.GetUserIfExist(userName)
            });

            return(result);
        }
        public async Task <MeasureResponse> MeasureDistance
            (Location location1, Location location2)
        {
            MeasureResponse measureResponse;

            if (IsDouble(location1.Latitude, location1.Longitude) &&
                IsDouble(location2.Latitude, location2.Longitude))
            {
                double distance = GeoCalculator.
                                  GetDistance(
                    double.Parse(location1.Latitude),
                    double.Parse(location1.Longitude),
                    double.Parse(location2.Latitude),
                    double.Parse(location2.Longitude), 1);
                measureResponse = new MeasureResponse()
                {
                    Location1 = location1,
                    Location2 = location2,
                    Distance  = distance,
                    Code      = StatusCodes.Status200OK,
                    Message   = "Ok"
                };

                return(measureResponse);
            }
            else
            {
            }
        }
        public async Task <Response> MeasureDistance
            (Location location1, Location location2)
        {
            Response measureResponse;

            try
            {
                //check input coordinats is Double
                if (IsDouble(location1.Lat, location1.Long) &&
                    IsDouble(location2.Lat, location2.Long))
                {
                    //get distance between two coordinates via "Geolocation.NetStandard" nuget pakage
                    double distance = GeoCalculator.
                                      GetDistance(
                        double.Parse(location1.Lat),
                        double.Parse(location1.Long),
                        double.Parse(location2.Lat),
                        double.Parse(location2.Long), 1);

                    //set result to response model
                    measureResponse = new MeasureResponse()
                    {
                        Location1 = location1,
                        Location2 = location2,
                        Distance  = distance,
                        Code      = StatusCodes.Status200OK,
                        Message   = "Ok"
                    };

                    //return successfull result
                    return(measureResponse);
                }

                //not suported data sended
                return(new Response()
                {
                    Code = StatusCodes.Status415UnsupportedMediaType,
                    Message = "Input Location Coordinates is Incorrect"
                });
            }
            catch (Exception ex)
            {
                return(new Response()
                {
                    Code = StatusCodes.Status500InternalServerError,
                    Message = ex.Message
                });
            }
        }
        public Task <MeasureResponse> MeasureDistance
            (Location location1, Location location2)
        {
            MeasureResponse measureResponse;

            if (IsDouble(location1.Latitude, location1.Longitude) &&
                IsDouble(location2.Latitude, location2.Longitude))
            {
                double distance = GeoCalculator.
                                  GetDistance(
                    double.Parse(location1.Latitude),
                    double.Parse(location1.Longitude),
                    double.Parse(location2.Latitude),
                    double.Parse(location2.Longitude), 1);
                measureResponse = new MeasureResponse()
                {
                };
            }
        }