import apiClient from './api';

/**
 * 점수 관리 서비스
 */
export default {
  /**
   * 모임의 점수 데이터 가져오기
   * @param {number} meetingId - 모임 ID
   * @returns {Promise} - API 응답
   */
  async getMeetingScores(meetingId) {
    return apiClient.get(`/meetings/${meetingId}/scores`);
  },

  /**
   * 점수 저장하기
   * @param {number} meetingId - 모임 ID
   * @param {Array} scores - 점수 데이터 배열
   * @returns {Promise} - API 응답
   */
  async saveScores(meetingId, scores) {
    return apiClient.post(`/meetings/${meetingId}/scores`, { scores });
  },

  /**
   * 특정 참가자의 점수 이력 가져오기
   * @param {number} memberId - 회원 ID
   * @param {number} limit - 가져올 이력 수
   * @returns {Promise} - API 응답
   */
  async getMemberScoreHistory(memberId, limit = 5) {
    return apiClient.get(`/members/${memberId}/scores/history`, { params: { limit } });
  },

  /**
   * 점수 내보내기
   * @param {number} meetingId - 모임 ID
   * @param {string} format - 내보내기 형식 (xlsx, csv, pdf)
   * @param {Array} content - 내보낼 내용 배열
   * @returns {Promise} - API 응답 (파일 다운로드)
   */
  async exportScores(meetingId, format, content) {
    return apiClient.get(`/meetings/${meetingId}/scores/export`, {
      params: { format, content: content.join(',') },
      responseType: 'blob'
    });
  },

  /**
   * 팀별 점수 가져오기
   * @param {number} meetingId - 모임 ID
   * @returns {Promise} - API 응답
   */
  async getTeamScores(meetingId) {
    return apiClient.get(`/meetings/${meetingId}/scores/teams`);
  },

  /**
   * 개인 순위 가져오기
   * @param {number} meetingId - 모임 ID
   * @param {string} type - 순위 유형 (scratch, handicap)
   * @param {string} game - 게임 코드 (all, game1, game2, ...)
   * @returns {Promise} - API 응답
   */
  async getIndividualRankings(meetingId, type = 'handicap', game = 'all') {
    return apiClient.get(`/meetings/${meetingId}/scores/rankings/individual`, {
      params: { type, game }
    });
  },

  /**
   * 팀 순위 가져오기
   * @param {number} meetingId - 모임 ID
   * @returns {Promise} - API 응답
   */
  async getTeamRankings(meetingId) {
    return apiClient.get(`/meetings/${meetingId}/scores/rankings/teams`);
  }
};
