doc all dtos.

This commit is contained in:
ngfrolov 2022-06-02 12:35:51 +05:00
parent 1e7f5fe654
commit 570cec4162
50 changed files with 996 additions and 45 deletions

View File

@ -5,16 +5,12 @@ namespace AsbCloudApp.Data
/// <summary>
/// Автоматически определяемая операция
/// </summary>
public class DetectedOperationDto
public class DetectedOperationDto : IId, IWellRelated
{
/// <summary>
/// Id в БД
/// </summary>
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// Id скважины
/// </summary>
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>

View File

@ -5,16 +5,12 @@ namespace AsbCloudApp.Data
/// <summary>
/// Ïàðàìåòðû êîðèäîðîâ áóðåíèÿ (äèàïàçîíû ïàðàìåòðîâ áóðåíèÿ)
/// </summary>
public class DrillFlowChartDto : IId
public class DrillFlowChartDto : IId, IWellRelated
{
/// <summary>
/// <inheritdoc/>
/// </summary>
public int Id { get; set; }
/// <summary>
/// Id ñêâàæèíû
/// </summary>
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>

View File

@ -1,45 +1,105 @@
namespace AsbCloudApp.Data
{
public class DrillParamsDto : IId
/// <summary>
/// DTO ïàðàìåòðîâ áóðåíèÿ
/// </summary>
public class DrillParamsDto : IId, IWellRelated
{
/// <inheritdoc/>
public int Id { get; set; }
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>
/// Ãëóáèíà íà÷àëà èíòåðâàëà äëÿ ýòèõ ïàðàìåòðîâ
/// </summary>
public double DepthStart { get; set; }
/// <summary>
/// Ãëóáèíà îêîí÷àíèÿ èíòåðâàëà äëÿ ýòèõ ïàðàìåòðîâ
/// </summary>
public double DepthEnd { get; set; }
/// <summary>
/// id well section type.
/// </summary>
public int IdWellSectionType { get; set; }
/// <summary>
/// axial load min.
/// </summary>
public double AxialLoadMin { get; set; }
/// <summary>
/// axial load avg.
/// </summary>
public double AxialLoadAvg { get; set; }
/// <summary>
/// axial load max.
/// </summary>
public double AxialLoadMax { get; set; }
/// <summary>
/// pressure min.
/// </summary>
public double PressureMin { get; set; }
/// <summary>
/// pressure avg.
/// </summary>
public double PressureAvg { get; set; }
/// <summary>
/// pressure max.
/// </summary>
public double PressureMax { get; set; }
/// <summary>
/// rotor torque min.
/// </summary>
public double RotorTorqueMin { get; set; }
/// <summary>
/// rotor torque avg.
/// </summary>
public double RotorTorqueAvg { get; set; }
/// <summary>
/// rotor torque max.
/// </summary>
public double RotorTorqueMax { get; set; }
/// <summary>
/// rotor speed min.
/// </summary>
public double RotorSpeedMin { get; set; }
/// <summary>
/// rotor speed avg.
/// </summary>
public double RotorSpeedAvg { get; set; }
/// <summary>
/// rotor speed max.
/// </summary>
public double RotorSpeedMax { get; set; }
/// <summary>
/// flow min.
/// </summary>
public double FlowMin { get; set; }
/// <summary>
/// flow avg.
/// </summary>
public double FlowAvg { get; set; }
/// <summary>
/// flow max.
/// </summary>
public double FlowMax { get; set; }
}
}

View File

@ -2,6 +2,9 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO состояния формирования программы бурения
/// </summary>
public class DrillingProgramStateDto
{
/// <summary>
@ -11,15 +14,41 @@ namespace AsbCloudApp.Data
/// 3 - готова
/// </summary>
public int IdState { get; set; }
/// <summary>
/// Ошибка при формировании
/// </summary>
public DrillingProgramCreateError Error { get; set; }
/// <summary>
/// Файл сформированной программы бурения
/// </summary>
public FileInfoDto Program { get; set; }
/// <summary>
/// Разрешение редактировать части программы бурения
/// </summary>
public bool PermissionToEdit { get; set; }
/// <summary>
/// Список частей программы бурения
/// </summary>
public IEnumerable<DrillingProgramPartDto> Parts { get; set; }
}
/// <summary>
/// DTO ошибки при создании программы бурения
/// </summary>
public class DrillingProgramCreateError
{
/// <summary>
/// Текст ошибки для отображения пользователю
/// </summary>
public string Message { get; set; }
/// <summary>
/// Текст ошибки для разработчика
/// </summary>
public string Exception { get; set; }
}
}

View File

@ -1,9 +1,21 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO категории файла
/// </summary>
public class FileCategoryDto : IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// полное название
/// </summary>
public string Name { get; set; }
/// <summary>
/// сокращенное название
/// </summary>
public string ShortName { get; set; }
}
}

