forked from ddrilling/AsbCloudServer
doc
This commit is contained in:
parent
70e6ce766b
commit
f4b3dfd9fe
@ -2,6 +2,8 @@
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
//todo: добавить валидацию
|
||||
|
||||
/// <summary>
|
||||
/// Операции на скважине (заведенные пользователем)
|
||||
/// </summary>
|
||||
|
@ -12,11 +12,51 @@ namespace AsbCloudApp.Services
|
||||
/// </summary>
|
||||
public interface IDailyReportService
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// получить список сформированных рапортов по скважине за период времени
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="v1"></param>
|
||||
/// <param name="v2"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<DailyReportDto>> GetListAsync(int idWell, DateTime? v1, DateTime? v2, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// получить из БД или генерировать данные для суточного рапорта за указанную дату
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="date"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<DailyReportDto> GetOrGenerateAsync(int idWell, DateTime date, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Добавить новый рапорт
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="dto"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> AddAsync(int idWell, DailyReportDto dto, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// изменить данные для суточного рапорта
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="date"></param>
|
||||
/// <param name="dto"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateAsync(int idWell, DateTime date, DailyReportDto dto, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Сформировать файл рапорта
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="date"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<Stream> MakeReportAsync(int idWell, DateTime date, CancellationToken token = default);
|
||||
}
|
||||
}
|
||||
|
@ -7,14 +7,36 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис сообщений панели оператора
|
||||
/// </summary>
|
||||
public interface IMessageService
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить сообщения по параметрам
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="categoryids"></param>
|
||||
/// <param name="begin"></param>
|
||||
/// <param name="end"></param>
|
||||
/// <param name="searchString"></param>
|
||||
/// <param name="skip"></param>
|
||||
/// <param name="take"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<PaginationContainer<MessageDto>> GetMessagesAsync(int idWell,
|
||||
IEnumerable<int> categoryids = default, DateTime begin = default,
|
||||
DateTime end = default, string searchString = default,
|
||||
int skip = 0, int take = 32,
|
||||
CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Метод для сохранения сообщения от панели
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task InsertAsync(string uid, IEnumerable<TelemetryMessageDto> dtos,
|
||||
CancellationToken token);
|
||||
}
|
||||
|
@ -2,6 +2,10 @@
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
// TODO: Remove this
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public interface IOperationValueService : ICrudWellRelatedService<OperationValueDto>
|
||||
{
|
||||
}
|
||||
|
@ -5,12 +5,50 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис расчета статистики по операциям вводимым вручную
|
||||
/// </summary>
|
||||
public interface IOperationsStatService
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить статистику МСП по кусту в котором находится скважина с IdWell
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<ClusterRopStatDto> GetRopStatAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получить статистику по скважинам куста, которые доступны компании
|
||||
/// </summary>
|
||||
/// <param name="idCluster"></param>
|
||||
/// <param name="idCompany"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<StatClusterDto> GetStatClusterAsync(int idCluster, int idCompany, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// получить статистику по скважине
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<StatWellDto> GetWellStatAsync(int idWell, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Получить данные для графика TVD
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<PlanFactPredictBase<WellOperationDto>>> GetTvdAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получить статистику по набору скважин
|
||||
/// </summary>
|
||||
/// <param name="idWells"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<StatWellDto>> GetWellsStatAsync(IEnumerable<int> idWells, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +0,0 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
public interface IPaginationService<Tdto>
|
||||
{
|
||||
Task<Data.PaginationContainer<Tdto>> GetPageAsync(int skip = 0, int take = 32, CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -6,15 +6,57 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис рапортов
|
||||
/// </summary>
|
||||
public interface IReportService
|
||||
{
|
||||
/// <summary>
|
||||
/// категория рапорта
|
||||
/// </summary>
|
||||
int ReportCategoryId { get; }
|
||||
|
||||
// TODO: rename this method
|
||||
/// <summary>
|
||||
/// Поставить рапорт в очередь на формирование
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="stepSeconds"></param>
|
||||
/// <param name="format"></param>
|
||||
/// <param name="begin"></param>
|
||||
/// <param name="end"></param>
|
||||
/// <param name="handleReportProgress"></param>
|
||||
/// <returns></returns>
|
||||
string CreateReport(int idWell, int idUser, int stepSeconds,
|
||||
int format, DateTime begin, DateTime end,
|
||||
Action<object, string> handleReportProgress);
|
||||
|
||||
/// <summary>
|
||||
/// Получить предполагаемый список страниц рапорта
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="begin"></param>
|
||||
/// <param name="end"></param>
|
||||
/// <param name="stepSeconds"></param>
|
||||
/// <param name="format"></param>
|
||||
/// <returns></returns>
|
||||
int GetReportPagesCount(int idWell, DateTime begin, DateTime end,
|
||||
int stepSeconds, int format);
|
||||
|
||||
/// <summary>
|
||||
/// получить диапазон дат за которые есть данные
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
DatesRangeDto GetDatesRangeOrDefault(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// Список готовых рапортов
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<ReportPropertiesDto>> GetAllReportsByWellAsync(int idWell, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
public interface IReportsBackgroundQueue
|
||||
{
|
||||
int EnqueueTask(Action<int> action);
|
||||
|
||||
bool TryDequeue(out (Action<int> action, int id) item);
|
||||
}
|
||||
}
|
@ -4,14 +4,59 @@ using System.Collections.Generic;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
// TODO: make this nullable
|
||||
|
||||
/// <summary>
|
||||
/// Отслеживание и сбор статистики по запросам
|
||||
/// </summary>
|
||||
public interface IRequerstTrackerService
|
||||
{
|
||||
/// <summary>
|
||||
/// Регистрирует новый запрос
|
||||
/// </summary>
|
||||
/// <param name="requestLog"></param>
|
||||
void RegisterRequest(RequestLogDto requestLog);
|
||||
|
||||
/// <summary>
|
||||
/// Регистрирует новый запрос, вызвавший ошибку на сервере
|
||||
/// </summary>
|
||||
/// <param name="requestLog"></param>
|
||||
/// <param name="ex"></param>
|
||||
void RegisterRequestError(RequestLogDto requestLog, Exception ex);
|
||||
|
||||
/// <summary>
|
||||
/// все зарегистрированные запросы
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogDto> GetAll(int take = -1);
|
||||
|
||||
/// <summary>
|
||||
/// запросы которые выполнялись быстро
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogDto> GetFast(int take = -1);
|
||||
|
||||
/// <summary>
|
||||
/// запросы, которые выполнялись медленно
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogDto> GetSlow(int take = -1);
|
||||
|
||||
/// <summary>
|
||||
/// запросы, которые завершились ошибкой
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogDto> GetError(int take = -1);
|
||||
|
||||
/// <summary>
|
||||
/// Статистика посещений пользователей
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogUserDto> GetUsersStat(int take = -1);
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,17 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис формирования Сетевого графика.
|
||||
/// </summary>
|
||||
public interface IScheduleReportService
|
||||
{
|
||||
/// <summary>
|
||||
/// Сформировать.
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<Stream> MakeReportAsync(int idWell, CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -5,8 +5,19 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис расписания смен бурильщика
|
||||
/// </summary>
|
||||
public interface IScheduleService : ICrudWellRelatedService<ScheduleDto>
|
||||
{
|
||||
// TODO: this should be nullable.
|
||||
/// <summary>
|
||||
/// получить бурильщика по idWell и времени
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="workTime"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<DrillerDto> GetDrillerAsync(int idWell, DateTime workTime, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -5,13 +5,55 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис рекомендаций новых уставок для панели оператора САУБ
|
||||
/// </summary>
|
||||
public interface ISetpointsService
|
||||
{
|
||||
/// <summary>
|
||||
/// Добавить новый набор рекомендаций
|
||||
/// </summary>
|
||||
/// <param name="setpoints"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> InsertAsync(SetpointsRequestDto setpoints, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получить наборы уставок на скважине
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<SetpointsRequestDto>> GetAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Скачать новые рекомендации (скачивает панель оператора)
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<SetpointsRequestDto>> GetForPanelAsync(string uid, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Попробовать удалить (успешно, если панель еще не забрала уставки)
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> TryDelete(int id, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// отредактировать состояние набора рекомендаций
|
||||
/// </summary>
|
||||
/// <param name="setpointsRequestDto"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateStateAsync(SetpointsRequestDto setpointsRequestDto, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Список уставок для рекомендаций
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerable<SetpointInfoDto> GetSetpointsNames();
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,33 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис данных тех. процесса
|
||||
/// </summary>
|
||||
/// <typeparam name="TDto"></typeparam>
|
||||
public interface ITelemetryDataService<TDto> where TDto : ITelemetryData
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// получить данные тех. процесса
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="dateBegin"></param>
|
||||
/// <param name="intervalSec"></param>
|
||||
/// <param name="approxPointsCount">кол-во элементов до которых эти данные прореживаются</param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<TDto>> GetAsync(int idWell,
|
||||
DateTime dateBegin = default, double intervalSec = 600d,
|
||||
int approxPointsCount = 1024, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// добавить/изменить данные тех. процесса (используется панелью)
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateDataAsync(string uid, IEnumerable<TDto> dtos, CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -7,18 +7,89 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис телеметрии
|
||||
/// </summary>
|
||||
public interface ITelemetryService
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис временных зон
|
||||
/// </summary>
|
||||
ITimezoneService TimeZoneService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// трекер запросов
|
||||
/// </summary>
|
||||
ITelemetryTracker TelemetryTracker { get; }
|
||||
|
||||
/// <summary>
|
||||
/// получить idWell по uid телеметрии
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
int? GetIdWellByTelemetryUid(string uid);
|
||||
|
||||
/// <summary>
|
||||
/// Получить id телеметрии. Если её нет в БД, то добавить новую.
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
int GetOrCreateTelemetryIdByUid(string uid);
|
||||
|
||||
/// <summary>
|
||||
/// получить временную зону скважины по idTelemetry
|
||||
/// </summary>
|
||||
/// <param name="idTelemetry"></param>
|
||||
/// <returns></returns>
|
||||
SimpleTimezoneDto GetTimezone(int idTelemetry);
|
||||
|
||||
// TODO: вероятно лишнее
|
||||
/// <summary>
|
||||
/// Список передающих в данный момент телеметрий
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerable<TelemetryDto> GetTransmittingTelemetries();
|
||||
|
||||
// TODO: вероятно лишнее
|
||||
/// <summary>
|
||||
/// Получить дату получения последних данных
|
||||
/// </summary>
|
||||
/// <param name="idTelemetry"></param>
|
||||
/// <param name="useUtc"></param>
|
||||
/// <returns></returns>
|
||||
DateTime GetLastTelemetryDate(int idTelemetry, bool useUtc = false);
|
||||
|
||||
/// <summary>
|
||||
/// получить idTelemetry по IdWell
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
int? GetIdTelemetryByIdWell(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// получить диапазон дат за которые есть данные
|
||||
/// </summary>
|
||||
/// <param name="idTelemetry"></param>
|
||||
/// <returns></returns>
|
||||
DatesRangeDto GetDatesRange(int idTelemetry);
|
||||
|
||||
/// <summary>
|
||||
/// обновить данные о телеметрии (используется панелью)
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="info"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task UpdateInfoAsync(string uid, TelemetryInfoDto info, CancellationToken token);
|
||||
|
||||
// TODO: вероятно лишнее
|
||||
/// <summary>
|
||||
/// обновить данные о временной зоне (используется панелью)
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="telemetryTimeZoneInfo"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task UpdateTimezoneAsync(string uid, SimpleTimezoneDto telemetryTimeZoneInfo, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
@ -29,6 +100,13 @@ namespace AsbCloudApp.Services
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> MergeAsync(int from, int to, CancellationToken token);
|
||||
|
||||
// TODO: вероятно лишнее
|
||||
/// <summary>
|
||||
/// сохранить данные о запросе
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="remoteDate"></param>
|
||||
void SaveRequestDate(string uid, DateTimeOffset remoteDate);
|
||||
}
|
||||
}
|
@ -4,11 +4,36 @@ using System.Collections.Generic;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис статистики телеметрии
|
||||
/// </summary>
|
||||
public interface ITelemetryTracker
|
||||
{
|
||||
/// <summary>
|
||||
/// получить дату последней отправки данных панелью
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
DateTimeOffset GetLastTelemetryDateByUid(string uid);
|
||||
|
||||
/// <summary>
|
||||
/// получить диапазон дат за которые есть данные по телеметрии
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
DatesRangeDto GetTelemetryDateRangeByUid(string uid);
|
||||
|
||||
/// <summary>
|
||||
/// список передающих телеметрий
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerable<string> GetTransmittingTelemetriesUids();
|
||||
|
||||
/// <summary>
|
||||
/// обновить статистику по телеметрии
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="remoteDate"></param>
|
||||
void SaveRequestDate(string uid, DateTimeOffset remoteDate);
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,18 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис пользователей телеметрии
|
||||
/// </summary>
|
||||
public interface ITelemetryUserService
|
||||
{
|
||||
/// <summary>
|
||||
/// получает и сохраняет/обновляет список пользователей панели оператора
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task UpsertAsync(string uid, IEnumerable<TelemetryUserDto> dtos, CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -4,9 +4,26 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис определения временной зоны
|
||||
/// </summary>
|
||||
public interface ITimezoneService
|
||||
{
|
||||
/// <summary>
|
||||
/// по координатам
|
||||
/// </summary>
|
||||
/// <param name="latitude"></param>
|
||||
/// <param name="longitude"></param>
|
||||
/// <returns></returns>
|
||||
SimpleTimezoneDto GetByCoordinates(double latitude, double longitude);
|
||||
|
||||
/// <summary>
|
||||
/// по координатам
|
||||
/// </summary>
|
||||
/// <param name="latitude"></param>
|
||||
/// <param name="longitude"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<Data.SimpleTimezoneDto> GetByCoordinatesAsync(double latitude, double longitude, CancellationToken token);
|
||||
}
|
||||
}
|
@ -5,11 +5,43 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Репозиторий ролей пользователя
|
||||
/// </summary>
|
||||
public interface IUserRoleService : ICrudService<UserRoleDto>
|
||||
{
|
||||
// todo: скорее всего не используется
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<UserRoleDto> GetByNameAsync(string name, CancellationToken token = default);
|
||||
|
||||
// todo: переименовать
|
||||
/// <summary>
|
||||
/// получить dto по названиям
|
||||
/// </summary>
|
||||
/// <param name="names"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<UserRoleDto>> GetByNamesAsync(IEnumerable<string> names, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// получить все вложенные разрешения
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="counter"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<UserRoleDto> GetNestedById(int id, int counter = 10);
|
||||
|
||||
/// <summary>
|
||||
/// определяет содержится ли разрешение в одной из указанных ролей
|
||||
/// </summary>
|
||||
/// <param name="rolesIds"></param>
|
||||
/// <param name="permissionName"></param>
|
||||
/// <returns></returns>
|
||||
bool HasPermission(IEnumerable<int> rolesIds, string permissionName);
|
||||
}
|
||||
}
|
@ -3,13 +3,55 @@ using System.Collections.Generic;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис пользователей
|
||||
/// </summary>
|
||||
public interface IUserService : ICrudService<UserExtendedDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис ролей
|
||||
/// </summary>
|
||||
IUserRoleService RoleService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Получить список всех прав пользователя (включая наследование групп)
|
||||
/// </summary>
|
||||
/// <param name="idUser"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<PermissionDto> GetNestedPermissions(int idUser);
|
||||
|
||||
/// <summary>
|
||||
/// Получить список ролей пользователя (включая наследование)
|
||||
/// </summary>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="nestedLevel"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<UserRoleDto> GetRolesByIdUser(int idUser, int nestedLevel = 0);
|
||||
|
||||
// TODO: скорее всего не используется
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="roleNames"></param>
|
||||
/// <returns></returns>
|
||||
bool HasAnyRoleOf(int idUser, IEnumerable<string> roleNames);
|
||||
|
||||
// TODO: скорее всего не используется
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="roleIds"></param>
|
||||
/// <returns></returns>
|
||||
bool HasAnyRoleOf(int idUser, IEnumerable<int> roleIds);
|
||||
|
||||
/// <summary>
|
||||
/// определяет есть ли у пользователя указанное разрешение
|
||||
/// </summary>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="permissionName"></param>
|
||||
/// <returns></returns>
|
||||
public bool HasPermission(int idUser, string permissionName);
|
||||
}
|
||||
}
|
||||
|
@ -3,13 +3,57 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// репозиторий для личных настроек пользователя
|
||||
/// </summary>
|
||||
public interface IUserSettingsRepository
|
||||
{
|
||||
/// <summary>
|
||||
/// код ошибки: ключ не найден
|
||||
/// </summary>
|
||||
public const int ErrorKeyNotFound = -1;
|
||||
|
||||
/// <summary>
|
||||
/// код ошибки: ключ уже занят
|
||||
/// </summary>
|
||||
public const int ErrorKeyIsUsed = -2;
|
||||
|
||||
/// <summary>
|
||||
/// Получить настройки по ключу для пользователя
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<object> GetOrDefaultAsync(int userId, string key, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Добавить настройки с ключем для пользователя
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> InsertAsync(int userId, string key, object value, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Отредактировать настройки с ключем для пользователя
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateAsync(int userId, string key, object value, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Удалить настройки с ключем для пользователя
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> DeleteAsync(int userId, string key, CancellationToken token);
|
||||
}
|
||||
}
|
@ -5,9 +5,26 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис создания композитной скважины
|
||||
/// </summary>
|
||||
public interface IWellCompositeService
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить секции композитной скважины
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<WellCompositeDto>> GetAsync(int idWell, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// сохранить секции композитной скважины
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="wellComposites"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> SaveAsync(int idWell, IEnumerable<WellCompositeDto> wellComposites, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -2,10 +2,30 @@
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис импорта/экспорта операций по скважине вводимых вручную
|
||||
/// </summary>
|
||||
public interface IWellOperationImportService
|
||||
{
|
||||
/// <summary>
|
||||
/// скачать в excel
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
Stream Export(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// скачать шаблон для заполнения
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Stream GetExcelTemplateStream();
|
||||
|
||||
/// <summary>
|
||||
/// закгрузить из excel список операций
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="stream"></param>
|
||||
/// <param name="deleteWellOperationsBeforeImport">Очистить старые перед импортом (если файл проходит валидацию)</param>
|
||||
void Import(int idWell, Stream stream, bool deleteWellOperationsBeforeImport = false);
|
||||
}
|
||||
}
|
@ -6,10 +6,33 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис операций по скважине
|
||||
/// </summary>
|
||||
public interface IWellOperationService
|
||||
{
|
||||
/// <summary>
|
||||
/// список названий операций
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerable<WellOperationCategoryDto> GetCategories();
|
||||
|
||||
// TODO: объединить параметры в объект запроса
|
||||
/// <summary>
|
||||
/// Получить список операций
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="operationType"></param>
|
||||
/// <param name="sectionTypeIds"></param>
|
||||
/// <param name="operationCategoryIds"></param>
|
||||
/// <param name="begin"></param>
|
||||
/// <param name="end"></param>
|
||||
/// <param name="minDepth"></param>
|
||||
/// <param name="maxDepth"></param>
|
||||
/// <param name="skip"></param>
|
||||
/// <param name="take"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<PaginationContainer<WellOperationDto>> GetOperationsAsync(
|
||||
int idWell,
|
||||
int? operationType = null,
|
||||
@ -23,16 +46,56 @@ namespace AsbCloudApp.Services
|
||||
int take = 32,
|
||||
CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Получить операцию по id
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<WellOperationDto> GetAsync(int id, CancellationToken token);
|
||||
|
||||
//todo: idWell Не нужен
|
||||
/// <summary>
|
||||
/// Добавить несколько операций за один раз
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="wellOperationDtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> InsertRangeAsync(int idWell,
|
||||
IEnumerable<WellOperationDto> wellOperationDtos, CancellationToken token);
|
||||
|
||||
//todo: id Не нужны
|
||||
/// <summary>
|
||||
/// Обновить существующую операцию
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="idOperation"></param>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateAsync(int idWell, int idOperation, WellOperationDto item,
|
||||
CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Удалить операции по id
|
||||
/// </summary>
|
||||
/// <param name="ids"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> DeleteAsync(IEnumerable<int> ids, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Список секций
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IDictionary<int, string> GetSectionTypes();
|
||||
|
||||
/// <summary>
|
||||
/// дата/время первой операции по скважине
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
DateTimeOffset? FirstOperationDate(int idWell);
|
||||
}
|
||||
}
|
||||
|
@ -6,21 +6,101 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис скважин
|
||||
/// </summary>
|
||||
public interface IWellService : ICrudService<WellDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис телеметрии
|
||||
/// </summary>
|
||||
ITelemetryService TelemetryService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Список скважин доступных компании
|
||||
/// </summary>
|
||||
/// <param name="idCompany"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<WellDto>> GetWellsByCompanyAsync(int idCompany, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// проверяет доступ к скважине для компании
|
||||
/// </summary>
|
||||
/// <param name="idCompany"></param>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<bool> IsCompanyInvolvedInWellAsync(int idCompany, int idWell, CancellationToken token);
|
||||
Task<string> GetWellCaptionByIdAsync(int idWell, CancellationToken token);
|
||||
//TODO: remove that
|
||||
Task<IEnumerable<CompanyDto>> GetCompaniesAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// проверяет доступ к скважине для компании
|
||||
/// </summary>
|
||||
/// <param name="idCompany"></param>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
bool IsCompanyInvolvedInWell(int idCompany, int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// получить название скважины по id
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> GetWellCaptionByIdAsync(int idWell, CancellationToken token);
|
||||
|
||||
//TODO: remove that
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<CompanyDto>> GetCompaniesAsync(int idWell, CancellationToken token);
|
||||
|
||||
//TODO: remove that
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="state"></param>
|
||||
/// <returns></returns>
|
||||
string GetStateText(int state);
|
||||
|
||||
/// <summary>
|
||||
/// дата получения последних данных от панели
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
DateTimeOffset GetLastTelemetryDate(int idWell);
|
||||
|
||||
//TODO: выяснить и удалить отсюда
|
||||
/// <summary>
|
||||
/// получение списка скважин куста в котором находится указанная скважина
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<int>> GetClusterWellsIdsAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// часовой пояс скважины
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
SimpleTimezoneDto GetTimezone(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// диапазон дат с данными телеметрии
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
DatesRangeDto GetDatesRange(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// Проверить задан ли у скважины часовой пояс и задать его если он не задан
|
||||
/// </summary>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task EnshureTimezonesIsSetAsync(CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ using System.Collections.Concurrent;
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// Репозиторий для хранения в оперативке данных (от панели)
|
||||
/// </summary>
|
||||
public class InstantDataRepository : ConcurrentDictionary<int, ConcurrentDictionary<Type, object>>
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user