diff --git a/AsbCloudApp/Services/ITimeZoneService.cs b/AsbCloudApp/Services/ITimeZoneService.cs
index 3eae4ca7..55e18a6a 100644
--- a/AsbCloudApp/Services/ITimeZoneService.cs
+++ b/AsbCloudApp/Services/ITimeZoneService.cs
@@ -15,7 +15,7 @@ namespace AsbCloudApp.Services
///
///
///
- SimpleTimezoneDto GetByCoordinates(double latitude, double longitude);
+ SimpleTimezoneDto? GetOrDefaultByCoordinates(double latitude, double longitude);
///
/// по координатам
@@ -24,6 +24,6 @@ namespace AsbCloudApp.Services
///
///
///
- Task GetByCoordinatesAsync(double latitude, double longitude, CancellationToken token);
+ Task GetOrDefaultByCoordinatesAsync(double latitude, double longitude, CancellationToken token);
}
}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/TimeZoneService.cs b/AsbCloudInfrastructure/Services/TimeZoneService.cs
index a4f4f0e3..083e8d52 100644
--- a/AsbCloudInfrastructure/Services/TimeZoneService.cs
+++ b/AsbCloudInfrastructure/Services/TimeZoneService.cs
@@ -11,26 +11,26 @@ namespace AsbCloudInfrastructure.Services
{
private class TimeZoneInfo
{
- public string Sunrise { get; set; }
+ public string? Sunrise { get; set; }
public double Lng { get; set; }
public double Lat { get; set; }
- public string CountryCode { get; set; }
+ public string? CountryCode { get; set; }
public double GmtOffset { get; set; }
public double RawOffset { get; set; }
- public string Sunset { get; set; }
- public string TimezoneId { get; set; }
+ public string? Sunset { get; set; }
+ public string? TimezoneId { get; set; }
public double DstOffset { get; set; }
- public string CountryName { get; set; }
- public string Time { get; set; }
+ public string? CountryName { get; set; }
+ public string? Time { get; set; }
}
private const string timezoneApiUrl = "http://api.geonames.org/timezoneJSON";
private const string timezoneApiUserName = "asbautodrilling";
- public SimpleTimezoneDto GetByCoordinates(double latitude, double longitude)
- => GetByCoordinatesAsync(latitude, longitude, default).Result;
+ public SimpleTimezoneDto? GetOrDefaultByCoordinates(double latitude, double longitude)
+ => GetOrDefaultByCoordinatesAsync(latitude, longitude, default).Result;
- public async Task GetByCoordinatesAsync(double latitude, double longitude, CancellationToken token)
+ public async Task GetOrDefaultByCoordinatesAsync(double latitude, double longitude, CancellationToken token)
{
var lat = latitude.ToString(System.Globalization.CultureInfo.InvariantCulture);
var lng = longitude.ToString(System.Globalization.CultureInfo.InvariantCulture);
@@ -55,6 +55,9 @@ namespace AsbCloudInfrastructure.Services
};
var timezoneInfo = JsonSerializer.Deserialize(responseJson, options);
+ if(timezoneInfo is null)
+ return null;
+
return new SimpleTimezoneDto
{
Hours = timezoneInfo.DstOffset,
diff --git a/AsbCloudInfrastructure/Services/WellService.cs b/AsbCloudInfrastructure/Services/WellService.cs
index eea16706..20486a64 100644
--- a/AsbCloudInfrastructure/Services/WellService.cs
+++ b/AsbCloudInfrastructure/Services/WellService.cs
@@ -326,7 +326,7 @@ namespace AsbCloudInfrastructure.Services
if (point.Latitude is not null & point.Longitude is not null)
{
- var timezone = timezoneService.GetByCoordinates(point.Latitude!.Value, point.Longitude!.Value);
+ var timezone = timezoneService.GetOrDefaultByCoordinates(point.Latitude!.Value, point.Longitude!.Value);
if (timezone is not null)
{
return timezone;
diff --git a/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs
index 153de97f..83875eb1 100644
--- a/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs
+++ b/AsbCloudWebApi.Tests/ServicesTests/TelemetryDataSaubServiceTest.cs
@@ -34,9 +34,9 @@ namespace AsbCloudWebApi.Tests.ServicesTests
telemetryTracker = new Mock();
timezoneService = new Mock();
- timezoneService.Setup(s => s.GetByCoordinatesAsync(It.IsAny(), It.IsAny(), It.IsAny()))
+ timezoneService.Setup(s => s.GetOrDefaultByCoordinatesAsync(It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(Task.FromResult(timezone));
- timezoneService.Setup(s => s.GetByCoordinates(It.IsAny(), It.IsAny()))
+ timezoneService.Setup(s => s.GetOrDefaultByCoordinates(It.IsAny(), It.IsAny()))
.Returns(timezone);
context = TestHelpter.MakeRealTestContext();