using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using AsbCloudApp.Data.DailyReport.Blocks; using AsbCloudApp.Data.DailyReport.Blocks.Sign; using AsbCloudApp.Data.DailyReport.Blocks.Subsystems; using AsbCloudApp.Data.DailyReport.Blocks.TimeBalance; using AsbCloudApp.Data.DailyReport.Blocks.WellOperation; namespace AsbCloudApp.Data.DailyReport; /// <summary> /// Суточный отчёт /// </summary> public class DailyReportDto : IId, IWellRelated { /// <inheritdoc/> [Required] public int Id { get; set; } /// <inheritdoc/> [Required] public int IdWell { get; set; } /// <summary> /// Название скважины /// </summary> [Required] public string WellCaption { get; set; } = null!; /// <summary> /// Название типа скважины /// </summary> public string? WellType { get; set; } /// <summary> /// Название куста /// </summary> public string? Cluster { get; set; } /// <summary> /// Заказчик /// </summary> public string? Customer { get; set; } /// <summary> /// Подрядчик /// </summary> public string? Contractor { get; set; } /// <summary> /// Месторождение /// </summary> public string? Deposit { get; set; } /// <summary> /// Глубина забоя на дату начала интервала /// </summary> public double? DepthStart { get; set; } /// <summary> /// Глубина забоя на дату окончания интервала /// </summary> public double? DepthEnd { get; set; } /// <summary> /// Дата формирования отчёта /// </summary> [Required] public DateOnly Date { get; set; } /// <summary> /// Дата последнего обновления /// </summary> public DateTime? DateLastUpdate { get; set; } /// <summary> /// Блок фактической траектории /// </summary> [Required] public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!; /// <summary> /// Фактические операции /// </summary> [Required] public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!; /// <summary> /// Баланс времени /// </summary> public TimeBalanceBlockDto? TimeBalanceBlock { get; set; } /// <summary> /// Наработка подсистем /// </summary> public SubsystemBlockDto? SubsystemBlock { get; set; } /// <summary> /// Подпись /// </summary> public SignBlockDto? SignBlock { get; set; } /// <summary> /// Блок расписания /// </summary> [Required] public IEnumerable<ScheduleRecordDto> ScheduleBlock { get; set; } = Enumerable.Empty<ScheduleRecordDto>(); /// <summary> /// РТК /// </summary> [Required] public IEnumerable<ProcessMapWellDrillingRecordDto> ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty<ProcessMapWellDrillingRecordDto>(); }