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