import dayjs from 'dayjs';

/**
 * 이벤트 유형 이름 가져오기
 * @param {string} eventType - 이벤트 유형 코드
 * @returns {string} - 이벤트 유형 이름
 */
export const getEventTypeName = (eventType) => {
  switch (eventType) {
    case 'meeting':
      return '정기 모임';
    case 'regular':
      return '토너먼트';
    case 'training':
      return '교육/강습';
    case 'social':
      return '친목 모임';
    case 'other':
      return '기타';
    default:
      return eventType;
  }
};

/**
 * 이벤트 유형 심각도 가져오기
 * @param {string} eventType - 이벤트 유형 코드
 * @returns {string} - 심각도 클래스
 */
export const getEventTypeSeverity = (eventType) => {
  switch (eventType) {
    case 'meeting':
      return 'info';
    case 'regular':
      return 'danger';
    case 'training':
      return 'success';
    case 'social':
      return 'warning';
    case 'other':
      return 'secondary';
    default:
      return 'info';
  }
};

/**
 * 상태 이름 가져오기
 * @param {string} status - 상태 코드
 * @returns {string} - 상태 이름
 */
export const getStatusName = (status) => {
  switch (status) {
    case 'scheduled':
      return '예정됨';
    case 'in_progress':
      return '진행중';
    case 'completed':
      return '완료됨';
    case 'canceled':
      return '취소됨';
    default:
      return status;
  }
};

/**
 * 상태 심각도 가져오기
 * @param {string} status - 상태 코드
 * @returns {string} - 심각도 클래스
 */
export const getStatusSeverity = (status) => {
  switch (status) {
    case 'scheduled':
      return 'info';
    case 'in_progress':
      return 'warning';
    case 'completed':
      return 'success';
    case 'canceled':
      return 'danger';
    default:
      return 'info';
  }
};

/**
 * 날짜 포맷팅
 * @param {string|Date} date - 날짜
 * @returns {string} - 포맷팅된 날짜 문자열
 */
export const formatDate = (date) => {
  if (!date) return '';
  return dayjs(date).format('YYYY-MM-DD HH:mm');
};

/**
 * 이벤트 유형 옵션
 */
import { getEventTypeLabel, getEventStatusLabel } from '@/utils/enumMappings';

export const eventTypeOptions = [
  { name: getEventTypeLabel('meeting'), value: 'meeting' },
  { name: getEventTypeLabel('regular'), value: 'regular' },
  { name: getEventTypeLabel('training'), value: 'training' },
  { name: getEventTypeLabel('social'), value: 'social' },
  { name: getEventTypeLabel('other'), value: 'other' }
];

/**
 * 상태 옵션
 */
export const statusOptions = [
  { name: getEventStatusLabel('scheduled'), value: 'scheduled' },
  { name: getEventStatusLabel('in_progress'), value: 'in_progress' },
  { name: getEventStatusLabel('completed'), value: 'completed' },
  { name: getEventStatusLabel('canceled'), value: 'canceled' }
];

/**
 * 새 이벤트 객체 생성
 * @param {number} clubId - 클럽 ID
 * @returns {Object} - 새 이벤트 객체
 */
export const createNewEvent = (clubId) => {
  const now = new Date();
  return {
    clubId,
    title: '',
    description: '',
    eventType: 'meeting',
    startDate: now,
    endDate: now,
    location: '',
    status: 'scheduled',
    maxParticipants: 0,
    teamCount: 1,
    gameCount: 3,
    participantFee: 0,
    laneCount: 0,
    registrationDeadline: now
  };
};
