CommentReport.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using Domain.Entities.Forum.Boards;
  2. using Domain.Entities.Forum.Posts;
  3. using Domain.Entities.Members;
  4. using Domain.Entities.Forum.ValueObject;
  5. using Microsoft.EntityFrameworkCore;
  6. using System.ComponentModel;
  7. using System.ComponentModel.DataAnnotations;
  8. using System.ComponentModel.DataAnnotations.Schema;
  9. namespace Domain.Entities.Forum.Comments
  10. {
  11. [Table("CommentReport")]
  12. [Index(nameof(BoardID))]
  13. [Index(nameof(PostID))]
  14. [Index(nameof(CommentID))]
  15. [Index(nameof(MemberID))]
  16. [Index(nameof(Type))]
  17. [Index(nameof(Status))]
  18. [Index(nameof(CreatedAt))]
  19. [Index(nameof(CommentID), nameof(ID))]
  20. [Index(nameof(CommentID), nameof(MemberID), IsUnique = true)]
  21. public class CommentReport
  22. {
  23. [ForeignKey(nameof(BoardID))]
  24. public virtual Board Board { get; set; } = default!;
  25. [ForeignKey(nameof(PostID))]
  26. public virtual Post Post { get; set; } = default!;
  27. [ForeignKey(nameof(CommentID))]
  28. public virtual Comment Comment { get; set; } = default!;
  29. [ForeignKey(nameof(MemberID))]
  30. public virtual Member Member { get; set; } = default!;
  31. [Key]
  32. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  33. [Comment("PK")]
  34. public int ID { get; set; }
  35. [Comment("게시판 ID")]
  36. public int BoardID { get; set; }
  37. [Comment("게시글 ID")]
  38. public int PostID { get; set; }
  39. [Comment("댓글 ID")]
  40. public int CommentID { get; set; }
  41. [Comment("회원 ID")]
  42. public int MemberID { get; set; }
  43. [Comment("신고 사유")]
  44. [EnumDataType(typeof(ReportType), ErrorMessage = "{0}는 {1} 중 하나를 선택하세요.")]
  45. public ReportType Type { get; set; }
  46. [Comment("신고 내용")]
  47. [StringLength(1000)]
  48. public string? Reason { get; set; }
  49. [Comment("처리 상태")]
  50. [EnumDataType(typeof(ReportStatus), ErrorMessage = "{0}는 {1} 중 하나를 선택하세요.")]
  51. public ReportStatus Status { get; set; } = ReportStatus.Received;
  52. [Comment("처리 내용")]
  53. [StringLength(1000)]
  54. public string? Memo { get; set; }
  55. [Comment("IP Address")]
  56. [MaxLength(50)]
  57. public string? IpAddress { get; set; }
  58. [Comment("User-agent")]
  59. [MaxLength(255)]
  60. public string? UserAgent { get; set; }
  61. [Comment("수정 일시")]
  62. public DateTime? UpdatedAt { get; set; }
  63. [DisplayName("등록 일시")]
  64. [Comment("등록 일시")]
  65. public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
  66. }
  67. }