import axios from 'axios'; import { eachSeries } from 'async'; import * as actionTypes from '../constants/actionTypes'; import * as currentState from '../reducers/initialState'; if(process.browser) { FormData.prototype.appendObject = function(obj, namespace) { let keyName; for (var key in obj) { if (obj.hasOwnProperty(key)) { keyName = [namespace, '[', key, ']'].join(''); this.append(keyName, obj[key]); } } }; } export const setAppealsRead = ({ dispatch, appeals }) => { return new Promise((resolve, reject) => { axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/support/read`, { appeals }, { withCredentials: true, }) .then((response) => { dispatch({ type: actionTypes.SUPPORT_APPEALS, data: { appeals: { new: 0, } } }); resolve(); }) .catch((error) => { console.log("error"); console.error(error); reject(); }); }); } export const getAppeals = ({ dispatch }) => { console.log("ACTION", "support", "getAppeals", `${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/support/appeals`); return new Promise((resolve, reject) => { axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/support/appeals`, {}, { withCredentials: true, }) .then((response) => { console.log("getEvents", "response", response.data); const events = response.data; const filtered_events = []; console.log("events"); console.log(events); dispatch({ type: actionTypes.SUPPORT_APPEALS, data: { appeals: { list: response.data.appeals, new: response.data.new, } } }); resolve(); }) .catch((error) => { console.log("error"); console.error(error); reject(); }); }); } export const getSupportThemes = ({ dispatch, query, }) => { console.log("ACTION", "support", "getSupportThemes", { query }); return new Promise((resolve, reject) => { axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/support/themes`, { query }, { withCredentials: true, }) .then(async (response) => { console.log("getContractRules", "response.data", response.data); dispatch({ type: actionTypes.SUPPORT_THEMES, data: { themes: response.data.themes } }); resolve(); }) .catch((error) => { console.error(error); reject(); }); }); } export const sendNewAppeal = (appeal) => { console.log("ACTION", "support", "sendNewAppeal", appeal); return new Promise((resolve, reject) => { axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/support/request`, appeal, { withCredentials: true, }) .then(async (response) => { console.log("sendNewAppeal", "response.data", response.data); resolve(response.data); }) .catch((error) => { console.error(error); reject(); }); }); } export const sendAppealAttachments = (payload) => { console.log("ACTION", "support", "sendAppealAttachments", payload); return new Promise((resolve, reject) => { eachSeries(payload.files, (file, callback) => { let data = new FormData(); data.append('file', file); axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/support/attachment?request_client_number=${ payload.request_client_number }`, data, { headers: { "Content-Type": "multipart/form-data", }, withCredentials: true, }) .then(async (response) => { console.log("sendAppealAttachments", "response.data", response.data); callback(null); }) .catch((error) => { console.error(error); callback(true); }); }, (err) => { if(!err) { resolve(); } else { reject(); } }); }); }