using AsbCloudApp.Data; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AsbCloudWebApi.Controllers { [ApiController] [Authorize] [Route("api/[controller]")] public abstract class TelemetryDataBaseController : ControllerBase { /// /// Принимает данные от разных систем по скважине /// /// Уникальный идентификатор отправителя /// Данные /// Токен для отмены задачи /// [HttpPost] [Route("{uid}")] public virtual async Task PostDataAsync(string uid, [FromBody] IEnumerable dtos, CancellationToken token = default) { //var idWell = telemetryService.GetidWellByTelemetryUid(uid); //await DataService.UpdateDataAsync(uid, dtos, token).ConfigureAwait(false); //if (idWell != null && dtos.Any()) // await Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}") // .SendAsync(nameof(ITelemetryHubClient.ReceiveDataSaub), dtos), token).ConfigureAwait(false); //telemetryTracker.SaveRequestDate(uid); return Ok(); } /// /// Возвращает данные САУБ по скважине. /// По умолчанию за последние 10 минут. /// /// id скважины /// дата начала выборки. По умолчанию: текущее время - intervalSec /// интервал времени даты начала выборки, секунды /// желаемое количество точек. Если в выборке точек будет больше, то выборка будет прорежена. /// Токен завершения задачи /// [HttpGet("{idWell}")] //[ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] public virtual async Task GetDataAsync(int idWell, DateTime begin = default, int intervalSec = 600, int approxPointsCount = 1024, CancellationToken token = default) { //if (begin == default) // begin = DateTime.Now.AddSeconds(-intervalSec); //var content = await telemetryDataService.GetAsync(idWell, begin, // intervalSec, approxPointsCount, token).ConfigureAwait(false); //if (content is null || !content.Any()) // return NoContent(); return Ok(null); } /// /// Возвращает диапазон дат сохраненных данных. /// /// id скважины /// Токен завершения задачи /// [HttpGet] [Route("{idWell}/datesRange")] [ProducesResponseType(typeof(DatesRangeDto), (int)System.Net.HttpStatusCode.OK)] public virtual async Task GetDataDatesRangeAsync(int idWell, CancellationToken token = default) { //int? idCompany = User.GetCompanyId(); //if (idCompany is null) // return Forbid(); //bool isCompanyOwnsWell = await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, // idWell, token).ConfigureAwait(false); //if (!isCompanyOwnsWell) // return Forbid(); //DatesRangeDto dataDatesRange = await telemetryDataService.GetDataDatesRangeAsync(idWell, // token).ConfigureAwait(false); return Ok(null); } } }