From bf9a1d50f44b98cb08fc6ea8f3b88e913865f06a Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 26 May 2023 14:12:37 +0500 Subject: [PATCH 1/4] fix TelemetryService.GetTimezone(). Well.Timezone has higher priority then telemetry.TimeZone. --- .../Services/SAUB/TelemetryService.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/AsbCloudInfrastructure/Services/SAUB/TelemetryService.cs b/AsbCloudInfrastructure/Services/SAUB/TelemetryService.cs index 1f841aad..8728cdaf 100644 --- a/AsbCloudInfrastructure/Services/SAUB/TelemetryService.cs +++ b/AsbCloudInfrastructure/Services/SAUB/TelemetryService.cs @@ -85,6 +85,15 @@ namespace AsbCloudInfrastructure.Services.SAUB if (telemetry is null) throw new Exception($"Telemetry id: {idTelemetry} does not exist."); + if (telemetry.Well?.Timezone is not null) + { + telemetry.TimeZone = telemetry.Well.Timezone; + db.Telemetries.Upsert(telemetry); + db.SaveChanges(); + DropTelemetryCache(); + return telemetry.TimeZone.Adapt(); + } + if (telemetry.TimeZone is not null) return telemetry.TimeZone.Adapt(); @@ -102,14 +111,6 @@ namespace AsbCloudInfrastructure.Services.SAUB return telemetry.TimeZone.Adapt(); } - if (telemetry.Well?.Timezone is not null) - { - telemetry.TimeZone = telemetry.Well.Timezone; - db.Telemetries.Upsert(telemetry); - db.SaveChanges(); - DropTelemetryCache(); - return telemetry.TimeZone.Adapt(); - } throw new Exception($"Telemetry id: {idTelemetry} can't find timezone."); } From 85983e2870cf9bcb8e8ed0a1fa33979c837194b9 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Mon, 29 May 2023 17:50:20 +0500 Subject: [PATCH 2/4] ProcessMapController Add SirnalR notifications on modification. MethodName = "ProcessMapChanged" --- .../Controllers/ProcessMapController.cs | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/AsbCloudWebApi/Controllers/ProcessMapController.cs b/AsbCloudWebApi/Controllers/ProcessMapController.cs index 1f6ce9a0..eb18b82f 100644 --- a/AsbCloudWebApi/Controllers/ProcessMapController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMapController.cs @@ -1,17 +1,17 @@ using AsbCloudApp.Data.ProcessMap; using AsbCloudApp.Repositories; using AsbCloudApp.Services; +using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; using System; using System.Collections.Generic; -using System.Linq; using System.Threading; using System.Threading.Tasks; namespace AsbCloudWebApi.Controllers { - /// /// РТК /// @@ -21,18 +21,23 @@ namespace AsbCloudWebApi.Controllers public class ProcessMapController : CrudWellRelatedController { private readonly ITelemetryService telemetryService; + private readonly IHubContext telemetryHubContext; private readonly IProcessMapReportMakerService processMapReportService; private readonly IProcessMapReportService processMapService; + private const string SirnalRMethodGetDataName = "ProcessMapChanged"; + public ProcessMapController( IWellService wellService, IProcessMapPlanRepository repository, IProcessMapReportMakerService processMapReportService, IProcessMapReportService processMapService, - ITelemetryService telemetryService) + ITelemetryService telemetryService, + IHubContext telemetryHubContext) : base(wellService, repository) { this.telemetryService = telemetryService; + this.telemetryHubContext = telemetryHubContext; this.processMapReportService = processMapReportService; this.processMapService = processMapService; @@ -56,8 +61,7 @@ namespace AsbCloudWebApi.Controllers if (idWell is null) return BadRequest($"Wrong uid {uid}"); - var dto = Enumerable.Empty(); - return Ok(dto); + throw new NotImplementedException(); } /// @@ -136,7 +140,10 @@ namespace AsbCloudWebApi.Controllers public override async Task> InsertAsync([FromBody] ProcessMapPlanDto value, CancellationToken token) { value.IdUser = User.GetUserId() ?? -1; - return await base.InsertAsync(value, token); + var result = await base.InsertAsync(value, token); + if (result.Value > 0) + await NotifyUsersBySignalR(value.IdWell, token); + return result; } /// @@ -149,8 +156,17 @@ namespace AsbCloudWebApi.Controllers public override async Task> UpdateAsync([FromBody] ProcessMapPlanDto value, CancellationToken token) { value.IdUser = User.GetUserId() ?? -1; - return await base.UpdateAsync(value, token); + var result = await base.UpdateAsync(value, token); + if (result.Value > 0) + await NotifyUsersBySignalR(value.IdWell, token); + return result; + } + + private async Task NotifyUsersBySignalR(int idWell, CancellationToken token) + { + var dtos = await service.GetAllAsync(idWell, null, token); + _ = Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}") + .SendAsync(SirnalRMethodGetDataName, dtos), CancellationToken.None); } } - } \ No newline at end of file From 6b14ea9a4dc78402a66284161a8decb6a6565800 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Mon, 29 May 2023 18:03:15 +0500 Subject: [PATCH 3/4] Rename SignalR method. --- AsbCloudWebApi/Controllers/ProcessMapController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AsbCloudWebApi/Controllers/ProcessMapController.cs b/AsbCloudWebApi/Controllers/ProcessMapController.cs index eb18b82f..e97e954b 100644 --- a/AsbCloudWebApi/Controllers/ProcessMapController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMapController.cs @@ -25,7 +25,7 @@ namespace AsbCloudWebApi.Controllers private readonly IProcessMapReportMakerService processMapReportService; private readonly IProcessMapReportService processMapService; - private const string SirnalRMethodGetDataName = "ProcessMapChanged"; + private const string SirnalRMethodGetDataName = "UpdateProcessMap"; public ProcessMapController( IWellService wellService, From c7021f3292ea6a642d099eca124df51363762b91 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 31 May 2023 15:58:30 +0500 Subject: [PATCH 4/4] ProcessMapController fix SignalR --- AsbCloudWebApi/Controllers/ProcessMapController.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/AsbCloudWebApi/Controllers/ProcessMapController.cs b/AsbCloudWebApi/Controllers/ProcessMapController.cs index e97e954b..89ce8cd5 100644 --- a/AsbCloudWebApi/Controllers/ProcessMapController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMapController.cs @@ -141,8 +141,7 @@ namespace AsbCloudWebApi.Controllers { value.IdUser = User.GetUserId() ?? -1; var result = await base.InsertAsync(value, token); - if (result.Value > 0) - await NotifyUsersBySignalR(value.IdWell, token); + await NotifyUsersBySignalR(value.IdWell, token); return result; } @@ -157,8 +156,7 @@ namespace AsbCloudWebApi.Controllers { value.IdUser = User.GetUserId() ?? -1; var result = await base.UpdateAsync(value, token); - if (result.Value > 0) - await NotifyUsersBySignalR(value.IdWell, token); + await NotifyUsersBySignalR(value.IdWell, token); return result; }