using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using AsbCloudApp.Data.DailyReport;
using AsbCloudApp.Requests;
using AsbCloudApp.Services;

namespace AsbCloudApp.Repositories;

/// <summary>
/// Суточные отчёты
/// </summary>
public interface IDailyReportRepository : ICrudRepository<DailyReportDto>
{
	/// <summary>
	/// Получить список суточный отчёт по скважине
	/// </summary>
	/// <param name="idWell"></param>
	/// <param name="request"></param>
	/// <param name="cancellationToken"></param>
	/// <returns></returns>
	Task<IEnumerable<DailyReportDto>> GetAsync(int idWell, FileReportRequest request, CancellationToken cancellationToken);

	/// <summary>
	/// Получить суточный отчёт
	/// </summary>
	/// <param name="idWell"></param>
	/// <param name="date"></param>
	/// <param name="cancellationToken"></param>
	/// <returns></returns>
	Task<DailyReportDto?> GetOrDefaultAsync(int idWell, DateTime date, CancellationToken cancellationToken);
}