using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; namespace AsbCloudDb.Model { [Table("t_well_operation"), Comment("Данные по операциям на скважине")] public class WellOperation : ItemInfo, IId { public const int IdOperationTypePlan = 0; public const int IdOperationTypeFact = 1; [Key] [Column("id")] public int Id { get; set; } [Column("id_well"), Comment("Id скважины")] public int IdWell { get; set; } [Column("id_well_section_type"), Comment("Id тип секции скважины")] public int IdWellSectionType { get; set; } [Column("id_category"), Comment("Id категории операции")] public int IdCategory { get; set; } /// /// Тип 0 = План или 1 = Факт /// [Column("id_type"), Comment("0 = План или 1 = Факт")] public int IdType { get; set; } [Column("id_plan"), Comment("Id плановой операции")] public int? IdPlan { get; set; } [Column("depth_start"), Comment("Глубина на начало операции, м")] public double DepthStart { get; set; } [Column("depth_end"), Comment("Глубина после завершения операции, м")] public double DepthEnd { get; set; } [Column("date_start", TypeName = "timestamp with time zone"), Comment("Дата начала операции")] public DateTimeOffset DateStart { get; set; } [Column("duration_hours"), Comment("Продолжительность, часы")] public double DurationHours { get; set; } [Column("category_info"), Comment("Доп. информация к выбраной категории")] public string? CategoryInfo { get; set; } [Column("comment"), Comment("Комментарий")] public string? Comment { get; set; } [JsonIgnore] [ForeignKey(nameof(IdWell))] public virtual Well Well { get; set; } = null!; [JsonIgnore] [ForeignKey(nameof(IdWellSectionType))] public virtual WellSectionType WellSectionType { get; set; } = null!; [JsonIgnore] [ForeignKey(nameof(IdCategory))] public virtual WellOperationCategory OperationCategory { get; set; } = null!; [JsonIgnore] [ForeignKey(nameof(IdPlan))] public virtual WellOperation? OperationPlan { get; set; } = null!; } }