using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Domain.Entities.Members { public class MemberStats { [ForeignKey(nameof(MemberID))] public virtual Member Member { get; private set; } = null!; public byte[] RowVersion { get; set; } = Array.Empty(); [Key] public int MemberID { get; set; } public long Exp { get; set; } = 0; public long PostCount { get; set; } = 0; public long CommentCount { get; set; } = 0; public long LikeReceivedCount { get; set; } = 0; public long LikeGivenCount { get; set; } = 0; public long ReportedCount { get; set; } = 0; public long BookmarkGivenCount { get; set; } = 0; public int WarningCount { get; set; } = 0; public int SuspensionCount { get; set; } = 0; public long LoginCount { get; set; } = 0; public long AttendanceCount { get; set; } = 0; public long FollowingCount { get; set; } = 0; public long FollowerCount { get; set; } = 0; public long PaymentCount { get; set; } = 0; public long TotalPaidAmount { get; set; } = 0; public long TotalCanceledAmount { get; set; } = 0; private MemberStats() { } private MemberStats(int memberID) { if (memberID <= 0) { throw new ArgumentOutOfRangeException(nameof(memberID)); } MemberID = memberID; } public static MemberStats Create(int memberID) { return new(memberID); } } }