View File

@ -3,17 +3,55 @@ using System.Collections.Generic;
namespace AsbCloudApp.Data
{
public class FileInfoDto : IId
/// <summary>
/// DTO информации о файле. Используется для загрузки файла.
/// </summary>
public class FileInfoDto : IId, IWellRelated
{
/// <inheritdoc/>
public int Id { get; set; }
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>
/// id категории файла
/// </summary>
public int IdCategory { get; set; }
/// <summary>
/// Id автора
/// </summary>
public int? IdAuthor { get; set; }
/// <summary>
/// имя файла
/// </summary>
public string Name { get; set; }
/// <summary>
/// дата загрузки
/// </summary>
public DateTime UploadDate { get; set; }
/// <summary>
/// размер в байтах
/// </summary>
public long Size { get; set; }
/// <summary>
/// инфо о публикации файла на гугл диске
/// </summary>
public FilePublishInfoDto PublishInfo { get; set; }
/// <summary>
/// DTO автора
/// </summary>
public UserDto Author { get; set; }
/// <summary>
/// список отметок файла
/// </summary>
public IEnumerable<FileMarkDto> FileMarks { get; set; }
}
}

View File

@ -2,22 +2,41 @@ using System;
namespace AsbCloudApp.Data
{
public class FileMarkDto
/// <summary>
/// Отметка для файла
/// </summary>
public class FileMarkDto: IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// id файла
/// </summary>
public int IdFile { get; set; }
/// <summary>
/// 0 - отклонен
/// 1 - согласован
/// </summary>
public int IdMarkType { get; set; }
/// <summary>
/// дата/время добавления.
/// Необязательно указывать в запросе на создание.
/// </summary>
public DateTime DateCreated { get; set; }
/// <summary>
/// Полезный комментарий
/// </summary>
public string Comment { get; set; }
/// <summary>
/// признак удаления отметки
/// </summary>
public bool IsDeleted { get; set; }
/// <summary>
/// Пользователь создающий отметку.
/// Необязательно указывать в запросе на создание.

View File

@ -2,10 +2,24 @@ using System;
namespace AsbCloudApp.Data
{
/// <summary>
/// инфо о файле на гугл диске
/// </summary>
public class FilePublishInfoDto
{
/// <summary>
/// Логин пользователя выложившего файл на диск
/// </summary>
public string PublisherLogin { get; set; }
/// <summary>
/// дата публикации
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// ссылка для скачивания
/// </summary>
public string WebStorageFileUrl { get; set; }
}
}

View File

@ -3,15 +3,21 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// Интерфейс записи данных телеметрии
/// Telemetry related dto
/// </summary>
public interface ITelemetryData
public interface ITelemetryRelated
{
/// <summary>
/// ИД телеметрии
/// </summary>
int IdTelemetry { get; set; }
}
/// <summary>
/// Интерфейс записи данных телеметрии
/// </summary>
public interface ITelemetryData: ITelemetryRelated
{
/// <summary>
/// Отметка времени для этой записи
/// </summary>

View File

@ -0,0 +1,13 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// Well related DTO
/// </summary>
public interface IWellRelated
{
/// <summary>
/// Well id in db
/// </summary>
public int IdWell { get; set; }
}
}

View File

@ -3,18 +3,35 @@ using System.Collections.Generic;
namespace AsbCloudApp.Data
{
public class MeasureDto : IId
/// <summary>
/// инфо о результатах замера
/// </summary>
public class MeasureDto : IId, IWellRelated
{
/// <inheritdoc/>
public int Id { get; set; }
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>
/// Id категории замера
/// </summary>
public int IdCategory { get; set; }
/// <summary>
/// название категории замера
/// </summary>
public string CategoryName { get; set; }
/// <summary>
/// отметка времени замера
/// </summary>
public DateTime Timestamp { get; set; }
/// <summary>
/// данные замера
/// </summary>
public Dictionary<string, object> Data { get; set; }
}
}

View File

@ -7,16 +7,32 @@ namespace AsbCloudApp.Data
/// </summary>
public class MessageDto : IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// дата появления события
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// категория события
/// </summary>
public int CategoryId { get; set; }
/// <summary>
/// глубина забоя, при котором событие возникло
/// </summary>
public double WellDepth { get; set; }
/// <summary>
/// пользователь панели оператора
/// </summary>
public string User { get; set; }
/// <summary>
/// текст сообщения
/// </summary>
public string Message { get; set; }
}
}

View File

