MemberStats.cs 2.1 KB

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