using AsbCloudApp.Data;
using AsbCloudApp.Requests;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudApp.Services;
///
/// сервис скважин
///
public interface IWellService : ICrudRepository
{
///
/// сервис телеметрии
///
ITelemetryService TelemetryService { get; }
///
/// Список скважин доступных компании
///
///
///
///
Task> GetAsync(WellRequest request, CancellationToken token);
///
/// Статистика по скважине
///
///
///
///
Task GetOrDefaultStatAsync(int idWell, CancellationToken token);
///
/// проверяет доступ к скважине для компании
///
///
///
///
///
Task IsCompanyInvolvedInWellAsync(int idCompany, int idWell, CancellationToken token);
//TODO: remove that
///
/// получить название скважины по id
///
///
///
///
Task GetWellCaptionByIdAsync(int idWell, CancellationToken token);
///
/// список компаний участвующих в скважине
///
///
///
///
Task> GetCompaniesAsync(int idWell, CancellationToken token);
//TODO: remove that
///
///
///
///
///
string GetStateText(int state);
///
/// дата получения последних данных от панели
///
///
///
DateTimeOffset GetLastTelemetryDate(int idWell);
//TODO: выяснить и удалить отсюда
///
/// получение списка скважин куста в котором находится указанная скважина
///
///
///
///
Task> GetClusterWellsIdsAsync(int idWell, CancellationToken token);
///
/// часовой пояс скважины
///
///
///
SimpleTimezoneDto GetTimezone(int idWell);
///
/// диапазон дат с данными телеметрии
///
///
///
DatesRangeDto GetDatesRange(int idWell);
///
/// ВРЕМЕННЫЙ метод
///
///
///
///
Task> GetWellTreeAsync(int idCompany, CancellationToken token);
}