@ -8,11 +8,18 @@ namespace AsbCloudApp.Data
/// <typeparam name="T"></typeparam>
public class PaginationContainer<T>
{
/// <summary>
/// конструктор
/// </summary>
public PaginationContainer()
{
Items = new List<T>(4);
}
/// <summary>
/// конструктор
/// </summary>
/// <param name="capacity"></param>
public PaginationContainer(int capacity)
{
Items = new List<T>(capacity);

View File

@ -1,9 +1,22 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// Разрешение для группы пользователей сделать что-либо через web-api. <br/>
/// применяется как возможность доступа к Endpoint. <br/>
/// </summary>
public class PermissionDto : IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// Название
/// </summary>
public string Name { get; set; }
/// <summary>
/// Описание
/// </summary>
public string Description { get; set; }
}
}

View File

@ -1,8 +1,19 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO объединяющее плановые и фактические значения
/// </summary>
/// <typeparam name="T"></typeparam>
public class PlanFactBase<T>
{
/// <summary>
/// Плановое значение
/// </summary>
public T Plan { get; set; }
/// <summary>
/// Фактическое значение
/// </summary>
public T Fact { get; set; }
}
}

View File

@ -5,8 +5,19 @@
/// </summary>
public class PlanFactPredictBase<T>
{
/// <summary>
/// плановое значение
/// </summary>
public T Plan { get; set; }
/// <summary>
/// фактическое значение
/// </summary>
public T Fact { get; set; }
/// <summary>
/// предсказанное значение
/// </summary>
public T Predict { get; set; }
}
}

View File

@ -1,10 +1,28 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO прогресса генерации рапорта-диаграммы
/// </summary>
public class ReportProgressDto
{
/// <summary>
/// прогресс 0 - 100%
/// </summary>
public float Progress { get; set; }
/// <summary>
/// название текущей операции генерации
/// </summary>
public string Operation { get; set; }
/// <summary>
/// номер текущей страницы
/// </summary>
public int CurrentPage { get; set; }
/// <summary>
/// предполагаемое суммарное количество страниц
/// </summary>
public int TotalPages { get; set; }
}
}

View File

@ -2,16 +2,50 @@
namespace AsbCloudApp.Data
{
public class ReportPropertiesDto : IId
/// <summary>
/// DTO формирования рапорта
/// </summary>
public class ReportPropertiesDto : IId, IWellRelated
{
/// <inheritdoc/>
public int Id { get; set; }
public string Name { get; set; }
public FileInfoDto File { get; set; }
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>
/// название
/// </summary>
public string Name { get; set; }
/// <summary>
/// <see cref="FileInfoDto"/>
/// </summary>
public FileInfoDto File { get; set; }
/// <summary>
/// Дата формирования
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// Дата начала рапорта
/// </summary>
public DateTime Begin { get; set; }
/// <summary>
/// Дата окончания рапорта
/// </summary>
public DateTime End { get; set; }
/// <summary>
/// шаг между точками диаграммы
/// </summary>
public int Step { get; set; }
/// <summary>
/// формат файла
/// </summary>
public string Format { get; set; }
}
}

View File

@ -2,18 +2,64 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO журнала запросов
/// </summary>
public class RequestLogDto
{
/// <summary>
/// логин пользователя
/// </summary>
public string UserLogin { get; set; }
/// <summary>
/// Id пользователя
/// </summary>
public int UserId { get; set; }
/// <summary>
/// IP адрес пользователя
/// </summary>
public string UserIp { get; set; }
/// <summary>
/// метод запроса (GET, POST,..)
/// </summary>
public string RequestMethod { get; set; }
/// <summary>
/// url
/// </summary>
public string RequestPath { get; set; }
/// <summary>
/// Referer
/// </summary>
public string Referer { get; set; }
/// <summary>
/// продолжительность выполнения
/// </summary>
public long ElapsedMilliseconds { get; set; }
/// <summary>
/// http status [200 - Ok, ...]
/// </summary>
public int Status { get; set; }
/// <summary>
/// сообщение об ошибке, если она произошла
/// </summary>
public string ExceptionMessage { get; set; }
/// <summary>
/// метка времени запроса
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// стек вызовов
/// </summary>
public string ExceptionStack { get; set; }
}
}

View File

@ -2,15 +2,49 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO статистики запросов по пользователю
/// </summary>
public class RequestLogUserDto
{
/// <summary>
/// Id пользователя
/// </summary>
public int UserId { get; set; }
/// <summary>
/// логин
/// </summary>
public string Login { get; set; }
/// <summary>
/// IP адрес пользователя
/// </summary>
public string Ip { get; set; }
/// <summary>
/// время выполнения запроса
/// </summary>
public long ElapsedMs { get; set; }
/// <summary>
/// метка времени последнего запроса
/// </summary>
public DateTime LastDate { get; set; }
/// <summary>
/// кол-во запросов
/// </summary>
public long Requests { get; set; }
/// <summary>
/// кол-во ошибок
/// </summary>
public long Errors { get; set; }
/// <summary>
/// DTO пользователя
/// </summary>
public UserDto User { get; set; }
}
}

