import apiClient, { apiEndpoints } from './index.js' // Get subject list export const getSubjects = async () => { try { const response = await apiClient.get(apiEndpoints.SUBJECTS.LIST) return response.data } catch (error) { throw new Error(error?.response?.data?.detail || error?.message || 'Failed to fetch subjects') } } // Update subject information export const updateSubject = async (subjectId, subjectData) => { try { // Convert data format to match API requirements const apiData = { subject_name: subjectData.subject_name || '', enabled_flag: subjectData.enabled_flag || 'Y', primary_flag: subjectData.primary_flag || 'N', calendar_color: subjectData.calendar_color || '', sort_sequence: parseInt(subjectData.sort_sequence) || 0, tenant_id: subjectData.tenant_id || 1, } console.log('Sending update request:', { subjectId, url: apiEndpoints.SUBJECTS.UPDATE(subjectId), data: apiData }) const response = await apiClient.patch(apiEndpoints.SUBJECTS.UPDATE(subjectId), apiData) return response.data } catch (error) { console.error('API error details:', { status: error?.response?.status, statusText: error?.response?.statusText, data: error?.response?.data, headers: error?.response?.headers }) const errorMessage = error?.response?.data?.detail || error?.response?.data?.message || error?.response?.data?.error || `HTTP ${error?.response?.status}: ${error?.response?.statusText}` || error.message || 'Failed to update subject' throw new Error(errorMessage) } } // Create subject export const createSubject = async (subjectData) => { try { // Convert data format to match API requirements const apiData = { subject_name: subjectData.subject_name || '', enabled_flag: subjectData.enabled_flag || 'Y', primary_flag: subjectData.primary_flag || 'N', calendar_color: subjectData.calendar_color || '', sort_sequence: parseInt(subjectData.sort_sequence) || 0, tenant_id: subjectData.tenant_id || 1, } console.log('Sending create request:', { url: apiEndpoints.SUBJECTS.CREATE, data: apiData }) const response = await apiClient.post(apiEndpoints.SUBJECTS.CREATE, apiData) return response.data } catch (error) { console.error('API error details:', { status: error?.response?.status, statusText: error?.response?.statusText, data: error?.response?.data, headers: error?.response?.headers }) const errorMessage = error?.response?.data?.detail || error?.response?.data?.message || error?.response?.data?.error || `HTTP ${error?.response?.status}: ${error?.response?.statusText}` || error.message || 'Failed to create subject' throw new Error(errorMessage) } } // Delete subject export const deleteSubject = async (subjectId) => { try { console.log('Sending delete request:', { subjectId, url: apiEndpoints.SUBJECTS.DELETE(subjectId) }) const response = await apiClient.delete(apiEndpoints.SUBJECTS.DELETE(subjectId)) return response.data } catch (error) { console.error('API error details:', { status: error?.response?.status, statusText: error?.response?.statusText, data: error?.response?.data, headers: error?.response?.headers }) const errorMessage = error?.response?.data?.detail || error?.response?.data?.message || error?.response?.data?.error || `HTTP ${error?.response?.status}: ${error?.response?.statusText}` || error.message || 'Failed to delete subject' throw new Error(errorMessage) } }