PostReport.cs 2.8 KB

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