Skip to content
Snippets Groups Projects
homework.js 5.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • Rafael László's avatar
    Rafael László committed
    import {
    
    Rafael László's avatar
    Rafael László committed
      ADD_DOCUMENT,
      ADD_SOLUTION,
    
      ADD_TASK,
    
    Rafael László's avatar
    Rafael László committed
      CHECK,
      CLEAR_WRITE,
      CORRECT_SOLUTION,
    
      DELETE_TASK,
    
      EDIT_TASK,
    
    Rafael László's avatar
    Rafael László committed
      GET_DOCUMENTS,
      GET_PROFILES,
      GET_SOLUTIONS,
      GET_TASKS,
      SELECT_SOLUTION,
    
      SELECT_TASK,
    
    Rafael László's avatar
    Rafael László committed
      SETCHECKTRUE,
    
      WRITE_SOLUTION,
      WRITE_SOLUTION_FILE,
    
    Rafael László's avatar
    Rafael László committed
      WRITE_TASK,
    
    Rafael László's avatar
    Rafael László committed
    } from './types';
    
    Rafael László's avatar
    Rafael László committed
    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({
    
    Rafael László's avatar
    Rafael László committed
            type: ADD_TASK,
    
            payload: response.data,
          });
        }
    
    Rafael László's avatar
    Rafael László committed
      } catch (e) {
        console.log(e);
    
    Rafael László's avatar
    Rafael László committed
    };
    
    Rafael László's avatar
    Rafael László committed
    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({
    
    Rafael László's avatar
    Rafael László committed
            type: EDIT_TASK,
    
            payload: response.data,
          });
        }
    
    Rafael László's avatar
    Rafael László committed
      } catch (e) {
        console.log(e);
    
    Rafael László's avatar
    Rafael László committed
    };
    
    Rafael László's avatar
    Rafael László committed
    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,
    
    Rafael László's avatar
    Rafael László committed
      } catch (e) {
        console.log(e);
    
    Rafael László's avatar
    Rafael László committed
    };
    
    Rafael László's avatar
    Rafael László committed
    export const setSelectedTask = (task) => (dispatch) => {
      dispatch({ type: SELECT_TASK, payload: task });
    };
    
    Rafael László's avatar
    Rafael László committed
    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,
          });
    
    Rafael László's avatar
    Rafael László committed
      } catch (e) {
        console.log(e);
    
    Rafael László's avatar
    Rafael László committed
    };
    
    Rafael László's avatar
    Rafael László committed
      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,
    
    Rafael László's avatar
    Rafael László committed
        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) {
    
    Rafael László's avatar
    Rafael László committed
            type: ADD_DOCUMENT,
            payload: responsedoc.data,
    
    Rafael László's avatar
    Rafael László committed
      } catch (e) {
        console.log(e);
    
    Rafael László's avatar
    Rafael László committed
    };
    
    Rafael László's avatar
    Rafael László committed
    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);
    
    Rafael László's avatar
    Rafael László committed
    };
    
    Rafael László's avatar
    Rafael László committed
    export const writeSolution = ({ target: { name, value } }) => (dispatch) => {
      dispatch({ type: WRITE_SOLUTION, payload: value, target: name });
    };
    
    Rafael László's avatar
    Rafael László committed
    export const writeSolutionFile = ({ target: { files } }) => (dispatch) => {
      dispatch({ type: WRITE_SOLUTION_FILE, payload: files[0], target: 'file' });
    };
    
    Rafael László's avatar
    Rafael László committed
    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 });
    };
    
    Rafael László's avatar
    Rafael László committed
    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);
    
    Rafael László's avatar
    Rafael László committed
    };
    
    Rafael László's avatar
    Rafael László committed
    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) {
    
    Rafael László's avatar
    Rafael László committed
            type: CORRECT_SOLUTION,
    
    Rafael László's avatar
    Rafael László committed
      } catch (e) {
        console.log(e);
    
    Rafael László's avatar
    Rafael László committed
    };
    
    Rafael László's avatar
    Rafael László committed
    export const check = (name) => (dispatch) => {
      dispatch({ type: CHECK, target: name });
    };
    
    Rafael László's avatar
    Rafael László committed
    export const setchecktrue = (name) => (dispatch) => {
      dispatch({ type: SETCHECKTRUE, target: name });
    };
    
    Rafael László's avatar
    Rafael László committed
    export const selectSolution = (solution) => (dispatch) => {
      dispatch({
        type: SELECT_SOLUTION,
        payload: solution,
      });
    };