using AsbCloudApp.Data; using AsbCloudApp.Requests; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AsbCloudApp.Services { /// <summary> /// сервис данных тех. процесса /// </summary> /// <typeparam name="TDto"></typeparam> public interface ITelemetryDataService<TDto> where TDto : ITelemetryData { /// <summary> /// получить данные тех. процесса /// </summary> /// <param name="idWell"></param> /// <param name="dateBegin"></param> /// <param name="intervalSec"></param> /// <param name="approxPointsCount">кол-во элементов до которых эти данные прореживаются</param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<TDto>> GetByWellAsync(int idWell, DateTime dateBegin = default, double intervalSec = 600d, int approxPointsCount = 1024, CancellationToken token = default); /// <summary> /// Получить данные тех. процесса по скважине /// </summary> /// <param name="idWell"></param> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<TDto>> GetByWellAsync(int idWell, TelemetryDataRequest request, CancellationToken token); /// <summary> /// Получение данных тех. процесса по телеметрии /// </summary> /// <param name="idTelemetry"></param> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<TDto>> GetByTelemetryAsync(int idTelemetry, TelemetryDataRequest request, CancellationToken token); /// <summary> /// Период за который есть данные по скважине в рамках временного интервала /// </summary> /// <param name="idWell"></param> /// <param name="geDate"></param> /// <param name="leDate"></param> /// <param name="token"></param> /// <returns></returns> Task<DatesRangeDto?> GetRangeAsync(int idWell, DateTimeOffset geDate, DateTimeOffset? leDate, CancellationToken token); /// <summary> /// Период за который есть данные по скважине /// </summary> /// <param name="idWell"></param> /// <returns></returns> DatesRangeDto? GetRange(int idWell); /// <summary> /// добавить/изменить данные тех. процесса (используется панелью) /// </summary> /// <param name="uid"></param> /// <param name="dtos"></param> /// <param name="token"></param> /// <returns></returns> Task<int> UpdateDataAsync(string uid, IEnumerable<TDto> dtos, CancellationToken token); } }