namespace CMSMicroservice.Domain.Entities.History;

/// <summary>
/// تاریخچه تغییرات عضویت باشگاه (برای Audit)
/// </summary>
public class ClubMembershipHistory : BaseAuditableEntity
{
    /// <summary>
    /// شناسه عضویت باشگاه
    /// </summary>
    public long ClubMembershipId { get; set; }

    /// <summary>
    /// ClubMembership Navigation Property
    /// </summary>
    public virtual ClubMembership? ClubMembership { get; set; }

    /// <summary>
    /// شناسه کاربر
    /// </summary>
    public long UserId { get; set; }

    /// <summary>
    /// وضعیت فعال قبل از تغییر
    /// </summary>
    public bool OldIsActive { get; set; }

    /// <summary>
    /// وضعیت فعال بعد از تغییر
    /// </summary>
    public bool NewIsActive { get; set; }

    /// <summary>
    /// مبلغ مشارکت قبل از تغییر
    /// </summary>
    public long? OldInitialContribution { get; set; }

    /// <summary>
    /// مبلغ مشارکت بعد از تغییر
    /// </summary>
    public long? NewInitialContribution { get; set; }

    /// <summary>
    /// نوع عملیات (Activated, Deactivated, Updated, ManualFix)
    /// </summary>
    public ClubMembershipAction Action { get; set; }

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

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