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
|
|
|
};
|