evoleasing-account/actions/questionnaireActions.js
2023-04-06 13:46:32 +03:00

327 lines
9.1 KiB
JavaScript

import axios from 'axios';
import { Cookies } from 'react-cookie';
import Router from 'next/router';
import moment from 'moment';
import { nSQL } from "@nano-sql/core";
import fileDownload from 'js-file-download';
import { eachSeries, each } from "async";
import * as actionTypes from '../constants/actionTypes';
import { getCitizenshipTitleByCode } from '../utils/citizenship';
import { questionnaire_template } 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 getQuestionnaire = ({ dispatch, id }) =>
{
console.log("ACTION", "support", "getAppeals()", `${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/questionnaire/get`);
return new Promise((resolve, reject) =>
{
/*
axios.get(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/questionnaire/read`, {})
.then((response_read) =>
{
console.log("ACTION", "getQuestionnaire", "/api/questionnaire/read", response_read.data);
if(response_read.data !== "")
{
updateQuestionnaire({ dispatch, questionnaire: response_read.data });
resolve();
}
else
{
*/
axios.get(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/questionnaire/get`, {
params: {
id
}
})
.then((response) =>
{
console.log("ACTION", "questionnaire", "getQuestionnaire()", "response", response.data);
const founder_persons_template = {
signatory_id: null,
lastname: "",
firstname: "",
middlename: "",
no_middle_name: false,
jobtitle: "",
telephone: "",
email: "",
founder_from_list: true,
founder_number: 0,
founder_part: "",
is_beneficial: false,
identity_document:
{
doctype: "",
seria: "",
docnumber: "",
issuedate: "",
icode: "",
issueby: "",
issueby_search_dadata: "",
placebirth: "",
citizenship: {
title: "",
code: "",
},
registration_address: {
title: "",
fias_id: "",
}
}
};
const questionnaire = JSON.parse(JSON.stringify(global.store.getState().questionnaire));
if(questionnaire.status === "empty")
{
questionnaire.main.title = response.data.title;
questionnaire.main.inn = response.data.inn;
questionnaire.main.kpp = response.data.kpp;
questionnaire.main.telephone = response.data.telephone;
questionnaire.main.email = response.data.email;
questionnaire.main.websiteurl = response.data.websiteurl !== null ? response.data.websiteurl : "";
questionnaire.main.financial_loan = response.data.financial_loan !== null ? response.data.financial_loan : "";
questionnaire.contacts.address_type = response.data.inn.length > 10 ? "fact" : "legal";
questionnaire.contacts.fact_address = response.data.fact_address;
questionnaire.contacts.postal_address = response.data.postal_address;
questionnaire.contacts.legal_address = response.data.legal_address;
questionnaire.head_person = { ...questionnaire.head_person, ...response.data.head_person };
questionnaire.head_person.identity_document.citizenship = {
title: getCitizenshipTitleByCode(response.data.head_person.identity_document.citizenship_code),
code: response.data.head_person.identity_document.citizenship_code,
};
questionnaire.signatory_person = { ...questionnaire.signatory_person, ...response.data.signatory_person };
questionnaire.signatory_person.identity_document.citizenship = {
title: getCitizenshipTitleByCode(response.data.signatory_person.identity_document.citizenship_code),
code: response.data.signatory_person.identity_document.citizenship_code,
};
for(let i in response.data.founder_persons)
{
console.log("response.data.founder_persons", response.data.founder_persons);
questionnaire.founder_persons[i] = response.data.founder_persons[i];
questionnaire.founder_persons[i].identity_document.citizenship = {
title: getCitizenshipTitleByCode(response.data.founder_persons[i].identity_document.citizenship_code),
code: response.data.founder_persons[i].identity_document.citizenship_code,
};
}
//questionnaire.founder_persons = { ...questionnaire.head_person, ...response.data.head_person };
console.log("questionnairequestionnairequestionnaire FROM JSON", questionnaire);
updateQuestionnaire({ dispatch, questionnaire })
.then(() => {})
.catch(() => {});
//dispatch({ type: actionTypes.SUPPORT_APPEALS, data: { appeals: { list: response.data.appeals, new: response.data.new, } } });
resolve();
}
else
{
resolve();
}
/*
})
.catch((error) =>
{
console.log("error");
console.error(error);
reject();
});
}
*/
})
.catch(() =>
{
});
});
}
export const saveQuestionnaire = () =>
{
return new Promise((resolve, reject) =>
{
const questionnaire = JSON.parse(JSON.stringify(global.store.getState().questionnaire));
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/questionnaire/save`, { questionnaire }, {
withCredentials: true,
})
.then((response) =>
{
resolve();
})
.catch(() =>
{
reject();
});
});
}
export const updateQuestionnaire = ({ dispatch, questionnaire }) =>
{
console.log("ACTION", "questionnaireActions", "updateQuestionnaire()", { questionnaire });
return new Promise((resolve, reject) =>
{
dispatch({ type: actionTypes.QUESTIONNAIRE_UPDATE, data: { questionnaire, } });
/*
setTimeout(() => {
console.log("ACTION", "questionnaireActions", "updateQuestionnaire", global.store.getState(), { dispatch: dispatch });
resolve();
}, 500);
*/
});
}
export const resetQuestionnaire = ({ dispatch, id }) =>
{
const template = JSON.parse(JSON.stringify(questionnaire_template));
dispatch({ type: actionTypes.QUESTIONNAIRE_UPDATE, data: { questionnaire: template, } });
saveQuestionnaire();
setTimeout(() =>
{
getQuestionnaire({ dispatch, id });
}, 10);
}
export const uploadAttachmentFile = (file) =>
{
console.log("ACTION", "questionnaireActions", "uploadAttachmentFile()", { file });
return new Promise((resolve, reject) =>
{
let data = new FormData();
data.append('file', file);
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/questionnaire/file/upload`, data,
{
headers: {
"Content-Type": "multipart/form-data; charset=utf-8",
},
withCredentials: true,
})
.then(async (response) =>
{
console.log("questionnaireActions", "uploadAttachmentFile()", "response.data", response.data);
resolve(response.data);
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const removeAttachmentFiles = (files) =>
{
for(let i in files)
{
removeAttachmentFile(files[i].id);
}
}
export const removeAttachmentFile = (id) =>
{
console.log("ACTION", "questionnaireActions", "removeAttachmentFile()", { id });
return new Promise((resolve, reject) =>
{
axios.delete(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/questionnaire/file/remove`,
{
params: {
id
},
withCredentials: true,
})
.then(async (response) =>
{
console.log("questionnaireActions", "removeAttachmentFile()", "complete");
resolve();
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const downloadQuestionnaire = (download = true) =>
{
console.log("ACTION", "questionnaireActions", "downloadQuestionnaire()", );
//{ questionnaire }
//questionnaire
return new Promise((resolve, reject) =>
{
let cookies = new Cookies();
let cookies_list = cookies.getAll();
const { questionnaire } = global.store.getState();
console.log("questionnaire", questionnaire);
const { main, contacts, signatory_person, founder_persons, head_person, non_profit, } = questionnaire;
const playload = { main, contacts, signatory_person, founder_persons, head_person, non_profit, };
console.log({ playload });
/* axios.post(`${ process.env.NEXT_PUBLIC_INT_API_HOST }/questionnaire/download`, { questionnaire: playload }, {
headers: {
"Authorization": `Bearer ${ cookies_list.jwt }`,
},
})
*/
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/questionnaire/download`, { questionnaire: playload }, {
headers: {
'Content-Type': 'application/json',
'Accept': 'application/pdf'
},
responseType: 'arraybuffer',
})
.then((response) =>
{
if(download)
{
console.log("downloadQuestionnaire", "response.data");
fileDownload(response.data, response.headers.filename);
resolve();
}
else
{
resolve({ file: response.data, filename: response.headers.filename });
}
//dispatch({ type: actionTypes.SUPPORT_APPEALS, data: { appeals: { list: response.data.appeals, new: response.data.new, } } });
})
.catch((error) =>
{
console.log("error");
console.error(error);
reject();
});
});
}