/**
 * 이벤트 타입 정의
 */

import { formatDate } from '@/lib/utils/date';

// API 타입 re-export
export type { PostApiData, PostPaginationResponse } from '../shared/types';

/**
 * API 데이터 → 프론트엔드 타입 변환
 */
export function transformPostToEvent(post: import('../shared/types').PostApiData): Event {
  // 이벤트 시작일/종료일은 custom_field_values에서 가져옴
  const startDateField = post.custom_field_values?.find(f => f.field_key === 'start_date');
  const endDateField = post.custom_field_values?.find(f => f.field_key === 'end_date');

  // 기본값으로 created_at 사용
  const createdDate = formatDate(post.created_at);

  return {
    id: String(post.id),
    title: post.title,
    content: post.content,
    author: post.author?.name || '관리자',
    startDate: startDateField?.field_value || createdDate,
    endDate: endDateField?.field_value || createdDate,
    viewCount: post.views,
    attachments: post.files?.map(file => ({
      id: String(file.id),
      name: file.original_name,
      url: file.file_path,
      size: file.file_size,
    })),
  };
}

export interface Event {
  id: string;
  title: string;
  content: string;
  author: string;
  startDate: string; // 이벤트 시작일
  endDate: string; // 이벤트 종료일
  viewCount: number;
  imageUrl?: string;
  attachments?: Attachment[];
}

export interface Attachment {
  id: string;
  name: string;
  url: string;
  size?: number;
}

// 탭 옵션
export type EventTab = 'ongoing' | 'ended';

export const EVENT_TABS: { value: EventTab; label: string }[] = [
  { value: 'ongoing', label: '진행중인 이벤트' },
  { value: 'ended', label: '종료된 이벤트' },
];

// 정렬 옵션
export type SortOption = 'latest' | 'oldest' | 'views';

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

// Mock 데이터
export const MOCK_EVENTS: Event[] = [
  {
    id: '1',
    title: '2025년 신규 가입 이벤트',
    content: `안녕하세요, SAM입니다.

2025년 신규 가입 고객을 위한 특별 이벤트를 진행합니다.

■ 이벤트 기간: 2025-09-03 ~ 2025-12-31
■ 대상: 2025년 신규 가입 고객
■ 혜택: 첫 달 이용료 50% 할인

많은 참여 부탁드립니다.`,
    author: '홍길동',
    startDate: '2025-09-03',
    endDate: '2025-12-31',
    viewCount: 123,
    attachments: [
      { id: 'att1', name: 'abc.pdf', url: '/files/event1.pdf' },
    ],
  },
  {
    id: '2',
    title: '출석체크 이벤트',
    content: `안녕하세요.

매일 출석체크하고 포인트 받아가세요!

■ 이벤트 기간: 2025-09-03 ~ 2025-12-31
■ 참여 방법: 매일 앱 접속 후 출석체크 버튼 클릭
■ 혜택: 매일 100포인트 적립

연속 출석 시 추가 보너스!`,
    author: '홍길동',
    startDate: '2025-09-03',
    endDate: '2025-12-31',
    viewCount: 123,
  },
  {
    id: '3',
    title: '추천인 이벤트',
    content: `친구를 추천하고 함께 혜택 받으세요!

■ 이벤트 기간: 2025-09-03 ~ 2025-12-31
■ 혜택: 추천인/피추천인 각각 10,000원 캐시백

추천 횟수 제한 없음!`,
    author: '홍길동',
    startDate: '2025-09-03',
    endDate: '2025-12-31',
    viewCount: 123,
  },
  {
    id: '4',
    title: '설문조사 이벤트',
    content: `SAM 서비스 개선을 위한 설문조사에 참여해주세요.

■ 이벤트 기간: 2025-09-03 ~ 2025-12-31
■ 소요 시간: 약 5분
■ 혜택: 스타벅스 아메리카노 기프티콘 증정

여러분의 소중한 의견을 기다립니다.`,
    author: '홍길동',
    startDate: '2025-09-03',
    endDate: '2025-12-31',
    viewCount: 123,
  },
  {
    id: '5',
    title: '첫 결제 이벤트',
    content: `첫 결제 시 특별 할인!

■ 이벤트 기간: 2025-09-03 ~ 2025-12-31
■ 대상: 첫 결제 고객
■ 혜택: 결제 금액의 20% 즉시 할인

놓치지 마세요!`,
    author: '홍길동',
    startDate: '2025-09-03',
    endDate: '2025-12-31',
    viewCount: 123,
  },
  {
    id: '6',
    title: '리뷰 작성 이벤트',
    content: `솔직한 리뷰를 남겨주세요!

■ 이벤트 기간: 2025-09-03 ~ 2025-12-31
■ 참여 방법: 서비스 이용 후 리뷰 작성
■ 혜택: 리뷰 1건당 500포인트 적립

우수 리뷰어 선정 시 추가 선물 증정!`,
    author: '홍길동',
    startDate: '2025-09-03',
    endDate: '2025-12-31',
    viewCount: 123,
  },
  {
    id: '7',
    title: '여름 특별 이벤트',
    content: `무더운 여름, 시원한 혜택!

■ 이벤트 기간: 2025-09-03 ~ 2025-12-31
■ 혜택: 전 품목 10% 추가 할인

더위를 날려버릴 특가 이벤트!`,
    author: '홍길동',
    startDate: '2025-09-03',
    endDate: '2025-12-31',
    viewCount: 123,
  },
  // 종료된 이벤트
  {
    id: '8',
    title: '2024년 연말 감사 이벤트 (종료)',
    content: `2024년 한 해 감사했습니다.

■ 이벤트 기간: 2024-12-01 ~ 2024-12-31
■ 혜택: 전 품목 30% 할인

이 이벤트는 종료되었습니다.`,
    author: '홍길동',
    startDate: '2024-12-01',
    endDate: '2024-12-31',
    viewCount: 456,
  },
  {
    id: '9',
    title: '2024년 블랙프라이데이 이벤트 (종료)',
    content: `블랙프라이데이 특별 할인!

■ 이벤트 기간: 2024-11-25 ~ 2024-11-30
■ 혜택: 최대 50% 할인

이 이벤트는 종료되었습니다.`,
    author: '김철수',
    startDate: '2024-11-25',
    endDate: '2024-11-30',
    viewCount: 789,
  },
];