using AsbCloudApp.Data;
using AsbCloudApp.Data.WellOperation;
using AsbCloudApp.Requests;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudApp.Repositories;
///
/// сервис операций по скважине
///
public interface IWellOperationRepository
{
///
/// Список секций
///
///
IEnumerable GetSectionTypes();
///
/// Добавить несколько операций
///
///
///
///
///
Task InsertRangeAsync(IEnumerable dtos, bool deleteBeforeInsert, CancellationToken token);
///
/// Обновить существующую операцию
///
///
///
///
Task UpdateRangeAsync(IEnumerable dtos, CancellationToken token);
///
/// Удалить операции по id
///
///
///
///
Task DeleteRangeAsync(IEnumerable ids, CancellationToken token);
///
/// Получить секции скважин из операций ГГД. Секцие поделены на плановые и фактические.
///
///
///
///
Task> GetSectionsAsync(IEnumerable idsWells, CancellationToken token);
///
/// Получить диапазон дат выполнения операций
///
///
///
///
///
Task GetDatesRangeAsync(int idWell, int idType, CancellationToken cancellationToken);
///
/// Возвращает первую и последнюю операцию
///
///
///
///
///
Task<(WellOperationBaseDto First, WellOperationBaseDto Last)?> GetFirstAndLastAsync(int idWell, int idType, CancellationToken token);
///
/// Получить список операций по запросу
///
///
///
///
Task> GetAll(WellOperationRequest request, CancellationToken token);
///
/// Получить список операций по запросу
///
///
///
///
Task> GetAll(WellOperationRepositoryRequest request, CancellationToken token);
///
/// Получить список операций по ключу скважины
///
///
///
///
Task> GetAll(int idWell, CancellationToken token);
}