using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; namespace AsbCloudApp.Data; /// <summary> /// базовая информация о скважине /// </summary> public class WellWithTimezoneDto : WellInfoDto { /// <inheritdoc/> [Required] public SimpleTimezoneDto Timezone { get; set; } = null!; /// <summary> /// 0 - неизвестно, /// 1 - в работе, /// 2 - завершена /// </summary> [Required] public int IdState { get; set; } } /// <summary> /// Скважина /// </summary> public class WellDto : WellInfoDto, IMapPoint, IId { /// <inheritdoc/> [Range(-90, 90, ErrorMessage = "Допустимые значения широты от -90 до 90")] public double? Latitude { get; set; } /// <inheritdoc/> [Range(-180, 180, ErrorMessage = "Допустимые значения долготы от -180 до 180")] public double? Longitude { get; set; } /// <inheritdoc/> [Required] public SimpleTimezoneDto Timezone { get; set; } = null!; /// <summary> /// Название типа скважины /// </summary> public string? WellType { get; set; } /// <summary> /// ID типа скважины /// </summary> [Range(1, 2, ErrorMessage = "Тип скважины указан неправильно.")] public int IdWellType { get; set; } /// <summary> /// ID куста /// </summary> public int IdCluster { get; set; } /// <summary> /// 0 - неизвестно, /// 1 - в работе, /// 2 - завершена /// </summary> [Range(0, 2, ErrorMessage = "Текущее состояние работы скважины указано неправильно.")] public int IdState { get; set; } /// <summary> /// Дата/время первой операции /// </summary> public DateTimeOffset? StartDate { get; set; } /// <summary> /// Дата/время кода приходили данные последний раз /// </summary> public DateTimeOffset LastTelemetryDate { get; set; } /// <summary> /// ID телеметрии /// </summary> public int? IdTelemetry { get; set; } /// <summary> /// Объект телеметрии (инфо от панели оператора) /// </summary> public TelemetryBaseDto? Telemetry { get; set; } /// <summary> /// Компании участвующие в работах на скважине /// </summary> public IEnumerable<CompanyDto> Companies { get; set; } = Enumerable.Empty<CompanyDto>(); }