View File

@ -1,12 +1,38 @@
namespace AsbCloudApp.Data.SAUB
{
/// <summary>
/// Описание шаблона события панели оператора
/// </summary>
public class EventDto : IId
{
/// <summary>
/// id события
/// </summary>
public int Id { get; set; }
/// <summary>
/// шаблон текста сообщения
/// </summary>
public string Message { get; set; }
/// <summary>
/// id категории события
/// </summary>
public int IdCategory { get; set; }
/// <summary>
/// переменная сервера обмена информацией с полевым оборудованием
/// </summary>
public string Tag { get; set; }
/// <summary>
/// тип определения наступления события
/// </summary>
public int EventType { get; set; }
/// <summary>
/// флаг, следует ли воспроизводить звук при наступлении события
/// </summary>
public int IdSound { get; set; }
}
}

View File

@ -1,12 +1,38 @@
namespace AsbCloudApp.Data.SAUB
{
/// <summary>
/// DTO рекомендации уставок передаваемых на панель оператора
/// </summary>
public class SetpointInfoDto
{
/// <summary>
/// отображаемое название уставки
/// </summary>
public string DisplayName { get; set; }
/// <summary>
/// настоящее название уставки (имя переменной в панели оператора)
/// </summary>
public string Name { get; set; }
/// <summary>
/// единицы измерения
/// </summary>
public string Units { get; set; }
/// <summary>
/// комментарий
/// </summary>
public string Comment { get; set; }
/// <summary>
/// макс. значение
/// </summary>
public double Max { get; set; }
/// <summary>
/// мин значение
/// </summary>
public double Min { get; set; }
}
}

View File

@ -3,25 +3,55 @@ using System.Collections.Generic;
namespace AsbCloudApp.Data.SAUB
{
public class SetpointsRequestDto : IId
/// <summary>
/// DTO запроса для предложения по изменению уставок на панели оператора
/// </summary>
public class SetpointsRequestDto : IId, IWellRelated
{
/// <inheritdoc/>
public int Id { get; set; }
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>
/// Id автора запроса
/// </summary>
public int IdAuthor { get; set; }
/// <summary>
/// текущее состояние запроса 0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело
/// </summary>
public int IdState { get; set; }
/// <summary>
/// отметка времени создания запроса
/// </summary>
public DateTime UploadDate { get; set; }
/// <summary>
/// время в секундах актуальности этого запроса
/// </summary>
public int ObsolescenceSec { get; set; }
/// <summary>
/// набор уставок: {"название переменной панели"; "рекомендуемое значение"}
/// </summary>
public Dictionary<string, double> Setpoints { get; set; }
/// <summary>
/// Комментарий для оператора панели
/// </summary>
public string Comment { get; set; }
/// <summary>
/// DTO скважины
/// </summary>
public WellDto Well { get; set; }
/// <summary>
/// DTO автора
/// </summary>
public UserDto Author { get; set; }
}
}

View File

@ -7,7 +7,14 @@ namespace AsbCloudApp.Data.SAUB
/// </summary>
public class TelemetryDataSaubDto : ITelemetryData
{
/// <summary>
/// метка времени данных
/// </summary>
public DateTime DateTime { get; set; }
/// <summary>
/// метка времени данных (legacy)
/// </summary>
public DateTime Date // TODO: remove this legacy after all panels updated
{
get { return DateTime; }
@ -97,44 +104,104 @@ namespace AsbCloudApp.Data.SAUB
/// </summary>
public float? PressureIdle { get; set; }
/// <summary>
/// действующее задание давления
/// </summary>
public float? PressureSp { get; set; }
/// <summary>
/// задание давления для роторного режима
/// </summary>
public float? PressureSpRotor { get; set; }
/// <summary>
/// задание давления для режима слайда
/// </summary>
public float? PressureSpSlide { get; set; }
/// <summary>
/// задание давления для проработки
/// </summary>
public float? PressureSpDevelop { get; set; }
/// <summary>
/// ограничение макс перепада давления
/// </summary>
public float? PressureDeltaLimitMax { get; set; }
/// <summary>
/// осевая нагрузка
/// </summary>
public float? AxialLoad { get; set; }
/// <summary>
/// задание осевой нагрузки
/// </summary>
public float? AxialLoadSp { get; set; }
/// <summary>
/// ограничение макс. осевой нагрузки
/// </summary>
public float? AxialLoadLimitMax { get; set; }
/// <summary>
/// Вес на крюке
/// </summary>
public float? HookWeight { get; set; }
/// <summary>
/// Вес на крюке на х.х.
/// </summary>
public float? HookWeightIdle { get; set; }
/// <summary>
/// ограничение мин веса на крюке
/// </summary>
public float? HookWeightLimitMin { get; set; }
/// <summary>
/// ограничение макс веса на крюке
/// </summary>
public float? HookWeightLimitMax { get; set; }
/// <summary>
/// момент ротора
/// </summary>
public float? RotorTorque { get; set; }
/// <summary>
/// момент ротора на х.х.
/// </summary>
public float? RotorTorqueIdle { get; set; }
/// <summary>
/// задание момента ротора
/// </summary>
public float? RotorTorqueSp { get; set; }
/// <summary>
/// ограничение момента ротора
/// </summary>
public float? RotorTorqueLimitMax { get; set; }
/// <summary>
/// скорость ротора
/// </summary>
public float? RotorSpeed { get; set; }
/// <summary>
/// расход
/// </summary>
public float? Flow { get; set; }
/// <summary>
/// расход на х.х.
/// </summary>
public float? FlowIdle { get; set; }
/// <summary>
/// ограничение макс расхода
/// </summary>
public float? FlowDeltaLimitMax { get; set; }
/// <summary>
@ -147,6 +214,9 @@ namespace AsbCloudApp.Data.SAUB
/// </summary>
public short? MseState { get; set; }
/// <summary>
/// MSE
/// </summary>
public float? Mse { get; set; }
}
}

