using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel; using System.ComponentModel.DataAnnotations.Schema; namespace bitforum.Models.BBS { [Table("PostMeta")] public class PostMeta { [ForeignKey("BoardID")] public Board Board { get; set; } = null!; [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [DisplayName("PK")] [Comment("PK")] public int ID { get; set; } [Required] [DisplayName("게시판 ID")] [Comment("게시판 ID")] public int BoardID { get; set; } public PostViewMeta List { get; set; } = new PostViewMeta(); public PostWriteMeta Write { get; set; } = new PostWriteMeta(); public PostGeneralMeta General { get; set; } = new PostGeneralMeta(); } [Owned] public class PostViewMeta { [DisplayName("즐겨찾기 기능")] [Comment("즐겨찾기 기능")] public bool AllowBookmark { get; set; } = false; [DisplayName("공감 기능")] [Comment("공감 기능")] public bool AllowLike { get; set; } = false; [DisplayName("비공감 기능")] [Comment("비공감 기능")] public bool AllowDislike { get; set; } = false; [DisplayName("본문 인쇄 기능")] [Comment("본문 인쇄 기능")] public bool AllowPrint { get; set; } = false; [DisplayName("SNS 보내기 기능")] [Comment("SNS 보내기 기능")] public bool AllowSnsShare { get; set; } = false; [DisplayName("이전글, 다음글 버튼")] [Comment("이전글, 다음글 버튼")] public bool AllowPrevNextBotton { get; set; } = false; [DisplayName("신고 기능")] [Comment("신고 기능")] public bool AllowBlame { get; set; } = false; [DisplayName("신고 시 숨김")] [Comment("신고 시 숨김")] public ushort BlameHideCount { get; set; } = 0; [DisplayName("전체공지 제외 여부")] [Comment("전체공지 제외 여부")] public bool AllowContentLinkTargetBlank { get; set; } = false; [DisplayName("주소 복사 버튼")] [Comment("주소 복사 버튼")] public bool AllowPostUrlCopy { get; set; } = false; [DisplayName("글 주소 QR 코드")] [Comment("글 주소 QR 코드")] public bool AllowPostUrlQrCode { get; set; } = false; [DisplayName("회원 사진 공개")] [Comment("회원 사진 공개")] public bool ShowMemberPhoto { get; set; } = false; [DisplayName("회원 아이콘 공개")] [Comment("회원 아이콘 공개")] public bool ShowMemberIcon { get; set; } = false; [DisplayName("회원 가입일 공개")] [Comment("회원 가입일 공개")] public bool ShowMemberRegDate { get; set; } = false; } [Owned] public class PostWriteMeta { [DisplayName("작성란 상단 내용")] [Comment("작성란 상단 내용")] [StringLength(4000)] public string? HeaderContent { get; set; } = null; [DisplayName("작성란 하단 내용")] [Comment("작성란 하단 내용")] [StringLength(4000)] public string? FooterContent { get; set; } = null; [DisplayName("기본 제목")] [Comment("기본 제목")] [StringLength(255)] public string? DefaultSubject { get; set; } = null; [DisplayName("기본 내용")] [Comment("기본 내용")] [StringLength(4000)] public string? DefaultContent { get; set; } = null; [DisplayName("웹 에디터 사용")] [Comment("웹 에디터 사용")] public bool AllowEditor { get; set; } = false; [DisplayName("외부 이미지 수집")] [Comment("외부 이미지 수집")] public bool AllowSaveExternalImage { get; set; } = false; [DisplayName("비밀글 사용")] [Comment("비밀글 사용")] public bool AllowSecret { get; set; } = false; [DisplayName("Tag 사용")] [Comment("Tag 사용")] public bool AllowTag { get; set; } = false; [DisplayName("파일 사용")] [Comment("파일 사용")] public bool EnableUploadFile { get; set; } = false; [DisplayName("파일 개수 제한")] [Comment("파일 개수 제한")] public byte UploadFilesLimit { get; set; } = 0; [DisplayName("파일 용량 제한")] [Comment("파일 용량 제한")] public ushort UploadFileMaxSize { get; set; } = 0; [DisplayName("파일 허용 확장자")] [Comment("파일 허용 확장자")] [StringLength(200)] public string? UploadFileExtension { get; set; } = null; } [Owned] public class PostGeneralMeta { [DisplayName("게시글 삭제 금지 기간")] [Comment("게시글 삭제 금지 기간")] public ushort DeleteProtectionDays { get; set; } = 0; [DisplayName("게시글 수정/삭제 금지 기간")] [Comment("게시글 수정/삭제 금지 기간")] public ushort UpdateProtectionDays { get; set; } = 0; [DisplayName("게시글 보호 기능 (삭제 시)")] [Comment("게시글 보호 기능 (삭제 시)")] public bool AllowDeleteProtection { get; set; } = false; [DisplayName("게시글 보호 기능 (수정 시)")] [Comment("게시글 보호 기능 (수정 시)")] public bool AllowUpdateProtection { get; set; } = false; [DisplayName("다운로드 기록")] [Comment("다운로드 기록")] public bool EnableFileDownLog { get; set; } = false; [DisplayName("게시글 변경 기록")] [Comment("게시글 변경 기록")] public bool EnablePostUpdateLog { get; set; } = false; } }