using Domain.Entities.Forum.Constants;
using Domain.Entities.Forum.ValueObject;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
namespace Domain.Entities.Forum.Boards
{
[Table(nameof(BoardMeta))]
[Index(nameof(BoardID), IsUnique = true)]
public class BoardMeta
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[DisplayName("PK")]
[Comment("PK")]
public int ID { get; set; }
[DisplayName("게시판 ID")]
[Comment("게시판 ID")]
[Required(ErrorMessage = "{0}는 필수입니다.")]
public int BoardID { get; set; }
// 목록
public BoardMetaList List { get; set; } = new BoardMetaList();
// 열람
public BoardMetaView View { get; set; } = new BoardMetaView();
// 작성
public BoardMetaWrite Write { get; set; } = new BoardMetaWrite();
// 댓글
public BoardMetaComment Comment { get; set; } = new BoardMetaComment();
// 일반
public BoardMetaGeneral General { get; set; } = new BoardMetaGeneral();
// 권한
public BoardMetaPermission Permission { get; set; } = new BoardMetaPermission();
// 알람
public BoardMetaNotify Notify { get; set; } = new BoardMetaNotify();
// 알람 양식
public BoardMetaNotifyTemplate NotifyTemplate { get; set; } = new BoardMetaNotifyTemplate();
// 경험치
public BoardMetaExp Exp { get; set; } = new BoardMetaExp();
}
///
/// 게시판 목록 설정
///
[Owned]
public class BoardMetaList
{
[DisplayName("상단 내용 출력 여부")]
[Comment("상단 내용 출력 여부")]
public bool ShowHeader { get; set; } = false;
[DisplayName("상단 내용")]
[Comment("상단 내용")]
public string? HeaderContent { get; set; } = null;
[DisplayName("하단 내용 출력 여부")]
[Comment("하단 내용 출력 여부")]
public bool ShowFooter { get; set; } = false;
[DisplayName("하단 내용")]
[Comment("하단 내용")]
public string? FooterContent { get; set; } = null;
[DisplayName("게시판 종류")]
[Comment("게시판 종류")]
public BoardLayout? Layout { get; set; }
[DisplayName("기본 정렬")]
[Comment("기본 정렬")]
public BoardSort? Sort { get; set; }
[DisplayName("목록 표시")]
[Comment("목록 표시")]
[Range(0, 100, ErrorMessage = "값은 0 ~ 100 사이를 입력합니다.")]
public byte PerPage { get; set; } = 0;
[DisplayName("글쓰기 버튼 보이기")]
[Comment("글쓰기 버튼 보이기")]
public bool AlwaysShowWriteButton { get; set; } = false;
[DisplayName("하단 목록 보이기")]
[Comment("하단 목록 보이기")]
public bool ShowFooterListView { get; set; } = false;
[DisplayName("NEW 사용 여부")]
[Comment("NEW 사용 여부")]
public bool IsNewIcon { get; set; } = false;
[DisplayName("HOT 사용 여부")]
[Comment("HOT 사용 여부")]
public bool IsHotIcon { get; set; } = false;
[DisplayName("공지사항 제외 여부")]
[Comment("공지사항 제외 여부")]
public bool ExceptNotice { get; set; } = false;
[DisplayName("전체공지 제외 여부")]
[Comment("전체공지 제외 여부")]
public bool ExceptSpeaker { get; set; } = false;
}
///
/// 게시판 열람 설정
///
[Owned]
public class BoardMetaView
{
[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("URL Link 새창")]
[Comment("URL Link 새창")]
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;
[DisplayName("오늘의 한마디 공개")]
[Comment("오늘의 한마디 공개")]
public bool ShowMemberSummary { get; set; } = false;
}
///
/// 게시판 작성 설정
///
[Owned]
public class BoardMetaWrite
{
[DisplayName("상단 내용 출력 여부")]
[Comment("상단 내용 출력 여부")]
public bool ShowHeader { get; set; } = false;
[DisplayName("상단 내용")]
[Comment("상단 내용")]
public string? HeaderContent { get; set; } = null;
[DisplayName("하단 내용 출력 여부")]
[Comment("하단 내용 출력 여부")]
public bool ShowFooter { get; set; } = false;
[DisplayName("하단 내용")]
[Comment("하단 내용")]
public string? FooterContent { get; set; } = null;
[DisplayName("기본 제목")]
[Comment("기본 제목")]
[StringLength(PostConstant.MaxAllowedSubjectLength, ErrorMessage = "{0}은(는) {1}자 이내로 입력해주세요.")]
public string? DefaultSubject { get; set; } = null;
[DisplayName("기본 내용")]
[Comment("기본 내용")]
[StringLength(PostConstant.MaxAllowedContentLength, ErrorMessage = "{0}은(는) {1}자 이내로 입력해주세요.")]
public string? DefaultContent { get; set; } = null;
[DisplayName("웹 에디터 사용")]
[Comment("웹 에디터 사용")]
public bool AllowEditor { get; set; } = false;
[DisplayName("말머리 사용")]
[Comment("말머리 사용")]
public bool AllowPrefix { get; set; } = false;
[DisplayName("말머리 필수 선택")]
[Comment("말머리 필수 선택")]
public bool RequiredPrefix { get; set; } = false;
[DisplayName("비밀글 사용")]
[Comment("비밀글 사용")]
public bool AllowSecret { get; set; } = false;
[DisplayName("태그 사용")]
[Comment("태그 사용")]
public bool AllowTag { get; set; } = false;
[DisplayName("태그 개수 제한")]
[Comment("태그 개수 제한")]
[Range(0, PostConstant.MaxAllowedTags, ErrorMessage = "{0}은(는) {1} ~ {2} 사이여야 합니다.")]
public byte TagLimit { get; set; } = PostConstant.MaxAllowedTags;
[DisplayName("이미지 사용")]
[Comment("이미지 사용")]
public bool AllowImage { get; set; } = false;
[DisplayName("이미지 개수 제한")]
[Comment("이미지 개수 제한")]
[Range(0, PostConstant.MaxAllowedImages, ErrorMessage = "{0}은(는) {1} ~ {2} 사이여야 합니다.")]
public byte ImageUploadLimit { get; set; } = PostConstant.MaxAllowedImages;
[DisplayName("이미지 용량 제한(KB)")]
[Comment("이미지 용량 제한(KB)")]
[Range(0, PostConstant.MaxAllowedImageSize, ErrorMessage = "{0}은(는) {1} ~ {2} 사이여야 합니다.")]
public int ImageUploadMaxSize { get; set; } = PostConstant.MaxAllowedImageSize;
[DisplayName("미디어 사용")]
[Comment("미디어 사용")]
public bool AllowMedia { get; set; } = false;
[DisplayName("미디어 개수 제한")]
[Comment("미디어 개수 제한")]
[Range(0, PostConstant.MaxAllowedMedias, ErrorMessage = "{0}은(는) {1} ~ {2} 사이여야 합니다.")]
public byte MediaUploadLimit { get; set; } = PostConstant.MaxAllowedMedias;
[DisplayName("파일 사용")]
[Comment("파일 사용")]
public bool AllowFile { get; set; } = false;
[DisplayName("파일 개수 제한")]
[Comment("파일 개수 제한")]
[Range(0, PostConstant.MaxAllowedFiles, ErrorMessage = "{0}은(는) {1} ~ {2} 사이여야 합니다.")]
public byte FileUploadLimit { get; set; } = PostConstant.MaxAllowedFiles;
[DisplayName("파일 용량 제한(KB)")]
[Comment("파일 용량 제한(KB)")]
[Range(0, PostConstant.MaxAllowedFileSize, ErrorMessage = "{0}은(는) {1} ~ {2} 사이여야 합니다.")]
public int FileUploadMaxSize { get; set; } = PostConstant.MaxAllowedFileSize;
[DisplayName("파일 허용 확장자")]
[Comment("파일 허용 확장자")]
[StringLength(200, ErrorMessage = "{0}은(는) {1}자 이내로 입력해주세요.")]
public string? FileUploadExtension { get; set; } = null;
}
///
/// 게시판 일반 설정
///
[Owned]
public class BoardMetaGeneral
{
[DisplayName("게시글 삭제 금지 기간")]
[Comment("게시글 삭제 금지 기간")]
[Range(0, 365, ErrorMessage = "{0}은(는) 0 ~ 365 사이를 입력합니다.")]
public ushort DeleteProtectionDays { get; set; } = 0;
[DisplayName("게시글 수정 금지 기간")]
[Comment("게시글 수정 금지 기간")]
[Range(0, 365, ErrorMessage = "{0}은(는) 0 ~ 365 사이를 입력합니다.")]
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 EnableLinkClickLog { get; set; } = false;
[DisplayName("게시글 변경 기록")]
[Comment("게시글 변경 기록")]
public bool EnablePostUpdateLog { get; set; } = false;
}
///
/// 게시판 권한 설정
///
[Owned]
public class BoardMetaPermission
{
[DisplayName("게시판 접근")]
[Comment("게시판 접근")]
public short BoardAccess { get; set; } = (short)BoardPermission.Guest;
[DisplayName("글 열람")]
[Comment("글 열람")]
public short PostView { get; set; } = (short)BoardPermission.Guest;
[DisplayName("글 작성")]
[Comment("글 작성")]
public short PostWrite { get; set; } = (short)BoardPermission.Guest;
[DisplayName("댓글 목록")]
[Comment("댓글 목록")]
public short CommentView { get; set; } = (short)BoardPermission.Guest;
[DisplayName("댓글 작성")]
[Comment("댓글 작성")]
public short CommentWrite { get; set; } = (short)BoardPermission.Guest;
[DisplayName("답글 작성")]
[Comment("답글 작성")]
public short ReplyWrite { get; set; } = (short)BoardPermission.Guest;
[DisplayName("파일 업로드")]
[Comment("파일 업로드")]
public short FileUpload { get; set; } = (short)BoardPermission.Guest;
[DisplayName("파일 다운로드")]
[Comment("파일 다운로드")]
public short FileDownload { get; set; } = (short)BoardPermission.Guest;
}
///
/// 게시판 알림 설정
///
[Owned]
public class BoardMetaNotify
{
[DisplayName("게시글 작성 시")]
[Comment("게시글 작성 시")]
public byte? PostWriteNotify { get; set; } = null;
[DisplayName("댓글 작성 시")]
[Comment("댓글 작성 시")]
public byte? CommentWriteNotify { get; set; } = null;
[DisplayName("답글 작성 시")]
[Comment("답글 작성 시")]
public byte? ReplyWriteNotify { get; set; } = null;
public BoardNotify PostWriteNotifyEnum => (BoardNotify)(PostWriteNotify ?? 0);
public BoardNotify CommentWriteNotifyEnum => (BoardNotify)(CommentWriteNotify ?? 0);
public BoardNotify ReplyWriteNotifyEnum => (BoardNotify)(ReplyWriteNotify ?? 0);
}
///
/// 게시판 경험치 설정
///
[Owned]
public class BoardMetaExp
{
[DisplayName("경험치 기능")]
[Comment("경험치 기능")]
public bool EnableExp { get; set; } = false;
[DisplayName("경험치 안내")]
[Comment("경험치 안내")]
public bool ShowExpGuide { get; set; } = false;
/*
* 경험치 지급량 조절
*/
[DisplayName("게시글 작성")]
[Comment("게시글 작성")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort PostWriteExp { get; set; } = 0;
[DisplayName("댓글 작성")]
[Comment("댓글 작성")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort CommentWriteExp { get; set; } = 0;
[DisplayName("파일 업로드")]
[Comment("파일 업로드")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort FileUploadExp { get; set; } = 0;
[DisplayName("파일 다운로드")]
[Comment("파일 다운로드")]
[Range(-10000, 10000, ErrorMessage = "값은 -10,000 ~ 10,000 사이를 입력합니다.")]
public short FileDownloadExp { get; set; } = 0;
[DisplayName("게시글 읽기")]
[Comment("게시글 읽기")]
[Range(-10000, 10000, ErrorMessage = "값은 -10,000 ~ 10,000 사이를 입력합니다.")]
public short OtherPostReadExp { get; set; } = 0;
[DisplayName("게시글 좋아요")]
[Comment("게시글 좋아요")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OtherPostLikeExp { get; set; } = 0;
[DisplayName("게시글 싫어요")]
[Comment("게시글 싫어요")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OtherPostDisLikeExp { get; set; } = 0;
[DisplayName("댓글 좋아요")]
[Comment("댓글 좋아요")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OtherCommentLikeExp { get; set; } = 0;
[DisplayName("댓글 싫어요")]
[Comment("댓글 싫어요")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OtherCommentDisLikeExp { get; set; } = 0;
[DisplayName("내 게시글 읽힘")]
[Comment("내 게시글 읽힘")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OwnPostReadExp { get; set; } = 0;
[DisplayName("내 게시글 좋아요")]
[Comment("내 게시글 좋아요")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OwnPostLikeExp { get; set; } = 0;
[DisplayName("내 게시글 싫어요")]
[Comment("내 게시글 싫어요")]
[Range(-10000, 10000, ErrorMessage = "값은 -10,000 ~ 10,000 사이를 입력합니다.")]
public short OwnPostDisLikeExp { get; set; } = 0;
[DisplayName("내 댓글 좋아요")]
[Comment("내 댓글 좋아요")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OwnCommentLikeExp { get; set; } = 0;
[DisplayName("내 댓글 싫어요")]
[Comment("내 댓글 싫어요")]
[Range(-10000, 10000, ErrorMessage = "값은 -10,000 ~ 10,000 사이를 입력합니다.")]
public short OwnCommentDisLikeExp { get; set; } = 0;
/*
* 경험치 회수량 조절 (항상 음수 계산)
*/
[DisplayName("게시글 작성 취소")]
[Comment("게시글 작성 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort PostWriteUndoExp { get; set; } = 0;
[DisplayName("댓글 작성 취소")]
[Comment("댓글 작성 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort CommentWriteUndoExp { get; set; } = 0;
[DisplayName("파일 업로드 취소")]
[Comment("파일 업로드 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort FileUploadUndoExp { get; set; } = 0;
[DisplayName("게시글 읽기 취소")]
[Comment("게시글 읽기 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OtherPostReadUndoExp { get; set; } = 0;
[DisplayName("게시글 좋아요 취소")]
[Comment("게시글 좋아요 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OtherPostLikeUndoExp { get; set; } = 0;
[DisplayName("게시글 싫어요 취소")]
[Comment("게시글 싫어요 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OtherPostDisLikeUndoExp { get; set; } = 0;
[DisplayName("댓글 좋아요 취소")]
[Comment("댓글 좋아요 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OtherCommentLikeUndoExp { get; set; } = 0;
[DisplayName("댓글 싫어요 취소")]
[Comment("댓글 싫어요 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OtherCommentDisLikeUndoExp { get; set; } = 0;
[DisplayName("내 게시글 읽힘 취소")]
[Comment("내 게시글 읽힘 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OwnPostReadUndoExp { get; set; } = 0;
[DisplayName("내 게시글 좋아요 취소")]
[Comment("내 게시글 좋아요 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OwnPostLikeUndoExp { get; set; } = 0;
[DisplayName("내 게시글 싫어요 취소")]
[Comment("내 게시글 싫어요 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OwnPostDisLikeUndoExp { get; set; } = 0;
[DisplayName("내 댓글 좋아요 취소")]
[Comment("내 댓글 좋아요 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OwnCommentLikeUndoExp { get; set; } = 0;
[DisplayName("내 댓글 싫어요 취소")]
[Comment("내 댓글 싫어요 취소")]
[Range(0, 10000, ErrorMessage = "값은 0 ~ 10,000 사이를 입력합니다.")]
public ushort OwnCommentDisLikeUndoExp { get; set; } = 0;
/*
* 경험치 지급 기한
*/
[DisplayName("게시글 작성 기한")]
[Comment("게시글 작성 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort PostWriteExpWithinDays { get; set; } = 0;
[DisplayName("댓글 작성 기한")]
[Comment("댓글 작성 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort CommentWriteExpWithinDays { get; set; } = 0;
[DisplayName("파일 업로드 기한")]
[Comment("파일 업로드 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort FileUploadExpWithinDays { get; set; } = 0;
[DisplayName("게시글 읽기 기한")]
[Comment("게시글 읽기 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OtherPostReadExpWithinDays { get; set; } = 0;
[DisplayName("게시글 좋아요 기한")]
[Comment("게시글 좋아요 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OtherPostLikeExpWithinDays { get; set; } = 0;
[DisplayName("게시글 싫어요 기한")]
[Comment("게시글 싫어요 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OtherPostDisLikeExpWithinDays { get; set; } = 0;
[DisplayName("댓글 좋아요 기한")]
[Comment("댓글 좋아요 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OtherCommentLikeExpWithinDays { get; set; } = 0;
[DisplayName("댓글 싫어요 기한")]
[Comment("댓글 싫어요 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OtherCommentDisLikeExpWithinDays { get; set; } = 0;
[DisplayName("내 게시글 읽힘 기한")]
[Comment("내 게시글 읽힘 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OwnPostReadExpWithinDays { get; set; } = 0;
[DisplayName("내 게시글 좋아요 기한")]
[Comment("내 게시글 좋아요 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OwnPostLikeExpWithinDays { get; set; } = 0;
[DisplayName("내 게시글 싫어요 기한")]
[Comment("내 게시글 싫어요 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OwnPostDisLikeExpWithinDays { get; set; } = 0;
[DisplayName("내 댓글 좋아요 기한")]
[Comment("내 댓글 좋아요 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OwnCommentLikeExpWithinDays { get; set; } = 0;
[DisplayName("내 댓글 싫어요 기한")]
[Comment("내 댓글 싫어요 기한")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public ushort OwnCommentDisLikeExpWithinDays { get; set; } = 0;
}
///
/// 게시판 알림 양식
///
[Owned]
public class BoardMetaNotifyTemplate
{
[DisplayName("이메일 제목 - 게시글 작성 시")]
[Comment("이메일 제목 - 게시글 작성 시")]
public string? PostWriteEmailNotifySubject { get; set; } = null;
[DisplayName("이메일 내용 - 게시글 작성 시")]
[Comment("이메일 내용 - 게시글 작성 시")]
public string? PostWriteEmailNotifyContent { get; set; } = null;
[DisplayName("이메일 제목 - 댓글 작성 시")]
[Comment("이메일 제목 - 댓글 작성 시")]
public string? CommentWriteEmailNotifySubject { get; set; } = null;
[DisplayName("이메일 내용 - 댓글 작성 시")]
[Comment("이메일 내용 - 댓글 작성 시")]
public string? CommentWriteEmailNotifyContent { get; set; } = null;
[DisplayName("이메일 제목 - 답글 작성 시")]
[Comment("이메일 제목 - 답글 작성 시")]
public string? ReplyWriteEmailNotifySubject { get; set; } = null;
[DisplayName("이메일 내용 - 답글 작성 시")]
[Comment("이메일 내용 - 답글 작성 시")]
public string? ReplyWriteEmailNotifyContent { get; set; } = null;
}
///
/// 게시판 댓글 설정
///
[Owned]
public class BoardMetaComment
{
[DisplayName("댓글 사용")]
[Comment("댓글 사용")]
public bool EnableComment { get; set; } = false;
[DisplayName("목록 표시")]
[Comment("목록 표시")]
[Range(0, 100, ErrorMessage = "값은 0 ~ 100 사이를 입력합니다.")]
public ushort PerPage { get; set; } = 0;
[DisplayName("댓글 공감 사용")]
[Comment("댓글 공감 사용")]
public bool AllowLike { get; set; } = false;
[DisplayName("댓글 비공감 사용")]
[Comment("댓글 비공감 사용")]
public bool AllowDisLike { get; set; } = false;
[DisplayName("회원 사진 공개")]
[Comment("회원 사진 공개")]
public bool ShowMemberPhoto { get; set; } = false;
[DisplayName("회원 아이콘 공개")]
[Comment("회원 아이콘 공개")]
public bool ShowMemberIcon { get; set; } = false;
[DisplayName("안내 문구")]
[Comment("안내 문구")]
[StringLength(1000)]
public string? ContentPlaceholder { get; set; } = null;
[DisplayName("최소 입력 글자")]
[Comment("최소 입력 글자")]
public ushort MinContentLength { get; set; } = 0;
[DisplayName("최대 입력 글자")]
[Comment("최대 입력 글자")]
public ushort MaxContentLength { get; set; } = 0;
[DisplayName("웹 에디터 사용")]
[Comment("웹 에디터 사용")]
public bool EnableEditor { get; set; } = false;
[DisplayName("비밀글 사용")]
[Comment("비밀글 사용")]
public bool AllowSecret { get; set; } = false;
[DisplayName("댓글 신고 시 숨김")]
[Comment("댓글 신고 시 숨김")]
public ushort BlameHideCount { get; set; } = 0;
[DisplayName("댓글 삭제 금지 기간")]
[Comment("댓글 삭제 금지 기간")]
public ushort DeleteProtectionDays { get; set; } = 0;
[DisplayName("댓글 수정 금지 기간")]
[Comment("댓글 수정 금지 기간")]
public ushort UpdateProtectionDays { get; set; } = 0;
[DisplayName("댓글 보호 기능 (삭제 시)")]
[Comment("댓글 보호 기능 (삭제 시)")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public bool AllowDeleteProtection { get; set; } = false;
[DisplayName("댓글 보호 기능 (수정 시)")]
[Comment("댓글 보호 기능 (수정 시)")]
[Range(0, 365, ErrorMessage = "값은 0 ~ 365 사이를 입력합니다.")]
public bool AllowUpdateProtection { get; set; } = false;
[DisplayName("댓글 변경 기록")]
[Comment("댓글 변경 기록")]
public bool EnableCommentUpdateLog { get; set; } = false;
}
}