2021-04-07 18:01:56 +05:00
|
|
|
|
using AsbCloudApp.Data;
|
2022-04-08 13:10:06 +05:00
|
|
|
|
using AsbCloudApp.Data.SAUB;
|
2021-04-07 18:01:56 +05:00
|
|
|
|
using AsbCloudApp.Services;
|
2021-04-09 17:59:07 +05:00
|
|
|
|
using AsbCloudWebApi.SignalR;
|
2021-04-07 18:01:56 +05:00
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
2021-04-08 17:54:02 +05:00
|
|
|
|
using Microsoft.AspNetCore.SignalR;
|
2021-04-07 18:01:56 +05:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2021-08-11 16:54:42 +05:00
|
|
|
|
using System.Threading;
|
2021-04-07 18:01:56 +05:00
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
2022-04-11 18:00:34 +05:00
|
|
|
|
namespace AsbCloudWebApi.Controllers.SAUB
|
2021-04-07 18:01:56 +05:00
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2022-06-16 17:37:10 +05:00
|
|
|
|
/// Инфо о передающих телеметрию устройствах
|
2021-04-07 18:01:56 +05:00
|
|
|
|
/// </summary>
|
|
|
|
|
[Route("api/telemetry")]
|
|
|
|
|
[ApiController]
|
|
|
|
|
public class TelemetryController : ControllerBase
|
|
|
|
|
{
|
|
|
|
|
private readonly ITelemetryService telemetryService;
|
2021-04-23 10:21:25 +05:00
|
|
|
|
private readonly IMessageService messageService;
|
|
|
|
|
private readonly IEventService eventService;
|
|
|
|
|
private readonly ITelemetryUserService telemetryUserService;
|
2021-04-08 17:54:02 +05:00
|
|
|
|
private readonly IHubContext<TelemetryHub> telemetryHubContext;
|
2021-04-07 18:01:56 +05:00
|
|
|
|
|
2021-04-23 10:21:25 +05:00
|
|
|
|
public TelemetryController(
|
2021-04-30 17:35:35 +05:00
|
|
|
|
ITelemetryService telemetryService,
|
|
|
|
|
IMessageService messageService,
|
|
|
|
|
IEventService eventService,
|
|
|
|
|
ITelemetryUserService telemetryUserService,
|
2021-10-15 12:24:04 +05:00
|
|
|
|
IHubContext<TelemetryHub> telemetryHubContext)
|
2021-04-07 18:01:56 +05:00
|
|
|
|
{
|
|
|
|
|
this.telemetryService = telemetryService;
|
2021-04-23 10:21:25 +05:00
|
|
|
|
this.messageService = messageService;
|
|
|
|
|
this.eventService = eventService;
|
|
|
|
|
this.telemetryUserService = telemetryUserService;
|
2021-04-08 17:54:02 +05:00
|
|
|
|
this.telemetryHubContext = telemetryHubContext;
|
2021-05-12 17:25:52 +05:00
|
|
|
|
}
|
2021-07-21 15:29:19 +05:00
|
|
|
|
|
2021-04-07 18:01:56 +05:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Принимает общую информацию по скважине
|
|
|
|
|
/// </summary>
|
2021-04-08 17:54:02 +05:00
|
|
|
|
/// <param name="uid">Уникальный идентификатор отправителя</param>
|
2021-11-16 13:14:31 +05:00
|
|
|
|
/// <param name="info">Информация об отправителе</param>
|
|
|
|
|
/// <param name="token">Токен отмены задачи</param>
|
2021-04-07 18:01:56 +05:00
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[Route("{uid}/info")]
|
2021-11-16 13:14:31 +05:00
|
|
|
|
public async Task<IActionResult> PostInfoAsync(string uid, [FromBody] TelemetryInfoDto info,
|
2022-06-10 17:36:03 +05:00
|
|
|
|
CancellationToken token)
|
2021-04-07 18:01:56 +05:00
|
|
|
|
{
|
2021-11-22 11:30:08 +05:00
|
|
|
|
await telemetryService.UpdateInfoAsync(uid, info, token).ConfigureAwait(false);
|
2021-11-16 13:14:31 +05:00
|
|
|
|
return Ok();
|
|
|
|
|
}
|
2022-04-11 18:00:34 +05:00
|
|
|
|
|
2021-11-16 13:14:31 +05:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Обновляет часовой пояс скважины
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="uid">Уникальный идентификатор отправителя</param>
|
2022-01-05 17:50:45 +05:00
|
|
|
|
/// <param name="timezone">Информация о часовом поясе</param>
|
2021-11-16 13:14:31 +05:00
|
|
|
|
/// <param name="token">Токен отмены задачи</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
2022-01-05 17:50:45 +05:00
|
|
|
|
[Route("{uid}/timezone")]
|
|
|
|
|
public async Task<IActionResult> UpdateTimeZoneAsync(string uid, SimpleTimezoneDto timezone,
|
2022-06-10 17:36:03 +05:00
|
|
|
|
CancellationToken token)
|
2021-11-16 13:14:31 +05:00
|
|
|
|
{
|
2022-01-05 17:50:45 +05:00
|
|
|
|
await telemetryService.UpdateTimezoneAsync(uid, timezone, token)
|
2021-11-22 11:30:08 +05:00
|
|
|
|
.ConfigureAwait(false);
|
2021-04-07 18:01:56 +05:00
|
|
|
|
return Ok();
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-23 10:21:25 +05:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Принимает список новых сообщений от телеметрии
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="uid">Уникальный идентификатор отправителя</param>
|
|
|
|
|
/// <param name="dtos">сообщения</param>
|
2021-08-11 16:54:42 +05:00
|
|
|
|
/// <param name="token">Токен для отмены задачи</param>
|
2021-04-23 10:21:25 +05:00
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[Route("{uid}/message")]
|
2021-08-11 16:54:42 +05:00
|
|
|
|
public async Task<IActionResult> PostMessagesAsync(string uid, [FromBody] IEnumerable<TelemetryMessageDto> dtos,
|
2022-06-10 17:36:03 +05:00
|
|
|
|
CancellationToken token)
|
2021-04-23 10:21:25 +05:00
|
|
|
|
{
|
2021-12-07 18:27:52 +05:00
|
|
|
|
var idWell = telemetryService.GetIdWellByTelemetryUid(uid);
|
2021-08-11 17:26:02 +05:00
|
|
|
|
await messageService.InsertAsync(uid, dtos, token).ConfigureAwait(false);
|
2021-04-23 10:21:25 +05:00
|
|
|
|
|
|
|
|
|
if (dtos.Any())
|
2021-08-11 17:26:02 +05:00
|
|
|
|
await Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}")
|
2021-09-17 16:24:01 +05:00
|
|
|
|
.SendAsync("ReceiveMessages", dtos), token).ConfigureAwait(false);
|
2021-04-23 10:21:25 +05:00
|
|
|
|
|
|
|
|
|
return Ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Принимает справочник событий
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="uid">Уникальный идентификатор отправителя</param>
|
|
|
|
|
/// <param name="events">справочник событий</param>
|
2021-08-11 16:54:42 +05:00
|
|
|
|
/// <param name="token">Токен для отмены задачи</param>
|
2021-04-23 10:21:25 +05:00
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[Route("{uid}/event")]
|
2021-08-11 16:54:42 +05:00
|
|
|
|
public async Task<IActionResult> PostEventsAsync(string uid, [FromBody] List<EventDto> events,
|
2022-06-10 17:36:03 +05:00
|
|
|
|
CancellationToken token)
|
2021-04-23 10:21:25 +05:00
|
|
|
|
{
|
2021-08-11 17:26:02 +05:00
|
|
|
|
await eventService.UpsertAsync(uid, events, token)
|
|
|
|
|
.ConfigureAwait(false);
|
2021-04-23 10:21:25 +05:00
|
|
|
|
return Ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Принимает справочник пользователей телеметрии
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="uid">Уникальный идентификатор отправителя</param>
|
|
|
|
|
/// <param name="users">справочник пользователей телеметрии</param>
|
2022-06-10 17:36:03 +05:00
|
|
|
|
/// <param name="token"></param>
|
2021-04-23 10:21:25 +05:00
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[Route("{uid}/user")]
|
2022-06-10 17:36:03 +05:00
|
|
|
|
public async Task<IActionResult> PostUsersAsync(string uid, [FromBody] List<TelemetryUserDto> users,
|
|
|
|
|
CancellationToken token)
|
2021-04-23 10:21:25 +05:00
|
|
|
|
{
|
2022-06-10 17:36:03 +05:00
|
|
|
|
await telemetryUserService.UpsertAsync(uid, users, token);
|
2021-04-23 10:21:25 +05:00
|
|
|
|
return Ok();
|
|
|
|
|
}
|
2021-04-07 18:01:56 +05:00
|
|
|
|
}
|
|
|
|
|
}
|