using Microsoft.EntityFrameworkCore;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace AsbCloudDb.Model.ProcessMaps;

public abstract class ProcessMapBase : IId, IWellRelated
{
    [Key]
    [Column("id")]
    public int Id { get; set; }

    [Column("id_well"), Comment("Id скважины")]
    public int IdWell { get; set; }

    [Column("id_wellsection_type"), Comment("Тип секции")]
    public int IdWellSectionType { get; set; }

    [Column("id_user"), Comment("Id пользователя")]
    public int IdUser { get; set; }

    [Column("last_update", TypeName = "timestamp with time zone"), Comment("Дата последнего изменения")]
    public DateTimeOffset LastUpdate { get; set; }

    [Column("depth_start"), Comment("Глубина по стволу от, м")]
    public double DepthStart { get; set; }

    [Column("depth_end"), Comment("Глубина по стволу до, м")]
    public double DepthEnd { get; set; }

    [Column("comment"), Comment("Комментарий")]
    public string? Comment { get; set; }

    [ForeignKey(nameof(IdWell))]
    public virtual Well Well { get; set; } = null!;

    [ForeignKey(nameof(IdUser))]
    public virtual User User { get; set; } = null!;

    [ForeignKey(nameof(IdWellSectionType))]
    public virtual WellSectionType WellSectionType { get; set; } = null!;
}