Files
bowlingManager/frontend/src/services/scoreService.js
T
2025-04-17 23:32:39 +09:00

81 lines
2.3 KiB
JavaScript

import apiClient from './apiClient';
/**
* 점수 관리 서비스
*/
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`);
}
};