From 3a6f5e7f5e001fa60e718efe7c716f4d4ca55367 Mon Sep 17 00:00:00 2001 From: KharchenkoVladimir Date: Fri, 15 Oct 2021 15:35:18 +0500 Subject: [PATCH] Added last received telemetry date in WellDto --- AsbCloudApp/Data/WellDto.cs | 5 ++++- AsbCloudApp/Services/ITelemetryService.cs | 4 +++- .../Services/ClusterService.cs | 5 ++++- .../Services/TelemetryService.cs | 20 ++++++++++++++++++- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/AsbCloudApp/Data/WellDto.cs b/AsbCloudApp/Data/WellDto.cs index ad156b45..5b03df56 100644 --- a/AsbCloudApp/Data/WellDto.cs +++ b/AsbCloudApp/Data/WellDto.cs @@ -1,4 +1,6 @@ -namespace AsbCloudApp.Data +using System; + +namespace AsbCloudApp.Data { public class WellDto : WellInfoDto, IMapPoint, IId @@ -7,6 +9,7 @@ public double? Latitude { get; set; } public double? Longitude { get; set; } public string WellType { get; set; } + public DateTime LastTelemetryDate { get; set; } public TelemetryDto Telemetry { get; set; } } } diff --git a/AsbCloudApp/Services/ITelemetryService.cs b/AsbCloudApp/Services/ITelemetryService.cs index d0210861..8cd7bf4c 100644 --- a/AsbCloudApp/Services/ITelemetryService.cs +++ b/AsbCloudApp/Services/ITelemetryService.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data; +using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -7,6 +8,8 @@ namespace AsbCloudApp.Services { public interface ITelemetryService { + void SaveRequestDate(string uid); + DateTime GetLastTelemetryDateByWellId(int idWell); int? GetidWellByTelemetryUid(string uid); int GetOrCreateTemetryIdByUid(string uid); double GetTimezoneOffsetByTelemetryId(int idTelemetry); @@ -16,6 +19,5 @@ namespace AsbCloudApp.Services IEnumerable<(string Key, int[] Ids)> GetRedundentRemoteUids(); Task> GetTransmittingWellsAsync(int idCompany, CancellationToken token); - void SaveRequestDate(string uid); } } diff --git a/AsbCloudInfrastructure/Services/ClusterService.cs b/AsbCloudInfrastructure/Services/ClusterService.cs index 88e8515e..10901010 100644 --- a/AsbCloudInfrastructure/Services/ClusterService.cs +++ b/AsbCloudInfrastructure/Services/ClusterService.cs @@ -13,10 +13,12 @@ namespace AsbCloudInfrastructure.Services public class ClusterService : IClusterService { private readonly IAsbCloudDbContext db; + private readonly ITelemetryService telemetryService; - public ClusterService(IAsbCloudDbContext db) + public ClusterService(IAsbCloudDbContext db, ITelemetryService telemetryService) { this.db = db; + this.telemetryService = telemetryService; } public async Task> GetDepositsAsync(int idCompany, @@ -142,6 +144,7 @@ namespace AsbCloudInfrastructure.Services Latitude = well.Latitude, Longitude = well.Longitude, WellType = well.WellType?.Caption, + LastTelemetryDate = telemetryService.GetLastTelemetryDateByWellId(well.Id), Cluster = gCluster.Key.Caption, Deposit = gDeposit.Key.Caption, }), diff --git a/AsbCloudInfrastructure/Services/TelemetryService.cs b/AsbCloudInfrastructure/Services/TelemetryService.cs index 039c9958..e6e1e140 100644 --- a/AsbCloudInfrastructure/Services/TelemetryService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryService.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using System; +using System.Diagnostics; using Microsoft.EntityFrameworkCore; namespace AsbCloudInfrastructure.Services @@ -52,8 +53,25 @@ namespace AsbCloudInfrastructure.Services public void SaveRequestDate(string uid) => telemetryTracker.SaveRequestDate(uid); + public DateTime GetLastTelemetryDateByWellId(int idWell) + { + try + { + var telemetryId = GetIdTelemetryByIdWell(idWell); + var uid = cacheTelemetry.FirstOrDefault(t => t.Id == telemetryId).RemoteUid; + var lastTelemetryDate = telemetryTracker.GetLastTelemetryDateByUid(uid); + return lastTelemetryDate; + } + catch(Exception ex) + { + Trace.TraceError(ex.Message); + Console.WriteLine(ex.Message); + return DateTime.MinValue; + } + } + public int GetOrCreateTemetryIdByUid(string uid) - => GetOrCreateTelemetryByUid(uid).Id; + => GetOrCreateTelemetryByUid(uid).Id; public int? GetidWellByTelemetryUid(string uid) => GetWellByTelemetryUid(uid)?.Id;