import {
  Table,
  TableBody,
  TableCell,
  TableHead,
  TableHeaderCell,
  TableRow,
} from '@/components/ui/table';
import {
  formatBoardCategoryLabel,
  formatFaqTypeLabel,
  formatOptionalValue,
  formatVisibilityLabel,
  type BoardPost,
} from '@/lib/domain/board-post';
import { BoardRowActions } from '../../_components/board-row-actions';

interface FaqTableProps {
  items: BoardPost[];
  page: number;
  pageSize: number;
  totalCount: number;
}

const COLUMN_HEADERS = [
  '번호',
  '구분',
  '유형',
  '제목',
  '작성자',
  '등록일',
  '사용여부',
  '관리',
];

/**
 * FAQ 목록 테이블 — 시안 A_BOA_014 ③.
 *
 * "유형"은 현재 항상 `-`다 — 백엔드에 유형 저장 필드가 아직 없어 조회 응답에 값이 없다
 * (`board-post.ts`의 `BOARD_TYPE_CODE_PARAM` 주석). 열은 유지해 두었으므로 백엔드에 필드가
 * 추가되면 Repository 매핑만 늘리면 그대로 채워진다.
 */
export function FaqTable({ items, page, pageSize, totalCount }: FaqTableProps) {
  const offset = (page - 1) * pageSize;

  return (
    <Table>
      <TableHead>
        <TableRow>
          {COLUMN_HEADERS.map((header) => (
            <TableHeaderCell key={header}>{header}</TableHeaderCell>
          ))}
        </TableRow>
      </TableHead>
      <TableBody>
        {items.map((post, index) => (
          <TableRow key={post.id}>
            <TableCell>{totalCount - offset - index}</TableCell>
            <TableCell>{formatBoardCategoryLabel(post.categoryCode)}</TableCell>
            <TableCell>{formatFaqTypeLabel(post.typeCode)}</TableCell>
            <TableCell>{formatOptionalValue(post.title)}</TableCell>
            <TableCell>{formatOptionalValue(post.authorName)}</TableCell>
            <TableCell>{formatOptionalValue(post.createdAt)}</TableCell>
            <TableCell>{formatVisibilityLabel(post.isVisible)}</TableCell>
            <TableCell>
              <BoardRowActions boardType="faq" post={post} />
            </TableCell>
          </TableRow>
        ))}
      </TableBody>
    </Table>
  );
}
