using AsbCloudApp.Data.User;
using System;

namespace AsbCloudApp.Data;

/// <summary>
/// Часть записи описывающая изменение
/// </summary>
public class ChangeLogDto<T> where T: IId
{
    /// <summary>
    /// Запись
    /// </summary>
    public required T Item { get; set; }

    /// <summary>
    /// Автор
    /// </summary>
    public UserDto? Author { get; set; }

    /// <summary>
    /// Автор
    /// </summary>
    public UserDto? Editor { get; set; }

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

    /// <summary>
    /// Дата устаревания (например при удалении)
    /// </summary>
    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>
    public int IdState { get; set; }

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