questionnaire all attached files moved to ZIP on questionnaire sending

This commit is contained in:
merelendor 2023-04-21 09:33:17 +03:00
parent b3e624bb03
commit c0ca0c0897
3 changed files with 84 additions and 86 deletions

View File

@ -91,21 +91,21 @@ export const getQuestionnaire = ({ dispatch, id }) =>
const identity_document_template = const identity_document_template =
{ {
doctype: "", doctype: 100000000,
seria: "", seria: null,
docnumber: "", docnumber: null,
issuedate: "", issuedate: null,
code: "", code: null,
issueby: "", issueby: null,
issueby_search_dadata: "", issueby_search_dadata: null,
placebirth: "", placebirth: null,
citizenship: { citizenship: {
title: getCitizenshipTitleByCode(643), title: getCitizenshipTitleByCode(643),
code: 643, code: 643,
}, },
registration_address: { registration_address: {
title: "", title: null,
fias_id: "", fias_id: null,
} }
}; };

View File

@ -28,6 +28,7 @@ class Form_9_Status extends QuestionnaireForm
sent: null, sent: null,
company: {}, company: {},
error_file_size: false, error_file_size: false,
error_send: false,
}; };
this.ref_file_input = React.createRef(); this.ref_file_input = React.createRef();
@ -65,19 +66,19 @@ class Form_9_Status extends QuestionnaireForm
if(!uploading) if(!uploading)
{ {
this.setState({ uploading: true }, () => this.setState({ uploading: true, error_send: false, }, () =>
{ {
uploadSignedFile(file, company.questionnaire_id) uploadSignedFile(file, company.questionnaire_id)
.then(() => .then(() =>
{ {
this.setState({ uploading: false, sent: true }, () => this.setState({ uploading: false, sent: true, error_send: false, }, () =>
{ {
this.props.onSuccess(); this.props.onSuccess();
}); });
}) })
.catch(() => .catch(() =>
{ {
this.setState({ uploading: false, sent: false }); this.setState({ uploading: false, sent: false, error_send: true, });
}); });
}); });
} }
@ -85,7 +86,7 @@ class Form_9_Status extends QuestionnaireForm
render() render()
{ {
const { sign, file, uploading, sent, error_file_size, filename } = this.state; const { sign, file, uploading, sent, error_file_size, error_send, filename } = this.state;
//console.log("Form_9_Status", "render", { sign }); //console.log("Form_9_Status", "render", { sign });
@ -123,19 +124,31 @@ class Form_9_Status extends QuestionnaireForm
<React.Fragment> <React.Fragment>
{ !sent ? ( { !sent ? (
<React.Fragment> <React.Fragment>
{ error_file_size ? ( { !error_file_size && !error_send ? (
<FormMessage
type="error"
title="Ошибка"
message={`Файл «${ filename }» превышает допустимый лимит в ${ process.env.NEXT_PUBLIC_UPLOAD_SCAN_FILESIZE_LIMIT_MB }мб и не может быть загружен.`}
style={{ marginLeft: "0px" }}
/>
) : (
<FormMessage <FormMessage
type="moderate" type="moderate"
title="Анкета заполнена, подписана и ожидает отправки" title="Анкета заполнена, подписана и ожидает отправки"
message="Вы заполнили и подписали анкету лизингополучателя в режиме загрузки скана анкеты. Пожалуйста, отправьте подписанный документ." message="Вы заполнили и подписали анкету лизингополучателя в режиме загрузки скана анкеты. Пожалуйста, отправьте подписанный документ."
/> />
) : (
<React.Fragment>
{ error_file_size && (
<FormMessage
type="error"
title="Ошибка"
message={`Файл «${ filename }» превышает допустимый лимит в ${ process.env.NEXT_PUBLIC_UPLOAD_SCAN_FILESIZE_LIMIT_MB }мб и не может быть загружен.`}
style={{ marginLeft: "0px" }}
/>
) }
{ error_send && (
<FormMessage
type="error"
title="Ошибка"
message="К сожалению в процессе отправки документа возникла ошибка. Пожалуйста, обратитесь к сотруднику Отдела по работе с клиентами или попробуйте еще раз."
style={{ marginLeft: "0px" }}
/>
) }
</React.Fragment>
) } ) }
<div className="questionnaire status_action" style={{ width: "100%" }}> <div className="questionnaire status_action" style={{ width: "100%" }}>
<div className="dosc_list medium-icon"> <div className="dosc_list medium-icon">

View File

@ -14,7 +14,7 @@ import { get as _get, pick as _pick } from 'lodash';
import { eachSeries } from 'async'; import { eachSeries } from 'async';
import archiver from 'archiver'; import archiver from 'archiver';
import { fileTypeFromBuffer } from "file-type"; import { fileTypeFromBuffer, fileTypeFromFile } from "file-type";
//import { MIMEType } from 'util'; //import { MIMEType } from 'util';
import { cors } from '../../../lib/cors'; import { cors } from '../../../lib/cors';
@ -33,7 +33,7 @@ function checkNullEmpty(value)
return true; return true;
} }
function zipDigitalContent(zip_filename, files) function createZipFile(zip_filename, files)
{ {
return new Promise((resolve) => return new Promise((resolve) =>
{ {
@ -105,8 +105,6 @@ export default async function handler(req, res)
const path = `${ process.env.CRM_API_HOST }/lk/Questionnaire/PreQuestionnaire/`; const path = `${ process.env.CRM_API_HOST }/lk/Questionnaire/PreQuestionnaire/`;
const filetype = await fileTypeFromBuffer(file.buffer); const filetype = await fileTypeFromBuffer(file.buffer);
console.log("fileTypeFromBuffer", filetype);
const timemark = moment().format("YYYY_MM_DD_HH_mm_ss"); const timemark = moment().format("YYYY_MM_DD_HH_mm_ss");
const local_filename = digital const local_filename = digital
@ -123,11 +121,8 @@ export default async function handler(req, res)
console.log({ questionnaire }); console.log({ questionnaire });
const parsed = JSON.parse(questionnaire); const parsed = JSON.parse(questionnaire);
console.log("parsed"); console.log("parsed", ".".repeat(50));
console.log(".".repeat(50)); console.log(parsed);
console.log(inspect(parsed, true, null, true));
//const main = _pick(parsed.main, ["title", "inn", "kpp", "email", "telephone", "websiteurl", "financial_loan"]);
const contacts = {}; const contacts = {};
for(let c in parsed.contacts) for(let c in parsed.contacts)
@ -219,81 +214,71 @@ export default async function handler(req, res)
purpose_use_gt_sc: parsed.non_profit.fin_goals_special, purpose_use_gt_sc: parsed.non_profit.fin_goals_special,
is_nko: parsed.main.nko ? true : false, is_nko: parsed.main.nko ? true : false,
} }; } };
console.error("payload.financial_loanpayload.financial_loan", payload.financial_loan);
payload.financial_loan = checkNullEmpty(payload.financial_loan) ? parseFloat(payload.financial_loan.toString().replace(/[^0-9.]/g, '')) : null; payload.financial_loan = checkNullEmpty(payload.financial_loan) ? parseFloat(payload.financial_loan.toString().replace(/[^0-9.]/g, '')) : null;
console.log("=".repeat(50)); console.log({ id, path });
console.log(inspect(payload, true, null, true)); console.log("payload", "*".repeat(100));
/*
for(let i in parsed.main)
{
payload[i] = parsed.main[i] === null ? "" : parsed.main[i];
}
*/
console.log(id);
console.log("path", path);
console.log("*".repeat(50));
console.log(payload); console.log(payload);
const files_to_send = []; console.log("files", "^".repeat(50));
for(let i in parsed.head_person_files) console.log({ head_person_files: parsed.head_person_files });
{ console.log({ delegation_files: parsed.delegation_files });
//console.log(parsed.head_person_files[i]); console.log({ signatory_person_files: parsed.signatory_person_files });
files_to_send.push({ ...parsed.head_person_files[i], ...{ number: 1, } }) console.log({ signatory_corporate_files: parsed.signatory_corporate_files });
}
for(let i in parsed.delegation_files)
{
console.log(parsed.delegation_files[i])
files_to_send.push({ ...parsed.delegation_files[i], ...{ number: 166, } })
}
for(let i in parsed.signatory_person_files)
{
//console.log(parsed.signatory_person_files[i]);
files_to_send.push({ ...parsed.signatory_person_files[i], ...{ number: 23, } })
}
for(let i in parsed.signatory_corporate_files)
{
//console.log(parsed.signatory_corporate_files[i]);
files_to_send.push({ ...parsed.signatory_corporate_files[i], ...{ number: 22, } })
}
/* const files_to_send = [];
files_to_send.push({ ...{
name: `${ client_jwt_decoded.acc_number }_questionnaire.pdf`, const files_groups = [
filename: `${ client_jwt_decoded.acc_number }_questionnaire.pdf`, { name: "head_person", number: 1 },
}, ...{ number: 18, } }); { name: "delegation", number: 166, },
*/ { name: "signatory_person", number: 23, },
{ name: "signatory_corporate", number: 22, }
];
for(let g in files_groups)
{
if(parsed[`${ files_groups[g].name }_files`].length > 0)
{
let files_to_zip = [];
for(let f in parsed[`${ files_groups[g].name }_files`])
{
const ext_regex = new RegExp("\.([0-9a-z]+)$", "i");
const ext = parsed[`${ files_groups[g].name }_files`][f].name.match(ext_regex);
files_to_zip.push({
name: `${ files_groups[g].name }_file_${ f+1 }.${ ext[1] }`,
path: `${ uploads }${ parsed[`${ files_groups[g].name }_files`][f].filename }`,
});
}
let zip_filename = `${ client_jwt_decoded.acc_number }_${ files_groups[g].name }_files.zip`;
await createZipFile(zip_filename, files_to_zip);
files_to_send.push({ name: zip_filename, filename: zip_filename, number: files_groups[g].number, });
}
}
if(digital) if(digital)
{ {
const zip_filename = `${ client_jwt_decoded.acc_number }_questionnaire.zip`; const zip_filename = `${ client_jwt_decoded.acc_number }_questionnaire.zip`;
await zipDigitalContent(zip_filename, [{ await createZipFile(zip_filename, [{
name: `${ client_jwt_decoded.acc_number }_questionnaire_${ timemark }.pdf`, name: `${ client_jwt_decoded.acc_number }_questionnaire_${ timemark }.pdf`,
path: `${ uploads }${ client_jwt_decoded.acc_number }_questionnaire.pdf`, path: `${ uploads }${ client_jwt_decoded.acc_number }_questionnaire.pdf`,
}, },
{ {
name: local_filename, name: local_filename,
path: `${ uploads }${ local_filename }`, path: `${ uploads }${ local_filename }`,
} }]);
]);
files_to_send.push({ ...{ files_to_send.push({ name: zip_filename, filename: zip_filename, number: 162 });
name: zip_filename,
filename: zip_filename,
}, ...{ number: 162 } });
} }
else else
{ {
files_to_send.push({ ...{ files_to_send.push({ name: local_filename, filename: local_filename, number: 161, });
name: local_filename,
filename: local_filename,
}, ...{ number: 161, } });
} }
console.log("@".repeat(200)); console.log("files_to_send", ".".repeat(100));
console.log(payload); console.log(files_to_send);
axios.put(path, payload, axios.put(path, payload,
{ {
@ -383,7 +368,7 @@ export default async function handler(req, res)
resolve(); resolve();
}); });
//res.status(200).send(); //res.status(500).json({ payload, id, digital });
} }
catch(upload_single_error) catch(upload_single_error)
{ {