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

namespace AsbCloudApp.Services.AutoGeneratedDailyReports;

/// <summary>
/// Сервис для работы с авто-генерируемыми суточными отчётами
/// </summary>
public interface IAutoGeneratedDailyReportService
{
	/// <summary>
	/// Список файлов суточных отчётов
	/// </summary>
	/// <param name="idWell"></param>
	/// <param name="request"></param>
	/// <param name="cancellationToken"></param>
	/// <returns></returns>
	Task<PaginationContainer<AutoGeneratedDailyReportInfoDto>> GetListAsync(int idWell, 
		AutoGeneratedDailyReportRequest request, 
		CancellationToken cancellationToken);

	/// <summary>
	/// Генерация файла с отчётом
	/// </summary>
	/// <param name="idWell"></param>
	/// <param name="reportDate"></param>
	/// <param name="cancellationToken"></param>
	/// <returns></returns>
	Task<(string fileName, Stream stream)> GenerateReportAsync(int idWell, DateOnly reportDate, 
		CancellationToken cancellationToken);
}