View File

@ -2,8 +2,10 @@
namespace AsbCloudApp.Data.SAUB
{
#pragma warning disable CS1591 // Отсутствует комментарий XML для открытого видимого типа или члена
public class TelemetryDataSpinDto : ITelemetryData
{
/// <inheritdoc/>
public int IdTelemetry { get; set; }
public DateTime DateTime { get; set; }
public DateTime Date // TODO: remove this legacy after all panels updated
@ -75,4 +77,5 @@ namespace AsbCloudApp.Data.SAUB
public short? State { get; set; }
public float? BreakAngleLeft { get; set; }
}
#pragma warning restore CS1591 // Отсутствует комментарий XML для открытого видимого типа или члена
}

View File

@ -2,18 +2,64 @@
namespace AsbCloudApp.Data.SAUB
{
/// <summary>
/// общая информация о панели оператора
/// </summary>
public class TelemetryInfoDto
{
/// <summary>
/// дата начала бурения (заполнения данных на панели)
/// </summary>
public DateTime DrillingStartDate { get; set; }
/// <summary>
/// идентификатор временной зоны
/// </summary>
public string TimeZoneId { get; set; }
/// <summary>
/// смещение в часах относительно UTC
/// </summary>
public double TimeZoneOffsetTotalHours { get; set; }
/// <summary>
/// название скважины
/// </summary>
public string Well { get; set; }
/// <summary>
/// название куста
/// </summary>
public string Cluster { get; set; }
/// <summary>
/// название заказчика
/// </summary>
public string Customer { get; set; }
/// <summary>
/// название месторождения
/// </summary>
public string Deposit { get; set; }
/// <summary>
/// версия ПО панели оператора
/// </summary>
public string HmiVersion { get; set; }
/// <summary>
/// версия ПО ПЛК САУБ
/// </summary>
public string SaubPlcVersion { get; set; }
/// <summary>
/// версия ПО ПЛК Спин мастер
/// </summary>
public string SpinPlcVersion { get; set; }
/// <summary>
/// комментарий
/// </summary>
public string Comment { get; set; }
}
}

View File

@ -7,14 +7,49 @@ namespace AsbCloudApp.Data.SAUB
/// </summary>
public class TelemetryMessageDto : IId
{
/// <summary>
/// Id сообщения в базе панели оператора
/// </summary>
public int Id { get; set; }
/// <summary>
/// отметка времени
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// глубина забоя
/// </summary>
public double WellDepth { get; set; }
/// <summary>
/// Id события которое генерировало это сообщение
/// </summary>
public int IdEvent { get; set; }
/// <summary>
/// идентификатор пользователя телеметрии
/// </summary>
public int? IdTelemetryUser { get; set; }
/// <summary>
/// аргумент №0 для подстановки в шаблон сообщения
/// </summary>
public string Arg0 { get; set; }
/// <summary>
/// аргумент №1 для подстановки в шаблон сообщения
/// </summary>
public string Arg1 { get; set; }
/// <summary>
/// аргумент №2 для подстановки в шаблон сообщения
/// </summary>
public string Arg2 { get; set; }
/// <summary>
/// аргумент №3 для подстановки в шаблон сообщения
/// </summary>
public string Arg3 { get; set; }
}
}

View File

