Comment.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using Domain.Entities.Forum.ValueObject;
  2. using Domain.Entities.Forum.Boards;
  3. using Domain.Entities.Forum.Posts;
  4. using Domain.Entities.Forum.Logs;
  5. using Domain.Entities.Members;
  6. using System.ComponentModel.DataAnnotations;
  7. using System.ComponentModel.DataAnnotations.Schema;
  8. namespace Domain.Entities.Forum.Comments
  9. {
  10. public class Comment
  11. {
  12. [ForeignKey(nameof(BoardID))]
  13. public virtual Board Board { get; set; } = null!;
  14. [ForeignKey(nameof(PostID))]
  15. public virtual Post Post { get; set; } = null!;
  16. [ForeignKey(nameof(MemberID))]
  17. public virtual Member Member { get; set; } = null!;
  18. [ForeignKey(nameof(MentionMemberID))]
  19. public virtual Member? MentionMember { get; set; }
  20. public virtual Comment? Parent { get; set; }
  21. public virtual ICollection<Comment> Children { get; set; } = [];
  22. // 댓글 이미지
  23. public virtual List<CommentImage> CommentImage { get; set; } = [];
  24. // 댓글 미디어
  25. public virtual List<CommentMedia> CommentMedia { get; set; } = [];
  26. // 댓글 파일
  27. public virtual List<CommentFile> CommentFile { get; set; } = [];
  28. // 댓글 링크
  29. public virtual List<CommentLink> CommentLink { get; set; } = [];
  30. // 댓글 좋아요/싫어요
  31. public virtual List<CommentReaction> CommentReaction { get; set; } = [];
  32. // 댓글 신고
  33. public virtual List<CommentReport> CommentReport { get; set; } = [];
  34. // 댓글 파일 다운로드 기록
  35. public virtual List<CommentFileDownLog> CommentFileDownLog { get; set; } = [];
  36. // 댓글 링크 클릭 기록
  37. public virtual List<CommentLinkClickLog> CommentLinkClickLog { get; set; } = [];
  38. // 댓글 변경 기록
  39. public virtual List<CommentUpdateLog> CommentUpdateLog { get; set; } = [];
  40. // 답글 언급
  41. public virtual CommentMention? CommentMention { get; set; }
  42. [Key]
  43. public int ID { get; set; }
  44. public int BoardID { get; set; }
  45. public int PostID { get; set; }
  46. public int MemberID { get; set; }
  47. public int? ParentID { get; set; }
  48. public int? MentionMemberID { get; set; }
  49. public sbyte Depth { get; set; } = 0;
  50. public string Content { get; set; } = default!;
  51. public string SID { get; set; } = default!;
  52. public string Email { get; set; } = default!;
  53. public string? Name { get; set; }
  54. public bool IsReply { get; set; } = false;
  55. public bool IsSecret { get; set; } = false;
  56. public bool IsDeleted { get; set; } = false;
  57. public int Likes { get; set; } = 0;
  58. public int Dislikes { get; set; } = 0;
  59. public int Reports { get; set; } = 0;
  60. public int Replies { get; set; } = 0;
  61. public int Score { get; set; } = 0;
  62. public int Images { get; set; } = 0;
  63. public byte Medias { get; set; } = 0;
  64. public byte Files { get; set; } = 0;
  65. public string? IpAddress { get; set; }
  66. public string? UserAgent { get; set; }
  67. public DisplayStatus Status { get; set; } = DisplayStatus.Normal;
  68. public DateTime? DeletedAt { get; set; }
  69. public DateTime? UpdatedAt { get; set; }
  70. public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
  71. }
  72. }