import apiClient from '@/api/client.js' export const adminService = { getOverview() { return apiClient.get('/admin/overview').then(r => r.data) }, listUsers(params = {}) { return apiClient.get('/admin/users', { params }).then(r => r.data) }, createUser(body) { return apiClient.post('/admin/users', body).then(r => r.data) }, getUser(id) { return apiClient.get(`/admin/users/${id}`).then(r => r.data) }, updateUserStatus(id, body) { return apiClient.patch(`/admin/users/${id}/status`, body).then(r => r.data) }, updateUserRole(id, body) { return apiClient.patch(`/admin/users/${id}/role`, body).then(r => r.data) }, resetXpStreak(id, body) { return apiClient.post(`/admin/users/${id}/reset-xp-streak`, body).then(r => r.data) }, updateLeaderboard(id, body) { return apiClient.patch(`/admin/users/${id}/leaderboard`, body).then(r => r.data) }, listLeaderboard(params = {}) { return apiClient.get('/admin/leaderboard', { params }).then(r => r.data) }, listAnomalies() { return apiClient.get('/admin/leaderboard/anomalies').then(r => r.data) }, listSystemVocabTopics(params = {}) { return apiClient.get('/admin/system-vocab/topics', { params }).then(r => r.data) }, createSystemVocabTopic(body) { return apiClient.post('/admin/system-vocab/topics', body).then(r => r.data) }, getSystemVocabTopic(id) { return apiClient.get(`/admin/system-vocab/topics/${id}`).then(r => r.data) }, updateSystemVocabTopic(id, body) { return apiClient.patch(`/admin/system-vocab/topics/${id}`, body).then(r => r.data) }, deleteSystemVocabTopic(id) { return apiClient.delete(`/admin/system-vocab/topics/${id}`).then(r => r.data) }, createSystemVocabWord(topicId, body) { return apiClient.post(`/admin/system-vocab/topics/${topicId}/words`, body).then(r => r.data) }, updateSystemVocabWord(topicId, wordId, body) { return apiClient.patch(`/admin/system-vocab/topics/${topicId}/words/${wordId}`, body).then(r => r.data) }, deleteSystemVocabWord(topicId, wordId) { return apiClient.delete(`/admin/system-vocab/topics/${topicId}/words/${wordId}`).then(r => r.data) }, copySystemVocabToUser(topicId, body) { return apiClient.post(`/admin/system-vocab/topics/${topicId}/copy-to-user`, body).then(r => r.data) }, listConversationTopics(params = {}) { return apiClient.get('/admin/conversation/topics', { params }).then(r => r.data) }, createConversationTopic(body) { return apiClient.post('/admin/conversation/topics', body).then(r => r.data) }, getConversationTopic(id) { return apiClient.get(`/admin/conversation/topics/${id}`).then(r => r.data) }, updateConversationTopic(id, body) { return apiClient.patch(`/admin/conversation/topics/${id}`, body).then(r => r.data) }, archiveConversationTopic(id) { return apiClient.delete(`/admin/conversation/topics/${id}`).then(r => r.data) }, listTranslationSteps(params = {}) { return apiClient.get('/admin/translation/steps', { params }).then(r => r.data) }, createTranslationStep(body) { return apiClient.post('/admin/translation/steps', body).then(r => r.data) }, getTranslationStep(id) { return apiClient.get(`/admin/translation/steps/${id}`).then(r => r.data) }, updateTranslationStep(id, body) { return apiClient.patch(`/admin/translation/steps/${id}`, body).then(r => r.data) }, archiveTranslationStep(id) { return apiClient.delete(`/admin/translation/steps/${id}`).then(r => r.data) }, deleteTranslationStep(id) { return apiClient.delete(`/admin/translation/steps/${id}`).then(r => r.data) }, createTranslationTopic(stepId, body) { return apiClient.post(`/admin/translation/steps/${stepId}/topics`, body).then(r => r.data) }, getTranslationTopic(id) { return apiClient.get(`/admin/translation/topics/${id}`).then(r => r.data) }, updateTranslationTopic(id, body) { return apiClient.patch(`/admin/translation/topics/${id}`, body).then(r => r.data) }, archiveTranslationTopic(id) { return apiClient.delete(`/admin/translation/topics/${id}`).then(r => r.data) }, deleteTranslationTopic(id) { return apiClient.delete(`/admin/translation/topics/${id}`).then(r => r.data) }, createTranslationSentence(topicId, body) { return apiClient.post(`/admin/translation/topics/${topicId}/sentences`, body).then(r => r.data) }, updateTranslationSentence(id, body) { return apiClient.patch(`/admin/translation/sentences/${id}`, body).then(r => r.data) }, archiveTranslationSentence(id) { return apiClient.delete(`/admin/translation/sentences/${id}`).then(r => r.data) }, deleteTranslationSentence(id) { return apiClient.delete(`/admin/translation/sentences/${id}`).then(r => r.data) }, listWritingTopics(params = {}) { return apiClient.get('/admin/content/writing-topics', { params }).then(r => r.data) }, getWritingTopic(id) { return apiClient.get(`/admin/content/writing-topics/${id}`).then(r => r.data) }, createWritingTopic(rawJson) { return apiClient.post('/admin/content/writing-topics', { raw_json: rawJson }).then(r => r.data) }, updateWritingTopic(id, rawJson) { return apiClient.patch(`/admin/content/writing-topics/${id}`, { raw_json: rawJson }).then(r => r.data) }, archiveWritingTopic(id) { return apiClient.delete(`/admin/content/writing-topics/${id}`).then(r => r.data) }, restoreWritingTopic(id) { return apiClient.post(`/admin/content/writing-topics/${id}/restore`).then(r => r.data) }, listMockTests(params = {}) { return apiClient.get('/admin/content/mock-tests', { params }).then(r => r.data) }, getMockTest(id) { return apiClient.get(`/admin/content/mock-tests/${id}`).then(r => r.data) }, createMockTest(rawJson) { return apiClient.post('/admin/content/mock-tests', { raw_json: rawJson }).then(r => r.data) }, updateMockTest(id, rawJson) { return apiClient.patch(`/admin/content/mock-tests/${id}`, { raw_json: rawJson }).then(r => r.data) }, archiveMockTest(id) { return apiClient.delete(`/admin/content/mock-tests/${id}`).then(r => r.data) }, restoreMockTest(id) { return apiClient.post(`/admin/content/mock-tests/${id}/restore`).then(r => r.data) }, uploadAdminImage(file) { const body = new FormData() body.append('file', file) return apiClient.post('/admin/assets/images', body, { headers: { 'Content-Type': 'multipart/form-data' }, }).then(r => r.data) }, uploadAdminAudio(file) { const body = new FormData() body.append('file', file) return apiClient.post('/admin/assets/audio', body, { headers: { 'Content-Type': 'multipart/form-data' }, }).then(r => r.data) }, createReadingMockTestBuilder(body) { return apiClient.post('/admin/content/reading-mock-tests', body).then(r => r.data) }, getReadingMockTestBuilder(id) { return apiClient.get(`/admin/content/reading-mock-tests/${id}/builder`).then(r => r.data) }, updateReadingMockTestBuilder(id, body) { return apiClient.patch(`/admin/content/reading-mock-tests/${id}`, body).then(r => r.data) }, createListeningMockTestBuilder(body) { return apiClient.post('/admin/content/listening-mock-tests', body).then(r => r.data) }, getListeningMockTestBuilder(id) { return apiClient.get(`/admin/content/listening-mock-tests/${id}/builder`).then(r => r.data) }, updateListeningMockTestBuilder(id, body) { return apiClient.patch(`/admin/content/listening-mock-tests/${id}`, body).then(r => r.data) }, createSpeakingMockTestBuilder(body) { return apiClient.post('/admin/content/speaking-mock-tests', body).then(r => r.data) }, getSpeakingMockTestBuilder(id) { return apiClient.get(`/admin/content/speaking-mock-tests/${id}/builder`).then(r => r.data) }, updateSpeakingMockTestBuilder(id, body) { return apiClient.patch(`/admin/content/speaking-mock-tests/${id}`, body).then(r => r.data) }, listQuizzes(params = {}) { return apiClient.get('/admin/content/quizzes', { params }).then(r => r.data) }, getQuiz(id) { return apiClient.get(`/admin/content/quizzes/${id}`).then(r => r.data) }, createQuiz(rawJson) { return apiClient.post('/admin/content/quizzes', { raw_json: rawJson }).then(r => r.data) }, updateQuiz(id, rawJson) { return apiClient.patch(`/admin/content/quizzes/${id}`, { raw_json: rawJson }).then(r => r.data) }, archiveQuiz(id) { return apiClient.delete(`/admin/content/quizzes/${id}`).then(r => r.data) }, restoreQuiz(id) { return apiClient.post(`/admin/content/quizzes/${id}/restore`).then(r => r.data) }, }