namespace CMSMicroservice.Domain.Entities.History;

/// <summary>
/// تاریخچه جابجایی در شبکه باینری (برای Audit)
/// </summary>
public class NetworkMembershipHistory : BaseAuditableEntity
{
    /// <summary>
    /// شناسه کاربر
    /// </summary>
    public long UserId { get; set; }

    /// <summary>
    /// شناسه والد قبل از تغییر
    /// </summary>
    public long? OldParentId { get; set; }

    /// <summary>
    /// شناسه والد بعد از تغییر
    /// </summary>
    public long? NewParentId { get; set; }

    /// <summary>
    /// موقعیت شاخه قبل از تغییر
    /// </summary>
    public NetworkLeg? OldLegPosition { get; set; }

    /// <summary>
    /// موقعیت شاخه بعد از تغییر
    /// </summary>
    public NetworkLeg? NewLegPosition { get; set; }

    /// <summary>
    /// نوع عملیات (Join, Move, Remove)
    /// </summary>
    public NetworkMembershipAction Action { get; set; }

    /// <summary>
    /// دلیل تغییر (اختیاری)
    /// </summary>
    public string? Reason { get; set; }

    /// <summary>
    /// چه کسی انجام داده (UserId یا "System")
    /// </summary>
    public string? PerformedBy { get; set; }
}
