From 2f707f0583973f15c9dd23aebe235296088a6728 Mon Sep 17 00:00:00 2001 From: sriramv Date: Wed, 15 Jun 2022 15:49:17 +0530 Subject: [PATCH] consolidated Api :GWM --- app/controllers/cibil.controller.js | 151 ++++++++++++++++++++++++++-- app/routes/routes.js | 85 ++++++++++++++++ 2 files changed, 228 insertions(+), 8 deletions(-) diff --git a/app/controllers/cibil.controller.js b/app/controllers/cibil.controller.js index 770d302..e259bf9 100644 --- a/app/controllers/cibil.controller.js +++ b/app/controllers/cibil.controller.js @@ -1,7 +1,7 @@ const { sequelize,OutputActiveAndClosedLoans,OutSanctionAmt_P,OutSanctionAmt_C,OutEnquiryAmountP,OutEnquiryAmountC} = require('../models') const { logMsg } = require('../services/logger.js'); - +// landing page list of all pan number and reference number from commercial & consumer against losid exports.LandingPageDetailsList =async (req, res) => { try @@ -48,15 +48,11 @@ exports.ActiveAndClosedLoansDetailsList =async (req, res) => - - - - exports.SanctionAmtAndReplaceOfDeptDetailsList =async (req, res) => { try { - SanctionAmtData = await OutSanctionAmt_P.findOne({where:{losid:req.query.losid} , include: [ {model: OutSanctionAmt_C , attributes: ["months_range"], group: "months_range" }]}); + SanctionAmtData = await OutSanctionAmt_P.findOne({where:{losid:req.query.losid,ref_no:req.query.ref_no} , include: [ {model: OutSanctionAmt_C , attributes: ["months_range"], group: "months_range" }]}); if(SanctionAmtData && SanctionAmtData.OutSanctionAmt_Cs.length != 0) { var select_items = ""; @@ -76,7 +72,7 @@ exports.SanctionAmtAndReplaceOfDeptDetailsList =async (req, res) => }); var query = "Select a.id,a.facility_type,a.total "+select_items+" FROM out_sanction_amt_and_replacement_of_debt_p a "+sub_query+" WHERE a.losid = '"+req.query.losid+"' and ref_no = '"+req.query.ref_no+"'"; - + console.log(query); sequelize.query(query).then(async(data) => { SanctionData = {monthRange : monthRangeArray ,SanctionAmountData : data}; res.send({'status':200 , message:"Success." ,'data':SanctionData}); @@ -101,7 +97,7 @@ exports.EnquirySummaryDetailsList =async (req, res) => { try { - EnquiryAmtData = await OutEnquiryAmountP.findOne({where:{losid:req.query.losid} , include: [ {model: OutEnquiryAmountC , attributes: ["months_range"], group: "months_range" }]}); + EnquiryAmtData = await OutEnquiryAmountP.findOne({where:{losid:req.query.losid,ref_no:req.query.ref_no} , include: [ {model: OutEnquiryAmountC , attributes: ["months_range"], group: "months_range" }]}); if(EnquiryAmtData && EnquiryAmtData.OutEnquiryAmountCs.length != 0) { @@ -165,3 +161,142 @@ exports.SummaryViewOfCreditFacilities =async (req, res) => }; + + +// consolidated api's + +exports.ConsolidatedActiveAndClosedLoansDetailsList =async (req, res) => +{ + try + { + LoanData = await OutputActiveAndClosedLoans.findAll({raw : true , where:{losid:req.query.losid}}); + if(LoanData.length != 0) + { + res.send({'status':200 , message:"Success." ,'data': LoanData}); + } + else{ + 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 + +}; + + + +exports.ConsolidatedSanctionAmtAndReplaceOfDeptDetailsList =async (req, res) => +{ + try + { + SanctionAmtData = await OutSanctionAmt_P.findOne({where:{losid:req.query.losid} , include: [ {model: OutSanctionAmt_C , attributes: ["months_range"], group: "months_range" }]}); + if(SanctionAmtData && SanctionAmtData.OutSanctionAmt_Cs.length != 0) + { + var select_items = ""; + var sub_query = ""; + const words = ['','one','two','three','four', 'five','six','seven','eight','nine','ten']; + monthRangeArray = []; + SanctionAmtData.OutSanctionAmt_Cs.forEach((value,index) => { + monthRange = value.dataValues.months_range; + monthRange_aliseName = monthRange.replace(/[->]/g , '_'); + obj = { "key" : monthRange_aliseName , "name" : monthRange} + monthRangeArray.push(obj); + key_addition = index + 1; + alisename = words[key_addition]; + select_items += ",SUM("+alisename+".amt) as amt_"+monthRange_aliseName+",SUM("+alisename+".count) as count_"+monthRange_aliseName+",SUM("+alisename+".opening_amt) as opening_amt_"+monthRange_aliseName+",SUM("+alisename+".opening_count) as opening_count_"+monthRange_aliseName+",SUM("+alisename+".closing_amt) as closing_amt_"+monthRange_aliseName+",SUM("+alisename+".closing_count) as closing_count_"+monthRange_aliseName+" "; + sub_query += " JOIN ( SELECT sanction_amt_id,months_range,amt,count,opening_amt,opening_count,closing_amt,closing_count FROM out_sanction_amt_and_replacement_of_debt_c where months_range= '"+monthRange+"' group by sanction_amt_id,months_range,amt,count,opening_amt,opening_count,closing_amt,closing_count) "+alisename+" ON a.id = "+alisename+".sanction_amt_id"; + + }); + + var query = "Select a.facility_type,SUM(a.total) as total "+select_items+" FROM out_sanction_amt_and_replacement_of_debt_p a "+sub_query+" WHERE a.losid = '"+req.query.losid+"' group by a.facility_type,a.total"; + + sequelize.query(query).then(async(data) => { + SanctionData = {monthRange : monthRangeArray ,SanctionAmountData : data}; + res.send({'status':200 , message:"Success." ,'data':SanctionData}); + }).catch(err=>{ logMsg.info(err); res.send({'status':400 , message: "Failed" ,'data': "Nodata"}); }) + } + else + { + 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 + +}; + + + +exports.ConsolidatedEnquirySummaryDetailsList =async (req, res) => +{ + try + { + EnquiryAmtData = await OutEnquiryAmountP.findOne({where:{losid:req.query.losid} , include: [ {model: OutEnquiryAmountC , attributes: ["months_range"], group: "months_range" }]}); + + if(EnquiryAmtData && EnquiryAmtData.OutEnquiryAmountCs.length != 0) + { + var select_items = ""; + var sub_query = ""; + const words = ['','one','two','three','four', 'five','six','seven','eight','nine','ten']; + monthRangeArray = []; + EnquiryAmtData.OutEnquiryAmountCs.forEach((value,index) => { + monthRange = value.dataValues.months_range; + monthRange_aliseName = monthRange.replace(/[->]/g , '_'); + obj = { "key" : monthRange_aliseName , "name" : monthRange} + monthRangeArray.push(obj); + key_addition = index + 1; + alisename = words[key_addition]; + select_items += ",SUM("+alisename+".amt) as amt_"+monthRange_aliseName+",SUM("+alisename+".count) as count_"+monthRange_aliseName+" "; + sub_query += " JOIN ( SELECT enquiry_amount_id,months_range,amt,count FROM out_enquiry_amount_c where months_range= '"+monthRange+"' group by enquiry_amount_id,months_range,amt,count) "+alisename+" ON a.id = "+alisename+".enquiry_amount_id"; + + }); + + var query = "Select a.facility_type,SUM(a.total) as total "+select_items+" FROM out_enquity_amount_p a "+sub_query+" WHERE a.losid = '"+req.query.losid+"' group by a.facility_type,a.total "; + + sequelize.query(query).then(async(data) => { + EnquiryData = {monthRange : monthRangeArray ,EnquiryAmountData : data}; + res.send({'status':200 , message:"Success." ,'data':EnquiryData}); + }).catch(err=>{ res.send({'status':400 , message: "Failed" ,'data': "Nodata"}); }) + } + else + { + 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 + +}; + + +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) => { + + 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 + +}; \ No newline at end of file diff --git a/app/routes/routes.js b/app/routes/routes.js index e4305fd..a9055b5 100644 --- a/app/routes/routes.js +++ b/app/routes/routes.js @@ -133,6 +133,91 @@ router.get("/enquirySummaryDetailsList", Cibilcontroller.EnquirySummaryDetailsLi + + /** +* @swagger +* /api/consolidatedActiveAndClosedLoansDetailsList: +* get: +* summary: consolidated loan Details List +* description: Get active & closed loans Data +* parameters: +* - in: query +* name: losid +* schema: +* type: string +* required: true +* example: MW112233 +* responses: +* 200: +* description: success +*/ + router.get("/consolidatedActiveAndClosedLoansDetailsList", Cibilcontroller.ConsolidatedActiveAndClosedLoansDetailsList); + + + + +/** +* @swagger +* /api/consolidatedSanctionAmtAndReplaceOfDeptDetailsList: +* get: +* summary: consolidated sanction Amt And Replace Of Dept Details List +* description: +* parameters: +* - in: query +* name: losid +* schema: +* type: string +* required: true +* example: MW112233 +* responses: +* 200: +* description: success +*/ +router.get("/consolidatedSanctionAmtAndReplaceOfDeptDetailsList", Cibilcontroller.ConsolidatedSanctionAmtAndReplaceOfDeptDetailsList); + + + + +/** +* @swagger +* /api/consolidatedEnquirySummaryDetailsList: +* get: +* summary: consolidated Enquiry Summary Details +* description: +* parameters: +* - in: query +* name: losid +* schema: +* type: string +* required: true +* example: MW112233 +* responses: +* 200: +* description: success +*/ +router.get("/consolidatedEnquirySummaryDetailsList", Cibilcontroller.ConsolidatedEnquirySummaryDetailsList); + + +/** +* @swagger +* /api/consolidatedSummaryViewOfCreditFacilities: +* get: +* summary: consolidated Summary View Of Credit Facilities +* description: +* parameters: +* - in: query +* name: losid +* schema: +* type: string +* required: true +* example: MW112233 +* responses: +* 200: +* description: success +*/ +router.get("/consolidatedSummaryViewOfCreditFacilities", Cibilcontroller.ConsolidatedSummaryViewOfCreditFacilities); + + // routes started here app.use('/api', router); };