DD.WellWorkover.Cloud/AsbCloudApp/Repositories/IWellOperationRepository.cs

130 lines
5.7 KiB
C#
Raw Normal View History

2021-09-10 11:28:57 +05:00
using AsbCloudApp.Data;
using AsbCloudApp.Requests;
2021-09-10 11:28:57 +05:00
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudApp.Repositories
{
2022-08-09 11:10:01 +05:00
/// <summary>
/// сервис операций по скважине
/// </summary>
public interface IWellOperationRepository
{
2022-08-09 11:10:01 +05:00
/// <summary>
/// Список секций
2022-08-09 11:10:01 +05:00
/// </summary>
/// <returns></returns>
2023-07-19 16:39:17 +05:00
IEnumerable<WellSectionTypeDto> GetSectionTypes();
/// <summary>
/// список плановых операций для сопоставления
/// <param name="idWell"></param>
/// <param name="currentDate"></param>
/// <param name="token"></param>
/// </summary>
/// <returns></returns>
Task<WellOperationPlanDto> GetOperationsPlanAsync(int idWell, DateTime? currentDate, CancellationToken token);
/// <summary>
/// дата/время первой операции по скважине
/// </summary>
/// <param name="idWell"></param>
/// <returns></returns>
DateTimeOffset? FirstOperationDate(int idWell);
2022-08-09 11:10:01 +05:00
/// <summary>
/// Получить страницу списка операций
2022-08-09 11:10:01 +05:00
/// </summary>
/// <param name="request"></param>
2022-08-09 11:10:01 +05:00
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<WellOperationDto>> GetAsync(WellOperationRequest request, CancellationToken token);
2022-08-09 11:10:01 +05:00
/// <summary>
/// Получить страницу списка операций
2022-08-09 11:10:01 +05:00
/// </summary>
/// <param name="request"></param>
2022-08-09 11:10:01 +05:00
/// <param name="token"></param>
/// <returns></returns>
Task<PaginationContainer<WellOperationDto>> GetPageAsync(WellOperationRequest request, CancellationToken token);
2022-08-09 11:10:01 +05:00
/// <summary>
/// Получить операцию по id
2022-08-09 11:10:01 +05:00
/// </summary>
/// <param name="id"></param>
2022-08-09 11:10:01 +05:00
/// <param name="token"></param>
/// <returns></returns>
Task<WellOperationDto?> GetOrDefaultAsync(int id, CancellationToken token);
2022-08-09 11:10:01 +05:00
/// <summary>
/// Получить статистику операции по скважине с группировкой по категориям
2022-08-09 11:10:01 +05:00
/// </summary>
/// <param name="request"></param>
2022-08-09 11:10:01 +05:00
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<WellGroupOpertionDto>> GetGroupOperationsStatAsync(
WellOperationRequest request,
CancellationToken token);
2022-08-09 11:10:01 +05:00
/// <summary>
/// Добавить несколько операций за один раз
2022-08-09 11:10:01 +05:00
/// </summary>
/// <param name="wellOperationDtos"></param>
/// <param name="token"></param>
2022-08-09 11:10:01 +05:00
/// <returns></returns>
Task<int> InsertRangeAsync(IEnumerable<WellOperationDto> wellOperationDtos, CancellationToken token);
2022-08-09 11:10:01 +05:00
/// <summary>
/// Обновить существующую операцию
2022-08-09 11:10:01 +05:00
/// </summary>
/// <param name="dto"></param>
/// <param name="token"></param>
2022-08-09 11:10:01 +05:00
/// <returns></returns>
Task<int> UpdateAsync(WellOperationDto dto, CancellationToken token);
2022-12-27 14:30:52 +05:00
/// <summary>
/// Удалить операции по id
2022-12-27 14:30:52 +05:00
/// </summary>
/// <param name="ids"></param>
2022-12-27 14:30:52 +05:00
/// <param name="token"></param>
/// <returns></returns>
Task<int> DeleteAsync(IEnumerable<int> ids, CancellationToken token);
/// <summary>
/// Получить секции скважин из операций ГГД. Секцие поделены на плановые и фактические.
/// </summary>
/// <param name="idsWells"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<SectionByOperationsDto>> GetSectionsAsync(IEnumerable<int> idsWells, CancellationToken token);
/// <summary>
/// Получить диапазон дат выполнения операций
/// </summary>
/// <param name="idWell"></param>
/// <param name="idType"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task<DatesRangeDto?> GetDatesRangeAsync(int idWell, int idType, CancellationToken cancellationToken);
/// <summary>
/// Удаление полных дубликатов операций по всем скважинам
/// </summary>
/// <param name="onProgressCallback"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> RemoveDuplicates(Action<string, double?> onProgressCallback, CancellationToken token);
/// <summary>
/// Усечение пересекающейся последующей операции по дате и глубине забоя
/// </summary>
/// <param name="geDate">Фильтр по дате. Если хоть одна операция попадет в в фильтр, то будет обработана вся скважина, а не только эта операция</param>
/// <param name="leDate">Фильтр по дате. Если хоть одна операция попадет в в фильтр, то будет обработана вся скважина, а не только эта операция</param>
/// <param name="onProgressCallback"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> TrimOverlapping(DateTimeOffset? geDate, DateTimeOffset leDate, Action<string, double?> onProgressCallback, CancellationToken token);
}
}