diff --git a/app/controllers/cibil.controller.js b/app/controllers/cibil.controller.js index 91b5ca2..2bc966a 100644 --- a/app/controllers/cibil.controller.js +++ b/app/controllers/cibil.controller.js @@ -1,6 +1,11 @@ -const { sequelize,OutputActiveAndClosedLoans,OutSanctionAmt_P,OutSanctionAmt_C,OutEnquiryAmountP,OutEnquiryAmountC} = 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 { Op } = require('sequelize'); // landing page list of all pan number and reference number from commercial & consumer against losid exports.LandingPageDetailsList =async (req, res) => { @@ -310,31 +315,34 @@ exports.EnquiryAmountSplitUp =async (req, res) => { try { - if(req.query.input_data_from == "commercialData") - { - query = "SELECT ApplicationRefno as ref_no,EnquiryDetailsEnquiryDt as date,EnquiryDetailsEnquiryPurpose as facility_type,EnquiryDetailsEnquiryAmt as amount FROM com_enquiry_detail where losid ='"+req.query.losid+"' and ApplicationRefno = "+req.query.ref_no+" and EnquiryDetailsEnquiryPurpose = '"+req.query.facility_type+"' order by EnquiryDetailsEnquiryDt DESC"; - } - else - { - query = "SELECT MemberReferenceNumber as ref_no,DateOfEnquiry as date,EnquiryPurpose as facility_type,EnquiryAmount as amount FROM con_enquiry_detail where losid ='"+req.query.losid+"' and MemberReferenceNumber = "+req.query.ref_no+" and EnquiryPurpose = '"+req.query.facility_type+"' order by DateOfEnquiry DESC"; - } - - sequelize.query(query).then(async(data) => { - if(data[0].length != 0) + + month = req.query.month_range; + if(month == 'total') + { + where = {losid:req.query.losid,ReferenceNumber:req.query.ref_no,EnquiryPurpose:req.query.facility_type} + } + else + { + month_data_array = month.split("_"); + if(month_data_array.length == 1) + { + where = {losid:req.query.losid,ReferenceNumber:req.query.ref_no,EnquiryPurpose:req.query.facility_type,month_bucket_index:month_data_array[0]} + } + else if(month_data_array.length == 2) + { + where = {losid:req.query.losid,ReferenceNumber:req.query.ref_no,EnquiryPurpose:req.query.facility_type,month_bucket_index:{[Op.between] : [month_data_array[0] , month_data_array[1] ]}} + } + else { - res.send({'status':200 , message:"Success." ,'data':data}); - }else { - res.send({'status':400 , message:"Failed." ,'data':"No data"}); + where = {losid:req.query.losid,ReferenceNumber:req.query.ref_no,EnquiryPurpose:req.query.facility_type,month_bucket_index:{ [Op.gt]: month_data_array[2]}} } - - - - }).catch(err=>{ - - res.send({'status':400 , message: "Failed" ,'data': "Nodata"}); - }) + } + + InEnquiryDetail.findAll({where:where,order: [ ['DateOfEnquiry', 'DESC']]}) + .then(async(data)=>{ res.send({'status':200 , message:"Success." ,'data':data});}) + .catch(err=>{ logMsg.info("EnquiryAmountSplitUp failed = " +err); res.send({'status':400 , message:"Failed." ,'data':"No data"}); }); - + } catch(err) { res.status(500).send({'status':404, @@ -347,18 +355,32 @@ exports.ConsolidatedEnquiryAmountSplitUp =async (req, res) => { try { - query = "SELECT MemberReferenceNumber as ref_no,DateOfEnquiry as date,EnquiryPurpose as facility_type,EnquiryAmount as amount FROM con_enquiry_detail where losid ='"+req.query.losid+"' and EnquiryPurpose = '"+req.query.facility_type+"' order by DateOfEnquiry DESC"; - sequelize.query(query).then(async(data) => { + month = req.query.month_range; + if(month == 'total') + { + where = {losid:req.query.losid,EnquiryPurpose:req.query.facility_type} + } + else + { + month_data_array = month.split("_"); + if(month_data_array.length == 1) + { + where = {losid:req.query.losid,EnquiryPurpose:req.query.facility_type,month_bucket_index:month_data_array[0]} + } + else if(month_data_array.length == 2) + { + where = {losid:req.query.losid,EnquiryPurpose:req.query.facility_type,month_bucket_index:{[Op.between] : [month_data_array[0] , month_data_array[1] ]}} + } + else + { + where = {losid:req.query.losid,EnquiryPurpose:req.query.facility_type,month_bucket_index:{ [Op.gt]: month_data_array[2]}} + } + } + + InEnquiryDetail.findAll({where:where,order: [ ['DateOfEnquiry', 'DESC']]}) + .then(async(data)=>{ res.send({'status':200 , message:"Success." ,'data':data});}) + .catch(err=>{ logMsg.info("EnquiryAmountSplitUp failed = " +err); res.send({'status':400 , message:"Failed." ,'data':"No 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" @@ -373,27 +395,33 @@ exports.SanctionAmountSplitUp =async (req, res) => { try { - if(req.query.input_data_from == "commercialData") - { - query = " SELECT ApplicationRefno as ref_no,CreditFacilityCDLstReportedDate as date,CreditFacilityCDcfType as facility_type, CreditFacilityCDAmtSanctionedAmt as amount FROM com_credit_facility_current_detail where losid ='"+req.query.losid+"' and ApplicationRefno = "+req.query.ref_no+" and CreditFacilityCDcfType = '"+req.query.facility_type+"' order by CreditFacilityCDLstReportedDate DESC"; - } - else - { - query = "SELECT MemberReferenceNumber as ref_no,DateOpenedDisbursed as date,AccountType as facility_type ,HighCreditSanctionedAmount as amount FROM con_account_transaction_detail where losid ='"+req.query.losid+"' and MemberReferenceNumber = "+req.query.ref_no+" and AccountType = '"+req.query.facility_type+"' order by DateOpenedDisbursed DESC"; - } - - sequelize.query(query).then(async(data) => { - if(data[0].length != 0) + month = req.query.month_range; + if(month == 'total') + { + where = {losid:req.query.losid,ReferenceNumber:req.query.ref_no,AccountType:req.query.facility_type} + } + else + { + month_data_array = month.split("_"); + if(month_data_array.length == 1) + { + where = {losid:req.query.losid,ReferenceNumber:req.query.ref_no,AccountType:req.query.facility_type,month_bucket_index:month_data_array[0]} + } + else if(month_data_array.length == 2) + { + where = {losid:req.query.losid,ReferenceNumber:req.query.ref_no,AccountType:req.query.facility_type,month_bucket_index:{[Op.between] : [month_data_array[0] , month_data_array[1] ]}} + } + else { - res.send({'status':200 , message:"Success." ,'data':data}); - }else { - res.send({'status':400 , message:"Failed." ,'data':"No data"}); + where = {losid:req.query.losid,ReferenceNumber:req.query.ref_no,AccountType:req.query.facility_type,month_bucket_index:{ [Op.gt]: month_data_array[2]}} } + } + + InCreditFacility.findAll({where:where,order: [ ['DateOpenedDisbursed', 'DESC']]}) + .then(async(data)=>{ res.send({'status':200 , message:"Success." ,'data':data});}) + .catch(err=>{ logMsg.info("EnquiryAmountSplitUp failed = " +err); res.send({'status':400 , message:"Failed." ,'data':"No data"}); }); + - }).catch(err=>{ - - res.send({'status':400 , message: "Failed" ,'data': "Nodata"}); - }) @@ -408,21 +436,379 @@ exports.ConsolidatedSanctionAmountSplitUp =async (req, res) => { try { - query = "SELECT MemberReferenceNumber as ref_no,DateOpenedDisbursed as date,AccountType as facility_type ,HighCreditSanctionedAmount as amount FROM con_account_transaction_detail where losid = '"+req.query.losid+"' and AccountType = '"+req.query.facility_type+"'"; - sequelize.query(query).then(async(data) => { - - res.send({'status':200 , message:"Success." ,'data':data}); - - }).catch(err=>{ - - res.send({'status':400 , message: "Failed" ,'data': "Nodata"}); - }) - - + month = req.query.month_range; + if(month == 'total') + { + where = {losid:req.query.losid,AccountType:req.query.facility_type} + } + else + { + month_data_array = month.split("_"); + if(month_data_array.length == 1) + { + where = {losid:req.query.losid,AccountType:req.query.facility_type,month_bucket_index:month_data_array[0]} + } + else if(month_data_array.length == 2) + { + where = {losid:req.query.losid,AccountType:req.query.facility_type,month_bucket_index:{[Op.between] : [month_data_array[0] , month_data_array[1] ]}} + } + else + { + where = {losid:req.query.losid,AccountType:req.query.facility_type,month_bucket_index:{ [Op.gt]: month_data_array[2]}} + } + } + + InCreditFacility.findAll({where:where,order: [ ['DateOpenedDisbursed', 'DESC']]}) + .then(async(data)=>{ res.send({'status':200 , message:"Success." ,'data':data});}) + .catch(err=>{ logMsg.info("EnquiryAmountSplitUp failed = " +err); res.send({'status':400 , 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 -}; \ No newline at end of file +}; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +exports.test =async (req, res) => +{ + try + { + // 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']; + // dpd_dates.forEach(async(element) => { + // data = await Helper.findBucketCount(sk,element); + // console.log(data); + // }); + + srt = "Credit Facility 1"; + num = srt.replace ( /[^\d.]/g, '' ); + console.log(num); + + } 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'],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 + // } + + // 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'],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 + // } + + // 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 + + + + + + + + } 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/AcHistoryAndDPD.js b/app/models/AcHistoryAndDPD.js index 39f4bd4..9fcaaa4 100644 --- a/app/models/AcHistoryAndDPD.js +++ b/app/models/AcHistoryAndDPD.js @@ -7,7 +7,7 @@ module.exports = (sequelize, DataTypes) => { AcHistoryAndDPD.init( { - temp_id: { type: DataTypes.INTEGER }, + temp_id: { type: DataTypes.INTEGER }, ApplicationRefno: { type: DataTypes.INTEGER }, BorrowerCurrentDetailsID: { type: DataTypes.INTEGER }, CFHistory24Monthsmonth: { type: DataTypes.DATE }, diff --git a/app/models/BorrowerProfile.js b/app/models/BorrowerProfile.js index 24d7a57..36f98d5 100644 --- a/app/models/BorrowerProfile.js +++ b/app/models/BorrowerProfile.js @@ -6,6 +6,7 @@ module.exports = (sequelize, DataTypes) => { } BorrowerProfile.init( { + losid :{type: DataTypes.STRING}, temp_id : { type: DataTypes.INTEGER }, ApplicationRefno : { type: DataTypes.INTEGER }, ReportIssuesCode : { type: DataTypes.STRING }, @@ -267,6 +268,12 @@ module.exports = (sequelize, DataTypes) => { modelName: 'BorrowerProfile', } ) - + + BorrowerProfile.associate = models => { + BorrowerProfile.hasMany(models.BorrowidDetail, { + foreignKey: 'ApplicationRefno', + sourceKey : 'ApplicationRefno' + }); + } return BorrowerProfile } \ No newline at end of file diff --git a/app/models/ConBorrowerDetail.js b/app/models/ConBorrowerDetail.js index a42a217..ae3c983 100644 --- a/app/models/ConBorrowerDetail.js +++ b/app/models/ConBorrowerDetail.js @@ -7,6 +7,7 @@ module.exports = (sequelize, DataTypes) => { ConBorrowDetail.init( { + losid:{type: DataTypes.STRING}, BDeatailsID: { type: DataTypes.INTEGER }, MemberReferenceNumber: { type: DataTypes.INTEGER }, EnquiryMemberUserID: { type: DataTypes.STRING }, // @@ -55,6 +56,11 @@ module.exports = (sequelize, DataTypes) => { } ) - + ConBorrowDetail.associate = models => { + ConBorrowDetail.hasMany(models.ConIDDetail, { + foreignKey: 'MemberReferenceNumber', + sourceKey : 'MemberReferenceNumber' + }); + } return ConBorrowDetail } \ No newline at end of file diff --git a/app/models/ConDPDTranscationDetail.js b/app/models/ConDPDTranscationDetail.js index 4f51f2e..3fd4c81 100644 --- a/app/models/ConDPDTranscationDetail.js +++ b/app/models/ConDPDTranscationDetail.js @@ -5,18 +5,18 @@ module.exports = (sequelize, DataTypes) => { } ConDPDTranscation.init( - + { - detail_id: { type: DataTypes.INTEGER }, - account_tran_detail_id: { type: DataTypes.INTEGER }, - member_ref_no: { type: DataTypes.STRING }, // - start_date: { type: DataTypes.DATE }, - code: { type: DataTypes.STRING }, // - entry_date: { type: DataTypes.DATE } + DetailID: { type: DataTypes.INTEGER }, + AccountTranDetailsID: { type: DataTypes.INTEGER }, + MemberRefNo: { type: DataTypes.INTEGER }, // + StartDate: { type: DataTypes.DATE }, + Code: { type: DataTypes.INTEGER }, // + EntryDate: { type: DataTypes.DATE } }, { sequelize, - tableName: 'emp_details', + tableName: 'con_dpd_transaction_detail', modelName: 'ConDPDTranscation', } ) diff --git a/app/models/ConEnquieyDetail.js b/app/models/ConEnquieyDetail.js index b0b4309..bc169f6 100644 --- a/app/models/ConEnquieyDetail.js +++ b/app/models/ConEnquieyDetail.js @@ -7,16 +7,17 @@ module.exports = (sequelize, DataTypes) => { ConEnquiryDetail.init( { - ApplicationRefno: { type: DataTypes.INTEGER }, - EnquiryDetailsCreditLender: { type: DataTypes.STRING }, - EnquiryDetailsEnquiryDt: { type: DataTypes.STRING }, - EnquiryDetailsEnquiryPurpose: { type: DataTypes.STRING }, - EnquiryDetailsEnquiryAmt: { type: DataTypes.INTEGER }, - temp_id: { type: DataTypes.INTEGER } + losid :{ type: DataTypes.STRING }, + EnquiryID: { type: DataTypes.INTEGER }, + MemberReferenceNumber: { type: DataTypes.INTEGER }, + DateOfEnquiry: { type: DataTypes.DATE }, + EnquiringMemberShortName: { type: DataTypes.STRING }, + EnquiryPurpose: { type: DataTypes.STRING }, + EnquiryAmount: { type: DataTypes.INTEGER } }, { sequelize, - tableName: 'com_enquiry_detail', + tableName: 'con_enquiry_detail', modelName: 'ConEnquiryDetail', } ) diff --git a/app/models/ConIDDetail.js b/app/models/ConIDDetail.js index d9486ac..1e800a4 100644 --- a/app/models/ConIDDetail.js +++ b/app/models/ConIDDetail.js @@ -7,17 +7,18 @@ module.exports = (sequelize, DataTypes) => { ConIDDetail.init( { - id_detail_id: { type: DataTypes.INTEGER }, - member_ref_no: { type: DataTypes.STRING }, // - id_type: { type: DataTypes.DATE }, - id_number: { type: DataTypes.STRING }, // - issue_date: { type: DataTypes.DATE }, - expiration_date: { type: DataTypes.DATE }, - enrich_through_enquiry: { type: DataTypes.DATE }, // + + IDDetailsID: { type: DataTypes.INTEGER }, + MemberReferenceNumber: { type: DataTypes.INTEGER }, // + IDType: { type: DataTypes.STRING }, + IDNumber: { type: DataTypes.STRING }, // + IssueDate: { type: DataTypes.DATE }, + ExpirationDate: { type: DataTypes.DATE }, + EnrichedThroughEnquiry: { type: DataTypes.DATE }, // }, { sequelize, - tableName: 'emp_details', + tableName: 'con_id_detail', modelName: 'ConIDDetail', } ) diff --git a/app/models/CreditFacilityCurrentDertail.js b/app/models/CreditFacilityCurrentDetail.js similarity index 95% rename from app/models/CreditFacilityCurrentDertail.js rename to app/models/CreditFacilityCurrentDetail.js index bbf0897..2fc7b20 100644 --- a/app/models/CreditFacilityCurrentDertail.js +++ b/app/models/CreditFacilityCurrentDetail.js @@ -1,10 +1,10 @@ 'use strict' const { Model } = require('sequelize') module.exports = (sequelize, DataTypes) => { - class CreditFacilityCurrentDertail extends Model { + class CreditFacilityCurrentDetail extends Model { } - CreditFacilityCurrentDertail.init( + CreditFacilityCurrentDetail.init( { temp_id: { type: DataTypes.INTEGER }, @@ -65,10 +65,10 @@ module.exports = (sequelize, DataTypes) => { { sequelize, tableName: 'com_credit_facility_current_detail', - modelName: 'CreditFacilityCurrentDertail', + modelName: 'CreditFacilityCurrentDetail', } ) - return CreditFacilityCurrentDertail + return CreditFacilityCurrentDetail } \ No newline at end of file diff --git a/app/models/EnquieyDetail.js b/app/models/EnquieyDetail.js index c86fb9a..0a5f27a 100644 --- a/app/models/EnquieyDetail.js +++ b/app/models/EnquieyDetail.js @@ -7,9 +7,10 @@ module.exports = (sequelize, DataTypes) => { EnquiryDetail.init( { + losid :{ type: DataTypes.STRING }, ApplicationRefno: { type: DataTypes.INTEGER }, EnquiryDetailsCreditLender: { type: DataTypes.STRING }, - EnquiryDetailsEnquiryDt: { type: DataTypes.STRING }, + EnquiryDetailsEnquiryDt: { type: DataTypes.DATE }, EnquiryDetailsEnquiryPurpose: { type: DataTypes.STRING }, EnquiryDetailsEnquiryAmt: { type: DataTypes.INTEGER }, temp_id: { type: DataTypes.INTEGER } diff --git a/app/models/InBorrowerDetail.js b/app/models/InBorrowerDetail.js new file mode 100644 index 0000000..8f6cfc5 --- /dev/null +++ b/app/models/InBorrowerDetail.js @@ -0,0 +1,30 @@ +'use strict' +const { Model } = require('sequelize') +module.exports = (sequelize, DataTypes) => { + class InBorrowerDetail extends Model { + + } + InBorrowerDetail.init( + + { + losid : { type: DataTypes.STRING }, + ReferenceNumber : { type: DataTypes.STRING }, + ConsumerNameField1 : { type: DataTypes.STRING }, + ConsumerNameField2 : { type: DataTypes.STRING }, + ConsumerNameField3 : { type: DataTypes.STRING }, + ConsumerNameField4 : { type: DataTypes.STRING }, + ConsumerNameField5 : { type: DataTypes.STRING }, + PAN : { type: DataTypes.STRING }, + cibil_type : { type: DataTypes.INTEGER }, + + }, + { + sequelize, + tableName: 'in_borrower_detail', + modelName: 'InBorrowerDetail', + } + ) + + + return InBorrowerDetail +} \ No newline at end of file diff --git a/app/models/InCreditFacility.js b/app/models/InCreditFacility.js new file mode 100644 index 0000000..4d0f061 --- /dev/null +++ b/app/models/InCreditFacility.js @@ -0,0 +1,42 @@ +'use strict' +const { Model } = require('sequelize') +module.exports = (sequelize, DataTypes) => { + class InCreditFacility extends Model { + + } + InCreditFacility.init( + + { + AccountTranDetailsID : { + type: DataTypes.INTEGER, + autoIncrement : true, + primaryKey: true + }, + InTblAccountTranDetailsID :{type : DataTypes.INTEGER}, + cibil_type : { type: DataTypes.INTEGER }, + losid : { type: DataTypes.STRING }, + ReferenceNumber : { type: DataTypes.STRING }, + AccountType : { type: DataTypes.STRING }, + OwnershipIndicator : { type: DataTypes.STRING }, + DateOpenedDisbursed:{type: DataTypes.DATE} , + month_bucket_index :{type: DataTypes.INTEGER}, + DateReportedAndCertified :{type: DataTypes.DATE} , + HighCreditSanctionedAmount : { type: DataTypes.INTEGER }, + CurrentBalance : { type: DataTypes.INTEGER }, + AmountOverdue : { type: DataTypes.INTEGER }, + CreditLimit : { type: DataTypes.INTEGER }, + RepaymentTenure : { type: DataTypes.INTEGER }, + EMIAmount : { type: DataTypes.INTEGER }, + WrittenOffAndSettledStatus : {type: DataTypes.STRING} + + }, + { + sequelize, + tableName: 'in_credit_facility', + modelName: 'InCreditFacility', + } + ) + + + return InCreditFacility +} \ No newline at end of file diff --git a/app/models/InDpdTranscationTable.js b/app/models/InDpdTranscationTable.js new file mode 100644 index 0000000..dbf1041 --- /dev/null +++ b/app/models/InDpdTranscationTable.js @@ -0,0 +1,27 @@ +'use strict' +const { Model } = require('sequelize') +module.exports = (sequelize, DataTypes) => { + class InDpdTranscationTable extends Model { + + } + InDpdTranscationTable.init( + + { + AccountTranDetailsID : { type: DataTypes.INTEGER }, + ReferenceNumber : { type: DataTypes.STRING }, + cibil_type : { type: DataTypes.INTEGER }, + StartDate : { type: DataTypes.DATE }, + Code : { type: DataTypes.STRING }, + month_bucket_index : { type: DataTypes.INTEGER }, + + }, + { + sequelize, + tableName: 'in_dpd_transaction_detail', + modelName: 'InDpdTranscationTable', + } + ) + + + return InDpdTranscationTable +} \ No newline at end of file diff --git a/app/models/InEnquiryDetail.js b/app/models/InEnquiryDetail.js new file mode 100644 index 0000000..3b6ed69 --- /dev/null +++ b/app/models/InEnquiryDetail.js @@ -0,0 +1,28 @@ +'use strict' +const { Model } = require('sequelize') +module.exports = (sequelize, DataTypes) => { + class InEnquiryDetail extends Model { + + } + InEnquiryDetail.init( + + { + + losid : { type: DataTypes.STRING }, + ReferenceNumber : { type: DataTypes.STRING }, + cibil_type : { type: DataTypes.INTEGER }, + DateOfEnquiry : { type: DataTypes.DATE }, + month_bucket_index : { type: DataTypes.INTEGER }, + EnquiryPurpose : { type: DataTypes.STRING }, + EnquiryAmount : { type: DataTypes.INTEGER }, + }, + { + sequelize, + tableName: 'in_enquiry_detail', + modelName: 'InEnquiryDetail', + } + ) + + + return InEnquiryDetail +} \ No newline at end of file diff --git a/app/routes/routes.js b/app/routes/routes.js index 83897f7..ff95fae 100644 --- a/app/routes/routes.js +++ b/app/routes/routes.js @@ -5,7 +5,8 @@ module.exports = app => { const { logMsg } = require('../services/logger.js'); var router = require("express").Router(); - + router.get("/test2", Cibilcontroller.test2); + router.get("/test", Cibilcontroller.test); /** * @swagger @@ -243,11 +244,11 @@ router.get("/consolidatedSummaryViewOfCreditFacilities", Cibilcontroller.Consoli * required: true * example: Other * - in: query -* name: input_data_from +* name: month_range * schema: * type: string * required: true -* example: consumerData +* example: total * responses: * 200: * description: success @@ -274,6 +275,12 @@ router.get("/enquiryAmountSplitUp", Cibilcontroller.EnquiryAmountSplitUp); * type: string * required: true * example: Other +* - in: query +* name: month_range +* schema: +* type: string +* required: true +* example: 1 * responses: * 200: * description: success diff --git a/app/services/cibil.controller.helper.js b/app/services/cibil.controller.helper.js new file mode 100644 index 0000000..a8aac26 --- /dev/null +++ b/app/services/cibil.controller.helper.js @@ -0,0 +1,80 @@ +//const { sequelize} = require('../models'); +const { logMsg } = require('../services/logger.js'); + +function createSkeleton(statement_end_date) +{ + try + { + + end_date = "'"+statement_end_date+"'"; + let date = new Date(end_date); + date.setDate(01); + + years_skeleton = []; + for(let i=0;i<36;i++) + { + //store on fly month number + month_count = date.getMonth() + 1; + //create on fly month data + new_date = date.toLocaleString('default', { month: 'short' })+"-"+date.getFullYear(); + //create on fly period data + if(month_count > 9) + { new_period = date.getFullYear()+"-"+month_count+"-01"; } + else { new_period = date.getFullYear()+"-0"+month_count+"-01"; } + 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; + + + + + + + + } + catch (error) + { + console.log(error); + } +} + + + +function findBucketCount(sk_array,dpd_date) +{ + try + { + + current_dpd_date = "'"+dpd_date+"'"; + let date = new Date(current_dpd_date); + converted_date = date.toLocaleString('default', { month: 'short' })+"-"+date.getFullYear(); + return findBucketNumber = new Promise((resolve, reject) => { + sk_array.forEach((value,index,array) => { + if(value.months == converted_date) { resolve(index + 1); } + if (index === array.length -1) { resolve(37); } + }); + }); + + } + catch (error) + { + console.log(error); + } +} + + +module.exports = { + + createSkeleton : createSkeleton , findBucketCount : findBucketCount + + } \ No newline at end of file