using AsbCloudApp.Data.SAUB;
using AsbCloudApp.Services;
using AsbCloudWebApi.SignalR;
using AsbCloudWebApi.SignalR.Clients;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace AsbCloudWebApi.Controllers.SAUB;

/// <summary>
/// Данные осциллятора и демпфера
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class TelemetryDataSpinController : TelemetryDataBaseController<TelemetryDataSpinDto>
{
    public TelemetryDataSpinController(
        ITelemetryService telemetryService,
        ITelemetryDataService<TelemetryDataSpinDto> telemetryDataService,
        IWellService wellService,
        IHubContext<TelemetryHub, ITelemetryHubClient> telemetryHubContext)
        : base(
              telemetryService,
              telemetryDataService,
              wellService,
              telemetryHubContext)
    {}

    protected override Task SignalRNotifyAsync(int idWell, IEnumerable<TelemetryDataSpinDto> dtos, CancellationToken token)
    {
        return telemetryHubContext.Clients.Group($"well_{idWell}").ReceiveDataSpin(dtos, token);
    }
}