@ -1,15 +1,31 @@
namespace AsbCloudApp.Data.SAUB
{
/// <summary>
/// Пользователь панели оператора
/// </summary>
public class TelemetryUserDto : IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// Имя
/// </summary>
public string Name { get; set; }
/// <summary>
/// Фамилия
/// </summary>
public string Surname { get; set; }
/// <summary>
/// Отчество
/// </summary>
public string Patronymic { get; set; }
/// <summary>
/// Уровень доступа
/// </summary>
public int Level { get; set; }
}
}

View File

@ -2,8 +2,14 @@
namespace AsbCloudApp.Data.SAUB
{
/// <summary>
/// DTO телеметрии наработки талевого каната
/// </summary>
public class TelemetryWirelineRunOutDto
{
/// <summary>
/// отметка времени
/// </summary>
public DateTime DateTime { get; set; }
/// <summary>

View File

@ -5,23 +5,19 @@ namespace AsbCloudApp.Data
/// <summary>
/// Описание данных графика работ
/// </summary>
public class ScheduleDto : IId
public class ScheduleDto : IId, IWellRelated
{
/// <summary>
/// Идентификатор в БД
/// </summary>
/// <inheritdoc/>
public int Id { get; set; }
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>
/// Идентификатор бурильщика
/// </summary>
public int IdDriller { get; set; }
/// <summary>
/// Идентификатор скважины
/// </summary>
public int IdWell { get; set; }
/// <summary>
/// Начало смены
/// </summary>

View File

@ -1,11 +1,26 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// временная зона
/// </summary>
public class SimpleTimezoneDto
{
/// <summary>
/// смещение в часах относительно UTC
/// </summary>
public double Hours { get; set; }
/// <summary>
/// идентификатор часовой зоны
/// </summary>
public string TimezoneId { get; set; }
/// <summary>
/// запрет на переопределение
/// </summary>
public bool IsOverride { get; set; }
/// <inheritdoc/>
public override bool Equals(object obj)
{
if (obj is SimpleTimezoneDto tTimeZone
@ -16,6 +31,7 @@ namespace AsbCloudApp.Data
return false;
}
/// <inheritdoc/>
public override int GetHashCode()
=> Hours.GetHashCode()
| TimezoneId.GetHashCode()

View File

@ -2,10 +2,22 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO статистики скважин куста
/// </summary>
public class StatClusterDto : IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// название куста
/// </summary>
public string Caption { get; set; }
/// <summary>
/// список статистик скважин куста
/// </summary>
public IEnumerable<StatWellDto> StatsWells { get; set; }
}
}

View File

@ -2,6 +2,9 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO статистики операций
/// </summary>
public class StatOperationsDto
{
/// <summary>

View File

@ -1,8 +1,16 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// План-факт статистики по операциям за секцию скважины
/// </summary>
public class StatSectionDto : PlanFactBase<StatOperationsDto>, IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// название секции
/// </summary>
public string Caption { get; set; }
}
}

View File

@ -3,16 +3,52 @@ using System.Collections.Generic;
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO статистики по операциям за скважину
/// </summary>
public class StatWellDto : IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// название
/// </summary>
public string Caption { get; set; }
/// <summary>
/// тип скважины
/// </summary>
public string WellType { get; set; }
/// <summary>
/// ИД состояния скважины
/// </summary>
public int IdState { get; set; }
/// <summary>
/// текст состояния скважины
/// </summary>
public string State { get; set; }
/// <summary>
/// дата прихода последней телеметрии
/// </summary>
public DateTime LastTelemetryDate { get; set; }
/// <summary>
/// Статистика по секциям
/// </summary>
public IEnumerable<StatSectionDto> Sections { get; set; }
/// <summary>
/// статистика за всю скважину
/// </summary>
public PlanFactBase<StatOperationsDto> Total { get; set; }
/// <summary>
/// компании участвующие в строительстве скважины
/// </summary>
public IEnumerable<CompanyDto> Companies { get; set; }
}
}

View File

@ -1,17 +1,62 @@
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO пользователя платформы
/// </summary>
public class UserDto : IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// логин
/// </summary>
public string Login { get; set; }
/// <summary>
/// Имя
/// </summary>
public string Name { get; set; }
/// <summary>
/// Фамилия
/// </summary>
public string Surname { get; set; }
/// <summary>
/// Отчество
/// </summary>
public string Patronymic { get; set; }
/// <summary>
/// Email
/// </summary>
public string Email { get; set; }
/// <summary>
/// Phone
/// </summary>
public string Phone { get; set; }
/// <summary>
/// Должность
/// </summary>
public string Position { get; set; }
/// <summary>
/// Id компании
/// </summary>
public int? IdCompany { get; set; }
/// <summary>
/// Id состояния пользователя
/// </summary>
public short? IdState { get; set; }
/// <summary>
/// DTO компании
/// </summary>
public CompanyDto Company { get; set; }
}
}

