using AsbCloudApp.Data;
using AsbCloudApp.Data.DrillTestReport;
using AsbCloudApp.Requests;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

namespace AsbCloudApp.Services
{
    /// <summary>
    /// сервис по работе с отчетами drill test
    /// </summary>
    public interface IDrillTestReportService
    {
        /// <summary>
        /// Список файлов drill test
        /// </summary>
        /// <param name="idWell">ключ скважины</param>
        /// <param name="request">параметры запроса</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task<PaginationContainer<DrillTestReportInfoDto>> GetListAsync(int idWell,
            FileReportRequest request,
            CancellationToken cancellationToken);

        /// <summary>
        /// Генерация файла с отчётом
        /// </summary>
        /// <param name="idWell">ключ скважины</param>
        /// <param name="id">ключ drill test записи</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task<(string fileName, Stream stream)> GenerateAsync(int idWell, int id, CancellationToken cancellationToken);
    }
}