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