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

namespace AsbCloudApp.Services;

/// <summary>
/// Получение инфо о наработке подсистем
/// </summary>
public interface ISubsystemService
{
	/// <summary>
	/// Статистика о наработке подсистем
	/// </summary>
	/// <param name="request"></param>
	/// <param name="token"></param>
	/// <returns></returns>
	Task<IEnumerable<SubsystemStatDto>> GetStatAsync(SubsystemRequest request, 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<DrillerDetectedOperationStatDto>> GetByWellsAsync(GetStatRequest request,
		CancellationToken token);
}