namespace Persistence.Models;

/// <summary>
/// Часть записи описывающая изменение
/// </summary>
public interface IChangeLogAbstract
{
    /// <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>
    public int Id { get; set; }

    /// <summary>
    /// Автор изменения
    /// </summary>
    public int IdAuthor { get; set; }

    /// <summary>
    /// Редактор
    /// </summary>
    public int? IdEditor { get; set; }

    /// <summary>
    /// Дата создания записи
    /// </summary>
    public DateTimeOffset Creation { get; set; }

    /// <summary>
    /// Дата устаревания (например при удалении)
    /// </summary>
    public DateTimeOffset? Obsolete { get; set; }

    /// <summary>
    /// "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная
    /// </summary>
    public int IdState { get; set; }

    /// <summary>
    /// Id заменяемой записи
    /// </summary>
    public int? IdPrevious { get; set; }
}