View File

@ -2,8 +2,12 @@
namespace AsbCloudApp.Data
{
/// <inheritdoc/>
public class UserExtendedDto : UserDto
{
/// <summary>
/// Роли пользователя
/// </summary>
public IEnumerable<string> RoleNames { get; set; }
}
}

View File

@ -1,7 +1,11 @@
namespace AsbCloudApp.Data
{
/// <inheritdoc/>
public class UserRegistrationDto : UserDto
{
/// <summary>
/// пароль, используется только при регистрации.
/// </summary>
public string Password { get; set; }
}
}

View File

@ -3,14 +3,37 @@ using System.Text.Json.Serialization;
namespace AsbCloudApp.Data
{
/// <summary>
/// Роль пользователя платформы
/// </summary>
public class UserRoleDto : IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// название
/// </summary>
public string Caption { get; set; }
/// <summary>
/// id типа роли
/// </summary>
public int IdType { get; set; }
/// <summary>
/// список разрешений
/// </summary>
public IEnumerable<PermissionDto> Permissions { get; set; }
/// <summary>
/// Включенные роли
/// </summary>
public virtual ICollection<UserRoleDto> Roles { get; set; }
/// <summary>
/// Пользователи в роли
/// </summary>
[JsonIgnore]
public virtual ICollection<UserDto> Users { get; set; }

View File

@ -2,9 +2,17 @@
namespace AsbCloudApp.Data
{
/// <inheritdoc/>
public class UserTokenDto : UserExtendedDto
{
/// <summary>
/// все разрешения пользователя
/// </summary>
public IEnumerable<PermissionDto> Permissions { get; set; }
/// <summary>
/// bearer token (для работы с web-api)
/// </summary>
public string Token { get; set; }
}
}

View File

@ -5,14 +5,20 @@ namespace AsbCloudApp.Data.WITS
/// <summary>
/// This is base class for all WITS-0 records
/// </summary>
public abstract class RecordBaseDto : ITelemetryData
public abstract class RecordBaseDto : IId, ITelemetryData
{
/// <inheritdoc/>
public int Id { get; set; }
/// <inheritdoc/>
public int IdTelemetry { get; set; }
/// <inheritdoc/>
public DateTime DateTime { get; set; }
/// <summary>
/// îòìåòêà âðåìåíè
/// </summary>
public int TimeStamp { get; set; }
/// <summary>

View File

@ -1,11 +1,21 @@
namespace AsbCloudApp.Data
{
public class WellCompositeDto
/// <summary>
/// DTO элемент композитной скважины
/// </summary>
public class WellCompositeDto : IWellRelated
{
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>
/// id скважины входящей в композитную для этой
/// </summary>
public int IdWellSrc { get; set; }
/// <summary>
/// id секции скважины входящей в композитную для этой
/// </summary>
public int IdWellSectionType { get; set; }
}
}

View File

@ -1,11 +1,21 @@
namespace AsbCloudApp.Data
{
public class WellOperationCategoryDto
/// <summary>
/// DTO категория операции
/// </summary>
public class WellOperationCategoryDto: IId
{
/// <inheritdoc/>
public int Id { get; set; }
/// <summary>
/// название
/// </summary>
public string Name { get; set; }
/// <summary>
/// код операции
/// </summary>
public int Code { get; set; }
}
}

View File

@ -2,20 +2,40 @@
namespace AsbCloudApp.Data
{
public class WellOperationDto : IId
/// <summary>
/// Операции на скважине (заведенные пользователем)
/// </summary>
public class WellOperationDto : IId, IWellRelated
{
/// <inheritdoc/>
public int Id { get; set; }
/// <inheritdoc/>
public int IdWell { get; set; }
/// <summary>
/// id секции скважины
/// </summary>
public int IdWellSectionType { get; set; }
/// <summary>
/// название секции скважины
/// </summary>
public string WellSectionTypeName { get; set; }
/// <summary>
/// id категории операции
/// </summary>
public int IdCategory { get; set; }
/// <summary>
/// название категории операции
/// </summary>
public string CategoryName { get; set; }
/// <summary>
/// дополнительная информация по операции
/// </summary>
public string CategoryInfo { get; set; }
/// <summary>

View File

@ -7,22 +7,40 @@ namespace AsbCloudApp.Exceptions
/// </summary>
public class ArgumentInvalidException : Exception
{
/// <summary>
/// название аргумента
/// </summary>
public string ParamName { get; }
/// <summary>
/// конструктор
/// </summary>
/// <param name="message"></param>
/// <param name="paramName"></param>
public ArgumentInvalidException(string message, string paramName = default)
: base(message)
{
ParamName = paramName;
}
/// <summary>
/// преобразование в объект валидации
/// </summary>
/// <returns></returns>
public object ToValaidationErrorObject()
=> MakeValidationError(ParamName, Message);
/// <summary>
/// фабрика объекта валидации
/// </summary>
/// <param name="paramName"></param>
/// <param name="errors"></param>
/// <returns></returns>
public static object MakeValidationError(string paramName, params string[] errors)
=> new
{
name = paramName,
errors = errors,
errors,
};
}
}

View File

@ -5,25 +5,78 @@ using System.Threading.Tasks;
namespace AsbCloudApp.Services
{
/// <summary>
/// The параметры бурения service.
/// </summary>
public interface IDrillParamsService : ICrudService<DrillParamsDto>
{
/// <summary>
/// default параметры бурения
/// </summary>
/// <param name="idWell">The id well.</param>
/// <param name="startDepth">The start depth.</param>
/// <param name="endDepth">The end depth.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task<DrillParamsDto> GetDefaultDrillParamsAsync(int idWell, double startDepth,
double endDepth, CancellationToken token = default);
/// <summary>
/// Все за скважину
/// </summary>
/// <param name="idWell">The id well.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task<IEnumerable<DrillParamsDto>> GetAllAsync(int idWell,
CancellationToken token = default);
/// <summary>
/// Все скважину по композитной скважине
/// </summary>
/// <param name="idWell">The id well.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task<IEnumerable<DrillParamsDto>> GetCompositeAllAsync(int idWell,
CancellationToken token = default);
/// <summary>
/// Добавить
/// </summary>
/// <param name="idWell">The id well.</param>
/// <param name="dto">The dto.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task<int> InsertAsync(int idWell, DrillParamsDto dto,
CancellationToken token = default);
/// <summary>
/// Добавить несколько
/// </summary>
/// <param name="idWell">The id well.</param>
/// <param name="dtos">The dtos.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task<int> InsertRangeAsync(int idWell, IEnumerable<DrillParamsDto> dtos,
CancellationToken token = default);
/// <summary>
/// Редактировать
/// </summary>
/// <param name="idWell">The id well.</param>
/// <param name="dtoId">The dto id.</param>
/// <param name="dto">The dto.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task<int> UpdateAsync(int idWell, int dtoId, DrillParamsDto dto,
CancellationToken token = default);
/// <summary>
/// Удалить старые и сохранить новые
/// </summary>
/// <param name="idWell">The id well.</param>
/// <param name="dtos">The dtos.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task<int> SaveAsync(int idWell, IEnumerable<DrillParamsDto> dtos, CancellationToken token = default);
}
}

