From d1e85235ec3aeac5576894173e0155f3fdfa3991 Mon Sep 17 00:00:00 2001 From: suseendhiran17 <58357088+suseendhiran17@users.noreply.github.com> Date: Mon, 16 May 2022 12:00:18 +0530 Subject: [PATCH] susee --- app/controllers/creditpd.controller.js | 329 +++++++++++++++++------- app/controllers/test.controller.js | 2 +- app/models/CreditGeneralInformation.js | 81 +++++- app/models/Photograph.js | 25 ++ app/models/SupplierDetail.js | 4 +- app/routes/routes.js | 158 +++++++++++- app/services/CreditPdHelper.js | 25 +- package-lock.json | 338 ++++++++++++++++++++++++- package.json | 1 + 9 files changed, 852 insertions(+), 111 deletions(-) create mode 100644 app/models/Photograph.js diff --git a/app/controllers/creditpd.controller.js b/app/controllers/creditpd.controller.js index 096f0bb..7404907 100644 --- a/app/controllers/creditpd.controller.js +++ b/app/controllers/creditpd.controller.js @@ -2,17 +2,19 @@ const { keys, values } = require('lodash'); const { sequelize,Test,CreditGeneralInformation,SizeAndGeographicalResearch,CreditProfile,ProductAndProcess,PortFolioHealth,TotalOverallDebit,OverallPlanOfAction,ValidationPoint, CreditLoanDetail,CreditFinalRemarks,CreditGeneralBusinessInformation,CreditKeyProductBusinessContribution,EmployeeStrength,CreditBusinessAndPersonalBankingDetails,CreditFinancialInformation, SupplierDetail ,ClientDetail,CreditFuturePlans,CreditExistingLoanObligation,FamilyMemberInvolvedInBusiness,CreditManager,CreditBorrowerAndGuarantorDetails,CreditFinancialAnalysis,CreditAddressDetail, - CreditKeyShareholder,Covid19Questions,StockDetail,BusinessAsset,CreditFilterTable} = require('../models') + CreditKeyShareholder,Covid19Questions,StockDetail,BusinessAsset,CreditFilterTable,Photograph} = require('../models') const { logMsg } = require('../services/logger.js'); const Credit_PdHelper = require('../services/CreditPdHelper.js'); const moment = require('moment'); -var global = require('global') -global.arr = [ CreditAddressDetail , CreditBorrowerAndGuarantorDetails , CreditBusinessAndPersonalBankingDetails , BusinessAsset , - ClientDetail , Covid19Questions , EmployeeStrength , CreditExistingLoanObligation , +var global = require('global'); +global.arr = [ CreditAddressDetail , CreditBorrowerAndGuarantorDetails , CreditBusinessAndPersonalBankingDetails, + BusinessAsset , ClientDetail , Covid19Questions , EmployeeStrength , + CreditExistingLoanObligation , FamilyMemberInvolvedInBusiness , CreditFinalRemarks , CreditFinancialAnalysis , CreditFinancialInformation , CreditFuturePlans , CreditGeneralBusinessInformation , CreditGeneralInformation , CreditKeyProductBusinessContribution , CreditKeyShareholder , CreditLoanDetail , OverallPlanOfAction , PortFolioHealth , ProductAndProcess , CreditProfile , - SizeAndGeographicalResearch , StockDetail , SupplierDetail , TotalOverallDebit , ValidationPoint , CreditManager ] + SizeAndGeographicalResearch , StockDetail , SupplierDetail , TotalOverallDebit , + ValidationPoint , CreditManager , Photograph ] exports.Welcome = (req, res) => { @@ -29,94 +31,239 @@ exports.Welcome = (req, res) => }; -exports.CreditPd = async (req, res) => +exports.PullCreditPdData = async (req, res) => { - // { - // "pdid":"4526", - // "product":"WCTL", - // "data":"jsonstring - // } - - const tempData = { } - - var obj = { }; // store obj - let temp_obj = [ ]; // store array of obj - var arr_ObjKey = [ ] - var creditFilter_obj_key = [ ]; - var creditFilter_table_name = [ ]; - var name; - var loan_amount; - var pd_id = [ ]; - - for (const [key, value] of Object.entries(tempData)) { - if (key == "Loan details" || key =="Borrower & Guarantor Details") { - for (var [keys, element] of Object.entries(value)) { - if ( Array.isArray(element) == true ) { element.forEach(async(element , index) => { - if ( keys == 'borrower_details' && index == 0 ) { Object.assign( obj , {name : element['borrower_name']}) } }); - } else { if ( keys == 'loan_amount') { { Object.assign( obj , { loan_amount : element })} } } - } - } - } - pd_id = await CreditGeneralInformation.create(obj); - - for (const [key, value] of Object.entries(tempData)) { - console.log(key); - creditFilter_obj_key = await CreditFilterTable.findAll({ raw: true , attributes: [ 'mul_key' ], where : { section : key , is_active : 1 , is_mul : 1}}) - creditFilter_table_name = await CreditFilterTable.findAll({ raw: true, attributes: [ 'table_name' ,'section' ,'ques_key'], where : { section : key , is_active : 1 } , group: ['table_name' , 'section' ,'ques_key']}) - for (let index = 0; index < creditFilter_obj_key.length; index++) + try { - arr_ObjKey.push(creditFilter_obj_key[index].mul_key) // store nested obj keys - } - if (key == creditFilter_table_name[0].section) { - temp_obj.length = 0 ; // clear array - obj = { }; // clear obj - for (var [arr_keys, arr_of_element] of Object.entries(value)) { - if ( Array.isArray(arr_of_element) == true ) - { - arr_of_element.forEach(async(iter_element , index) => { - if (Object.keys(iter_element)[0] == '0') { - temp_obj.push({ [arr_keys] : iter_element }) - } else { - temp_obj.push(iter_element) ; - } - }); - } - else if( typeof arr_of_element === "object" && ( arr_of_element !== null ) ) - { - delete arr_of_element.display_data; - delete value.display_data; - await Credit_PdHelper.CreditPd( arr_keys , arr_of_element , arr_ObjKey , obj ) - } - else - { - if (moment(arr_of_element, "DD-MM-YYYY", true).isValid() == true) { - var mydate = moment(arr_of_element, "DD-MM-YYYY"); // convert dd/mm/yyyy to yyyy/mm/dd - var my_date = moment(mydate).format("YYYY-MM-DD") - Object.assign( obj, { [arr_keys] : my_date }); - } else { Object.assign( obj, { [arr_keys] : arr_of_element }); } - } - }// inner forLoop - // DB insertion - if (temp_obj.length != 0 ) - { - temp_obj.forEach( async (temp_obj_element) => - { - Object.assign( obj,{ pd_id : pd_id.pd_id} ); - Object.assign( obj,temp_obj_element ); - var index = creditFilter_table_name[0].table_name; - var tableName = arr[index] - await tableName.create( obj ).then((data)=>{}).catch((err)=>console.log(err)); - }); - } - else - { - Object.assign( obj,{ pd_id : pd_id.pd_id} ); - var index = creditFilter_table_name[0].table_name; - var tableName = arr[index] - await tableName.create( obj ).then((data)=>{}).catch((err)=>console.log(err)); - } - } // if end - } // outer forLoop + const tempData = parse(JSON.stringify(req.body.data)); + var obj = { }; + let temp_obj = [ ]; + var arr_ObjKey = [ ] + var creditFilter_obj_key = [ ]; + var creditFilter_table_name = [ ]; + var name; + var loan_amount; + var pd_id = [ ]; + + // create creditGeneralInormationData + for (const [key, value] of Object.entries(tempData)) { + if (key == "Loan details" || key =="Borrower & Guarantor Details") { + for (var [keys, element] of Object.entries(value)) { + if ( Array.isArray(element) == true ) { + element.forEach(async(element , index) => { + if ( keys == 'borrower_details' && index == 0 ) { + Object.assign( obj , {name : element['borrower_name']}) + Object.assign(obj, { ref_no: req.body.pdid , product :req.body.product , case_no :req.body.caseno}); + } + }); + } else { if ( keys == 'loan_amount') { { Object.assign( obj , { loan_amount : element })} } } + } + } + } + // Object.assign( obj , { ref_no : req.body.pdid }); + await CreditGeneralInformation.create(obj) + .then((successData)=>{logMsg.info("GeneralInformation insert success ,PdId= "+successData.dataValues.pd_id);}) + .catch((err)=>{ logMsg.info("GeneralInformation insert failed ,PdId(ref_no)= "+req.body.pdid); }); + pd_id = await CreditGeneralInformation.findOne({ where : { ref_no : req.body.pdid , is_active : 1 }}); + // pd_id = await CreditGeneralInformation.create(obj) + + + // loop to check if the data is array or nestedObject or objects + for (const [key, value] of Object.entries(tempData)) { + creditFilter_obj_key = await CreditFilterTable.findAll({ raw: true , attributes: [ 'mul_key' ], where : { section : key , is_active : 1 , is_mul : 1}}) + creditFilter_table_name = await CreditFilterTable.findAll({ raw: true, attributes: [ 'table_name' ,'section' ,'ques_key'], where : { section : key , is_active : 1 } , group: ['table_name' , 'section' ,'ques_key']}) + for (let index = 0; index < creditFilter_obj_key.length; index++) + { + arr_ObjKey.push(creditFilter_obj_key[index].mul_key) // store nested obj keys + } + if (key == creditFilter_table_name[0].section) { + temp_obj.length = 0 ; // clear array datas + obj = { }; // clear obj datas + + // Check if the data is array or not + for (var [arr_keys, arr_of_element] of Object.entries(value)) { + if ( Array.isArray(arr_of_element) == true ) + { + arr_of_element.forEach(async(iter_element , index) => { + // assign only value with in array + if (Object.keys(iter_element)[0] == '0') { + temp_obj.push({ [arr_keys] : iter_element }) + } + // assign array of objects + else + { + temp_obj.push(iter_element) ; + } + }); + } + // assign nestedObject datas + else if( typeof arr_of_element === "object" && ( arr_of_element !== null ) ) + { + delete arr_of_element.display_data; + delete value.display_data; + await Credit_PdHelper.CreditPd( arr_keys , arr_of_element , arr_ObjKey , obj ) + } + // assign object data + else + { + if (moment(arr_of_element, "DD-MM-YYYY", true).isValid() == true) { + var mydate = moment(arr_of_element, "DD-MM-YYYY"); // convert dd/mm/yyyy to yyyy/mm/dd + var my_date = moment(mydate).format("YYYY-MM-DD") + Object.assign( obj, { [arr_keys] : my_date }); + } else { Object.assign( obj, { [arr_keys] : arr_of_element }); } + } + }// end of inner forLoop + // DB insertion + // insert array of object datas + if (temp_obj.length != 0 ) + { + temp_obj.forEach( async (temp_obj_element) => + { + Object.assign( obj,{ pd_id : pd_id.pd_id} ); + Object.assign( obj,temp_obj_element ); + var index = creditFilter_table_name[0].table_name; + var tableName = arr[index] + await tableName.create( obj ) + .then((successData)=>{logMsg.info(` ${tableName} insert success ,PdId= `+pd_id.pd_id);}) + .catch((err)=>{ logMsg.info(` ${tableName} insert failed ,PdId= `+pd_id.pd_id); }); + }); + } + // insert nestedObject and object datas + else + { + Object.assign( obj,{ pd_id : pd_id.pd_id} ); + var index = creditFilter_table_name[0].table_name; + var tableName = arr[index] + await tableName.create( obj ) + .then((successData)=>{logMsg.info(` ${tableName} insert success ,PdId= `+pd_id.pd_id);}) + .catch((err)=>{ logMsg.info(` ${tableName} insert failed ,PdId= `+pd_id.pd_id); }); + } + } // if end + } // end of outer forLoop + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while retrieving data." ,'data': "No data" }); + } //end of try catch + } + + + +exports.PullCreditPdPhotographsData = async (req, res) => +{ + try + { + // fetch SMC PdId from DB + GeneralSectionData = await CreditGeneralInformation.findOne({ where : { ref_no : req.body.pdid ,case_no :req.body.caseno, is_active : 1 }}); + PdId = GeneralSectionData.dataValues.pd_id; + // convert image file to base64 code + // path = "storage/uploads/" + // file = path+img_name; + // base64_data = "data:image/png;base64," + fs.readFileSync(file, 'base64'); + // insert photograph data here + + await Photograph.create({pd_id: PdId , ref_no :req.body.pdid , img_name :req.body.img_name , img : img_name}) + .then((successData)=>{logMsg.info("Photograph insert success ,PdId= "+PdId);}) + .catch((err)=>{ logMsg.info("Photograph insert failed ,PdId= "+PdId+" ERROR : "+err);}); + // responce to FE + setTimeout(() => { + res.send({'status':200,'message':"success",'data':"INSERT INTO sales_photograph (pd_id,ref_no,img_name,img) VALUES ("+PdId+","+req.body.pdid+","+req.body.img_name+","+base64_data+")"}); + }, 300); + + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while retrieving data." ,'data': "No data" }); + } //end of try catch + +}; + + +exports.imageView = async (req, res) => +{ + try + { + const filePath = "storage/uploads/"+req.query.img_name; + const { dirname } = require('path'); + const appDir = dirname(require.main.filename); + + res.sendFile(filePath , { root: appDir }); + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while retrieving data." ,'data': "No data" }) ; + } //end of try catch +}; + + + +exports.DownloadPdReport = async (req, res) => +{ + try + { + pd_id = req.query.ref_no; + DownloadPdReportUrl = process.env.PD_REPORT_URL; + url = DownloadPdReportUrl+""+pd_id; + + + request({ + url: url, + method: "GET" + + }, function (error, response, body) { console.log(body); + if (body != undefined) { + data = JSON.parse(body); + if ( data.status == 200) { + + link = data.records; + res.send({'status':200,'message':"success",'data':link}); + }else{ + res.send({'status':404,'message':"failed",'data':"No data"}); + } + } + }); + + + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while retrieving data." ,'data': "No data" }); + } //end of try catch + +}; + +exports.GetCreditPdData = async (req, res) => +{ + try + { + applicantDetails = await Credit_PdHelper.MainApplicantDetails(req.query.losid); + MainApplicantDetails = JSON.parse(applicantDetails); + + if(MainApplicantDetails.status == 200) + { + var resData = await CreditGeneralInformation.findAll({ where : { name : MainApplicantDetails.data.name,is_active : 1}, + include : [ + {model: CreditAddressDetail }, {model: CreditFuturePlans }, + {model : CreditBorrowerAndGuarantorDetails }, + {model: CreditBusinessAndPersonalBankingDetails }, {model: BusinessAsset }, + {model: CreditFinancialInformation }, {model: CreditKeyShareholder }, + {model: CreditKeyProductBusinessContribution }, {model: EmployeeStrength }, + {model: ClientDetail }, {model: StockDetail }, + {model: CreditExistingLoanObligation }, {model: FamilyMemberInvolvedInBusiness }, + {model : CreditManager }, // {model: Photograph }, + {model: CreditFinalRemarks }, {model: CreditLoanDetail }, + {model: CreditGeneralBusinessInformation }, {model: SupplierDetail } + ] + }) + res.send({'status':200,'message':"success",'data':resData}); + }else + { + res.send({'status':404,'message':"failed",'data':"No data"}); + } + + } catch(err) { + res.status(500).send({'status':404, + message: err.message || "Some error occurred while inserting statements." ,'data': "No data" + }); + } + +}; + diff --git a/app/controllers/test.controller.js b/app/controllers/test.controller.js index ea34e60..44866b2 100644 --- a/app/controllers/test.controller.js +++ b/app/controllers/test.controller.js @@ -28,4 +28,4 @@ exports.PullCreditPdData = async (req, res) => res.send({'status':404,message: err.message || "Some error occurred while retrieving data." ,'data': "No data" }); } //end of try catch -}; \ No newline at end of file +}; diff --git a/app/models/CreditGeneralInformation.js b/app/models/CreditGeneralInformation.js index 4ea5efa..1306d1a 100644 --- a/app/models/CreditGeneralInformation.js +++ b/app/models/CreditGeneralInformation.js @@ -1,5 +1,9 @@ 'use strict' const { Model } = require('sequelize') +const { sequelize,Test,CreditGeneralInformation,SizeAndGeographicalResearch,CreditProfile,ProductAndProcess,PortFolioHealth,TotalOverallDebit,OverallPlanOfAction,ValidationPoint, + CreditLoanDetail,CreditFinalRemarks,CreditGeneralBusinessInformation,CreditKeyProductBusinessContribution,EmployeeStrength,CreditBusinessAndPersonalBankingDetails,CreditFinancialInformation, + SupplierDetail ,ClientDetail,CreditFuturePlans,CreditExistingLoanObligation,FamilyMemberInvolvedInBusiness,CreditManager,CreditBorrowerAndGuarantorDetails,CreditFinancialAnalysis,CreditAddressDetail, + CreditKeyShareholder,Covid19Questions,StockDetail,BusinessAsset,CreditFilterTable} = require('../models') module.exports = (sequelize, DataTypes) => { class CreditGeneralInformation extends Model { @@ -15,6 +19,8 @@ module.exports = (sequelize, DataTypes) => { loan_amount: { type: DataTypes.INTEGER }, product: { type: DataTypes.STRING }, location: { type: DataTypes.STRING }, + ref_no: { type: DataTypes.INTEGER }, + case_no: { type: DataTypes.STRING }, createdby: { type: DataTypes.INTEGER }, updatedby: { type: DataTypes.INTEGER } }, @@ -24,7 +30,80 @@ module.exports = (sequelize, DataTypes) => { modelName: 'CreditGeneralInformation', } ) - + CreditGeneralInformation.associate = models => { + CreditGeneralInformation.hasMany(models.CreditAddressDetail, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditFuturePlans, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditBorrowerAndGuarantorDetails, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditBusinessAndPersonalBankingDetails, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.BusinessAsset, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditFinancialInformation, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditKeyShareholder, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditKeyProductBusinessContribution, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.EmployeeStrength, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.ClientDetail, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.StockDetail, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditExistingLoanObligation, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.FamilyMemberInvolvedInBusiness, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditManager, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditFinalRemarks, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditLoanDetail, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.CreditGeneralBusinessInformation, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + CreditGeneralInformation.hasMany(models.SupplierDetail, { + foreignKey: 'pd_id', + sourceKey : 'pd_id' + }); + } return CreditGeneralInformation } \ No newline at end of file diff --git a/app/models/Photograph.js b/app/models/Photograph.js new file mode 100644 index 0000000..e85d46e --- /dev/null +++ b/app/models/Photograph.js @@ -0,0 +1,25 @@ +'use strict' +const { Model } = require('sequelize') +module.exports = (sequelize, DataTypes) => { + class Photograph extends Model { + + } + Photograph.init( + { + pd_id: { type: DataTypes.INTEGER }, + ref_no: { type: DataTypes.INTEGER }, + img: { type: DataTypes.STRING }, + img_name: { type: DataTypes.STRING }, + createdby: { type: DataTypes.INTEGER }, + updatedby: { type: DataTypes.INTEGER } + + }, + { + sequelize, + tableName: 'credit_photograph', + modelName: 'Photograph', + } + ) + + return Photograph +} \ No newline at end of file diff --git a/app/models/SupplierDetail.js b/app/models/SupplierDetail.js index f05b659..2407e3b 100644 --- a/app/models/SupplierDetail.js +++ b/app/models/SupplierDetail.js @@ -7,8 +7,8 @@ module.exports = (sequelize, DataTypes) => { SupplierDetail.init( { pd_id: { type: DataTypes.INTEGER }, - stock_info_available: { type: DataTypes.STRING }, - stock_not_available_reason: { type: DataTypes.STRING }, + supplier_info_available: { type: DataTypes.STRING }, + supplier_not_available_reason: { type: DataTypes.STRING }, provider_name: { type: DataTypes.STRING }, supplier_name: { type: DataTypes.STRING }, contact_person_name: { type: DataTypes.STRING }, diff --git a/app/routes/routes.js b/app/routes/routes.js index 83ca924..55b647f 100644 --- a/app/routes/routes.js +++ b/app/routes/routes.js @@ -20,9 +20,15 @@ module.exports = app => { * 200: * description: success */ - router.get("/demo", Mycontroller.Welcome); + router.get("/demo", CreditPdController.Welcome); + + + + + +// Pull CreditPd Data /** * @swagger * definitions: @@ -59,12 +65,158 @@ module.exports = app => { * 500: * description: failed */ -router.post("/PullCreditPdData", Mycontroller.PullCreditPdData); +router.get("/PullCreditPdData", CreditPdController.PullCreditPdData); - router.get('/creditPd',CreditPdController.CreditPd) + + + + + +// photograph upload +const multer = require('multer'); +img_name = ""; +const storage = multer.diskStorage({ + destination: (req, file, cb) => { + cb(null, 'storage/uploads/'); + }, + filename: (req, file, cb) => { + img_name = ""; + img_name += Date.now()+'-'+file.originalname; + cb(null, img_name); + } +}); +const upload = multer({ storage }); +/** +* @swagger +* definitions: +* PullCreditPdPhotographsData: +* type: object +* properties: +* pdid: +* type: integer +* description: pdid +* example: 6646 +* product: +* type: string +* description: product +* example: LFMP +* caseno: +* type: string +* description: +* example: MW53315 +* img: +* type: file +* description: image file +* example: +* img_name: +* type: string +* description: image file +* example: sample +*/ +/** +* @swagger +* /api/PullCreditPdPhotographsData: +* post: +* summary: Pull CreditPd Photographs Data +* description: Pull CreditPd Photographs Data +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/PullCreditPdPhotographsData' +* responses: +* 200: +* description: success +* 500: +* description: failed +*/ +// router.post('/PullCreditPdPhotographsData', upload.single('img'),function(req,res){ CreditPdController.PullCreditPdPhotographsData(req,res,img_name); } ); + + + + + + +// view image + /** +* @swagger +* /api/imageView: +* get: +* summary: view image file api +* description: +* parameters: +* - in: query +* name: img_name +* schema: +* type: integer +* required: true +* example: +* responses: +* 200: +* description: success +*/ +// router.get('/imageView',CreditPdController.imageView); + + + + + + + + + +//get credit pd data List Api +/** +* @swagger +* /api/GetCreditPdData: +* get: +* summary: Get CreditPdData Data List +* description: Get CreditPdData Data List +* parameters: +* - in: query +* name: losid +* schema: +* type: string +* required: true +* example: MW112233 +* responses: +* 200: +* description: success +*/ +router.get('/GetCreditPdData',CreditPdController.GetCreditPdData) + + + + +// DownloadPdReport +/** +* @swagger +* /api/DownloadPdReport: +* get: +* summary: Download Pd Report as pdf file +* description: Download Pd Report as pdf file +* parameters: +* - in: query +* name: ref_no +* schema: +* type: integer +* required: true +* example: 614 +* responses: +* 200: +* description: success +*/ +// router.get("/DownloadPdReport", SalesPdController.DownloadPdReport); + + + + + + + // routes started here app.use('/api', router); }; diff --git a/app/services/CreditPdHelper.js b/app/services/CreditPdHelper.js index 5118803..26e5ce7 100644 --- a/app/services/CreditPdHelper.js +++ b/app/services/CreditPdHelper.js @@ -4,6 +4,7 @@ const { sequelize,Test,CreditGeneralInformation,SizeAndGeographicalResearch,Cred SupplierDetail ,ClientDetail,CreditFuturePlans,CreditExistingLoanObligation,FamilyMemberInvolvedInBusiness,CreditManager,CreditBorrowerAndGuarantorDetails,CreditFinancialAnalysis,CreditAddressDetail, CreditKeyShareholder,Covid19Questions,StockDetail,BusinessAsset} = require('../models') const { logMsg } = require('../services/logger.js'); +const request = require('request'); exports.CreditPd = async ( credit_key , credit_value ,credit_temp_array ,credit_obj) => { @@ -12,7 +13,29 @@ exports.CreditPd = async ( credit_key , credit_value ,credit_temp_array ,credit await Object.assign( credit_obj, { [credit_key] : credit_value[credit_temp_array[i]] }); } } - } +} +exports.MainApplicantDetails = async(losid) => { + + try { + const url = "https://demo.devopsmcfinance.com/cet_mainapp/api/MainApplicantDetailsList?losid="+losid; + + return new Promise((resolve, reject) => { + request({ + url: url, + method: "GET" + + }, function (error, response, body) { + resolve(body); + }); + + }); +} +catch (error) { + console.log(error); +} +} + + diff --git a/package-lock.json b/package-lock.json index 7fd8eeb..fb2bda3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "log4js": "^6.3.0", "moment": "^2.29.3", "mssql": "^7.2.0", + "multer": "^1.4.4", "request": "^2.88.2", "sequelize": "^6.6.5", "swagger-jsdoc": "^6.1.0", @@ -857,6 +858,11 @@ "node": ">= 8" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -1152,6 +1158,44 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "dependencies": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/busboy/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/busboy/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/busboy/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -1432,6 +1476,47 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/configstore": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", @@ -1631,6 +1716,39 @@ "node": ">=8" } }, + "node_modules/dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "dependencies": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dicer/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/dicer/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/dicer/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -2696,8 +2814,7 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "node_modules/isstream": { "version": "0.1.2", @@ -3109,8 +3226,18 @@ "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "devOptional": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } }, "node_modules/mkdirp-classic": { "version": "0.5.3", @@ -3197,6 +3324,24 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/multer": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -3574,8 +3719,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/proxy-addr": { "version": "2.0.7", @@ -4215,6 +4359,14 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -4550,6 +4702,11 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -4969,6 +5126,14 @@ "node": ">=0.4.0" } }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -5689,6 +5854,11 @@ "picomatch": "^2.0.4" } }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -5926,6 +6096,43 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "requires": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -6146,6 +6353,46 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "configstore": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", @@ -6293,6 +6540,38 @@ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "optional": true }, + "dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "requires": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -7097,8 +7376,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isstream": { "version": "0.1.2", @@ -7449,8 +7727,15 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "devOptional": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } }, "mkdirp-classic": { "version": "0.5.3", @@ -7518,6 +7803,21 @@ } } }, + "multer": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + } + }, "napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -7798,8 +8098,7 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "proxy-addr": { "version": "2.0.7", @@ -8250,6 +8549,11 @@ } } }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -8506,6 +8810,11 @@ "mime-types": "~2.1.24" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -8836,6 +9145,11 @@ "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.1.0.tgz", "integrity": "sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ==" }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/package.json b/package.json index 5a88b04..ed6c453 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "log4js": "^6.3.0", "moment": "^2.29.3", "mssql": "^7.2.0", + "multer": "^1.4.4", "request": "^2.88.2", "sequelize": "^6.6.5", "swagger-jsdoc": "^6.1.0",