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 =
{
doctype: "",
seria: "",
docnumber: "",
issuedate: "",
code: "",
issueby: "",
issueby_search_dadata: "",
placebirth: "",
doctype: 100000000,
seria: null,
docnumber: null,
issuedate: null,
code: null,
issueby: null,
issueby_search_dadata: null,
placebirth: null,
citizenship: {
title: getCitizenshipTitleByCode(643),
code: 643,
},
registration_address: {
title: "",
fias_id: "",
title: null,
fias_id: null,
}
};

View File

@ -28,6 +28,7 @@ class Form_9_Status extends QuestionnaireForm
sent: null,
company: {},
error_file_size: false,
error_send: false,
};
this.ref_file_input = React.createRef();
@ -65,19 +66,19 @@ class Form_9_Status extends QuestionnaireForm
if(!uploading)
{
this.setState({ uploading: true }, () =>
this.setState({ uploading: true, error_send: false, }, () =>
{
uploadSignedFile(file, company.questionnaire_id)
.then(() =>
{
this.setState({ uploading: false, sent: true }, () =>
this.setState({ uploading: false, sent: true, error_send: false, }, () =>
{
this.props.onSuccess();
});
})
.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()
{
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 });
@ -123,19 +124,31 @@ class Form_9_Status extends QuestionnaireForm
<React.Fragment>
{ !sent ? (
<React.Fragment>
{ error_file_size ? (
<FormMessage
type="error"
title="Ошибка"
message={`Файл «${ filename }» превышает допустимый лимит в ${ process.env.NEXT_PUBLIC_UPLOAD_SCAN_FILESIZE_LIMIT_MB }мб и не может быть загружен.`}
style={{ marginLeft: "0px" }}
/>
) : (
{ !error_file_size && !error_send ? (
<FormMessage
type="moderate"
title="Анкета заполнена, подписана и ожидает отправки"
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="dosc_list medium-icon">

View File

@ -14,7 +14,7 @@ import { get as _get, pick as _pick } from 'lodash';
import { eachSeries } from 'async';
import archiver from 'archiver';
import { fileTypeFromBuffer } from "file-type";
import { fileTypeFromBuffer, fileTypeFromFile } from "file-type";
//import { MIMEType } from 'util';
import { cors } from '../../../lib/cors';
@ -33,7 +33,7 @@ function checkNullEmpty(value)
return true;
}
function zipDigitalContent(zip_filename, files)
function createZipFile(zip_filename, files)
{
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 filetype = await fileTypeFromBuffer(file.buffer);
console.log("fileTypeFromBuffer", filetype);
const timemark = moment().format("YYYY_MM_DD_HH_mm_ss");
const local_filename = digital
@ -123,11 +121,8 @@ export default async function handler(req, res)
console.log({ questionnaire });
const parsed = JSON.parse(questionnaire);
console.log("parsed");
console.log(".".repeat(50));
console.log(inspect(parsed, true, null, true));
//const main = _pick(parsed.main, ["title", "inn", "kpp", "email", "telephone", "websiteurl", "financial_loan"]);
console.log("parsed", ".".repeat(50));
console.log(parsed);
const 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,
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;
console.log("=".repeat(50));
console.log(inspect(payload, true, null, true));
/*
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({ id, path });
console.log("payload", "*".repeat(100));
console.log(payload);
const files_to_send = [];
for(let i in parsed.head_person_files)
{
//console.log(parsed.head_person_files[i]);
files_to_send.push({ ...parsed.head_person_files[i], ...{ number: 1, } })
}
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, } })
}
console.log("files", "^".repeat(50));
console.log({ head_person_files: parsed.head_person_files });
console.log({ delegation_files: parsed.delegation_files });
console.log({ signatory_person_files: parsed.signatory_person_files });
console.log({ signatory_corporate_files: parsed.signatory_corporate_files });
/*
files_to_send.push({ ...{
name: `${ client_jwt_decoded.acc_number }_questionnaire.pdf`,
filename: `${ client_jwt_decoded.acc_number }_questionnaire.pdf`,
}, ...{ number: 18, } });
*/
const files_to_send = [];
const files_groups = [
{ name: "head_person", number: 1 },
{ 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)
{
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`,
path: `${ uploads }${ client_jwt_decoded.acc_number }_questionnaire.pdf`,
},
{
name: local_filename,
path: `${ uploads }${ local_filename }`,
}
]);
}]);
files_to_send.push({ ...{
name: zip_filename,
filename: zip_filename,
}, ...{ number: 162 } });
files_to_send.push({ name: zip_filename, filename: zip_filename, number: 162 });
}
else
{
files_to_send.push({ ...{
name: local_filename,
filename: local_filename,
}, ...{ number: 161, } });
files_to_send.push({ name: local_filename, filename: local_filename, number: 161, });
}
console.log("@".repeat(200));
console.log(payload);
console.log("files_to_send", ".".repeat(100));
console.log(files_to_send);
axios.put(path, payload,
{
@ -383,7 +368,7 @@ export default async function handler(req, res)
resolve();
});
//res.status(200).send();
//res.status(500).json({ payload, id, digital });
}
catch(upload_single_error)
{