View File

@ -26,6 +26,7 @@ namespace AsbCloudApp.Services
/// </summary>
/// <param name="from">старая (исходная)</param>
/// <param name="to">новая</param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> MergeAsync(int from, int to, CancellationToken token);
void SaveRequestDate(string uid, DateTimeOffset remoteDate);

View File

@ -6,12 +6,45 @@ using System.Threading.Tasks;
namespace AsbCloudApp.Services
{
/// <summary>
/// The wits record repository.
/// </summary>
public interface IWitsRecordRepository<TDto>
where TDto : ITelemetryData
{
/// <summary>
/// Добавить новые данные
/// </summary>
/// <param name="idTelemetry">The id telemetry.</param>
/// <param name="dtos">The dtos.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task SaveDataAsync(int idTelemetry, IEnumerable<TDto> dtos, CancellationToken token);
/// <summary>
/// Получить данные по телеметрии за период
/// </summary>
/// <param name="idTelemetry"></param>
/// <param name="begin"></param>
/// <param name="end"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetAsync(int idTelemetry, DateTime begin, DateTime end, CancellationToken token);
/// <summary>
/// получить массив из одной записи самой поздней по дате
/// </summary>
/// <param name="idTelemetry">The id telemetry.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task<IEnumerable<TDto>> GetLastAsync(int idTelemetry, CancellationToken token);
/// <summary>
/// получить статистику по всему архиву: дата самой ранней записи, самой поздней и общее количество
/// </summary>
/// <param name="idTelemetry">The id telemetry.</param>
/// <param name="token">The token.</param>
/// <returns>A Task.</returns>
Task<(DateTime begin, DateTime end, int count)?> GetStatAsync(int idTelemetry, CancellationToken token);
}
}

View File

@ -32,4 +32,9 @@
<ProjectReference Include="..\AsbCloudInfrastructure\AsbCloudInfrastructure.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
</Project>

View File

@ -1,8 +0,0 @@
{
"profiles": {
"WSL": {
"commandName": "WSL2",
"distributionName": ""
}
}
}