You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

316 lines
8.8 KiB

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