public async Task <Point> GetGeoLocationFromApiAsync(Address address)
        {
            GeometryFactory geometryFactory = GetGeometryFactory();
            Point           geoLocation     = null;

            try
            {
                var googleResponse = await GoogleMapsApiService.GetLatLongAsync(address);

                HandleGoogleResult(googleResponse, googleResult =>
                {
                    geoLocation = geometryFactory.CreatePoint(new Coordinate(googleResult.Geometry.Location.Lng, googleResult.Geometry.Location.Lat));
                });
            }
            catch
            {
                try
                {
                    var tomTomResponse = await TomTomApiService.GetLatLongAsync(address);

                    HandleTomTomResult(tomTomResponse, tomTomResult =>
                    {
                        geoLocation = geometryFactory.CreatePoint(new Coordinate(tomTomResult.Position.Lon, tomTomResult.Position.Lat));
                    });
                }
                catch (Exception e)
                {
                    Logger.LogError("Sowohl Google Maps API als auch Tom Tom Api haben einen Fehler zurückgegeben. {exceptionMessage}", e.Message);
                    throw;
                }
            }
            return(geoLocation);
        }
        public async Task <Address> FillOutAddressWithApiAsync(Address address)
        {
            GeometryFactory geometryFactory = GetGeometryFactory();

            try
            {
                var googleResponse = await GoogleMapsApiService.GetLatLongAsync(address);

                HandleGoogleResult(googleResponse, FillOutAddressWithGoogleMapsAction(address, geometryFactory));
            }
            catch
            {
                var tomTomResponse = await TomTomApiService.GetLatLongAsync(address);

                HandleTomTomResult(tomTomResponse, FillOutAddressWithTomTomAction(address, geometryFactory));
            }
            return(address);
        }
        public async Task <IEnumerable <Address> > GetRelatedAddressesWithApiAsync(Address address)
        {
            try
            {
                var googleResponse = await GoogleMapsApiService.GetLatLongAsync(address);

                return(HandleGoogleResults(googleResponse));
            }
            catch
            {
                try
                {
                    var tomTomResponse = await TomTomApiService.GetLatLongAsync(address);

                    return(HandleTomTomResults(tomTomResponse));
                }
                catch (Exception e)
                {
                    Logger.LogError("Sowohl Google Maps API als auch Tom Tom Api haben einen Fehler zurückgegeben. {exceptionMessage}", e.Message);
                    throw;
                }
            }
        }