frontend_adaptive_learning/src/roles/admin/manage_exercises/services/serviceExercises.jsx

126 lines
4.1 KiB
React
Raw Normal View History

2024-10-31 02:32:14 +00:00
import axiosInstance from '../../../../utils/axiosInstance';
const getSoalNumber = (title) => {
const match = title.match(/\d+$/);
return match ? parseInt(match[0], 10) : 0;
};
const fetchData= async (search, sort, page, limit) => {
try {
const response = await axiosInstance.get(`/level/admin?search=${search}&sort=${sort}&page=${page}&limit=${limit}`);
return response.data;
} catch (error) {
console.error('Error fetching levels:', error);
throw error;
}
};
const getLevelById = async (id) => {
try {
const response = await axiosInstance.get(`/level/${id}`);
return response.data;
} catch (error) {
console.error(`Error fetching level with ID ${id}:`, error);
throw error;
}
};
const getExerciseByLevelId = async (id) => {
try {
const response = await axiosInstance.get(`/exercise/admin/level/${id}`);
const sortedData = response.data.payload.EXERCISES.sort((a, b) => {
return getSoalNumber(a.TITLE) - getSoalNumber(b.TITLE);
});
return {NAME_LEVEL: response.data.payload.NAME_LEVEL ,NAME_SECTION: response.data.payload.NAME_SECTION ,NAME_TOPIC: response.data.payload.NAME_TOPIC , EXERCISES: sortedData};
} catch (error) {
console.error(`Error fetching level with ID ${id}:`, error);
throw error;
}
};
const createData = async (questionData) => {
try {
const response = await axiosInstance.post(`/exercises`, questionData);
const question = response.data.payload[0];
let editedResponse = "";
if (question.QUESTION_TYPE === "MPQ") {
editedResponse = {...question, matchingPairs: question.questionDetails};
}else if (question.QUESTION_TYPE === "MCQ") {
editedResponse = {...question, multipleChoices: [question.questionDetails]};
}else if (question.QUESTION_TYPE === "TFQ") {
editedResponse = {...question, trueFalse: [question.questionDetails]};
}
return {payload: editedResponse, message: response.data.message, status: response.data.statusCode,};
} catch (error) {
console.error('Error adding level:', error);
throw error;
}
};
const updateData = async (id, questionData) => {
try {
const response = await axiosInstance.put(`/exercise/${id}`, questionData);
const question = response.data.payload;
let editedResponse = "";
if (question.QUESTION_TYPE === "MPQ") {
editedResponse = {...question, matchingPairs: question.matchingPairs};
}else if (question.QUESTION_TYPE === "MCQ") {
editedResponse = {...question, multipleChoices: [question.multipleChoices]};
}else if (question.QUESTION_TYPE === "TFQ") {
editedResponse = {...question, trueFalse: [question.trueFalse]};
}
return {payload: editedResponse, message: response.data.message, status: response.data.statusCode,};
// return response.data;
} catch (error) {
console.error(`Error updating level with ID ${id}:`, error);
throw error;
}
};
const sortingData = async (questionData) => {
try {
const response = await axiosInstance.put(`/exercise/title`, questionData);
return response.data;
} catch (error) {
console.error(`Error updating level with ID ${id}:`, error);
throw error;
}
};
const deleteData = async (id) => {
try {
const response = await axiosInstance.delete(`/exercise/${id}`);
return response.data;
} catch (error) {
console.error(`Error deleting question with ID ${id}:`, error);
throw error;
}
};
2024-12-16 02:39:28 +00:00
const deleteMedia = async (id, fileType) => {
2024-12-15 17:42:37 +00:00
try {
2024-12-16 02:39:28 +00:00
const response = await axiosInstance.post(`/exercise/file/${id}`, {fileType});
2024-12-15 17:42:37 +00:00
return response.data;
} catch (error) {
console.error(`Error deleting question with ID ${id}:`, error);
throw error;
}
};
2024-10-31 02:32:14 +00:00
export default{
fetchData,
getExerciseByLevelId,
getLevelById,
createData,
updateData,
sortingData,
deleteData,
2024-12-15 17:42:37 +00:00
deleteMedia
2024-10-31 02:32:14 +00:00
};