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