DD.WellWorkover.Cloud/AsbCloudDb/Model/ChangeLogAbstract.cs

96 lines
2.8 KiB
C#

using Microsoft.EntityFrameworkCore;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace AsbCloudDb.Model;
/// <summary>
/// Часть записи описывающая изменение
/// </summary>
public abstract class ChangeLogAbstract
{
/// <summary>
/// Актуальная
/// </summary>
public const int IdStateActual = 0;
/// <summary>
/// Замененная
/// </summary>
public const int IdStateReplaced = 1;
/// <summary>
/// Удаленная
/// </summary>
public const int IdStateDeleted = 2;
/// <summary>
/// Очищено при импорте
/// </summary>
public const int IdCleared = 3;
/// <summary>
/// Ид записи
/// </summary>
[Key]
[Column("id"), Comment("Идентификатор")]
public int Id { get; set; }
/// <summary>
/// Автор изменения
/// </summary>
[Column("id_author"), Comment("Автор")]
public int IdAuthor { get; set; }
/// <summary>
/// Редактор
/// </summary>
[Column("id_editor"), Comment("Редактор")]
public int? IdEditor { get; set; }
/// <summary>
/// Дата создания записи
/// </summary>
[Column("creation"), Comment("дата создания")]
public DateTimeOffset Creation { get; set; }
/// <summary>
/// Дата устаревания (например при удалении)
/// </summary>
[Column("obsolete"), Comment("дата устаревания")]
public DateTimeOffset? Obsolete { get; set; }
/// <summary>
/// ИД состояния записи:
/// <list type="table">
/// <item>
/// <term>0</term>
/// <description>актуальная запись</description>
/// </item>
/// <item>
/// <term>1</term>
/// <description>замененная запись</description>
/// </item>
/// <item>
/// <term>2</term>
/// <description>удаленная запись</description>
/// </item>
/// </list>
/// </summary>
[Column("id_state"), Comment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная")]
public int IdState { get; set; }
/// <summary>
/// Id заменяемой записи
/// </summary>
[Column("id_previous"), Comment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная")]
public int? IdPrevious { get; set; }
[ForeignKey(nameof(IdAuthor))]
public virtual User Author { get; set; } = null!;
[ForeignKey(nameof(IdEditor))]
public virtual User? Editor { get; set; }
}