import { IoReturnUpBack } from "react-icons/io5" const initialState = { grade: 8, groupId: 0, name: '', startDate: new Date(), endDate: new Date(), startTime: '19:0', endTime: '', description: '', type: 'bank', questionnaires: [ { id: 1, name: 'عمومی', fileUrl: '', }, { id: 2, name: 'اختصاصی', fileUrl: '', } ], questionairesCourses: [ { id: 0, questionnaireId: 1, questionsQuantity: 20, name: 'دینی', coefficient: 4 }, { id: 1, questionnaireId: 2, questionsQuantity: 20, name: 'ریاضی', coefficient: 4, }, ], answers: [ ], courseBank: [ { id: 1, title: 'ریاضی', selectedQuestions: [] }, { id: 2, title: 'شیمی', selectedQuestions: [] }, ], questionBank: [ { questionId: 1, courseId: 2, title: 'تترا فلورید اسید چنتا اسید داره؟', answeredPercentage: '83%', score: 1, options: [ { id: 1, title: 'تترا', isAnswer: false }, { id: 2, title: 'سه ترا', isAnswer: false }, { id: 3, title: 'هویج و گوجه فرنگی؟', isAnswer: true }, { id: 4, title: 'فلور تا', isAnswer: false }, ] }, { questionId: 2, courseId: 2, title: 'asdaw dsfsdfiermc', answeredPercentage: '83%', score: 1, options: [ { id: 1, title: 'asdasd', isAnswer: false }, { id: 2, title: 'asdasd2', isAnswer: false }, { id: 3, title: '', isAnswer: true }, { id: 4, title: 'asdasd4', isAnswer: false }, ] }, { questionId: 3, courseId: 1, title: 'برای حل مساءل مربوط به مساحت زیر نمودار باید از کدام مبحث ریاضی استفاده کرد؟', answeredPercentage: '43%', score: 1, options: [ { id: 1, title: 'لگاریتم طبیعی', isAnswer: false }, { id: 2, title: 'حد و مشتق', isAnswer: false }, { id: 3, title: 'قدر مطلق', isAnswer: false }, { id: 4, title: 'نخوندم 🗿', isAnswer: true }, ] }, { questionId: 4, courseId: 2, title: 'asdaw dsfsdfisdfsdfsfsdfsfsdfsdfermc', answeredPercentage: '83%', score: 1, options: [ { id: 1, title: 'asdasd', isAnswer: false }, { id: 2, title: 'asdasd2', isAnswer: false }, { id: 3, title: 'sdfsdfsdfsfd', isAnswer: true }, { id: 4, title: 'asdasd4', isAnswer: false }, ] }, ], courses: [ ], questions: [ ], } export const numOfinitQs = initialState.questionBank.length; export default function addExamReduser(state = initialState, { type, payload }) { console.log(state.courses) switch (type) { case 'ADD_EXAM_GRADE_AND_GROUP': return { ...state, grade: payload.grade, groupId: payload.groupId } case 'ADD_EXAM_DESCRIPTION': return { ...state, name: payload.name, startDate: new Date(), endDate: new Date(), startTime: '19:0', endTime: '', description: payload.description, type: payload.type } case 'ADD_EXAM_QUESTIONAIRES': return { ...state, questionnaires: [...state.questionnaires, payload] } case 'ADD_QUESTIONNAIRE_COURSES': return { ...state, questionairesCourses: [ ...state.questionairesCourses, payload ] } case 'ADD_ANSWERS': return { ...state, answers: [ ...state.answers, payload ] } case 'ADD_EXAM_COURSE': return { ...state, courses: [...state.courses, payload] } case 'REMOVE_EXAM_COURSE': return { ...state, courses: state.courses.filter(itm => itm.id !== payload.id) } case 'ADD_EXAM_QUESTIONS': console.log(payload) const othercourses = state.courses.filter(itm => itm.id !== payload.courseId) const selectedC = state.courses.filter(itm => itm.id == payload.courseId) selectedC[0] = { ...selectedC[0], selectedQuestions: [ payload, ...selectedC[0].selectedQuestions] } const newCourses = [...othercourses, ...selectedC] return { ...state, courses: newCourses } case 'REMOVE_EXAM_QUESTIONS': const dontDeleteThese = state.courses.filter(itm => itm.id !== payload.courseId) const courseForDelete = state.courses.filter(itm => itm.id == payload.courseId) courseForDelete[0] = { ...courseForDelete[0], selectedQuestions: courseForDelete[0].selectedQuestions.filter(itm => itm.questionId !== payload.questionId) } const newCoursesWithDeleted = [...dontDeleteThese, ...courseForDelete] console.log(newCoursesWithDeleted) console.log(courseForDelete) console.log(dontDeleteThese) console.log(payload) return { ...state, courses: newCoursesWithDeleted } case 'REMOVE_QUESTION_FROM_BANK': return { ...state, questionBank: state.questionBank.filter(itm => itm.questionId !== payload.questionId) } case 'GET_QUESTION_BACK_TO_BANK': return { ...state, questionBank: [payload, ...state.questionBank,] } case 'CHANGE_QUESTION_ORDER': const dontChangeThese = state.courses.filter(itm => itm.id !== payload[0].courseId) const courseForChange = state.courses.filter(itm => itm.id == payload[0].courseId) courseForChange[0] = { ...courseForChange[0], selectedQuestions: payload } const newChangedCourseSort = [...dontChangeThese, ...courseForChange] console.log(payload) return { ...state, courses: newChangedCourseSort } case 'CHANGE_COURSE_ORDER': console.log(payload) return { ...state, courses: payload } case 'ADD_CUSTOM_QUESTION': const otherCourses = state.courses.filter(itm => itm.id !== payload.courseId) const selectedc = state.courses.filter(itm => itm.id == payload.courseId) selectedc[0] = { ...selectedc[0], selectedQuestions: [payload, ...selectedc[0].selectedQuestions] } const newcourses = [ ...selectedc, ...otherCourses] return{ ...state, courses: newcourses } default: return state; } }