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, DateOnly date, CancellationToken cancellationToken);
}