MemberStats.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System.ComponentModel.DataAnnotations;
  2. using System.ComponentModel.DataAnnotations.Schema;
  3. namespace Domain.Entities.Members;
  4. public class MemberStats
  5. {
  6. [ForeignKey(nameof(MemberID))]
  7. public virtual Member Member { get; private set; } = null!;
  8. public byte[] RowVersion { get; set; } = Array.Empty<byte>();
  9. [Key]
  10. public int MemberID { get; set; }
  11. // 경험치
  12. public long Exp { get; set; } = 0;
  13. // 게시글 작성 수
  14. public long PostCount { get; set; } = 0;
  15. // 댓글 작성 수
  16. public long CommentCount { get; set; } = 0;
  17. // 받은 좋아요 수
  18. public long LikeReceivedCount { get; set; } = 0;
  19. // 준 좋아요 수
  20. public long LikeGivenCount { get; set; } = 0;
  21. // 신고 당한 횟수
  22. public long ReportedCount { get; set; } = 0;
  23. // 즐겨찾기 글 수
  24. public long BookmarkGivenCount { get; set; } = 0;
  25. // 경고 횟수
  26. public int WarningCount { get; set; } = 0;
  27. // 정지 횟수
  28. public int SuspensionCount { get; set; } = 0;
  29. // 로그인 횟수
  30. public long LoginCount { get; set; } = 0;
  31. // 출석 횟수
  32. public long AttendanceCount { get; set; } = 0;
  33. // 구독 중인 회원 수
  34. public long FollowingCount { get; set; } = 0;
  35. // 구독자 수
  36. public long FollowerCount { get; set; } = 0;
  37. // 결제 횟수
  38. public long PaymentCount { get; set; } = 0;
  39. // 누적 결제 금액
  40. public long TotalPaidAmount { get; set; } = 0;
  41. // 누적 취소/환불 금액
  42. public long TotalCanceledAmount { get; set; } = 0;
  43. private MemberStats() { }
  44. private MemberStats(int memberID)
  45. {
  46. if (memberID <= 0)
  47. {
  48. throw new ArgumentOutOfRangeException(nameof(memberID));
  49. }
  50. MemberID = memberID;
  51. }
  52. public static MemberStats Create(int memberID)
  53. {
  54. return new(memberID);
  55. }
  56. }