/**
 * 게시판 관리 타입 정의
 */

// ===== 게시판 타입 =====
export interface Board {
  id: string;
  name: string;           // 게시판명 (예: 공지사항, 자유게시판)
  description?: string;
  isActive: boolean;
  createdAt: string;
  updatedAt: string;
}

// ===== 게시글 타입 =====
export interface Post {
  id: string;
  boardId: string;        // 게시판 ID
  boardName: string;      // 게시판명
  title: string;          // 제목
  content: string;        // 내용 (HTML)
  authorId: string;       // 작성자 ID
  authorName: string;     // 작성자명
  authorDepartment?: string; // 작성자 부서
  authorPosition?: string;   // 작성자 직책
  isPinned: boolean;      // 상단 노출 여부
  allowComments: boolean; // 댓글 허용 여부
  viewCount: number;      // 조회수
  attachments: Attachment[]; // 첨부파일
  createdAt: string;      // 등록일시
  updatedAt: string;      // 수정일시
}

// ===== 첨부파일 타입 =====
export interface Attachment {
  id: string;
  fileName: string;
  fileSize: number;
  fileUrl: string;
  mimeType: string;
}

// ===== 댓글 타입 =====
export interface Comment {
  id: string;
  postId: string;         // 게시글 ID
  authorId: string;       // 작성자 ID
  authorName: string;     // 작성자명
  authorDepartment?: string; // 작성자 부서
  authorPosition?: string;   // 작성자 직책
  authorProfileImage?: string; // 프로필 이미지
  content: string;        // 댓글 내용
  createdAt: string;      // 등록일시
  updatedAt: string;      // 수정일시
}

// ===== 필터/정렬 옵션 =====
export type SortOption = 'latest' | 'oldest' | 'viewCount';

export const SORT_OPTIONS: { value: SortOption; label: string }[] = [
  { value: 'latest', label: '최신순' },
  { value: 'oldest', label: '오래된순' },
  { value: 'viewCount', label: '조회순' },
];

export type BoardFilter = 'all' | 'my' | string; // 'all', 'my', 또는 boardId

// ===== 폼 데이터 타입 =====
export interface PostFormData {
  boardId: string;
  title: string;
  content: string;
  isPinned: boolean;
  allowComments: boolean;
  attachments: File[];
}

export interface CommentFormData {
  content: string;
}

// ===== API 응답 타입 =====
export interface PostListResponse {
  data: Post[];
  pagination: {
    currentPage: number;
    totalPages: number;
    totalItems: number;
    perPage: number;
  };
}

export interface PostDetailResponse {
  data: Post;
  comments: Comment[];
}

// ===== 탭 옵션 (게시판 탭) =====
export interface BoardTabOption {
  value: string;
  label: string;
  count?: number;
}

// ===== Mock 데이터용 =====
export const MOCK_BOARDS: Board[] = [
  { id: 'all', name: '전체보드', isActive: true, createdAt: '', updatedAt: '' },
  { id: 'notice', name: '공지사항', isActive: true, createdAt: '', updatedAt: '' },
  { id: 'approval', name: '전자결재', isActive: true, createdAt: '', updatedAt: '' },
  { id: 'print', name: '인쇄', isActive: true, createdAt: '', updatedAt: '' },
  { id: 'seaweed', name: '미역', isActive: true, createdAt: '', updatedAt: '' },
  { id: 'depression', name: '우울', isActive: true, createdAt: '', updatedAt: '' },
];

export const BOARD_FILTER_OPTIONS: { value: string; label: string }[] = [
  { value: 'notice', label: '공지사항' },
  { value: 'board1', label: '게시판명' },
  { value: 'board2', label: '게시판명2' },
  { value: 'my', label: '나의 게시글' },
];