diff --git a/app/controllers/cibil.controller.js b/app/controllers/cibil.controller.js index dea13ad..e1d03fe 100644 --- a/app/controllers/cibil.controller.js +++ b/app/controllers/cibil.controller.js @@ -1,10 +1,7 @@ -const { sequelize,OutputActiveAndClosedLoans,OutSanctionAmt_P,OutSanctionAmt_C,OutEnquiryAmountP,OutEnquiryAmountC, - InBorrowerDetail,ConBorrowDetail,ConIDDetail,BorrowerProfile,BorrowidDetail - ,InEnquiryDetail,ConEnquiryDetail,EnquiryDetail - ,InCreditFacility,CreditFacilityCurrentDetail,ConAccountTranscation - ,InDpdTranscationTable,AcHistoryAndDPD,ConDPDTranscation} = require('../models') +const { sequelize,OutputActiveAndClosedLoans,OutSanctionAmt_P,OutSanctionAmt_C,OutEnquiryAmountP,OutEnquiryAmountC,InBorrowerDetail,ConBorrowDetail,ConIDDetail,BorrowerProfile,BorrowidDetail,InEnquiryDetail,ConEnquiryDetail,EnquiryDetail,InCreditFacility,CreditFacilityCurrentDetail,ConAccountTranscation,InDpdTranscationTable,AcHistoryAndDPD,ConDPDTranscation} = require('../models') const { logMsg } = require('../services/logger.js'); const Helper = require('../services/cibil.controller.helper.js'); +const DataInsertHelper = require('../services/cibil.datainsert.helper.js'); const { Op } = require('sequelize'); @@ -35,9 +32,12 @@ exports.ActiveAndClosedLoansDetailsList =async (req, res) => { try { - LoanData = await OutputActiveAndClosedLoans.findAll({raw : true , where:{losid:req.query.losid , ref_no :req.query.ref_no}}); - if(LoanData.length != 0) + ActiveLoanData = await OutputActiveAndClosedLoans.findAll({raw : true , where:{losid:req.query.losid , ref_no :req.query.ref_no , DateClosed:null }}); + ClosedLoanData = await OutputActiveAndClosedLoans.findAll({raw : true , where:{losid:req.query.losid , ref_no :req.query.ref_no , DateClosed:{ [Op.ne]: null} }}); + if(ActiveLoanData.length != 0 || ClosedLoanData.length != 0) { + + LoanData = {ActiveLoanData:ActiveLoanData , ClosedLoanData:ClosedLoanData } res.send({'status':200 , message:"Success." ,'data': LoanData}); } else{ @@ -149,7 +149,7 @@ exports.SummaryViewOfCreditFacilities =async (req, res) => try { - sequelize.query("select count(*) as total_accounts_count,count(case when overdue_amount > 0 then 1 else null end) as overdue_amount_count,count(case when current_balance = 0 then 1 else null end) as zero_balance_count,count(case when overdue_amount <= 0 then 1 else null end) as nill_overdue_amount_count,MAX(sanctioned_amount) as high_credit,SUM(current_balance) as sum_current_balance ,SUM(overdue_amount) as sum_overdue_amount ,MAX(opened_date) as latest_opened_date ,MIN(opened_date) as oldest_opened_date from out_active_and_closed_loans_details where losid = '"+req.query.losid+"' and is_active = 1 and ref_no = '"+req.query.ref_no+"'").then(async(data) => { + sequelize.query("select count(*) as total_accounts_count,count(case when overdue_amount > 0 then 1 else null end) as overdue_amount_count,count(case when current_balance = 0 then 1 else null end) as zero_balance_count,count(case when overdue_amount <= 0 then 1 else null end) as nill_overdue_amount_count,SUM(sanctioned_amount) as high_credit,SUM(current_balance) as sum_current_balance ,SUM(overdue_amount) as sum_overdue_amount ,MAX(opened_date) as latest_opened_date ,MIN(opened_date) as oldest_opened_date from out_active_and_closed_loans_details where losid = '"+req.query.losid+"' and is_active = 1 and ref_no = '"+req.query.ref_no+"'").then(async(data) => { res.send({'status':200 , message:"Success." ,'data':data}); @@ -289,7 +289,7 @@ exports.ConsolidatedSummaryViewOfCreditFacilities =async (req, res) => try { - sequelize.query("select count(*) as total_accounts_count,count(case when overdue_amount > 0 then 1 else null end) as overdue_amount_count,count(case when current_balance = 0 then 1 else null end) as zero_balance_count,count(case when overdue_amount <= 0 then 1 else null end) as nill_overdue_amount_count,MAX(sanctioned_amount) as high_credit,SUM(current_balance) as sum_current_balance ,SUM(overdue_amount) as sum_overdue_amount ,MAX(opened_date) as latest_opened_date ,MIN(opened_date) as oldest_opened_date from out_active_and_closed_loans_details where losid = '"+req.query.losid+"' and is_active = 1 " ).then(async(data) => { + sequelize.query("select count(*) as total_accounts_count,count(case when overdue_amount > 0 then 1 else null end) as overdue_amount_count,count(case when current_balance = 0 then 1 else null end) as zero_balance_count,count(case when overdue_amount <= 0 then 1 else null end) as nill_overdue_amount_count,SUM(sanctioned_amount) as high_credit,SUM(current_balance) as sum_current_balance ,SUM(overdue_amount) as sum_overdue_amount ,MAX(opened_date) as latest_opened_date ,MIN(opened_date) as oldest_opened_date from out_active_and_closed_loans_details where losid = '"+req.query.losid+"' and is_active = 1 " ).then(async(data) => { res.send({'status':200 , message:"Success." ,'data':data}); @@ -526,16 +526,7 @@ exports.ConsolidatedSanctionAmountSplitUp =async (req, res) => - - - - - -exports.test =async (req, res) => -{ - try - { - // end_date = '2022-05-05' + // end_date = '2022-05-05' // sk = await Helper.createSkeleton(end_date); // res.send({sk}) // dpd_dates = ['2019-10-01','2019-09-20','2019-08-20','2019-07-20','2019-06-20','2019-05-20','2019-04-20','2019-03-20']; @@ -544,290 +535,59 @@ exports.test =async (req, res) => // console.log(data); // }); - srt = "Credit Facility 1"; - num = srt.replace ( /[^\d.]/g, '' ); - console.log(num); + + + +exports.test = async (req, res) => +{ + try + { + // data = await Helper.cibilInputDataApiCall('MW55904793','AORPK5766N',2); + // DataInsertHelper.consumerDataInsert(data); + // res.send(data); + + PanList = await Helper.panListApiCall('MW112233'); + + res.send({'status':200 , message:"Success." ,'data':PanList}); + // query = " test_group_loans @los_id = 'MW112233', @ref_no = '202201121115264000000' "; + // sequelize.query(query).then(async(data) => { + + // res.send({'status':200 , message:"Success." ,'data':data}); + // }).catch(err=>{ res.send({'status':400 , message: "Failed" ,'data': "Nodata"}); }) } catch(err) { res.status(500).send({'status':404, message: err.message || "Some error occurred while inserting statements." ,'data': "No data" - }); } //end of try catch + }); +} //end of try catch }; + +exports.testone =async (req, res) => +{ + try + { + data = await Helper.cibilInputDataApiCall('MW00045413','AAACR4282J',2); + + DataInsertHelper.commercialDataInsert(data); + res.send(data); + } catch(err) { + res.status(500).send({'status':404, + message: err.message || "Some error occurred while inserting statements." ,'data': "No data" + }); +} //end of try catch + +}; + + + + + + exports.test2 =async (req, res) => { try { - // BorrowerProfileData = await BorrowerProfile.findAll({attributes: ['losid','ApplicationRefno','EnqInfoBorrowerName','EnqInfoPan'],raw:true ,where:{losid:'MW112233'}}); - // BorrowerProfileArray = []; - // BorrowerProfileData.forEach(value => { - // BorrowerProfileDataObj = { - // losid : value.losid, - // ReferenceNumber : value.ApplicationRefno, - // ConsumerNameField1 : value.EnqInfoBorrowerName, - // ConsumerNameField2 : null, - // ConsumerNameField3 : null, - // ConsumerNameField4 : null, - // ConsumerNameField5 : null, - // PAN : value.EnqInfoPan, - // cibil_type : 1 - // } - // BorrowerProfileArray.push(BorrowerProfileDataObj); - // }); - // await InBorrowerDetail.bulkCreate(BorrowerProfileArray); - - - - - - - // ConBorrowDetailData = await ConBorrowDetail.findAll({attributes: ['losid','MemberReferenceNumber','ConsumerNameField1','ConsumerNameField2','ConsumerNameField3','ConsumerNameField4','ConsumerNameField5'],raw:true ,where:{losid:'MW112233'},include:[{model:ConIDDetail , attributes: ['IDNumber'],where:{IDType:'Income Tax ID Number'}}]}); - // ConBorrowDetailArray = []; - // ConBorrowDetailData.forEach(value => { - // ConBorrowDetailDataObj = { - // losid : value.losid, - // ReferenceNumber : value.MemberReferenceNumber, - // ConsumerNameField1 : value.ConsumerNameField1, - // ConsumerNameField2 : value.ConsumerNameField2, - // ConsumerNameField3 : value.ConsumerNameField3, - // ConsumerNameField4 : value.ConsumerNameField4, - // ConsumerNameField5 : value.ConsumerNameField5, - // PAN : value['ConIDDetails.IDNumber'], - // cibil_type : 2 - // } - - // ConBorrowDetailArray.push(ConBorrowDetailDataObj); - // }); - // await InBorrowerDetail.bulkCreate(ConBorrowDetailArray); - - - - - - - - - - - - - - - - // end_date = '2022-05-05' - // sk = await Helper.createSkeleton(end_date); - // ComEnquiryDetailData = await EnquiryDetail.findAll({attributes: ['losid','ApplicationRefno','EnquiryDetailsEnquiryDt','EnquiryDetailsEnquiryPurpose','EnquiryDetailsEnquiryAmt'],raw:true ,where:{losid:'MW112233'}}); - // ComEnquiryDetailArray = []; - // ComEnquiryDetailData.forEach(async(value) => { - // month_bucket_result = await Helper.findBucketCount(sk,value.EnquiryDetailsEnquiryDt); - // ComEnquiryDetailDataObj = { - // losid : value.losid, - // ReferenceNumber : value.ApplicationRefno, - // DateOfEnquiry : value.EnquiryDetailsEnquiryDt, - // EnquiryPurpose : value.EnquiryDetailsEnquiryPurpose, - // EnquiryAmount : value.EnquiryDetailsEnquiryAmt, - // month_bucket_index : month_bucket_result, - // cibil_type : 1 - // } - // ComEnquiryDetailArray.push(ComEnquiryDetailDataObj); - // }); - // setTimeout(async() => { - - // await InEnquiryDetail.bulkCreate(ComEnquiryDetailArray).catch(err=>{res.send({data:err})}); - // res.send({data:ComEnquiryDetailArray}) - // }, 3000); - - - - - - // end_date = '2022-05-05' - // sk = await Helper.createSkeleton(end_date); - // ConEnquiryDetailData = await ConEnquiryDetail.findAll({attributes: ['losid','MemberReferenceNumber','DateOfEnquiry','EnquiryPurpose','EnquiryAmount'],raw:true ,where:{losid:'MW112233'}}); - // ConEnquiryDetailArray = []; - // ConEnquiryDetailData.forEach(async(value) => { - // month_bucket_result = await Helper.findBucketCount(sk,value.DateOfEnquiry); - // ConEnquiryDetailDataObj = { - // losid : value.losid, - // ReferenceNumber : value.MemberReferenceNumber, - // DateOfEnquiry : value.DateOfEnquiry, - // EnquiryPurpose : value.EnquiryPurpose, - // EnquiryAmount : value.EnquiryAmount, - // month_bucket_index : month_bucket_result, - // cibil_type : 2 - // } - // ConEnquiryDetailArray.push(ConEnquiryDetailDataObj); - // }); - // setTimeout(async() => { - - // await InEnquiryDetail.bulkCreate(ConEnquiryDetailArray).catch(err=>{res.send({data:err})}); - // res.send({data:ConEnquiryDetailArray}) - // }, 3000); - - - - - - - - - - - - - - - - - - - - - - - - - - // end_date = '2022-05-05' - // sk = await Helper.createSkeleton(end_date); - // ComCreditFacilityCurrentDetailData = await CreditFacilityCurrentDetail.findAll({attributes: ['losid','ApplicationRefno','CreditFacilityCDcfSrNo','CreditFacilityCDcfType','CreditFacilityCDDatesSanctionedDt','CreditFacilityCDLstReportedDate','CreditFacilityCDAmtSanctionedAmt','CreditFacilityCDAmtoutstandingBalance','CreditFacilityCDAmtOverdue','CreditFacilityCDODTenure','CreditFacilityCDAmtinstallmentAmt','CreditFacilityCDStatus'],raw:true ,where:{losid:'MW112233'}}); - - // ComCreditFacilityCurrentDetailData.forEach(async(value) => { - // month_bucket_result = await Helper.findBucketCount(sk,value.DateOpenedDisbursed); - // Num = value.ApplicationRefno; - // Refno = Num.toString(); - // AccountTranDetailsID = value.CreditFacilityCDcfSrNo.replace ( /[^\d.]/g, '' ); - // ComCreditFacilityCurrentDetailObj = { - // losid : value.losid, - // InTblAccountTranDetailsID : AccountTranDetailsID, - // ReferenceNumber : Refno, - // AccountType : value.CreditFacilityCDcfType, - // OwnershipIndicator : null, - // DateOpenedDisbursed:value.CreditFacilityCDDatesSanctionedDt , - // DateReportedAndCertified :value.CreditFacilityCDLstReportedDate , - // HighCreditSanctionedAmount : value.CreditFacilityCDAmtSanctionedAmt, - // CurrentBalance : value.CreditFacilityCDAmtoutstandingBalance, - // AmountOverdue : value.CreditFacilityCDAmtOverdue, - // CreditLimit : null, - // RepaymentTenure : value.CreditFacilityCDODTenure, - // EMIAmount : value.CreditFacilityCDAmtinstallmentAmt, - // month_bucket_index : month_bucket_result, - // cibil_type : 1, - // WrittenOffAndSettledStatus : value.CreditFacilityCDStatus - // } - - // await InCreditFacility.create(ComCreditFacilityCurrentDetailObj).then(async(ComInCreditFacilityData)=>{ - - // ComAcHistoryAndDPD = await AcHistoryAndDPD.findAll({attributes: ['ApplicationRefno','CFHistory24Monthsmonth','CFHistory24MonthsACorDPD','BorrowerCurrentDetailsID'],raw:true , - // where:{BorrowerCurrentDetailsID : ComInCreditFacilityData.dataValues.InTblAccountTranDetailsID ,ApplicationRefno:ComInCreditFacilityData.dataValues.ReferenceNumber}}); - - // if(ComAcHistoryAndDPD.length != 0) - // { - // var DpdDataInsert = new Promise(async(resolve, reject) => { - // ComAcHistoryAndDPDArray = []; - // ComAcHistoryAndDPD.forEach(async(value,index,array) => { - // month_bucket_result_com_dpd = await Helper.findBucketCount(sk,value.CFHistory24Monthsmonth); - // ComAcHistoryAndDPDObj = { - // AccountTranDetailsID : ComInCreditFacilityData.dataValues.AccountTranDetailsID, - // ReferenceNumber : value.ApplicationRefno, - // cibil_type : 1, - // StartDate : value.CFHistory24Monthsmonth, - // Code : value.CFHistory24MonthsACorDPD, - // month_bucket_index : month_bucket_result_com_dpd, - // } - // ComAcHistoryAndDPDArray.push(ComAcHistoryAndDPDObj); - - // if (index === array.length -1) { resolve(ComAcHistoryAndDPDArray); } - // }); - // }); - - // DpdDataInsert.then(async(ComAcHistoryAndDPDArray)=>{ - // await InDpdTranscationTable.bulkCreate(ComAcHistoryAndDPDArray).catch(err=>{res.send({data:err})}); - // }); - - // } - // }).catch(err=>{res.send({data:err})}); - - // }); - - - - - - - - - - - - - // end_date = '2022-05-05' - // sk = await Helper.createSkeleton(end_date); - // ConAccountTranscationData = await ConAccountTranscation.findAll({attributes: ['losid','AccountTranDetailsID','MemberReferenceNumber','AccountType','OwnershipIndicator','DateOpenedDisbursed','DateReportedAndCertified','HighCreditSanctionedAmount','CurrentBalance','AmountOverdue','CreditLimit','RepaymentTenure','EMIAmount','WrittenOffAndSettledStatus'],raw:true ,where:{losid:'MW112233'}}); - - - // ConAccountTranscationData.forEach(async(value) => { - // month_bucket_result = await Helper.findBucketCount(sk,value.DateOpenedDisbursed); - // Num = value.MemberReferenceNumber; - // MemberReferenceNumber = Num.toString(); - // ConAccountTranscationObj = { - // losid : value.losid, - // InTblAccountTranDetailsID : value.AccountTranDetailsID, - // ReferenceNumber : MemberReferenceNumber, - // AccountType : value.AccountType, - // OwnershipIndicator : value.OwnershipIndicator, - // DateOpenedDisbursed:value.DateOpenedDisbursed , - // DateReportedAndCertified :value.DateReportedAndCertified , - // HighCreditSanctionedAmount : value.HighCreditSanctionedAmount, - // CurrentBalance : value.CurrentBalance, - // AmountOverdue : value.AmountOverdue, - // CreditLimit : value.CreditLimit, - // RepaymentTenure : value.RepaymentTenure, - // EMIAmount : value.EMIAmount, - // month_bucket_index : month_bucket_result, - // cibil_type : 2, - // WrittenOffAndSettledStatus : value.WrittenOffAndSettledStatus - // } - - // await InCreditFacility.create(ConAccountTranscationObj).then(async(InCreditFacilityData)=>{ - - // RefNo = InCreditFacilityData.dataValues.ReferenceNumber; - // ConDPDTranscationData = await ConDPDTranscation.findAll({attributes: ['AccountTranDetailsID','MemberRefNo','StartDate','Code'],raw:true , - // where:{MemberRefNo: RefNo,AccountTranDetailsID: InCreditFacilityData.dataValues.InTblAccountTranDetailsID}}); - // if(ConDPDTranscationData.length != 0) - // { - // var DataInsert = new Promise(async(resolve, reject) => { - // ConDPDTranscationDataArray = []; - // ConDPDTranscationData.forEach(async(value,index,array) => { - - // month_bucket_result_dpd = await Helper.findBucketCount(sk,value.StartDate); - // ConDPDTranscationDataObj = { - // AccountTranDetailsID : InCreditFacilityData.dataValues.AccountTranDetailsID, - // ReferenceNumber : value.MemberRefNo, - // cibil_type : 2, - // StartDate : value.StartDate, - // Code : value.Code, - // month_bucket_index : month_bucket_result_dpd, - // } - // ConDPDTranscationDataArray.push(ConDPDTranscationDataObj); - // //resolve - // if (index === array.length -1) { resolve(ConDPDTranscationDataArray); } - // }); - // }); - // DataInsert.then(async(ConDPDTranscationDataArray)=>{ - - // // insert consumer DPd data here - // await InDpdTranscationTable.bulkCreate(ConDPDTranscationDataArray).catch(err=>{res.send({data:err})}); - - // }); - // } - - // }).catch(err=>{res.send({data:err})}); - - // });//end of consumer credit facility data foreach loop - - - @@ -843,3 +603,95 @@ exports.test2 =async (req, res) => +exports.starter = async (req, res) => +{ + try + { + + + PanList = await Helper.panListApiCall(req.query.losid); + if(PanList.length != 0) + { + var CibilDataInsert = new Promise(async(resolve, reject) => { + PanList.forEach(async(PanListValue,PanListIndex,PanListArray) => { + + //define cibil type based on entity type + if(PanListValue.entity_type == "Individual"){ CibilType = 1; }else{CibilType = 2;} + Object.assign(PanListValue, {cibil_type:CibilType}) + + BorrowerDetailData = await InBorrowerDetail.findOne({where:{losid:PanListValue.losid , PAN:PanListValue.PAN ,cibil_type:CibilType}}); + if(BorrowerDetailData) + { + //skip data insertion for this case + //resolve here + if (PanListIndex === PanListArray.length -1) { resolve(req.query.losid); } + } + else + { + //create Intermediate table borrower details (only losid,pan,cibil_type,entity_type) + await InBorrowerDetail.create(PanListValue).then(async(PanListData)=>{ + //call cibil data api and insert cibil data in to input tables + if(PanListData.cibil_type == 1) + { + //cibil data api call + CibilData = await Helper.cibilInputDataApiCall(PanListData.losid,PanListData.PAN,PanListData.cibil_type); + //insert cibil data in to input tables + DataInsertHelper.consumerDataInsert(CibilData); + //move cibil data from input table to intermediate table + DataInsertHelper.consumerIntermediateDataInsert(); + + + //cibil output data generating python script api call + Helper.cibilOutputGenerateApiCall(losid,ref_no,cibil_type); + } + else + { + //cibil data api call + CibilData = await Helper.cibilInputDataApiCall(PanListData.losid,PanListData.PAN,PanListData.cibil_type); + //insert cibil data in to input tables + DataInsertHelper.commercialDataInsert(CibilData); + //move cibil data from input table to intermediate table + DataInsertHelper.commercialIntermediateDataInsert(); + + + //cibil output data generating python script api call + Helper.cibilOutputGenerateApiCall(losid,ref_no,cibil_type); + } + + }).catch(err=>{ }); + + //resolve here + if (PanListIndex === PanListArray.length -1) { resolve(req.query.losid); } + } + + });//end of pan list foreach + + });//end of promises + + CibilDataInsert.then(async(losid)=>{ + //joint loan unique key update procedure call + + BorrowerDetailData = await InBorrowerDetail.findAll({where:{losid:losid}}); + res.send({'status':200 , message:"Success." ,'data':BorrowerDetailData}); + + }); + } + 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" + }); +} //end of try catch + +}; + + + + + diff --git a/app/models/BorrowidDetail.js b/app/models/BorrowidDetail.js index 83fdf15..fe6e3f8 100644 --- a/app/models/BorrowidDetail.js +++ b/app/models/BorrowidDetail.js @@ -11,7 +11,7 @@ module.exports = (sequelize, DataTypes) => { BorrowerProfileBIDPan: { type: DataTypes.STRING }, BorrowerProfileBIDCin: { type: DataTypes.STRING }, BorrowerProfileBIDTin: { type: DataTypes.STRING }, - BorrowerProfileBIDRegistrationNo: { type: DataTypes.STRING }, + BorrowerProfileBIDRegistrationNo: { type: DataTypes.STRING }, BorrowerProfileBIDServiceTaxNo: { type: DataTypes.STRING }, BorrowerProfileLastReportedDate: { type: DataTypes.DATE }, temp_id: { type: DataTypes.INTEGER } diff --git a/app/models/ConEnquieyDetail.js b/app/models/ConEnquieyDetail.js index bc169f6..b68ca39 100644 --- a/app/models/ConEnquieyDetail.js +++ b/app/models/ConEnquieyDetail.js @@ -12,6 +12,7 @@ module.exports = (sequelize, DataTypes) => { MemberReferenceNumber: { type: DataTypes.INTEGER }, DateOfEnquiry: { type: DataTypes.DATE }, EnquiringMemberShortName: { type: DataTypes.STRING }, + ExpirationDate: { type: DataTypes.DATE }, EnquiryPurpose: { type: DataTypes.STRING }, EnquiryAmount: { type: DataTypes.INTEGER } }, diff --git a/app/models/ConPhoneDetail.js b/app/models/ConPhoneDetail.js index 3ca6b64..fb80b07 100644 --- a/app/models/ConPhoneDetail.js +++ b/app/models/ConPhoneDetail.js @@ -7,12 +7,13 @@ module.exports = (sequelize, DataTypes) => { ConPhoneDetail.init( { - phone_detail_id: { type: DataTypes.INTEGER }, - member_ref_no: { type: DataTypes.STRING }, // - telephone_number: { type: DataTypes.INTEGER }, - telephone_extention: { type: DataTypes.INTEGER }, - telephone_type: { type: DataTypes.STRING }, - enrich_through_enquiry: { type: DataTypes.STRING } + + PhoneDetailsID: { type: DataTypes.INTEGER }, + MemberReferenceNumber: { type: DataTypes.STRING }, // + TelephoneNumber: { type: DataTypes.INTEGER }, + TelephoneExtension: { type: DataTypes.INTEGER }, + TelephoneType: { type: DataTypes.STRING }, + EnrichedThroughEnquiry: { type: DataTypes.STRING } }, { sequelize, diff --git a/app/models/ConScoreDetail.js b/app/models/ConScoreDetail.js index 3578020..621a5fd 100644 --- a/app/models/ConScoreDetail.js +++ b/app/models/ConScoreDetail.js @@ -7,29 +7,29 @@ module.exports = (sequelize, DataTypes) => { ConScoreDetail.init( { - score_detail_id: { type: DataTypes.INTEGER }, - member_ref_no: { type: DataTypes.STRING }, // - score_name: { type: DataTypes.STRING }, - score_card_name: { type: DataTypes.STRING }, - score_card_version: { type: DataTypes.INTEGER }, - score_date: { type: DataTypes.DATE }, - score: { type: DataTypes.INTEGER }, - exclution_code_1: { type: DataTypes.DATE },// - exclution_code_2: { type: DataTypes.DATE }, // - exclution_code_3: { type: DataTypes.DATE },// - exclution_code_4: { type: DataTypes.DATE },// - exclution_code_5: { type: DataTypes.DATE },// - exclution_code_6: { type: DataTypes.DATE },// - exclution_code_7: { type: DataTypes.DATE },// - exclution_code_8: { type: DataTypes.DATE },// - exclution_code_9: { type: DataTypes.DATE },// - exclution_code_10: { type: DataTypes.DATE },// - reason_code_1: { type: DataTypes.STRING }, - reason_code_2: { type: DataTypes.STRING }, - reason_code_3: { type: DataTypes.STRING }, - reason_code_4: { type: DataTypes.STRING }, - reason_code_5: { type: DataTypes.STRING }, - error_code: { type: DataTypes.STRING } // + ScoreDetailsID: { type: DataTypes.INTEGER }, + MemberReferenceNumber: { type: DataTypes.INTEGER }, + ScoreName: { type: DataTypes.STRING }, + ScoreCardName: { type: DataTypes.STRING }, + ScoreCardVersion: { type: DataTypes.INTEGER }, + ScoreDate: { type: DataTypes.DATE }, + Score: { type: DataTypes.INTEGER }, + ExclusionCode1: { type: DataTypes.STRING }, + ExclusionCode2: { type: DataTypes.STRING }, + ExclusionCode3: { type: DataTypes.STRING }, + ExclusionCode4: { type: DataTypes.STRING }, + ExclusionCode5: { type: DataTypes.STRING }, + ExclusionCode6: { type: DataTypes.STRING }, + ExclusionCode7: { type: DataTypes.STRING }, + ExclusionCode8: { type: DataTypes.STRING }, + ExclusionCode9: { type: DataTypes.STRING }, + ExclusionCode10: { type: DataTypes.STRING }, + ReasonCode1: { type: DataTypes.STRING }, + ReasonCode2: { type: DataTypes.STRING }, + ReasonCode3: { type: DataTypes.STRING }, + ReasonCode4: { type: DataTypes.STRING }, + ReasonCode5: { type: DataTypes.STRING }, + ErrorCode: { type: DataTypes.STRING } }, { diff --git a/app/models/InBorrowerDetail.js b/app/models/InBorrowerDetail.js index 8f6cfc5..7f78a12 100644 --- a/app/models/InBorrowerDetail.js +++ b/app/models/InBorrowerDetail.js @@ -16,7 +16,8 @@ module.exports = (sequelize, DataTypes) => { ConsumerNameField5 : { type: DataTypes.STRING }, PAN : { type: DataTypes.STRING }, cibil_type : { type: DataTypes.INTEGER }, - + cibil_data_status :{ type: DataTypes.INTEGER }, + entity_type : { type: DataTypes.STRING } }, { sequelize, diff --git a/app/models/InCreditFacility.js b/app/models/InCreditFacility.js index 4d0f061..9058e9e 100644 --- a/app/models/InCreditFacility.js +++ b/app/models/InCreditFacility.js @@ -27,8 +27,9 @@ module.exports = (sequelize, DataTypes) => { CreditLimit : { type: DataTypes.INTEGER }, RepaymentTenure : { type: DataTypes.INTEGER }, EMIAmount : { type: DataTypes.INTEGER }, - WrittenOffAndSettledStatus : {type: DataTypes.STRING} - + WrittenOffAndSettledStatus : {type: DataTypes.STRING}, + DateClosed : {type: DataTypes.DATE}, + grp_str : {type: DataTypes.STRING} }, { sequelize, diff --git a/app/models/InEnquiryDetail.js b/app/models/InEnquiryDetail.js index 3b6ed69..eeb5a76 100644 --- a/app/models/InEnquiryDetail.js +++ b/app/models/InEnquiryDetail.js @@ -15,6 +15,7 @@ module.exports = (sequelize, DataTypes) => { month_bucket_index : { type: DataTypes.INTEGER }, EnquiryPurpose : { type: DataTypes.STRING }, EnquiryAmount : { type: DataTypes.INTEGER }, + grp_str : {type: DataTypes.STRING} }, { sequelize, diff --git a/app/models/OutputActiveAndClosedLoans.js b/app/models/OutputActiveAndClosedLoans.js index d1d81fe..0f533eb 100644 --- a/app/models/OutputActiveAndClosedLoans.js +++ b/app/models/OutputActiveAndClosedLoans.js @@ -25,6 +25,7 @@ module.exports = (sequelize, DataTypes) => { highest_dpd_month_wise_bucket_or_count_07_to_12 : { type: DataTypes.STRING }, highest_dpd_month_wise_bucket_or_count_13_to_24 : { type: DataTypes.STRING }, highest_dpd_month_wise_bucket_or_count_25_to_36 : { type: DataTypes.STRING }, + DateClosed : {type: DataTypes.DATE}, is_active : { type: DataTypes.INTEGER }, createdAt : { type: DataTypes.DATE }, createdby : { type: DataTypes.INTEGER }, diff --git a/app/routes/routes.js b/app/routes/routes.js index c9db65f..ed018fe 100644 --- a/app/routes/routes.js +++ b/app/routes/routes.js @@ -5,8 +5,9 @@ module.exports = app => { const { logMsg } = require('../services/logger.js'); var router = require("express").Router(); - router.get("/test2", Cibilcontroller.test2); - router.get("/test", Cibilcontroller.test); + // router.get("/testone", Cibilcontroller.testone); + // router.get("/starter", Cibilcontroller.starter); + // router.get("/test2", Cibilcontroller.test2); /** * @swagger diff --git a/app/services/cibil.controller.helper.js b/app/services/cibil.controller.helper.js index a8aac26..15adef9 100644 --- a/app/services/cibil.controller.helper.js +++ b/app/services/cibil.controller.helper.js @@ -1,11 +1,14 @@ //const { sequelize} = require('../models'); const { logMsg } = require('../services/logger.js'); +const request = require('request'); + + + function createSkeleton(statement_end_date) { try { - end_date = "'"+statement_end_date+"'"; let date = new Date(end_date); date.setDate(01); @@ -24,23 +27,11 @@ function createSkeleton(statement_end_date) obj = { months:new_date , period:new_period}; // push skeleton object years_skeleton.push(obj); - - //Reset date here date.setMonth(date.getMonth() - 1); - - - } - return years_skeleton; - - - - - - - + return years_skeleton; } catch (error) { @@ -73,8 +64,104 @@ function findBucketCount(sk_array,dpd_date) } +function cibilInputDataApiCall(losid,pan_no,applicant_type) { +try { + CIBIL_URL = process.env.CIBIL_DATA_URL; + token = process.env.CIBIL_URL_TOKEN; + request_object = { + "losid": losid, + "panNo": pan_no, + "applicantType": applicant_type + }; + return new Promise((resolve, reject) => { + request({ + url: CIBIL_URL, + method: "POST", + headers: { Authorization: 'Bearer ' + token }, + json: true, + body: request_object + }, function (error, response, body){ + // let data = JSON.parse(response); console.log(response); + // if(data.status == 'Successful') + // { + // resolve(data); + // } + resolve(body); + }); + + }); + + } + catch (error) { + console.log(error); + } +} + + +async function cibilOutputGenerateApiCall(losid,ref_no,cibil_type) { + try { + var promises = new Promise(async(resolve, reject) => { + ActionData = [1,2,3]; + ActionData.forEach((value,index,array) => { + + let url = process.env.PYTHON_SCRIPT_API+"cibil?reference_number="+ref_no+"&los_id="+losid+"&cibil_type="+cibil_type+"&action="+value; + + request({ + url: url, + method: "GET" + }, function (error, response, body){ + //logMsg + }) + + if (index === array.length -1) { resolve(); } + + }); + }); + promises.then(async()=>{ + return true; + }); + + } + catch (error) { + console.log(error); + } +} + + +function panListApiCall(losid) { + try { + + const MAIN_APP_URL = process.env.MAIN_APP_PAN_LIST_URL; + url = MAIN_APP_URL+"?losid="+losid; + return new Promise((resolve, reject) => { + request({ + url: url, + method: "GET" + }, function (error, response, body){ + data = JSON.parse(body); + if(data.status === 200) + { + resolve(data.data[0]); + } + else { resolve(false); } + + }) + + }); + } + catch (error) { + console.log(error); + } +} + + + module.exports = { - createSkeleton : createSkeleton , findBucketCount : findBucketCount + createSkeleton : createSkeleton , + findBucketCount : findBucketCount, + cibilInputDataApiCall : cibilInputDataApiCall, + cibilOutputGenerateApiCall : cibilOutputGenerateApiCall, + panListApiCall : panListApiCall } \ No newline at end of file diff --git a/app/services/cibil.datainsert.helper.js b/app/services/cibil.datainsert.helper.js new file mode 100644 index 0000000..28a2c8a --- /dev/null +++ b/app/services/cibil.datainsert.helper.js @@ -0,0 +1,1287 @@ +const { sequelize,ConBorrowDetail,ConAccountTranscation,ConAddressDetail,ConDPDTranscation,ConIDDetail,ConEnquiryDetail,ConPhoneDetail,ConScoreDetail} = require('../models'); +const { logMsg } = require('../services/logger.js'); + + +function consumerDataInsert(data) +{ + try + { + + // Borrower details data insert + if(data.hasOwnProperty('lstConsumerBorrowersDetails') && data.lstConsumerBorrowersDetails.length != 0) + { + var ConsumerBorrowersDetailsDataInsert = new Promise(async(resolve, reject) => { + BorrowersDetailsArray = []; + data.lstConsumerBorrowersDetails.forEach(async(value,index,array) => { + + BorrowersDetailsObj = { + losid: data.losid, + //BDeatailsID: , + MemberReferenceNumber: value.memberReferenceNumber, + EnquiryMemberUserID: value.enquiryMemberUserID, + SubjectReturnCode: value.subjectReturnCode, + EnquiryControlNumber: value.enquiryControlNumber, + DateTimeProcessed: value.dateTimeProcessed, + ConsumerNameField1: value.consumerNameField1, + ConsumerNameField2: value.consumerNameField2, + ConsumerNameField3: value.consumerNameField3, + ConsumerNameField4: value.consumerNameField4, + ConsumerNameField5: value.consumerNameField5, + DateofBirth: value.dateofBirth, + Gender: value.gender, + DateofEntryforErrorCode: value.dateofEntryforErrorCode, + ErrorSegmentTag: value.errorSegmentTag, + ErrorCode: value.errorCode, + DateofEntryforCIBILRemarksCode: value.dateofEntryforCIBILRemarksCode, + CIBILRemarks: value.cibilRemarks, + DateofEntryforErrorDisputeRemarksCode: value.dateofEntryforErrorDisputeRemarksCode, + ErrorDisputeRemarksCode: value.errorDisputeRemarksCode, + ErrorDisputeRemarksCode2: value.errorDisputeRemarksCode2, + AccountType: value.accountType, + DateReportedAndCertified: value.dateReportedAndCertified, + Occupation: value.occupation, + Income: value.income, + NetGrossIncomeIndicator: value.netGrossIncomeIndicator, + MonthlyAnnualIncomeIndicator: value.monthlyAnnualIncomeIndicator, + DateOfEntryforErrorCode1: value.dateOfEntryforErrorCode1, + ErrorCode1: value.errorCode1, + DateOfEntryForCIBILRemarksCode1: value.dateOfEntryForCIBILRemarksCode1, + CIBILRemarksCode: value.cibilRemarksCode, + DateOfEntryForErrorDisputeRemarksCode1: value.dateOfEntryForErrorDisputeRemarksCode1, + ErrorDisputeRemarksCode1: value.errorDisputeRemarksCode1, + ATErrorDisputeRemarksCode1: value.atErrorDisputeRemarksCode1, + ATErrorDisputeRemarksCode2: value.atErrorDisputeRemarksCode2, + DateOfEntry: value.dateOfEntry, + DisputeRemarksLine: value.disputeRemarksLine, + EMailID: value.eMailID, + AccountNumber: value.accountNumber + + } + BorrowersDetailsArray.push(BorrowersDetailsObj); + + if (index === array.length -1) { resolve(BorrowersDetailsArray); } + }); + }); + ConsumerBorrowersDetailsDataInsert.then(async(BorrowersDetailsArray)=>{ + + await ConBorrowDetail.bulkCreate(BorrowersDetailsArray).catch(err=>{ }); + }); + }else { logMsg.info("lstConsumerBorrowersDetails array data not available for losid = "+data.losid); } + + + + + + // Account transaction details data insert + if(data.hasOwnProperty('lstAccountTransactionDetail') && data.lstAccountTransactionDetail.length != 0) + { + var AccountTransactionDetailDataInsert = new Promise(async(resolve, reject) => { + AccountTransactionDetailArray = []; + data.lstAccountTransactionDetail.forEach(async(value,index,array) => { + + AccountTransactionDetailObj = { + AccountTranDetailsID:accountTranDetailsID , + MemberReferenceNumber: value.memberReferenceNumber, + ReportingMemberShortName: value.reportingMemberShortName, + AccountNumber: value.accountNumber, + AccountType: value.accountType, + OwnershipIndicator: value.ownershipIndicator, + DateOpenedDisbursed: value.dateOpenedDisbursed, + DateOfLastPayment: value.dateOfLastPayment, + DateClosed: value.dateClosed, + DateReportedAndCertified: value.dateReportedAndCertified, + HighCreditSanctionedAmount: value.highCreditSanctionedAmount, + CurrentBalance: value.currentBalance, + AmountOverdue: value.amountOverdue, + PaymentHistory1: value.paymentHistory1, + PaymentHistory2: value.paymentHistory2, + PaymentHistoryStartDate: value.paymentHistoryStartDate, + PaymentHistoryEndDate: value.paymentHistoryEndDate, + SuitFiledWilfulDefault: value.suitFiledWilfulDefault, + WrittenOffAndSettledStatus: value.writtenOffAndSettledStatus, + ValueOfCollateral: value.valueOfCollateral, + TypeOfCollateral: value.typeOfCollateral, + CreditLimit: value.creditLimit, + CashLimit: value.cashLimit, + RateOfInterest: value.rateOfInterest, + RepaymentTenure: value.repaymentTenure, + EMIAmount: value.emiAmount, + WrittenOffAmountTotal: value.writtenOffAmountTotal, + WrittenOffAmountPrincipal: value.writtenOffAmountPrincipal, + SettlementAmount: value.settlementAmount, + PaymentFrequency: value.paymentFrequency, + ActualPaymentAmount: value.actualPaymentAmount, + DateOfEntryForErrorCode: value.dateOfEntryForErrorCode, + ErrorCode: value.errorCode, + DateOfEntryForCIBILRemarksCode: value.dateOfEntryForCIBILRemarksCode, + CIBILRemarksCode: value.cibilRemarksCode, + DateOfEntryForErrorDisputeRemarksCode: value.dateOfEntryForErrorDisputeRemarksCode, + ErrorDisputeRemarksCode1: value.errorDisputeRemarksCode1, + ErrorDisputeRemarksCode2: value.errorDisputeRemarksCode2, + } + AccountTransactionDetailArray.push(AccountTransactionDetailObj); + + if (index === array.length -1) { resolve(AccountTransactionDetailArray); } + }); + }); + AccountTransactionDetailDataInsert.then(async(AccountTransactionDetailArray)=>{ + + await ConAccountTranscation.bulkCreate(AccountTransactionDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("AccountTransactionDetailArray array data not available for losid = "+data.losid); } + + + + + + // DpdTransaction details data insert + if(data.hasOwnProperty('lstDPDTransactionDetail') && data.lstDPDTransactionDetail.length != 0) + { + var DPDTransactionDetailDataInsert = new Promise(async(resolve, reject) => { + DPDTransactionDetailArray = []; + data.lstDPDTransactionDetail.forEach(async(value,index,array) => { + + DPDTransactionDetailObj = { + // DetailID: , + AccountTranDetailsID:accountTranDetailsID , + MemberRefNo: value.memberRefNo, + StartDate: value.startDate, + Code: value.code, + EntryDate: value.entryDate + } + DPDTransactionDetailArray.push(DPDTransactionDetailObj); + + if (index === array.length -1) { resolve(DPDTransactionDetailArray); } + }); + }); + DPDTransactionDetailDataInsert.then(async(DPDTransactionDetailArray)=>{ + console.log(DPDTransactionDetailArray); + await ConDPDTranscation.bulkCreate(DPDTransactionDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("DPDTransactionDetail array data not available for losid = "+data.losid); } + + + + + + // EnquiryDetail details data insert + if(data.hasOwnProperty('lstConsumerEnquiryDetail') && data.lstConsumerEnquiryDetail.length != 0) + { + var EnquiryDetailDataInsert = new Promise(async(resolve, reject) => { + EnquiryDetailArray = []; + data.lstConsumerEnquiryDetail.forEach(async(value,index,array) => { + + EnquiryDetailObj = { + losid :data.losid, + //EnquiryID:, + MemberReferenceNumber: value.memberReferenceNumber, + DateOfEnquiry: value.dateOfEnquiry, + EnquiringMemberShortName: value.enquiringMemberShortName, + ExpirationDate : value.expirationDate, + EnquiryPurpose: value.enquiryPurpose, + EnquiryAmount: value.enquiryAmount + + } + EnquiryDetailArray.push(EnquiryDetailObj); + + if (index === array.length -1) { resolve(EnquiryDetailArray); } + }); + }); + EnquiryDetailDataInsert.then(async(EnquiryDetailArray)=>{ + + await ConEnquiryDetail.bulkCreate(EnquiryDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("EnquiryDetail array data not available for losid = "+data.losid); } + + + + + + // Address details data insert + if(data.hasOwnProperty('lstAddressDetail') && data.lstAddressDetail.length != 0) + { + var AddressDetailDataInsert = new Promise(async(resolve, reject) => { + AddressDetailArray = []; + data.lstAddressDetail.forEach(async(value,index,array) => { + + AddressDetailObj = { + //AddressDetailsId: value., + MemberReferenceNumber: value.memberReferenceNumber, + AddressLine1: value.addressLine1, + AddressLine2: value.addressLine2, + AddressLine3: value.addressLine3, + AddressLine4: value.addressLine4, + AddressLine5: value.addressLine5, + State: value.state, + PINCode: value.pinCode, + AddressCategory: value.addressCategory, + ResidenceCode: value.residenceCode, + DateReported: value.dateReported, + MemberShortName: value.memberShortName, + EnrichedThroughEnquiry: value.enrichedThroughEnquiry + } + AddressDetailArray.push(AddressDetailObj); + + if (index === array.length -1) { resolve(AddressDetailArray); } + }); + }); + AddressDetailDataInsert.then(async(AddressDetailArray)=>{ + + await ConAddressDetail.bulkCreate(AddressDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("AddressDetailArray array data not available for losid = "+data.losid); } + + + + + // Id details data insert + if(data.hasOwnProperty('lstIDDetail') && data.lstIDDetail.length != 0) + { + var IDDetailDataInsert = new Promise(async(resolve, reject) => { + IDDetailArray = []; + data.lstIDDetail.forEach(async(value,index,array) => { + + IDDetailObj = { + //IDDetailsID: , + MemberReferenceNumber: value.memberReferenceNumber, + IDType: value.idType, + IDNumber: value.idNumber, + IssueDate: value.issueDate, + ExpirationDate: value.expirationDate, + EnrichedThroughEnquiry:value.enrichedThroughEnquiry, + } + IDDetailArray.push(IDDetailObj); + + if (index === array.length -1) { resolve(IDDetailArray); } + }); + }); + IDDetailDataInsert.then(async(IDDetailArray)=>{ + + await ConIDDetail.bulkCreate(IDDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("IDDetail array data not available for losid = "+data.losid); } + + + + + // PhoneDetail data insert + if(data.hasOwnProperty('lstPhoneDetail') && data.lstPhoneDetail.length != 0) + { + var PhoneDetailDataInsert = new Promise(async(resolve, reject) => { + PhoneDetailArray = []; + data.lstPhoneDetail.forEach(async(value,index,array) => { + + PhoneDetailObj = { + //PhoneDetailsID: value., + MemberReferenceNumber: value.memberReferenceNumber, + TelephoneNumber: value.telephoneNumber, + TelephoneExtension: value.telephoneExtension, + TelephoneType: value.telephoneType, + EnrichedThroughEnquiry: value.enrichedThroughEnquiry + } + PhoneDetailArray.push(PhoneDetailObj); + + if (index === array.length -1) { resolve(PhoneDetailArray); } + }); + }); + PhoneDetailDataInsert.then(async(PhoneDetailArray)=>{ + + await ConPhoneDetail.bulkCreate(PhoneDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("PhoneDetail array data not available for losid = "+data.losid); } + + + + + // ScoreDetail data insert + if(data.hasOwnProperty('lstScoreDetail') && data.lstScoreDetail.length != 0) + { + var ScoreDetailDataInsert = new Promise(async(resolve, reject) => { + ScoreDetailArray = []; + data.lstScoreDetail.forEach(async(value,index,array) => { + + ScoreDetailObj = { + // ScoreDetailsID: , + MemberReferenceNumber: value.memberReferenceNumber, + ScoreName: value.scoreName, + ScoreCardName: value.scoreCardName, + ScoreCardVersion: value.scoreCardVersion, + ScoreDate: value.scoreDate, + Score: value.score, + ExclusionCode1: value.exclusionCode1, + ExclusionCode2: value.exclusionCode2, + ExclusionCode3: value.exclusionCode3, + ExclusionCode4: value.exclusionCode4, + ExclusionCode5: value.exclusionCode5, + ExclusionCode6: value.exclusionCode6, + ExclusionCode7: value.exclusionCode7, + ExclusionCode8: value.exclusionCode8, + ExclusionCode9: value.exclusionCode9, + ExclusionCode10:value.exclusionCode10, + ReasonCode1: value.reasonCode1, + ReasonCode2: value.reasonCode2, + ReasonCode3: value.reasonCode3, + ReasonCode4: value.reasonCode4, + ReasonCode5: value.reasonCode5, + ErrorCode: value.errorCode + } + ScoreDetailArray.push(ScoreDetailObj); + + if (index === array.length -1) { resolve(ScoreDetailArray); } + }); + }); + ScoreDetailDataInsert.then(async(ScoreDetailArray)=>{ + + await ConScoreDetail.bulkCreate(ScoreDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("ScoreDetail array data not available for losid = "+data.losid); } + + + + + } + catch (error) + { + console.log(error); + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +const { BorrowerProfile,BorrowidDetail,GuarantorDetail,AcHistoryAndDPD,CreditFacilityCurrentDetail,EnquiryDetail,LocationDetail,SecurityDetail,RelationshipDetail} = require('../models'); + + +function commercialDataInsert(data) +{ + try + { + // BorrowerProfile data insert + if(data.hasOwnProperty('lstborrowerProfiles') && data.lstborrowerProfiles.length != 0) + { + var BorrowerProfileDataInsert = new Promise(async(resolve, reject) => { + BorrowerDataArray = []; + data.lstborrowerProfiles.forEach(async(value,index,array) => { + + BorrowerProfileDataObj = { + ApplicationRefno : value.applicationRefno, + ReportIssuesCode : value.reportIssuesCode, + ReportIssuesMsg : value.reportIssuesMsg, + ReportIssuesDescription : value.reportIssuesDescription, + ReportHeaderDaysPasswrdToExpire : value.reportHeaderDaysPasswrdToExpire, + ReportHeaderReportOrderNo : value.reportHeaderReportOrderNo, + ReportHeaderReportOrderDate : value.reportHeaderReportOrderDate, + ReportHeaderReportOrderedBy : value.reportHeaderReportOrderedBy, + ReportHeaderMemberDetails : value.reportHeaderMemberDetails, + ReportHeaderApplicationRefNo : value.reportHeaderApplicationRefNo, + EnqInfoBorrowerName : value.enqInfoBorrowerName, + EnqInfoDateOfReg : value.enqInfoDateOfReg, + EnqInfoPan : value.enqInfoPan, + EnqInfoCin : value.enqInfoCin, + EnqInfoTin : value.enqInfoTin, + EnqInfoCrn : value.enqInfoCrn, + EnqInfoAddressCount : value.enqInfoAddressCount, + EnqInfoAddressAddressLine0 : value.enqInfoAddressAddressLine0, + EnqInfoAddressAddressLine1 : value.enqInfoAddressAddressLine1, + EnqInfoAddressAddressLine2 : value.enqInfoAddressAddressLine2, + BorrowerProfileBDName : value.borrowerProfileBDName, + BorrowerProfileBDBLC : value.borrowerProfileBDBLC, + BorrowerProfileBDClassOfActivity0 : value.borrowerProfileBDClassOfActivity0, + BorrowerProfileBDClassOfActivity1 : value.borrowerProfileBDClassOfActivity1 , + BorrowerProfileBDClassOfActivity2 : value.borrowerProfileBDClassOfActivity2 , + BorrowerProfileBDBusinessIndustryType : value.borrowerProfileBDBusinessIndustryType, + BorrowerProfileBDSalesFigure : value.borrowerProfileBDSalesFigure, + BorrowerProfileBDNoOfEmp : value.borrowerProfileBDNoOfEmp, + BorrowerProfileBDDOI : value.borrowerProfileBDDOI, + BorrowerProfileBDYear : value.borrowerProfileBDYear, + BorrowerProfileBACDRegaddress : value.borrowerProfileBACDRegaddress, + BorrowerProfileBACDTelephoneNo : value.borrowerProfileBACDTelephoneNo, + BorrowerProfileBACDfaxNo : value.borrowerProfileBACDfaxNo, + BorrowerProfileBACDMobileNo : value.borrowerProfileBACDMobileNo, + BorrowerProfileBDRInstCurrent : value.borrowerProfileBDRInstCurrent, + BorrowerProfileBDRInstLst24Mnths : value.borrowerProfileBDRInstLst24Mnths, + BorrowerProfileBDROutCurrent : value.borrowerProfileBDROutCurrent, + BorrowerProfileBDROutLst24Mnths : value.borrowerProfileBDROutLst24Mnths, + RankName : value.rankName, + RankValue : value.rankValue, + RankExclusionReason : value.rankExclusionReason, + RankMessage : value.rankMessage, + CPSInstMsg : value.cpsInstMsg, + CPSInstTotalLenders : value.cpsInstTotalLenders, + CPSInsttotalCFBorrower : value.cpsInsttotalCFBorrower, + CPSInsttotalCFGuarantor : value.cpsInsttotalCFGuarantor, + CPSInsttotalCFBP : value.cpsInsttotalCFBP, + CPSInstTotalCFGP : value.cpsInstTotalCFGP, + CPSInstOpenCF : value.cpsInstOpenCF, + CPSInsTotalOutstandingBorrower : value.cpsInsTotalOutstandingBorrower, + CPSInsTotalOutstandingGuarantor : value.cpsInsTotalOutstandingGuarantor, + CPSInsTotalOutstandingBP : value.cpsInsTotalOutstandingBP, + CPSInsTotalOutstandingGP : value.cpsInsTotalOutstandingGP, + CPSInsLtstCFOpndDate : value.cpsInsLtstCFOpndDate, + CPSInsDCFBorrower : value.cpsInsDCFBorrower, + CPSInsDCFGuarantor : value.cpsInsDCFGuarantor, + CPSInsDCFBP : value.cpsInsDCFBP, + CPSInsDCFGP : value.cpsInsDCFGP, + CPSInsDOSBorrower : value.cpsInsDOSBorrower, + CPSInsDOSGuarantor : value.cpsInsDOSGuarantor, + CPSInsDOSBP : value.cpsInsDOSBP, + CPSInsDOSGP : value.cpsInsDOSGP, + CPSOutMsg : value.cpsOutMsg, + CPSOutOPSBMsg : value.cpsOutOPSBMsg, + CPSOutOPSBTotalLenders : value.cpsOutOPSBTotalLenders, + CPSOutOPSBTotalCFBorrower : value.cpsOutOPSBTotalCFBorrower, + CPSOutOPSBTotalCFGuarantor : value.cpsOutOPSBTotalCFGuarantor, + CPSOutOPSBTotalCFBP : value.cpsOutOPSBTotalCFBP, + CPSOutOPSBTotalCFGP : value.cpsOutOPSBTotalCFGP, + CPSOutOPSBOpenCF : value.cpsOutOPSBOpenCF, + CPSOutOPSBTOBorrower : value.cpsOutOPSBTOBorrower, + CPSOutOPSBTOGuarantor : value.cpsOutOPSBTOGuarantor, + CPSOutOPSBTOBP : value.cpsOutOPSBTOBP, + CPSOutOPSBTOGP : value.cpsOutOPSBTOGP, + CPSOutOPSBLtstCFOpndDate : value.cpsOutOPSBLtstCFOpndDate, + CPSOutOPSBDCFBorrower : value.cpsOutOPSBDCFBorrower, + CPSOutOPSBDCFGuarantor : value.cpsOutOPSBDCFGuarantor, + CPSOutOPSBDCFBP : value.cpsOutOPSBDCFBP, + CPSOutOPSBDCFGP : value.cpsOutOPSBDCFGP, + CPSOutOPSBDOSBorrower : value.cpsOutOPSBDOSBorrower, + CPSOutOPSBDOSGuarantor : value.cpsOutOPSBDOSGuarantor, + CPSOutOPSBDOSBP : value.cpsOutOPSBDOSBP, + CPSOutOPSBDOSGP : value.cpsOutOPSBDOSGP, + CPSOutOPFBMsg : value.cpsOutOPFBMsg, + CPSOutOPFBTotalLenders : value.cpsOutOPFBTotalLenders, + CPSOutOPFBTCFBorrower : value.cpsOutOPFBTCFBorrower, + CPSOutOPFBTCFGuarantor : value.cpsOutOPFBTCFGuarantor, + CPSOutOPFBTCFBP : value.cpsOutOPFBTCFBP, + CPSOutOPFBTCFGP : value.cpsOutOPFBTCFGP, + CPSOutOPFBOpenCF : value.cpsOutOPFBOpenCF, + CPSOutOPFBTOSBorrower : value.cpsOutOPFBTOSBorrower, + CPSOutOPFBTOSGuarantor : value.cpsOutOPFBTOSGuarantor, + CPSOutOPFBTOSBP : value.cpsOutOPFBTOSBP, + CPSOutOPFBTOSGP : value.cpsOutOPFBTOSGP, + CPSOutOPFBLtstCFOpndDate : value.cpsOutOPFBLtstCFOpndDate, + CPSOutOPFBDCFBorrower : value.cpsOutOPFBDCFBorrower, + CPSOutOPFBDCFGuarantor : value.cpsOutOPFBDCFGuarantor, + CPSOutOPFBDCFBP : value.cpsOutOPFBDCFBP, + CPSOutOPFBDCFGP : value.cpsOutOPFBDCFGP, + CPSOutOPFBDOSBorrower : value.cpsOutOPFBDOSBorrower, + CPSOutOPFBDOSGuarantor : value.cpsOutOPFBDOSGuarantor, + CPSOutOPFBDOSBP : value.cpsOutOPFBDOSBP, + CPSOutOPFBDOSGP : value.cpsOutOPFBDOSGP, + CPSOutNBFCMsg : value.cpsOutNBFCMsg, + CPSOutNBFCTotalLenders : value.cpsOutNBFCTotalLenders, + CPSOutNBFCTCFBorrower : value.cpsOutNBFCTCFBorrower, + CPSOutNBFCTCFGuarantor : value.cpsOutNBFCTCFGuarantor, + CPSOutNBFCTCFBP : value.cpsOutNBFCTCFBP, + CPSOutNBFCTCFGP : value.cpsOutNBFCTCFGP, + CPSOutNBFCOpenCF : value.cpsOutNBFCOpenCF, + CPSOutNBFCTOSBorrower : value.cpsOutNBFCTOSBorrower, + CPSOutNBFCTOSGuarantor : value.cpsOutNBFCTOSGuarantor, + CPSOutNBFCTOSBP : value.cpsOutNBFCTOSBP, + CPSOutNBFCTOSGP : value.cpsOutNBFCTOSGP, + CPSOutNBFCLtstCFOpndDate : value.cpsOutNBFCLtstCFOpndDate, + CPSOutNBFCDCFBorrower : value.cpsOutNBFCDCFBorrower, + CPSOutNBFCDCFGuarantor : value.cpsOutNBFCDCFGuarantor, + CPSOutNBFCDCFBP : value.cpsOutNBFCDCFBP, + CPSOutNBFCDCFGP : value.cpsOutNBFCDCFGP, + CPSOutNBFCDOSBorrower : value.cpsOutNBFCDOSBorrower, + CPSOutNBFCDOSGuarantor : value.cpsOutNBFCDOSGuarantor, + CPSOutNBFCDOSBP : value.cpsOutNBFCDOSBP, + CPSOutNBFCDOSGP : value.cpsOutNBFCDOSGP, + CPSOutOutsideTotalMsg : value.cpsOutOutsideTotalMsg, + CPSOutOutsideTotalTotalLenders : value.cpsOutOutsideTotalTotalLenders, + CPSOutOutsideTotalTCFBorrower : value.cpsOutOutsideTotalTCFBorrower, + CPSOutOutsideTotalTCFGuarantor : value.cpsOutOutsideTotalTCFGuarantor, + CPSOutOutsideTotalTCFBP : value.cpsOutOutsideTotalTCFBP, + CPSOutOutsideTotalTCFGP : value.cpsOutOutsideTotalTCFGP, + CPSOutOutsideTotalOpenCF : value.cpsOutOutsideTotalOpenCF, + CPSOutOutsideTotalTOSBorrower : value.cpsOutOutsideTotalTOSBorrower, + CPSOutOutsideTotalTOSGuarantor : value.cpsOutOutsideTotalTOSGuarantor, + CPSOutOutsideTotalTOSBP : value.cpsOutOutsideTotalTOSBP, + CPSOutOutsideTotalTOSGP : value.cpsOutOutsideTotalTOSGP, + CPSOutOutsideTotalLtstCFOpndDate : value.cpsOutOutsideTotalLtstCFOpndDate, + CPSOutOutsideTotalDCFBorrower : value.cpsOutOutsideTotalDCFBorrower, + CPSOutOutsideTotalDCFGuarantor : value.cpsOutOutsideTotalDCFGuarantor, + CPSOutOutsideTotalDCFBP : value.cpsOutOutsideTotalDCFBP, + CPSOutOutsideTotalDCFGP : value.cpsOutOutsideTotalDCFGP, + CPSOutOutsideTotalDOSBorrower : value.cpsOutOutsideTotalDOSBorrower, + CPSOutOutsideTotalDOSGuarantor : value.cpsOutOutsideTotalDOSGuarantor, + CPSOutOutsideTotalDOSBP : value.cpsOutOutsideTotalDOSBP, + CPSOutOutsideTotalDOSGP : value.cpsOutOutsideTotalDOSGP, + CPSTotalTotalLenders : value.cpsTotalTotalLenders, + CPSTotalTotalCF : value.cpsTotalTotalCF, + CPSTotalOpenCF : value.cpsTotalOpenCF, + CPSTotalTotalOutstanding : value.cpsTotalTotalOutstanding, + CPSTotalLtstCFOpndDate : value.cpsTotalLtstCFOpndDate, + CPSTotalDCF : value.cpsTotalDCF, + CPSTotalDOS : value.cpsTotalDOS, + EnqSSMsg : value.enqSSMsg, + EnqSSInstNOEMnths1 : value.enqSSInstNOEMnths1, + EnqSSInstNOEMnths2to3 : value.enqSSInstNOEMnths2to3, + EnqSSInstNOEMnths4to6 : value.enqSSInstNOEMnths4to6, + EnqSSInstNOEMnths7to12 : value.enqSSInstNOEMnths7to12, + EnqSSInstNOEMnths12to24 : value.enqSSInstNOEMnths12to24, + EnqSSInstNOEGrtrThan24Mnths : value.enqSSInstNOEGrtrThan24Mnths, + EnqSSInstNOETotal : value.enqSSInstNOETotal, + EnqSSInstNOEMstRecentDate : value.enqSSInstNOEMstRecentDate, + EnqSSOutNOEMnths1 : value.enqSSOutNOEMnths1, + EnqSSOutNOEMnths2to3 : value.enqSSOutNOEMnths2to3, + EnqSSOutNOEMnths4to6 : value.enqSSOutNOEMnths4to6, + EnqSSOutNOEMnths7to12 : value.enqSSOutNOEMnths7to12, + EnqSSOutNOEMnthsGrtrThan24Mnths : value.enqSSOutNOEMnthsGrtrThan24Mnths, + EnqSSOutNOETotal : value.enqSSOutNOETotal, + EnqSSOutNOEMstRecentDate : value.enqSSOutNOEMstRecentDate, + EnqSSETMnths1 : value.enqSSETMnths1, + EnqSSETMnths2to3 : value.enqSSETMnths2to3, + EnqSSETMnths4to6 : value.enqSSETMnths4to6, + EnqSSETMnths7to12 : value.enqSSETMnths7to12, + EnqSSETMnths12to24 : value.enqSSETMnths12to24, + EnqSSETGrtrThan24Mnths : value.enqSSETGrtrThan24Mnths, + EnqSSETTotal : value.enqSSETTotal, + EnqSSETMstRecentDate : value.enqSSETMstRecentDate, + DISMsg : value.disMsg, + DISMsgOfBorrower : value.disMsgOfBorrower, + DISMsgOfBorrowerInst : value.disMsgOfBorrowerInst, + DISMsgOfBorrowerOut : value.disMsgOfBorrowerOut, + DISMsgOfRelatedPartie : value.disMsgOfRelatedPartie, + DISMsgOfRelatedPartiesInst : value.disMsgOfRelatedPartiesInst, + DISMsgOfRelatedPartiesOut : value.disMsgOfRelatedPartiesOut, + DISMsgOfGuarantedParties : value.disMsgOfGuarantedParties, + DISDIBInstWilfulDefault : value.disdibInstWilfulDefault, + DISDIBInstSFNOS : value.disdibInstSFNOS, + DISDIBInstSFAmt : value.disdibInstSFAmt, + DISDIBInstWOffNOS : value.disdibInstWOffNOS, + DISDIBInstWOffAmt : value.disdibInstWOffAmt, + DISDIBInstSettledNOS : value.disdibInstSettledNOS, + DISDIBInstSettledAmt : value.disdibInstSettledAmt, + DISDIBInstInvokedNOS : value.disdibInstInvokedNOS, + DISDIBInstInvokedAmt : value.disdibInstInvokedAmt, + DISDIBInstOverdueCFNOS : value.disdibInstOverdueCFNOS, + DISDIBInstOverdueCFAmt : value.disdibInstOverdueCFAmt, + DISDIBInstDishonoredCheque : value.disdibInstDishonoredCheque, + DISDIBOutWilfulDefault : value.disdibOutWilfulDefault, + DISDIBOutSFNOS : value.disdibOutSFNOS, + DISDIBOutWOffNOS : value.disdibOutWOffNOS, + DISDIBOutWOffAmt : value.disdibOutWOffAmt, + DISDIBOutSettledNOS : value.disdibOutSettledNOS, + DISDIBOutSettledAmt : value.disdibOutSettledAmt, + DISDIBOutInvokedNOS : value.disdibOutInvokedNOS, + DISDIBOutInvokedAmt : value.disdibOutInvokedAmt, + DISDIBOutOverdueCFNOS : value.disdibOutOverdueCFNOS, + DISDIBOutOverdueCFAmt : value.disdibOutOverdueCFAmt, + DISDIBOutDishonoredCheque : value.disdibOutDishonoredCheque, + DISDIBTotalWilfulDefault : value.disdibTotalWilfulDefault, + DISDIBTotalSFNOS : value.disdibTotalSFNOS, + DISDIBTotalSFAmt : value.disdibTotalSFAmt, + DISDIBTotalWOffAmt : value.disdibTotalWOffAmt, + DISDIBTotalSettledNOS : value.disdibTotalSettledNOS, + DISDIBTotalSettledAmt : value.disdibTotalSettledAmt, + DISDIBTotalInvokedNOS : value.disdibTotalInvokedNOS, + DISDIBTotalInvokedAmt : value.disdibTotalInvokedAmt, + DISDIBTotalOverdueCFNOS : value.disdibTotalOverdueCFNOS, + DISDIBTotalOverdueCFAmt : value.disdibTotalOverdueCFAmt, + DISDIBTotalDishonoredCheque : value.disdibTotalDishonoredCheque, + DISGOBInstWilfulDefault : value.disgobInstWilfulDefault, + DISGOBInstSFNOS : value.disgobInstSFNOS, + DISGOBInstSFAmt : value.disgobInstSFAmt, + DISGOBInstWOffNOS : value.disgobInstWOffNOS, + DISGOBInstWOffAmt : value.disgobInstWOffAmt, + DISGOBInstSettledNOS : value.disgobInstSettledNOS, + DISGOBInstSettledAmt : value.disgobInstSettledAmt, + DISGOBInstOverdueCFNOS : value.disgobInstOverdueCFNOS, + DISGOBInstOverdueCFAmt : value.disgobInstOverdueCFAmt, + DISGOBInstDishonoredCheque : value.disgobInstDishonoredCheque, + DISGOBOutWilfulDefault : value.disgobOutWilfulDefault, + DISGOBOutSFNOS : value.disgobOutSFNOS, + DISGOBOutSFAmt : value.disgobOutSFAmt, + DISGOBOutWOffNOS : value.disgobOutWOffNOS, + DISGOBOutWOffAmt : value.disgobOutWOffAmt, + DISGOBOutSettledNOS : value.disgobOutSettledNOS, + DISGOBOutSettledAmt : value.disgobOutSettledAmt, + DISGOBOutInvokedNOS : value.disgobOutInvokedNOS, + DISGOBOutInvokedAmt : value.disgobOutInvokedAmt, + DISGOBOutOverdueCFNOS : value.disgobOutOverdueCFNOS, + DISGOBOutOverdueCFAmt : value.disgobOutOverdueCFAmt, + DISGOBOutDishonoredCheque : value.disgobOutDishonoredCheque, + DISGOBTotalWilfulDefault : value.disgobTotalWilfulDefault, + DISGOBTotalSFNOS : value.disgobTotalSFNOS, + DISGOBTotalSFAmt : value.disgobTotalSFAmt, + DISGOBTotalWOffNOS : value.disgobTotalWOffNOS, + DISGOBTotalWOffAmt : value.disgobTotalWOffAmt, + DISGOBTotalSettledNOS : value.disgobTotalSettledNOS, + DISGOBTotalSettledAmt : value.disgobTotalSettledAmt, + DISGOBTotalInvokedNOS : value.disgobTotalInvokedNOS, + DISGOBTotalInvokedAmt : value.disgobTotalInvokedAmt, + DISGOBTotalOverdueCFNOS : value.disgobTotalOverdueCFNOS, + // temp_id : value.temp_id + + } + BorrowerDataArray.push(BorrowerProfileDataObj); + + if (index === array.length -1) { resolve(BorrowerDataArray); } + }); + }); + BorrowerProfileDataInsert.then(async(BorrowerDataArray)=>{ + // console.log(BorrowerDataArray.length); + await BorrowerProfile.bulkCreate(BorrowerDataArray).catch(err=>{ }); + }); + }else { logMsg.info("BorrowerProfile(Commercial) array data not available for losid = "+data.losid); } + + + + + // BorrowidDetail data insert + if(data.hasOwnProperty('lstBorroweIDDetail') && data.lstBorroweIDDetail.length != 0) + { + var BorroweIDDetailDataInsert = new Promise(async(resolve, reject) => { + BorroweIDDetailArray = []; + data.lstBorroweIDDetail.forEach(async(value,index,array) => { + + BorroweIDDetailObj = { + ApplicationRefno: value.applicationRefno, + BorrowerProfileBIDPan: value.borrowerProfileBIDPan, + BorrowerProfileBIDCin: value.borrowerProfileBIDCin, + BorrowerProfileBIDTin: value.borrowerProfileBIDTin, + BorrowerProfileBIDRegistrationNo: value.borrowerProfileBIDRegistrationNo, + BorrowerProfileBIDServiceTaxNo: value.borrowerProfileBIDServiceTaxNo, + BorrowerProfileLastReportedDate: value.borrowerProfileLastReportedDate, + + } + BorroweIDDetailArray.push(BorroweIDDetailObj); + + if (index === array.length -1) { resolve(BorroweIDDetailArray); } + }); + }); + BorroweIDDetailDataInsert.then(async(BorroweIDDetailArray)=>{ + //console.log(BorroweIDDetailArray.length); + await BorrowidDetail.bulkCreate(BorroweIDDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("BorrowidDetail(Commercial) array data not available for losid = "+data.losid); } + + + + + // GuarantorDetail data insert + if(data.hasOwnProperty('lstGuarantorDetail') && data.lstGuarantorDetail.length != 0) + { + var GuarantorDetailDataInsert = new Promise(async(resolve, reject) => { + GuarantorDetailArray = []; + data.lstGuarantorDetail.forEach(async(value,index,array) => { + + GuarantorDetailObj = { + ApplicationRefno: value.applicationRefno, + BorrowerCurrentDetailsID: value.borrowerCurrentDetailsID, + GuarantorDetailsName: value.guarantorDetailsName, + GuarantorDetailsRelatedType: value.guarantorDetailsRelatedType, + GuarantorDetailsDOB: value.guarantorDetailsDOB, + GuarantorDetailsGender: value.guarantorDetailsGender, + GuarantorDetailsDOI: value.guarantorDetailsDOI, + GuarantorDetailsBusinessCateg: value.guarantorDetailsBusinessCateg, + GuarantorDetailsBusinessIndstryType: value.guarantorDetailsBusinessIndstryType, + GuarantorDetailsMsg: value.guarantorDetailsMsg, + GuarantorAddressCDAddress: value.guarantorAddressCDAddress, + GuarantorAddressCDTelephoneNo: value.guarantorAddressCDTelephoneNo, + GuarantorAddressCDfaxNo: value.guarantorAddressCDfaxNo, + GuarantorAddressCDMobileNo: value.guarantorAddressCDMobileNo + } + GuarantorDetailArray.push(GuarantorDetailObj); + + if (index === array.length -1) { resolve(GuarantorDetailArray); } + }); + }); + GuarantorDetailDataInsert.then(async(GuarantorDetailArray)=>{ + // console.log(GuarantorDetailArray.length); + await GuarantorDetail.bulkCreate(GuarantorDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("GuarantorDetail(Commercial) array data not available for losid = "+data.losid); } + + + + + + + // CreditFacilityCurrentDetail data insert + if(data.hasOwnProperty('lstCreditFacilityCurrentDertail') && data.lstCreditFacilityCurrentDertail.length != 0) + { + var CreditFacilityCurrentDertailDataInsert = new Promise(async(resolve, reject) => { + CreditFacilityArray = []; + data.lstCreditFacilityCurrentDertail.forEach(async(value,index,array) => { + + CreditFacilityObj = { + // temp_id : value.temp_id, + ApplicationRefno : value.applicationRefno, + CreditFacilityDetailsBorrowerSecMsg : value.creditFacilityDetailsBorrowerSecMsg, + CreditFacilityCDDerivative : value.creditFacilityCDDerivative, + CreditFacilityCDAccountNo : value.creditFacilityCDAccountNo, + CreditFacilityCDcfSrNo : value.creditFacilityCDcfSrNo, + CreditFacilityCDcfType : value.creditFacilityCDcfType, + CreditFacilityCDcfMember : value.creditFacilityCDcfMember, + CreditFacilityCDAssetCDPDueDpd : value.creditFacilityCDAssetCDPDueDpd, + CreditFacilityCDStatus : value.creditFacilityCDStatus, + CreditFacilityCDStatusDate : value.creditFacilityCDStatusDate, + CreditFacilityCDLstReportedDate : value.creditFacilityCDLstReportedDate, + CreditFacilityCDAmtCurrency : value.creditFacilityCDAmtCurrency, + CreditFacilityCDAmtSanctionedAmt : value.creditFacilityCDAmtSanctionedAmt, + CreditFacilityCDAmtSanctionedAmtDP : value.creditFacilityCDAmtSanctionedAmtDP , + CreditFacilityCDAmtoutstandingBalance : value.creditFacilityCDAmtoutstandingBalance, + CreditFacilityCDAmtmarkToMarket : value.creditFacilityCDAmtmarkToMarket, + CreditFacilityCDAmtOverdue : value.creditFacilityCDAmtOverdue, + CreditFacilityCDAmtHighCredit : value.creditFacilityCDAmtHighCredit, + CreditFacilityCDAmtinstallmentAmt : value.creditFacilityCDAmtinstallmentAmt, + CreditFacilityCDAmtSuitFiledAmt : value.creditFacilityCDAmtSuitFiledAmt, + CreditFacilityCDAmtLastRepaid : value.creditFacilityCDAmtLastRepaid, + CreditFacilityCDAmtWrittenOFF : value.creditFacilityCDAmtWrittenOFF, + CreditFacilityCDAmtSettled : value.creditFacilityCDAmtSettled, + CreditFacilityCDAmtNaorc : value.creditFacilityCDAmtNaorc, + CreditFacilityCDAmtContrctCAsNPA : value.creditFacilityCDAmtContrctCAsNPA, + CreditFacilityCDAmtNAmtOfContracts : value.creditFacilityCDAmtNAmtOfContracts, + CreditFacilityCDDatesSanctionedDt : value.creditFacilityCDDatesSanctionedDt, + CreditFacilityCDDatesLoanExpiryDt : value.creditFacilityCDDatesLoanExpiryDt, + CreditFacilityCDDatesLoanRenewalDt : value.creditFacilityCDDatesLoanRenewalDt, + CreditFacilityCDDatesSuitFiledDt : value.creditFacilityCDDatesSuitFiledDt, + CreditFacilityCDDatesWilfulDefault : value.creditFacilityCDDatesWilfulDefault, + CreditFacilityCDODRepaymentFrequency : value.creditFacilityCDODRepaymentFrequency, + CreditFacilityCDODTenure : value.creditFacilityCDODTenure, + CreditFacilityCDODWAMPContracts : value.creditFacilityCDODWAMPContracts, + CreditFacilityCDODRestructingReason : value.creditFacilityCDODRestructingReason, + CreditFacilityCDODABSecurityCoverage : value.creditFacilityCDODABSecurityCoverage, + CreditFacilityCDODGuaranteeCoverage : value.creditFacilityCDODGuaranteeCoverage, + CreditFacilityOverdueDetailsMsg : value.creditFacilityOverdueDetailsMsg, + CreditFacilityOverdueDetailsDPD1to30Amt : value.creditFacilityOverdueDetailsDPD1to30Amt, + CreditFacilityOverdueDetailsDPD31to60amt : value.creditFacilityOverdueDetailsDPD31to60amt, + CreditFacilityOverdueDetailsDPD61t090amt : value.creditFacilityOverdueDetailsDPD61t090amt, + CreditFacilityOverdueDetailsDPD91to180amt : value.creditFacilityOverdueDetailsDPD91to180amt, + CreditFacilityOverdueDetailsDPDabove180amt : value.creditFacilityOverdueDetailsDPDabove180amt, + ChequeDDIFundsMsg : value.chequeDDIFundsMsg, + ChequeDDIFundsCD3monthcount : value.chequeDDIFundsCD3monthcount, + ChequeDDIFundsCD4to6monthcount : value.chequeDDIFundsCD4to6monthcount, + ChequeDDIFundsCD7to9monthcount : value.chequeDDIFundsCD7to9monthcount, + ChequeDDIFundsCD10to12monthcount : value.chequeDDIFundsCD10to12monthcount, + CFSecurityDetailsMsg : value.cfSecurityDetailsMsg, + CreditFacilityGuarantorDVecMsg : value.creditFacilityGuarantorDVecMsg, + + } + CreditFacilityArray.push(CreditFacilityObj); + + if (index === array.length -1) { resolve(CreditFacilityArray); } + }); + }); + CreditFacilityCurrentDertailDataInsert.then(async(CreditFacilityArray)=>{ + //console.log(CreditFacilityArray.length); + await CreditFacilityCurrentDetail.bulkCreate(CreditFacilityArray).catch(err=>{ }); + }); + }else { logMsg.info("CreditFacilityCurrentDetail(Commercial) array data not available for losid = "+data.losid); } + + + + + + // AcHistoryAndDPD data insert + if(data.hasOwnProperty('lstAcHistoryandDPD') && data.lstAcHistoryandDPD.length != 0) + { + var AcHistoryandDPDDataInsert = new Promise(async(resolve, reject) => { + AcHistoryandDPDArray = []; + data.lstAcHistoryandDPD.forEach(async(value,index,array) => { + + AcHistoryandDPDObj = { + ApplicationRefno: value.applicationRefno, + BorrowerCurrentDetailsID: value.borrowerCurrentDetailsID, + CFHistory24Monthsmonth: value.cfHistory24Monthsmonth, + CFHistory24MonthsACorDPD: value.cfHistory24MonthsACorDPD, + CFHistory24MonthsOSAmount: value.cfHistory24MonthsOSAmount, + } + AcHistoryandDPDArray.push(AcHistoryandDPDObj); + + if (index === array.length -1) { resolve(AcHistoryandDPDArray); } + }); + }); + AcHistoryandDPDDataInsert.then(async(AcHistoryandDPDArray)=>{ + //console.log(AcHistoryandDPDArray.length); + await AcHistoryAndDPD.bulkCreate(AcHistoryandDPDArray).catch(err=>{ }); + }); + }else { logMsg.info("AcHistoryAndDPD(Commercial) array data not available for losid = "+data.losid); } + + + + + // EnquiryDetail data insert + if(data.hasOwnProperty('lstEnquiryDetail') && data.lstEnquiryDetail.length != 0) + { + var EnquiryDetailDataInsert = new Promise(async(resolve, reject) => { + EnquiryDetailArray = []; + data.lstEnquiryDetail.forEach(async(value,index,array) => { + + EnquiryDetailObj = { + losid :data.losid, + ApplicationRefno: value.applicationRefno, + EnquiryDetailsCreditLender: value.enquiryDetailsCreditLender, + EnquiryDetailsEnquiryDt: value.enquiryDetailsEnquiryDt, + EnquiryDetailsEnquiryPurpose: value.enquiryDetailsEnquiryPurpose, + EnquiryDetailsEnquiryAmt: value.enquiryDetailsEnquiryAmt, + //temp_id: value. + } + EnquiryDetailArray.push(EnquiryDetailObj); + + if (index === array.length -1) { resolve(EnquiryDetailArray); } + }); + }); + EnquiryDetailDataInsert.then(async(EnquiryDetailArray)=>{ + //console.log(EnquiryDetailArray.length); + await EnquiryDetail.bulkCreate(EnquiryDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("EnquiryDetail(Commercial) array data not available for losid = "+data.losid); } + + + + + + // LocationDetail data insert + if(data.hasOwnProperty('lstLocationDetail') && data.lstLocationDetail.length != 0) + { + var LocationDetailDataInsert = new Promise(async(resolve, reject) => { + LocationDetailArray = []; + data.lstLocationDetail.forEach(async(value,index,array) => { + + LocationDetailObj = { + ApplicationRefno: value.applicationRefno, + LocationType: value.locationType, + firstReportedDate: value.firstReportedDate, + LastReportedDate: value.lastReportedDate, + Address: value.address, + NoOfInstitutions: value.noOfInstitutions, + contactNumber: value.contactNumber, + faxNumber: value.faxNumber, + //temp_id: { type: DataTypes.INTEGER } + } + LocationDetailArray.push(LocationDetailObj); + + if (index === array.length -1) { resolve(LocationDetailArray); } + }); + }); + LocationDetailDataInsert.then(async(LocationDetailArray)=>{ + //console.log(LocationDetailArray.length); + await LocationDetail.bulkCreate(LocationDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("LocationDetail(Commercial) array data not available for losid = "+data.losid); } + + + + + + // SecurityDetail data insert + if(data.hasOwnProperty('lstSecurityDetail') && data.lstSecurityDetail.length != 0) + { + var SecurityDetailDataInsert = new Promise(async(resolve, reject) => { + SecurityDetailArray = []; + data.lstSecurityDetail.forEach(async(value,index,array) => { + + SecurityDetailObj = { + // temp_id: { type: DataTypes.INTEGER }, + ApplicationRefno: value.applicationRefno, + BorrowerCurrentDetailsID: value.borrowerCurrentDetailsID, + CFSecurityDetailsRelatedType: value.cfSecurityDetailsRelatedType, + CFSecurityDetailsClassification: value.cfSecurityDetailsClassification, + CFSecurityDetailsValue: value.cfSecurityDetailsValue, + CFSecurityDetailsCurrency: value.cfSecurityDetailsCurrency, + CFSecurityDetailsvalidationDt: value.cfSecurityDetailsvalidationDt, + CFSecurityDetailslastReportedDt: value.cfSecurityDetailslastReportedDt, + + } + SecurityDetailArray.push(SecurityDetailObj); + + if (index === array.length -1) { resolve(SecurityDetailArray); } + }); + }); + SecurityDetailDataInsert.then(async(SecurityDetailArray)=>{ + //console.log(SecurityDetailArray.length); + await SecurityDetail.bulkCreate(SecurityDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("SecurityDetail(Commercial) array data not available for losid = "+data.losid); } + + + + + + // RelationshipDetail data insert + if(data.hasOwnProperty('lstRelationshipDetail') && data.lstRelationshipDetail.length != 0) + { + var RelationshipDetailDataInsert = new Promise(async(resolve, reject) => { + RelationshipDetailArray = []; + data.lstRelationshipDetail.forEach(async(value,index,array) => { + + RelationshipDetailObj = { + ApplicationRefno: value.applicationRefno, + RelationshipHeader: value.relationshipHeader, + RelationshipName: value.relationshipName, + RelatedType: value.relatedType, + Relationship: value.relationship, + PercentageOfControl: value.percentageOfControl, + RDDOI: value.rddoi, + RDDOB: value.rddob, + RDGender: value.rdGender, + RDBusinessCatg: value.rdBusinessCatg, + RDBusinessIndustryType: value.rdBusinessIndustryType, + RDClassOfActivity1: value.rdClassOfActivity1, + RDBACDAddress: value.rdbacdAddress, + RDBACDTelephoneNo: value.rdbacdTelephoneNo, + RDBACDfaxNo: value.rdbacDfaxNo, + RDBACDMobileNo: value.rdbacdMobileNo, + RDlastReportedDate: value.rDlastReportedDate , + // temp_id: { type: DataTypes.INTEGER } + + + } + RelationshipDetailArray.push(RelationshipDetailObj); + + if (index === array.length -1) { resolve(RelationshipDetailArray); } + }); + }); + RelationshipDetailDataInsert.then(async(RelationshipDetailArray)=>{ + //console.log(RelationshipDetailArray.length); + await RelationshipDetail.bulkCreate(RelationshipDetailArray).catch(err=>{ }); + }); + }else { logMsg.info("RelationshipDetail(Commercial) array data not available for losid = "+data.losid); } + + + + } + catch (error) + { + console.log(error); + } +} + + + + + + + + + + + + + + + +const { InBorrowerDetail,InEnquiryDetail,InCreditFacility,InDpdTranscationTable} = require('../models') + +async function consumerIntermediateDataInsert(losid,refNo) +{ + try + { + + ConBorrowDetailData = await ConBorrowDetail.findAll({attributes: ['losid','MemberReferenceNumber','ConsumerNameField1','ConsumerNameField2','ConsumerNameField3','ConsumerNameField4','ConsumerNameField5'],raw:true ,where:{losid:'MW112233'},include:[{model:ConIDDetail , attributes: ['IDNumber'],where:{IDType:'Income Tax ID Number'}}]}); + var ConBorrowDetailDataInsert = new Promise(async(resolve, reject) => { + ConBorrowDetailArray = []; + ConBorrowDetailData.forEach(async(value,index,array) => { + ConBorrowDetailDataObj = { + losid : value.losid, + ReferenceNumber : value.MemberReferenceNumber, + ConsumerNameField1 : value.ConsumerNameField1, + ConsumerNameField2 : value.ConsumerNameField2, + ConsumerNameField3 : value.ConsumerNameField3, + ConsumerNameField4 : value.ConsumerNameField4, + ConsumerNameField5 : value.ConsumerNameField5, + PAN : value['ConIDDetails.IDNumber'], + cibil_type : 1 + } + ConBorrowDetailArray.push(ConBorrowDetailDataObj); + if (index === array.length -1) { resolve(ConBorrowDetailArray); } + }); + }); + ConBorrowDetailDataInsert.then(async(ConBorrowDetailArray)=>{ + await InBorrowerDetail.bulkCreate(ConBorrowDetailArray); + }); + + + end_date = '2022-05-05' + sk = await Helper.createSkeleton(end_date); + ConEnquiryDetailData = await ConEnquiryDetail.findAll({attributes: ['losid','MemberReferenceNumber','DateOfEnquiry','EnquiryPurpose','EnquiryAmount'],raw:true ,where:{losid:'MW112233'}}); + var ConEnquiryDetailDataInsert = new Promise(async(resolve, reject) => { + ConEnquiryDetailArray = []; + ConEnquiryDetailData.forEach(async(value,index,array) => { + month_bucket_result = await Helper.findBucketCount(sk,value.DateOfEnquiry); + ConEnquiryDetailDataObj = { + losid : value.losid, + ReferenceNumber : value.MemberReferenceNumber, + DateOfEnquiry : value.DateOfEnquiry, + EnquiryPurpose : value.EnquiryPurpose, + EnquiryAmount : value.EnquiryAmount, + month_bucket_index : month_bucket_result, + cibil_type : 1, + grp_str : Math.random().toString(36).slice(2, 10).toUpperCase() + } + ConEnquiryDetailArray.push(ConEnquiryDetailDataObj); + if (index === array.length -1) { resolve(ConEnquiryDetailArray); } + }); + }); + ConEnquiryDetailDataInsert.then(async(ConEnquiryDetailArray)=>{ + await InEnquiryDetail.bulkCreate(ConEnquiryDetailArray).catch(err=>{res.send({data:err})}); + }); + + + + end_date = '2022-05-05' + sk = await Helper.createSkeleton(end_date); + ConAccountTranscationData = await ConAccountTranscation.findAll({attributes: ['losid','AccountTranDetailsID','MemberReferenceNumber','AccountType','OwnershipIndicator','DateOpenedDisbursed','DateReportedAndCertified','HighCreditSanctionedAmount','CurrentBalance','AmountOverdue','CreditLimit','RepaymentTenure','EMIAmount','WrittenOffAndSettledStatus','DateClosed'],raw:true ,where:{losid:'MW112233'}}); + + + ConAccountTranscationData.forEach(async(value) => { + month_bucket_result = await Helper.findBucketCount(sk,value.DateOpenedDisbursed); + Num = value.MemberReferenceNumber; + MemberReferenceNumber = Num.toString(); + ConAccountTranscationObj = { + losid : value.losid, + InTblAccountTranDetailsID : value.AccountTranDetailsID, + ReferenceNumber : MemberReferenceNumber, + AccountType : value.AccountType, + OwnershipIndicator : value.OwnershipIndicator, + DateOpenedDisbursed:value.DateOpenedDisbursed , + DateReportedAndCertified :value.DateReportedAndCertified , + HighCreditSanctionedAmount : value.HighCreditSanctionedAmount, + CurrentBalance : value.CurrentBalance, + AmountOverdue : value.AmountOverdue, + CreditLimit : value.CreditLimit, + RepaymentTenure : value.RepaymentTenure, + EMIAmount : value.EMIAmount, + month_bucket_index : month_bucket_result, + cibil_type : 1, + WrittenOffAndSettledStatus : value.WrittenOffAndSettledStatus, + DateClosed : value.DateClosed, + grp_str : Math.random().toString(36).slice(2, 10).toUpperCase() + } + + await InCreditFacility.create(ConAccountTranscationObj).then(async(InCreditFacilityData)=>{ + + RefNo = InCreditFacilityData.dataValues.ReferenceNumber; + ConDPDTranscationData = await ConDPDTranscation.findAll({attributes: ['AccountTranDetailsID','MemberRefNo','StartDate','Code'],raw:true , + where:{MemberRefNo: RefNo,AccountTranDetailsID: InCreditFacilityData.dataValues.InTblAccountTranDetailsID}}); + if(ConDPDTranscationData.length != 0) + { + var DataInsert = new Promise(async(resolve, reject) => { + ConDPDTranscationDataArray = []; + ConDPDTranscationData.forEach(async(value,index,array) => { + + month_bucket_result_dpd = await Helper.findBucketCount(sk,value.StartDate); + ConDPDTranscationDataObj = { + AccountTranDetailsID : InCreditFacilityData.dataValues.AccountTranDetailsID, + ReferenceNumber : value.MemberRefNo, + cibil_type : 1, + StartDate : value.StartDate, + Code : value.Code, + month_bucket_index : month_bucket_result_dpd, + } + ConDPDTranscationDataArray.push(ConDPDTranscationDataObj); + //resolve + if (index === array.length -1) { resolve(ConDPDTranscationDataArray); } + }); + }); + DataInsert.then(async(ConDPDTranscationDataArray)=>{ + + // insert consumer DPd data here + await InDpdTranscationTable.bulkCreate(ConDPDTranscationDataArray).catch(err=>{res.send({data:err})}); + + }); + } + + }).catch(err=>{res.send({data:err})}); + + });//end of consumer credit facility data foreach loop + + +} +catch (error) +{ + console.log(error); +} +}; + + + + + + + + + + + + + + +async function commercialIntermediateDataInsert(losid,refNo) +{ + try + { + BorrowerProfileData = await BorrowerProfile.findAll({attributes: ['losid','ApplicationRefno','EnqInfoBorrowerName','EnqInfoPan'],raw:true ,where:{losid:'MW112233'}}); + var BorrowerProfileDataInsert = new Promise(async(resolve, reject) => { + BorrowerProfileArray = []; + BorrowerProfileData.forEach(async(value,index,array) => { + BorrowerProfileDataObj = { + losid : value.losid, + ReferenceNumber : value.ApplicationRefno, + ConsumerNameField1 : value.EnqInfoBorrowerName, + ConsumerNameField2 : null, + ConsumerNameField3 : null, + ConsumerNameField4 : null, + ConsumerNameField5 : null, + PAN : value.EnqInfoPan, + cibil_type : 2 + } + BorrowerProfileArray.push(BorrowerProfileDataObj); + if (index === array.length -1) { resolve(BorrowerProfileArray); } + }); + }); + BorrowerProfileDataInsert.then(async(BorrowerProfileArray)=>{ + await InBorrowerDetail.bulkCreate(BorrowerProfileArray); + }); + + + + + + end_date = '2022-05-05' + sk = await Helper.createSkeleton(end_date); + ComEnquiryDetailData = await EnquiryDetail.findAll({attributes: ['losid','ApplicationRefno','EnquiryDetailsEnquiryDt','EnquiryDetailsEnquiryPurpose','EnquiryDetailsEnquiryAmt'],raw:true ,where:{losid:'MW112233'}}); + var ComEnquiryDetailDataInsert = new Promise(async(resolve, reject) => { + ComEnquiryDetailArray = []; + ComEnquiryDetailData.forEach(async(value,index,array) => { + month_bucket_result = await Helper.findBucketCount(sk,value.EnquiryDetailsEnquiryDt); + ComEnquiryDetailDataObj = { + losid : value.losid, + ReferenceNumber : value.ApplicationRefno, + DateOfEnquiry : value.EnquiryDetailsEnquiryDt, + EnquiryPurpose : value.EnquiryDetailsEnquiryPurpose, + EnquiryAmount : value.EnquiryDetailsEnquiryAmt, + month_bucket_index : month_bucket_result, + cibil_type : 2, + grp_str : Math.random().toString(36).slice(2, 10).toUpperCase() + } + ComEnquiryDetailArray.push(ComEnquiryDetailDataObj); + if (index === array.length -1) { resolve(ComEnquiryDetailArray); } + }); + }); + ComEnquiryDetailDataInsert.then(async(ComEnquiryDetailArray)=>{ + await InEnquiryDetail.bulkCreate(ComEnquiryDetailArray).catch(err=>{res.send({data:err})}); + }); + + + + + + + end_date = '2022-05-05' + sk = await Helper.createSkeleton(end_date); + ComCreditFacilityCurrentDetailData = await CreditFacilityCurrentDetail.findAll({attributes: ['losid','ApplicationRefno','CreditFacilityCDcfSrNo','CreditFacilityCDcfType','CreditFacilityCDDatesSanctionedDt','CreditFacilityCDLstReportedDate','CreditFacilityCDAmtSanctionedAmt','CreditFacilityCDAmtoutstandingBalance','CreditFacilityCDAmtOverdue','CreditFacilityCDODTenure','CreditFacilityCDAmtinstallmentAmt','CreditFacilityCDStatus','CreditFacilityCDDatesLoanExpiryDt'],raw:true ,where:{losid:'MW112233'}}); + + ComCreditFacilityCurrentDetailData.forEach(async(value) => { + month_bucket_result = await Helper.findBucketCount(sk,value.DateOpenedDisbursed); + Num = value.ApplicationRefno; + Refno = Num.toString(); + AccountTranDetailsID = value.CreditFacilityCDcfSrNo.replace ( /[^\d.]/g, '' ); + ComCreditFacilityCurrentDetailObj = { + losid : value.losid, + InTblAccountTranDetailsID : AccountTranDetailsID, + ReferenceNumber : Refno, + AccountType : value.CreditFacilityCDcfType, + OwnershipIndicator : null, + DateOpenedDisbursed:value.CreditFacilityCDDatesSanctionedDt , + DateReportedAndCertified :value.CreditFacilityCDLstReportedDate , + HighCreditSanctionedAmount : value.CreditFacilityCDAmtSanctionedAmt, + CurrentBalance : value.CreditFacilityCDAmtoutstandingBalance, + AmountOverdue : value.CreditFacilityCDAmtOverdue, + CreditLimit : null, + RepaymentTenure : value.CreditFacilityCDODTenure, + EMIAmount : value.CreditFacilityCDAmtinstallmentAmt, + month_bucket_index : month_bucket_result, + cibil_type : 2, + WrittenOffAndSettledStatus : value.CreditFacilityCDStatus, + DateClosed : value.CreditFacilityCDDatesLoanExpiryDt, + grp_str : Math.random().toString(36).slice(2, 10).toUpperCase() + } + + await InCreditFacility.create(ComCreditFacilityCurrentDetailObj).then(async(ComInCreditFacilityData)=>{ + + ComAcHistoryAndDPD = await AcHistoryAndDPD.findAll({attributes: ['ApplicationRefno','CFHistory24Monthsmonth','CFHistory24MonthsACorDPD','BorrowerCurrentDetailsID'],raw:true , + where:{BorrowerCurrentDetailsID : ComInCreditFacilityData.dataValues.InTblAccountTranDetailsID ,ApplicationRefno:ComInCreditFacilityData.dataValues.ReferenceNumber}}); + + if(ComAcHistoryAndDPD.length != 0) + { + var DpdDataInsert = new Promise(async(resolve, reject) => { + ComAcHistoryAndDPDArray = []; + ComAcHistoryAndDPD.forEach(async(value,index,array) => { + month_bucket_result_com_dpd = await Helper.findBucketCount(sk,value.CFHistory24Monthsmonth); + ComAcHistoryAndDPDObj = { + AccountTranDetailsID : ComInCreditFacilityData.dataValues.AccountTranDetailsID, + ReferenceNumber : value.ApplicationRefno, + cibil_type : 2, + StartDate : value.CFHistory24Monthsmonth, + Code : value.CFHistory24MonthsACorDPD, + month_bucket_index : month_bucket_result_com_dpd, + } + ComAcHistoryAndDPDArray.push(ComAcHistoryAndDPDObj); + + if (index === array.length -1) { resolve(ComAcHistoryAndDPDArray); } + }); + }); + + DpdDataInsert.then(async(ComAcHistoryAndDPDArray)=>{ + await InDpdTranscationTable.bulkCreate(ComAcHistoryAndDPDArray).catch(err=>{res.send({data:err})}); + }); + + } + }).catch(err=>{res.send({data:err})}); + + }); + + + +} +catch (error) +{ + console.log(error); +} +}; + + + + +module.exports = { + + consumerDataInsert : consumerDataInsert , + commercialDataInsert : commercialDataInsert, + consumerIntermediateDataInsert : consumerIntermediateDataInsert, + commercialIntermediateDataInsert : commercialIntermediateDataInsert, + + } \ No newline at end of file