import { GET_TASKS, GET_SOLUTIONS, CORRECT_SOLUTION, ADD_TASK, DELETE_TASK, EDIT_TASK, ADD_SOLUTION, GET_PROFILES, GET_DOCUMENTS } from '../actions/types'; const INITIAL_STATE = { id: 0, tasks: [], solutions: [], profiles: [], documents: [], }; export default (state = INITIAL_STATE, action) => { switch (action.type) { case GET_TASKS: return { ...state, tasks: action.payload }; case GET_SOLUTIONS: return { ...state, solutions: action.payload }; case CORRECT_SOLUTION: const modifiedSolution = state.solutions.find(sol => sol.id === action.payload.id); const modifiedSolutions = state.solutions.slice(); modifiedSolutions.splice(state.solutions.indexOf(modifiedSolution), 1, action.payload); return { ...state, solutions: [...modifiedSolutions] }; case ADD_SOLUTION: return { ...state, solutions: [action.payload, ...state.solutions], id: action.payload.id }; case ADD_TASK: return { ...state, tasks: [action.payload, ...state.tasks] }; case DELETE_TASK: return { ...state, tasks: [...state.tasks.slice(0, state.tasks.indexOf(action.payload)), ...state.tasks.slice(state.tasks.indexOf(action.payload) + 1)], }; case EDIT_TASK: return { ...state, tasks: [...state.tasks.map((task) => { if (task.id !== action.payload.id) { return task; } return action.payload; }), ], }; case GET_PROFILES: return { ...state, profiles: action.payload }; case GET_DOCUMENTS: return { ...state, documents: action.payload }; default: return state; } };