questionnaire licenses
This commit is contained in:
parent
cbf09433d1
commit
99c4ebffb0
@ -54,7 +54,6 @@ export const getQuestionnaire = ({ dispatch, id }) =>
|
||||
{
|
||||
//console.log("ACTION", "questionnaire", "getQuestionnaire()", "response", response.data);
|
||||
|
||||
|
||||
const founder_persons_template = {
|
||||
signatory_id: null,
|
||||
lastname: "",
|
||||
@ -224,6 +223,7 @@ export const getQuestionnaire = ({ dispatch, id }) =>
|
||||
questionnaire.main.is_individual_executive = true;
|
||||
}
|
||||
|
||||
questionnaire.licenses = response.data.licenses;
|
||||
//questionnaire.founder_persons = { ...questionnaire.head_person, ...response.data.head_person };
|
||||
|
||||
//console.log("questionnairequestionnairequestionnaire FROM JSON", questionnaire);
|
||||
@ -445,8 +445,8 @@ export const downloadQuestionnaire = ({ filename, download = true, base64 = fals
|
||||
|
||||
//console.log("questionnaire", questionnaire);
|
||||
|
||||
const { main, contacts, signatory_person, founder_persons, head_person, non_profit, } = questionnaire;
|
||||
const payload = { main, contacts, signatory_person, founder_persons, head_person, non_profit, };
|
||||
const { main, contacts, signatory_person, founder_persons, head_person, non_profit, licenses, } = questionnaire;
|
||||
const payload = { main, contacts, signatory_person, founder_persons, head_person, non_profit, licenses };
|
||||
//console.log({ payload });
|
||||
|
||||
|
||||
|
||||
@ -55,6 +55,7 @@ class Form_1_Main extends QuestionnaireForm
|
||||
fin_goals_trucks: "",
|
||||
fin_goals_special: "",
|
||||
},
|
||||
licenses: null,
|
||||
step: 1,
|
||||
status: "empty",
|
||||
loading: false,
|
||||
@ -63,12 +64,14 @@ class Form_1_Main extends QuestionnaireForm
|
||||
|
||||
this.ref_form = React.createRef();
|
||||
this.ref_submit = React.createRef();
|
||||
this.ref_licenses_field = React.createRef();
|
||||
}
|
||||
|
||||
static getDerivedStateFromProps(nextProps, prevState)
|
||||
{
|
||||
return {
|
||||
main: nextProps.questionnaire.main,
|
||||
licenses: nextProps.questionnaire.licenses,
|
||||
step: nextProps.questionnaire.step,
|
||||
status: nextProps.questionnaire.status,
|
||||
};
|
||||
@ -76,6 +79,26 @@ class Form_1_Main extends QuestionnaireForm
|
||||
|
||||
componentDidMount()
|
||||
{
|
||||
const { licenses } = this.state;
|
||||
//if(licenses !== null && licenses !== undefined && licenses !== "")
|
||||
//{
|
||||
this.ref_licenses_field.current.style.height = (this.ref_licenses_field.current.scrollHeight + 10) + "px";
|
||||
//}
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps, prevState)
|
||||
{
|
||||
if(this.ref_licenses_field.current.scrollHeight - parseInt(this.ref_licenses_field.current.style.height, 10) > 6)
|
||||
{
|
||||
this.ref_licenses_field.current.style.height = (this.ref_licenses_field.current.scrollHeight + 6) + "px";
|
||||
}
|
||||
else
|
||||
{
|
||||
if(this.ref_licenses_field.current.scrollHeight - parseInt(this.ref_licenses_field.current.style.height, 10) > 6)
|
||||
{
|
||||
this.ref_licenses_field.current.style.height = (this.ref_licenses_field.current.scrollHeight + 6) + "px";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_handle_onNextPage = (event) =>
|
||||
@ -87,6 +110,7 @@ class Form_1_Main extends QuestionnaireForm
|
||||
const { main } = this.state;
|
||||
const { company } = this.props;
|
||||
const check = ["title", "inn", "kpp", "email", "telephone", "financial_loan"];
|
||||
|
||||
if(company.inn.length > 10)
|
||||
{
|
||||
check.splice(check.indexOf("kpp"), 1);
|
||||
@ -170,7 +194,7 @@ class Form_1_Main extends QuestionnaireForm
|
||||
render()
|
||||
{
|
||||
const { company, checking } = this.props;
|
||||
const { loading, main, status, errors, } = this.state;
|
||||
const { loading, main, licenses, status, errors, } = this.state;
|
||||
const firstLetter = /(?!.*[DFIOQU])[A-VXY]/i;
|
||||
const letter = /(?!.*[DFIOQU])[A-Z]/i;
|
||||
const digit = /[0-9]/;
|
||||
@ -298,6 +322,22 @@ class Form_1_Main extends QuestionnaireForm
|
||||
<p>сумма текущих ежемесячных платежей по действующим кредитам/договорам лизинга</p>
|
||||
</div>
|
||||
|
||||
<div className="form_field" style={{ alignItems: "flex-start" }}>
|
||||
<label>Информация о лицензиях</label>
|
||||
<textarea
|
||||
style={{ fontSize: "14px" }}
|
||||
ref={ this.ref_licenses_field }
|
||||
className={ errors.indexOf("licenses") > -1 ? "error" : "" }
|
||||
id="licenses"
|
||||
name="licenses"
|
||||
placeholder="Укажите, если деятельность подлежит лицензированию"
|
||||
onChange={ (event) => { this._removeError("licenses"); this._handle_onTextFieldChange(event.target.name, event.target.value); } }
|
||||
required={ true }
|
||||
disabled={ checking }
|
||||
defaultValue={ this._checkStrValue(licenses) }
|
||||
/>
|
||||
</div>
|
||||
|
||||
{ company.inn.length < 11 && (
|
||||
<div className="form_field">
|
||||
<label><b>Организация является НКО</b></label>
|
||||
|
||||
BIN
lib/evo_anketa_v2.pdf
Normal file
BIN
lib/evo_anketa_v2.pdf
Normal file
Binary file not shown.
@ -109,6 +109,7 @@ const fields = {
|
||||
fin_goals_trucks: { name: "nko_object_trucks", type: "text", bind: null, size: 6 },
|
||||
fin_goals_special: { name: "nko_object_special", type: "text", bind: null, size: 6 },
|
||||
},
|
||||
licenses: { name: "licenses", type: "text", bind: null, size: 6 },
|
||||
};
|
||||
|
||||
function good(value)
|
||||
@ -128,6 +129,8 @@ export default async function handler(req, res)
|
||||
console.log("-".repeat(50));
|
||||
const { questionnaire, filename, base64 } = req.body;
|
||||
|
||||
console.log("API", "questionnaire", "get", { questionnaire });
|
||||
|
||||
await cors(req, res);
|
||||
|
||||
if(req.headers.cookie !== undefined)
|
||||
@ -140,7 +143,7 @@ export default async function handler(req, res)
|
||||
var crm_jwt = jwt.sign({ acc_number: client_jwt_decoded.acc_number }, process.env.JWT_SECRET_CRM, { noTimestamp: true });
|
||||
|
||||
console.log("API", "download", "__dirname", __dirname);
|
||||
const formPdfBytes = fs.readFileSync(`${ __dirname }/../../../../../lib/evo_anketa.pdf`);
|
||||
const formPdfBytes = fs.readFileSync(`${ __dirname }/../../../../../lib/evo_anketa_v2.pdf`);
|
||||
const fontBytes = fs.readFileSync(`${ __dirname }/../../../../../lib/roboto.ttf`);
|
||||
|
||||
const pdfDoc = await PDFDocument.load(formPdfBytes);
|
||||
@ -151,7 +154,13 @@ export default async function handler(req, res)
|
||||
|
||||
for(let group in fields)
|
||||
{
|
||||
if(group === "founder_persons")
|
||||
if(group === "licenses")
|
||||
{
|
||||
fields[group].bind = form.getTextField(fields[group].name);
|
||||
if(fields[group].size !== undefined) { fields[group].bind.setFontSize(fields[group].size); }
|
||||
fields[group].bind.setText(`${ questionnaire[group] }`);
|
||||
}
|
||||
else if(group === "founder_persons")
|
||||
{
|
||||
for(let p in questionnaire[group])
|
||||
{
|
||||
|
||||
@ -1,62 +1,126 @@
|
||||
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
|
||||
import https from 'https';
|
||||
import axios from 'axios';
|
||||
import { Cookies } from 'react-cookie';
|
||||
import cookie from 'cookie';
|
||||
import moment from 'moment';
|
||||
import jwt from 'jsonwebtoken';
|
||||
import { cors } from '../../../lib/cors';
|
||||
import { inspect } from 'util';
|
||||
import { get as _get, pick as _pick } from 'lodash';
|
||||
|
||||
import { cors } from '../../../lib/cors';
|
||||
|
||||
const keepAliveAgent = new https.Agent({ keepAlive: true });
|
||||
|
||||
export default async function handler(req, res)
|
||||
{
|
||||
console.log("API", "questionnaire", "get");
|
||||
await cors(req, res);
|
||||
|
||||
if(req.headers.cookie !== undefined)
|
||||
return new Promise((resolve) =>
|
||||
{
|
||||
const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : "");
|
||||
|
||||
if(cookies.jwt !== undefined && cookies.jwt !== null)
|
||||
if(req.headers.cookie !== undefined)
|
||||
{
|
||||
var client_jwt_decoded = jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT);
|
||||
var crm_jwt = jwt.sign({ acc_number: client_jwt_decoded.acc_number }, process.env.JWT_SECRET_CRM, { noTimestamp: true });
|
||||
const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : "");
|
||||
|
||||
const path = `${ process.env.CRM_API_HOST }/lk/Questionnaire/InfoQuestionnaire/`;
|
||||
|
||||
try
|
||||
if(cookies.jwt !== undefined && cookies.jwt !== null)
|
||||
{
|
||||
const { id } = req.query;
|
||||
await axios.get(path, {
|
||||
params: { name: id },
|
||||
headers: {
|
||||
"Authorization": `Bearer ${ crm_jwt }`,
|
||||
}
|
||||
})
|
||||
.then((crm_response) =>
|
||||
{
|
||||
console.log("crm_response for", path);
|
||||
console.log(inspect(crm_response.data, true, null, true));
|
||||
var client_jwt_decoded = jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT);
|
||||
var crm_jwt = jwt.sign({ acc_number: client_jwt_decoded.acc_number }, process.env.JWT_SECRET_CRM, { noTimestamp: true });
|
||||
|
||||
res.status(200).json(crm_response.data);
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
console.error(error);
|
||||
console.error("-".repeat(30), "error.response.data:");
|
||||
console.error(error.response.data);
|
||||
const path = `${ process.env.CRM_API_HOST }/lk/Questionnaire/InfoQuestionnaire/`;
|
||||
|
||||
res.status(500).json(error.response.data);
|
||||
});
|
||||
try
|
||||
{
|
||||
const { id } = req.query;
|
||||
axios.get(path, {
|
||||
params: { name: id },
|
||||
headers: {
|
||||
"Authorization": `Bearer ${ crm_jwt }`,
|
||||
}
|
||||
})
|
||||
.then((crm_response) =>
|
||||
{
|
||||
console.log("crm_response for", path);
|
||||
console.log(inspect(crm_response.data, true, null, true));
|
||||
|
||||
if(crm_response.data.licenses === null)
|
||||
{
|
||||
axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party`, { query: crm_response.data.inn }, {
|
||||
httpAgent: keepAliveAgent,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": `Token ${ process.env.DADATA_API_KEY }`,
|
||||
"X-Secret": process.env.DADATA_SECRET_KEY
|
||||
},
|
||||
})
|
||||
.then((api_response) =>
|
||||
{
|
||||
console.log("API", "RESPONSE", "licenses");
|
||||
console.log(api_response.data.suggestions[0].data.licenses);
|
||||
|
||||
const licenses_list = _get(api_response, "data.suggestions[0].data.licenses", []);
|
||||
const licenses_chunks = [];
|
||||
|
||||
if(licenses_list !== null && licenses_list.length > 0)
|
||||
{
|
||||
for(let i in licenses_list)
|
||||
{
|
||||
licenses_chunks.push(
|
||||
`${ licenses_list[i].series !== null ? licenses_list[i].series+" " : "" }${ licenses_list[i].number } от ${ moment(licenses_list[i].issue_date).format("DD.MM.YYYY") }`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if(licenses_chunks.length > 0)
|
||||
{
|
||||
crm_response.data.licenses = licenses_chunks.join(", ");
|
||||
}
|
||||
|
||||
res.status(200).json(crm_response.data);
|
||||
resolve();
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
console.log("error");
|
||||
console.error(error);
|
||||
|
||||
res.status(500).send();
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
res.status(200).json(crm_response.data);
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
console.error(error);
|
||||
console.error("-".repeat(30), "error.response.data:");
|
||||
console.error(error.response.data);
|
||||
|
||||
res.status(500).json(error.response.data);
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
console.error(e);
|
||||
res.status(500).send(e);
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
else
|
||||
{
|
||||
console.error(e);
|
||||
res.status(500).send(e);
|
||||
res.status(403);
|
||||
resolve();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
res.status(403);
|
||||
resolve();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
84
pages/api/questionnaire/licenses/get.js
Normal file
84
pages/api/questionnaire/licenses/get.js
Normal file
@ -0,0 +1,84 @@
|
||||
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
|
||||
import axios from 'axios';
|
||||
import { Cookies } from 'react-cookie';
|
||||
import cookie from 'cookie';
|
||||
import moment from 'moment';
|
||||
import jwt from 'jsonwebtoken';
|
||||
import { inspect } from 'util';
|
||||
import md5 from 'md5';
|
||||
|
||||
import { cors } from '../../../lib/cors';
|
||||
import RedisClient from '../../../lib/RedisClient';
|
||||
|
||||
export default async function handler(req, res)
|
||||
{
|
||||
console.log("API", "questionnaire", "read");
|
||||
await cors(req, res);
|
||||
|
||||
if(req.headers.cookie !== undefined)
|
||||
{
|
||||
const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : "");
|
||||
|
||||
if(cookies.jwt !== undefined && cookies.jwt !== null)
|
||||
{
|
||||
console.log("cookies.jwt");
|
||||
console.log(cookies.jwt);
|
||||
|
||||
var client_jwt_decoded = jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT);
|
||||
var crm_jwt = jwt.sign({ acc_number: client_jwt_decoded.acc_number }, process.env.JWT_SECRET_CRM, { noTimestamp: true });
|
||||
|
||||
try
|
||||
{
|
||||
const key = md5(`licenses_${ client_jwt_decoded.acc_number }`);
|
||||
const licenses = await RedisClient.get(key);
|
||||
if(licenses !== null)
|
||||
{
|
||||
console.log("JSON.parse(licenses)");
|
||||
console.log(JSON.parse(licenses));
|
||||
|
||||
res.status(200).json(JSON.parse(licenses));
|
||||
}
|
||||
else
|
||||
{
|
||||
const { query, } = req.body;
|
||||
|
||||
axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party`, { query }, {
|
||||
httpAgent: keepAliveAgent,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": `Token ${ process.env.DADATA_API_KEY }`,
|
||||
"X-Secret": process.env.DADATA_SECRET_KEY
|
||||
},
|
||||
})
|
||||
.then((api_response) =>
|
||||
{
|
||||
console.log("API", "RESPONSE", "licenses");
|
||||
console.log(api_response.data);
|
||||
|
||||
res.status(200).send(api_response.data);
|
||||
resolve();
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
console.log("error");
|
||||
console.error(error);
|
||||
|
||||
res.status(500).send();
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
}
|
||||
catch(error)
|
||||
{
|
||||
console.error("error");
|
||||
console.error(error);
|
||||
|
||||
res.status(500).send();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
res.status(403);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -217,6 +217,7 @@ export default async function handler(req, res)
|
||||
} };
|
||||
|
||||
payload.financial_loan = checkNullEmpty(payload.financial_loan) ? parseFloat(payload.financial_loan.toString().replace(/[^0-9.]/g, '')) : null;
|
||||
payload.licenses = parsed.licenses;
|
||||
|
||||
console.log({ id, path });
|
||||
console.log("payload", "*".repeat(100));
|
||||
|
||||
@ -126,7 +126,8 @@ export const questionnaire_template = {
|
||||
sent: false,
|
||||
filename: null,
|
||||
filedate: null,
|
||||
}
|
||||
},
|
||||
licenses: [],
|
||||
};
|
||||
|
||||
export const defaultState = {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user