using AsbCloudApp.Data; using AsbCloudApp.Data.Subsystems; using AsbCloudApp.Requests; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AsbCloudApp.Services.Subsystems { /// <summary> /// Получение инфо о наработке подсистем /// </summary> public interface ISubsystemOperationTimeService { /// <summary> /// Статистика о наработке подсистем /// </summary> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<SubsystemStatDto>?> GetStatAsync(SubsystemOperationTimeRequest request, CancellationToken token); /// <summary> /// Удаление наработки по подсистемам. /// Если удаляется конец, то фоновый сервис подсчета наработки восстановит эти данные. /// Может потребоваться для запуска повторного расчета по новому алгоритму. /// </summary> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<int> DeleteAsync(SubsystemOperationTimeRequest request, CancellationToken token); /// <summary> /// Интервалы работы подсистем /// </summary> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<SubsystemOperationTimeDto>?> GetOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token); /// <summary> /// Временной диапазон за который есть статистика работы подсистем /// </summary> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<DatesRangeDto?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token); /// <summary> /// Получение статистики по наработке подсистем по активным скважинам /// </summary> /// <param name="idCompany"></param> /// <param name="gtDate"></param> /// <param name="ltDate"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<SubsystemActiveWellStatDto>> GetStatByActiveWells(int idCompany, DateTime? gtDate, DateTime? ltDate, CancellationToken token); /// <summary> /// Получение статистики по наработке подсистем по активным скважинам /// </summary> /// <param name="wellIds"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<SubsystemActiveWellStatDto>> GetStatByActiveWells(IEnumerable<int> wellIds, CancellationToken token); /// <summary> /// Получение периода, за который будет расчитываться статистика /// </summary> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<DateTime>> GetStatDateRangeAsync(SubsystemOperationTimeRequest request, CancellationToken token); } }