using AsbCloudApp.Data.Subsystems;
using AsbCloudApp.Requests;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace AsbCloudApp.Services.Subsystems
{
#nullable enable
    /// <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);        
    }
#nullable disable
}