-
Rafael László authoredRafael László authored
homework.js 5.56 KiB
import {
ADD_DOCUMENT,
ADD_SOLUTION,
ADD_TASK,
CHECK,
CLEAR_WRITE,
CORRECT_SOLUTION,
DELETE_TASK,
EDIT_TASK,
GET_DOCUMENTS,
GET_PROFILES,
GET_SOLUTIONS,
GET_TASKS,
SELECT_SOLUTION,
SELECT_TASK,
SETCHECKTRUE,
WRITE_SOLUTION,
WRITE_SOLUTION_FILE,
WRITE_TASK,
} from './types';
import axios from './session';
export const getTasks = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/homework/tasks/');
dispatch({
type: GET_TASKS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
export const getSolutions = (taskId) => async (dispatch) => {
try {
const response = await axios.get('/api/v1/homework/solutions/', {
task: taskId,
});
dispatch({
type: GET_SOLUTIONS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
export const addTask = ({ title, text, deadline, bits }) => async (
dispatch
) => {
try {
const response = await axios.post('/api/v1/homework/tasks/', {
title,
text,
deadline,
bits,
});
if (response.data.id) {
dispatch({
type: ADD_TASK,
payload: response.data,
});
}
} catch (e) {
console.log(e);
}
};
export const editTask = ({ id, title, text, deadline, bits }) => async (
dispatch
) => {
try {
const response = await axios.patch(`/api/v1/homework/tasks/${id}/`, {
title,
text,
deadline,
bits,
});
if (response.data.id) {
dispatch({
type: EDIT_TASK,
payload: response.data,
});
}
} catch (e) {
console.log(e);
}
};
export const deleteTask = (task) => async (dispatch) => {
try {
const response = await axios.delete(`/api/v1/homework/tasks/${task.id}/`);
if (!response.data.id) {
dispatch({
type: DELETE_TASK,
payload: task,
});
}
} catch (e) {
console.log(e);
}
};
export const setSelectedTask = (task) => (dispatch) => {
dispatch({ type: SELECT_TASK, payload: task });
};
export const addDocument = ({ name, description, file, solution }) => async (
dispatch
) => {
try {
const formData = new FormData();
formData.append('name', name);
formData.append('description', description);
formData.append('file', file);
formData.append('solution', solution);
const config = {
headers: {
'content-type': 'multipart/form-data',
},
};
const response = await axios.post('/api/v1/documents/', formData, config);
if (response.data.id) {
dispatch({
type: ADD_DOCUMENT,
payload: response.data,
});
}
} catch (e) {
console.log(e);
}
};
export const addSolution = ({
task,
accepted,
corrected,
note,
name,
description,
file,
}) => async (dispatch) => {
try {
const response = await axios.post('/api/v1/homework/solutions/', {
task,
accepted,
corrected,
note,
});
if (response.data.id) {
dispatch({
type: ADD_SOLUTION,
payload: response.data,
});
}
const solution = response.data.id;
const formData = new FormData();
formData.append('name', name);
formData.append('description', description);
formData.append('file', file);
formData.append('solution', solution);
const config = {
headers: {
'content-type': 'multipart/form-data',
},
};
const responsedoc = await axios.post(
'/api/v1/documents/',
formData,
config
);
if (responsedoc.data.id) {
dispatch({
type: ADD_DOCUMENT,
payload: responsedoc.data,
});
}
} catch (e) {
console.log(e);
}
};
export const getDocuments = (solutionID) => async (dispatch) => {
try {
const response = await axios.get('/api/v1/documents', {
params: { solution: solutionID },
});
dispatch({
type: GET_DOCUMENTS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
export const writeSolution = ({ target: { name, value } }) => (dispatch) => {
dispatch({ type: WRITE_SOLUTION, payload: value, target: name });
};
export const writeSolutionFile = ({ target: { files } }) => (dispatch) => {
dispatch({ type: WRITE_SOLUTION_FILE, payload: files[0], target: 'file' });
};
export const writeTask = ({ target: { name, value } }) => (dispatch) => {
dispatch({ type: WRITE_TASK, payload: value, target: name });
};
export const writeTaskDeadline = ({ name, value }) => (dispatch) => {
dispatch({ type: WRITE_TASK, payload: value, target: name });
};
export const clearWrite = () => (dispatch) => {
dispatch({ type: CLEAR_WRITE });
};
export const getProfiles = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/profiles/');
dispatch({
type: GET_PROFILES,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
export const correctSolution = (id, corrected, accepted, note) => async (
dispatch
) => {
try {
const response = await axios.patch(`/api/v1/homework/solutions/${id}/`, {
corrected,
accepted,
note,
});
if (response.data.id) {
dispatch({
type: CORRECT_SOLUTION,
payload: response.data,
});
}
} catch (e) {
console.log(e);
}
};
export const check = (name) => (dispatch) => {
dispatch({ type: CHECK, target: name });
};
export const setchecktrue = (name) => (dispatch) => {
dispatch({ type: SETCHECKTRUE, target: name });
};
export const selectSolution = (solution) => (dispatch) => {
dispatch({
type: SELECT_SOLUTION,
payload: solution,
});
};