public async Task CreateGeofence() { // If Geofence is created do nothing if (!string.IsNullOrEmpty(_currentGeofenceUdId)) { return; } var currentPosition = new GeoCoordinateModel(Constants.FakeUserDefaultLatitude, Constants.FakeUserDefaultLongitude); var firstPosition = currentPosition.CalculateDerivedPosition(Constants.GeofenceRatioInMeters, -90); var secondPosition = currentPosition.CalculateDerivedPosition(Constants.GeofenceRatioInMeters, 0); var thirdPosition = currentPosition.CalculateDerivedPosition(Constants.GeofenceRatioInMeters, 90); var fourthPosition = currentPosition.CalculateDerivedPosition(Constants.GeofenceRatioInMeters, 180); var polygonCoordinates = new List <List <double> > { new List <double> { firstPosition.Longitude, firstPosition.Latitude }, new List <double> { secondPosition.Longitude, secondPosition.Latitude }, new List <double> { thirdPosition.Longitude, thirdPosition.Latitude }, new List <double> { fourthPosition.Longitude, fourthPosition.Latitude }, new List <double> { firstPosition.Longitude, firstPosition.Latitude } }; var geometry = new UploadGeofenceGeometryModel(); geometry.Coordinates.Add(polygonCoordinates); await this.UploadGeofence(geometry); }
public async Task ResetUserGeoposition() { var currentPosition = new GeoCoordinateModel(Constants.FakeUserDefaultLatitude, Constants.FakeUserDefaultLongitude); var ratioDistance = Constants.GeofenceRatioInMeters * 2; var userPosition = currentPosition.CalculateDerivedPosition(ratioDistance, -90); await NotifyUserGeoposition(new UserLocationModel { Latitude = userPosition.Latitude, Longitude = userPosition.Longitude }); }
public UserLocationModel UpdateUserLocation(string userId, UpdateUserLocationModel updateUserLocation) { ClearExpiredUsers(); var storedUserLocation = UsersLocations.FirstOrDefault(user => string.Equals(user.Id, userId, StringComparison.OrdinalIgnoreCase)); if (storedUserLocation == null) { throw new UserNotFoundException($"User not found with the id: {userId}"); } var currentPosition = new GeoCoordinateModel(storedUserLocation.Latitude, storedUserLocation.Longitude); GeoCoordinateModel newPosition = null; switch (updateUserLocation.Direction) { case Direction.North: newPosition = currentPosition.CalculateDerivedPosition(_azureMapsOptions.UserStepDistanceInMeters, 0); break; case Direction.South: newPosition = currentPosition.CalculateDerivedPosition(_azureMapsOptions.UserStepDistanceInMeters, 180); break; case Direction.West: newPosition = currentPosition.CalculateDerivedPosition(_azureMapsOptions.UserStepDistanceInMeters, -90); break; case Direction.East: newPosition = currentPosition.CalculateDerivedPosition(_azureMapsOptions.UserStepDistanceInMeters, 90); break; } storedUserLocation.Latitude = newPosition.Latitude; storedUserLocation.Longitude = newPosition.Longitude; storedUserLocation.LastUpdated = DateTime.Now; return(storedUserLocation); }