diff --git a/app/controllers/credit.policy.controller.js b/app/controllers/credit.policy.controller.js index 1dd02f2..8009c56 100644 --- a/app/controllers/credit.policy.controller.js +++ b/app/controllers/credit.policy.controller.js @@ -1,76 +1,674 @@ -const { sequelize,Test , AdjustableTang , PolicyParameterMaster , Authorization } = require('../models') +const { sequelize,Test , AdjustableTang , PolicyParameterMaster , Authorization ,DoubleWhammy,DscrLeverageGrid,LeverageUsedForEligCat,ProgramMaster,CheckTypeMaster,PropertyTypeMaster,BusinessActivityMaster} = require('../models') const { logMsg } = require('../services/logger.js'); const policyHelper = require('../services/policy.helper'); - // select PolicyParameterMaster data - exports.ParameterMasterData = async (req, res) => + + + exports.MasterDataList = async (req, res) => + { + try { - try + + ProgramMasterData = await ProgramMaster.findAll({attributes:['id','program_name'],where:{is_active:1}}); + CheckTypeMasterData = await CheckTypeMaster.findAll({attributes:['id','check_type'],where:{is_active:1}}); + PropertyTypeMasterData = await PropertyTypeMaster.findAll({attributes:['id','property_type'],where:{is_active:1}}); + BusinessActivityMasterData = await BusinessActivityMaster.findAll({attributes:['id','business_activity_name'],where:{is_active:1}}); + const resData = {ProgramMaster:ProgramMasterData,CheckTypeMaster:CheckTypeMasterData,PropertyTypeMaster:PropertyTypeMasterData,BusinessActivityMaster:BusinessActivityMasterData}; + + res.send({'status':200,'message':"success",'data':resData}); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + + }; + + + exports.createProgramData = async (req, res) => + { + try + { + + + ProgramMaster.create(req.body) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + + }; + + exports.updateProgramData = async (req, res) => +{ + try + { + reqData = req.body; + id = reqData.id; + delete reqData.id; + + ProgramMaster.update(reqData,{ where: { id: id }}) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + +}; + + + + +exports.createCheckTypeData = async (req, res) => +{ + try + { + + + CheckTypeMaster.create(req.body) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + +}; + +exports.updateCheckTypeData = async (req, res) => +{ + try + { + reqData = req.body; + id = reqData.id; + delete reqData.id; + + CheckTypeMaster.update(reqData,{ where: { id: id }}) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + +}; + + + +exports.createPropertyTypeData = async (req, res) => +{ + try + { + + + PropertyTypeMaster.create(req.body) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + +}; + +exports.updatePropertyTypeData = async (req, res) => +{ + try + { + reqData = req.body; + id = reqData.id; + delete reqData.id; + + PropertyTypeMaster.update(reqData,{ where: { id: id }}) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + +}; + + + +exports.createBusinessActivityData = async (req, res) => +{ + try + { + + + BusinessActivityMaster.create(req.body) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + +}; + +exports.updateBusinessActivityData = async (req, res) => +{ + try + { + reqData = req.body; + id = reqData.id; + delete reqData.id; + + BusinessActivityMaster.update(reqData,{ where: { id: id }}) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + +}; + + + + +// select PolicyParameterMaster data +exports.PolicyMasterData = async (req, res) => +{ + try + { + sequelize.query('SELECT section_master.section , policy_parameter_master.parameter , policy_parameter_master.rules , policy_parameter_master.master_key , policy_parameter_master.data , policy_parameter_master.json FROM policy_parameter_master JOIN section_master ON policy_parameter_master.section_id = section_master.id and section_master.is_active = 1 where policy_parameter_master.is_active = 1 ') + .then(data => { - sequelize.query('SELECT section_master.section , policy_parameter_master.parameter , policy_parameter_master.rules , policy_parameter_master.master_key , policy_parameter_master.data , policy_parameter_master.json FROM policy_parameter_master JOIN section_master ON policy_parameter_master.section_id = section_master.id and section_master.is_active = 1 where policy_parameter_master.is_active = 1 ') - .then(data => - { res.send({'status':200,'message':"success",'data':data}); logMsg.info("Master Data List api call Success"); - }) - .catch(err => { - res.send({'status':404, - message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); - }); + }) + .catch(err => { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); + }); - } catch(err) { - res.send({'status':404, - message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" - }); - } //end of try catch + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch - }; +}; - // select AdjustableTang data - exports.AdjustableTang = async (req, res) => +exports.createPolicyMasterData = async (req, res) => +{ + try { - try - { - AdjustableTang.findAll({ where : { is_active : 1}}).then(data => - { - res.send({'status':200,'message':"success",'data':data}); - logMsg.info("Master Data List api call Success"); - }) - .catch(err => { - res.send({'status':404, - message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); - }); + reqData = req.body; + if(reqData.json == 1) + { + PolicyData = { } + }else { PolicyData = reqData } + + PolicyParameterMaster.create(PolicyData) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); - } catch(err) { - res.send({'status':404, - message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" - }); - } //end of try catch + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch - }; +}; + + + +exports.updatePolicyMasterData = async (req, res) => +{ + try + { + reqData = req.body; + id = reqData.id; + delete reqData.id; + if(reqData.json == 1) + { + PolicyData = { } + }else { PolicyData = reqData } + + PolicyParameterMaster.update(PolicyData,{ where: { id: id }}) + .then(data => { res.send({'status':200,'message':"success",'data':data}); }) + .catch(err => { res.send({'status':404,message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + +}; - // select TokenApi data - exports.TokenApi = async (req, res) => + // select DoubleWhammy data + exports.DoubleWhammyDataList = async (req, res) => + { + try + { + DoubleWhammy.findAll({raw:true, include:[{ model: ProgramMaster,attributes:['program_name'] },{ model: CheckTypeMaster,attributes:['check_type'] },{ model: PropertyTypeMaster,attributes:['property_type'] }] }) + .then(data => + { + res.send({'status':200,'message':"success",'data':data}); + logMsg.info("Master Data List api call Success"); + }) + .catch(err => { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); + }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + + }; + exports.createDoubleWhammy = async (req, res) => + { + try + { + + DoubleWhammyData = req.body; + for(const DoubleWhammyDataValue of DoubleWhammyData) + { + + await DoubleWhammy.create(DoubleWhammyDataValue) + .then(async(data) =>{ + logMsg.info("create Success DoubleWhammy , id = "+id); + + }).catch(err=>{ logMsg.info("create Failed DoubleWhammy , id = "+id); }); + + } + setTimeout(() => { + res.send({'status':200,'message':"success",'data':"No data"}); + }, 1500); + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while updating BankCredits." ,'data': "No data" }); + } //end of try catch + + }; + exports.updateDoubleWhammy = async (req, res) => + { + try + { + // Multiple update + DoubleWhammyData = req.body; + for(const DoubleWhammyDataValue of DoubleWhammyData) + { + id = DoubleWhammyDataValue.id; + delete DoubleWhammyDataValue.id; + await DoubleWhammy.update(DoubleWhammyDataValue,{ where: { id: id }}) + .then(async(data) =>{ + logMsg.info("Update Success DoubleWhammy , id = "+id); + + }).catch(err=>{ logMsg.info("Update Failed DoubleWhammy , id = "+id); }); + + } + setTimeout(() => { + res.send({'status':200,'message':"success",'data':"No data"}); + }, 1500); + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while updating BankCredits." ,'data': "No data" }); + } //end of try catch + + }; + + [{ + program:"Vanilla", + + child:[ + + [{"business_activity_name":"Retail Trader","leverage": "<=1","data":[]}, + {"business_activity_name":"Retail Trader","leverage": "<=2","data":[]}, + {"business_activity_name":"Retail Trader","leverage": "<=3","data":[]}, + {"business_activity_name":"Retail Trader","leverage": "<=4","data":[]}] , + + [{"business_activity_name":"Wholesale Trader","leverage": "<=1","data":[]}, + {"business_activity_name":"Wholesale Trader","leverage": "<=2","data":[]}, + {"business_activity_name":"Wholesale Trader","leverage": "<=3","data":[]}, + {"business_activity_name":"Wholesale Trader","leverage": "<=4","data":[]}] , + + [{"business_activity_name":"Manufacturer","leverage": "<=1","data":[]}, + {"business_activity_name":"Manufacturer","leverage": "<=2","data":[]}, + {"business_activity_name":"Manufacturer","leverage": "<=3","data":[]}, + {"business_activity_name":"Manufacturer","leverage": "<=4","data":[]}] , + + [{"business_activity_name":"Service Provider","leverage": "<=1","data":[]}, + {"business_activity_name":"Service Provider","leverage": "<=2","data":[]}, + {"business_activity_name":"Service Provider","leverage": "<=3","data":[]}, + {"business_activity_name":"Service Provider","leverage": "<=4","data":[]}] , + + ] +}] + + exports.DscrLeverageGridDataList = async (req, res) => + { + try + { + + VanillaArray = []; + OtherThenVanillaArray = []; + data = [ { program : "Vanilla" , child : VanillaArray } , { program : "OtherThenVanilla" , child : OtherThenVanillaArray}]; + + groupByData = await DscrLeverageGrid.findAll({attributes:['program_id','business_activity_id'],group: ["program_id","business_activity_id"] }); + for(const groupByDataValue of groupByData) + { + // if(groupByDataValue.program_id == 1 ) + // { + // VanillaData = await DscrLeverageGrid.findAll({raw:true,where:{program_id : 1 ,business_activity_id : groupByDataValue.business_activity_id }, include:[{ model: ProgramMaster,attributes:['program_name'] },{ model: BusinessActivityMaster,attributes:['business_activity_name'] }] }); + // VanillaArray.push(VanillaData); + // } + // else{ + // OtherThenVanillaData = await DscrLeverageGrid.findAll({raw:true,where:{program_id : 8,business_activity_id : groupByDataValue.business_activity_id}, include:[{ model: ProgramMaster,attributes:['program_name'] },{ model: BusinessActivityMaster,attributes:['business_activity_name'] }] }); + // OtherThenVanillaArray.push(OtherThenVanillaData); + // } + if(groupByDataValue.program_id == 1 ) { - try + leverageData = await DscrLeverageGrid.findAll({where:{program_id : 1 ,business_activity_id : groupByDataValue.business_activity_id }, attributes:['program_id','business_activity_id','leverage'],group: ["program_id","business_activity_id","leverage"]}); + leverageDataArray = []; + for(const leverageDataValue of leverageData) + { + VanillaData = await DscrLeverageGrid.findAll({raw:true,where:{program_id : 1 ,business_activity_id : leverageDataValue.business_activity_id , leverage : leverageDataValue.leverage }, include:[{ model: ProgramMaster,attributes:['program_name'] },{ model: BusinessActivityMaster,attributes:['business_activity_name'] }] }); + console.log(VanillaData[0]); + childObj = { data : VanillaData }; + obj = {...leverageDataValue.dataValues, ...childObj}; + leverageDataArray.push(obj); + } + VanillaArray.push(leverageDataArray); + } + else{ + leverageData = await DscrLeverageGrid.findAll({where:{program_id : 8 ,business_activity_id : groupByDataValue.business_activity_id }, attributes:['program_id','business_activity_id','leverage'],group: ["program_id","business_activity_id","leverage"]}); + leverageArray = []; + for(const leverageValue of leverageData) + { + OtherThenVanillaData = await DscrLeverageGrid.findAll({raw:true,where:{program_id : 8 ,business_activity_id : leverageValue.business_activity_id , leverage : leverageValue.leverage }, include:[{ model: ProgramMaster,attributes:['program_name'] },{ model: BusinessActivityMaster,attributes:['business_activity_name'] }] }); + childObj = { data : OtherThenVanillaData }; + obj = {...leverageValue.dataValues, ...childObj}; + leverageArray.push(obj); + } + OtherThenVanillaArray.push(leverageArray); + } + + } + + + res.send({'status':200,'message':"success",'data':data}); + + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + + }; + exports.createDscrLeverageGrid = async (req, res) => + { + try + { + + DscrLeverageGridData = req.body; + for(const DscrLeverageGridDataValue of DscrLeverageGridData) + { + + await DscrLeverageGrid.create(DscrLeverageGridDataValue) + .then(async(data) =>{ + logMsg.info("create Success DoubleWhammy , id = "+id); + + }).catch(err=>{ logMsg.info("create Failed DoubleWhammy , id = "+id); }); + + } + setTimeout(() => { + res.send({'status':200,'message':"success",'data':"No data"}); + }, 1500); + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while updating BankCredits." ,'data': "No data" }); + } //end of try catch + + }; + exports.updateDscrLeverageGrid = async (req, res) => + { + try + { + // Multiple update + DscrLeverageGridData = req.body; + for(const DscrLeverageGridDataValue of DscrLeverageGridData) + { + id = DscrLeverageGridDataValue.id; + delete DscrLeverageGridDataValue.id; + await DscrLeverageGrid.update(DscrLeverageGridDataValue,{ where: { id: id }}) + .then(async(data) =>{ + logMsg.info("Update Success DoubleWhammy , id = "+id); + + }).catch(err=>{ logMsg.info("Update Failed DoubleWhammy , id = "+id); }); + + } + setTimeout(() => { + res.send({'status':200,'message':"success",'data':"No data"}); + }, 1500); + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while updating BankCredits." ,'data': "No data" }); + } //end of try catch + + }; + + exports.LeverageUsedForEligCatDataList = async (req, res) => + { + try + { + + Vanilla = await LeverageUsedForEligCat.findAll({raw:true,where:{program_id : 1}, include:[{ model: ProgramMaster,attributes:['program_name'] },{ model: BusinessActivityMaster,attributes:['business_activity_name'] }] }) + OtherThenVanilla = await LeverageUsedForEligCat.findAll({raw:true,where:{program_id : 8}, include:[{ model: ProgramMaster,attributes:['program_name'] },{ model: BusinessActivityMaster,attributes:['business_activity_name'] }] }) + + data = {Vanilla : Vanilla , OtherThenVanilla : OtherThenVanilla}; + + res.send({'status':200,'message':"success",'data':data}); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + + }; + + exports.createLeverageUsedForEligCat = async (req, res) => + { + try + { + + LeverageUsedForEligCatData = req.body; + for(const LeverageUsedForEligCatValue of LeverageUsedForEligCatData) + { + + await LeverageUsedForEligCat.create(LeverageUsedForEligCatValue) + .then(async(data) =>{ + logMsg.info("create Success DoubleWhammy , id = "+id); + + }).catch(err=>{ logMsg.info("create Failed DoubleWhammy , id = "+id); }); + + } + setTimeout(() => { + res.send({'status':200,'message':"success",'data':"No data"}); + }, 1500); + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while updating BankCredits." ,'data': "No data" }); + } //end of try catch + + }; + exports.updateLeverageUsedForEligCat = async (req, res) => + { + try + { + // Multiple update + LeverageUsedForEligCatData = req.body; + for(const LeverageUsedForEligCatValue of LeverageUsedForEligCatData) + { + id = LeverageUsedForEligCatValue.id; + delete LeverageUsedForEligCatValue.id; + await LeverageUsedForEligCat.update(LeverageUsedForEligCatValue,{ where: { id: id }}) + .then(async(data) =>{ + logMsg.info("Update Success DoubleWhammy , id = "+id); + + }).catch(err=>{ logMsg.info("Update Failed DoubleWhammy , id = "+id); }); + + } + setTimeout(() => { + res.send({'status':200,'message':"success",'data':"No data"}); + }, 1500); + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while updating BankCredits." ,'data': "No data" }); + } //end of try catch + + }; + + + + +// select AdjustableTang data +exports.AdjustableTang = async (req, res) => +{ + try + { + AdjustableTang.findAll({ where : { is_active : 1}}).then(data => + { + res.send({'status':200,'message':"success",'data':data}); + logMsg.info("Master Data List api call Success"); + }) + .catch(err => { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); + }); + + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch + +}; + + + +exports.createAdjustableTang = async (req, res) => +{ + try + { + + AdjustableTangDataArray = req.body; + for(const AdjustableTangValue of AdjustableTangDataArray) + { + + await AdjustableTang.create(AdjustableTangValue) + .then(async(data) =>{ + logMsg.info("create Success DoubleWhammy , id = "+id); + + }).catch(err=>{ logMsg.info("create Failed DoubleWhammy , id = "+id); }); + + } + setTimeout(() => { + res.send({'status':200,'message':"success",'data':"No data"}); + }, 1500); + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while updating BankCredits." ,'data': "No data" }); + } //end of try catch + +}; +exports.updateAdjustableTang = async (req, res) => +{ + try + { + // Multiple update + AdjustableTangDataArray = req.body; + for(const AdjustableTangValue of AdjustableTangDataArray) + { + id = AdjustableTangValue.id; + delete AdjustableTangValue.id; + await AdjustableTang.update(AdjustableTangValue,{ where: { id: id }}) + .then(async(data) =>{ + logMsg.info("Update Success DoubleWhammy , id = "+id); + + }).catch(err=>{ logMsg.info("Update Failed DoubleWhammy , id = "+id); }); + + } + setTimeout(() => { + res.send({'status':200,'message':"success",'data':"No data"}); + }, 1500); + + } catch(err) { + res.send({'status':404,message: err.message || "Some error occurred while updating BankCredits." ,'data': "No data" }); + } //end of try catch + +}; + + + + + + + + + + + + + + + + + + + + +// select TokenApi data +exports.TokenApi = async (req, res) => +{ + try + { + Authorization.findOne({where : { is_active : 1}}).then(async(data) => + { + updated_date = new Date(data.updatedAt).toISOString().slice(0, 10); + current_date = new Date().toISOString().slice(0, 10); + if (updated_date == current_date ) { - Authorization.findOne({where : { is_active : 1}}).then(async(data) => - { - updated_date = new Date(data.updatedAt).toISOString().slice(0, 10); - current_date = new Date().toISOString().slice(0, 10); - if (updated_date == current_date ) - { res.send({'status':200,'message':"success",'data':data}); - } - else - { + } + else + { new_token = await policyHelper.NewToken(); await Authorization.update({token : new_token},{where : {id : 1}}) .catch(err=> {res.send({'status':404, @@ -78,20 +676,20 @@ const policyHelper = require('../services/policy.helper'); }) token_data = await Authorization.findOne({where : { is_active : 1}}) res.send({'status':200,'message':"success",'data':token_data}); - } - }) - .catch(err => { - res.send({'status':404, - message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); - }); + } + }) + .catch(err => { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" }); + }); - } catch(err) { - res.send({'status':404, - message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" - }); - } //end of try catch + } catch(err) { + res.send({'status':404, + message: err.message || "Some error occurred while fetching entity applicant masterdata." ,'data': "No data" + }); + } //end of try catch - }; +}; diff --git a/app/models/DoubleWhammy.js b/app/models/DoubleWhammy.js index aea5dfb..173859e 100644 --- a/app/models/DoubleWhammy.js +++ b/app/models/DoubleWhammy.js @@ -29,5 +29,25 @@ module.exports = (sequelize, DataTypes) => { modelName: 'DoubleWhammy', } ) + + + + DoubleWhammy.associate = models => { + DoubleWhammy.hasMany(models.ProgramMaster, { + foreignKey: 'id', + sourceKey : 'program_id' + }); + DoubleWhammy.hasMany(models.CheckTypeMaster, { + foreignKey: 'id', + sourceKey : 'check_type_id' + }); + DoubleWhammy.hasMany(models.PropertyTypeMaster, { + foreignKey: 'id', + sourceKey : 'property_type_id' + }); + + } + + return DoubleWhammy } diff --git a/app/models/DscrLeverageGrid.js b/app/models/DscrLeverageGrid.js index 1d7e915..a4d92fa 100644 --- a/app/models/DscrLeverageGrid.js +++ b/app/models/DscrLeverageGrid.js @@ -35,5 +35,19 @@ module.exports = (sequelize, DataTypes) => { modelName: 'DscrLeverageGrid', } ) + + + DscrLeverageGrid.associate = models => { + DscrLeverageGrid.hasMany(models.ProgramMaster, { + foreignKey: 'id', + sourceKey : 'program_id' + }); + DscrLeverageGrid.hasMany(models.BusinessActivityMaster, { + foreignKey: 'id', + sourceKey : 'business_activity_id' + }); + + + } return DscrLeverageGrid } diff --git a/app/models/LeverageUsedForEligCat.js b/app/models/LeverageUsedForEligCat.js index d3fdc0e..28b6641 100644 --- a/app/models/LeverageUsedForEligCat.js +++ b/app/models/LeverageUsedForEligCat.js @@ -32,5 +32,17 @@ module.exports = (sequelize, DataTypes) => { modelName: 'LeverageUsedForEligCat', } ) + LeverageUsedForEligCat.associate = models => { + LeverageUsedForEligCat.hasMany(models.ProgramMaster, { + foreignKey: 'id', + sourceKey : 'program_id' + }); + LeverageUsedForEligCat.hasMany(models.BusinessActivityMaster, { + foreignKey: 'id', + sourceKey : 'business_activity_id' + }); + + + } return LeverageUsedForEligCat } diff --git a/app/routes/routes.js b/app/routes/routes.js index 6f57e92..f05bcb9 100644 --- a/app/routes/routes.js +++ b/app/routes/routes.js @@ -7,26 +7,359 @@ module.exports = app => { var router = require("express").Router(); + + + +//Master Data select api /** * @swagger -* /api/demo: +* /api/MasterDataList: * get: -* summary: Demo Api -* description: Welcome Message +* summary: MasterData Api +* description: MasterData Api * responses: * 200: * description: success */ - router.get("/demo", Mycontroller.Welcome); +router.get("/MasterDataList", CreditPolicy.MasterDataList); - router.post("/update", Mycontroller.update); // Parameter MasterData select api +/** +* @swagger +* definitions: +* createProgramData: +* type: object +* properties: +* program_name: +* type: string +* description: +* example: test +* is_active: +* type: integer +* description: +* example: 1 +* createdby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/createProgramData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/createProgramData' +* responses: +* 200: +* description: create success +* 500: +* description: failure in create +*/ +router.post("/createProgramData", CreditPolicy.createProgramData); /** * @swagger -* /api/ParameterMasterData: +* definitions: +* updateProgramData: +* type: object +* properties: +* id: +* type: integer +* description: +* example: 1 +* program_name: +* type: string +* description: +* example: test +* is_active: +* type: integer +* description: +* example: 1 +* updatedby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/updateProgramData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/updateProgramData' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/updateProgramData", CreditPolicy.updateProgramData); + + + + +/** +* @swagger +* definitions: +* createCheckTypeData: +* type: object +* properties: +* check_type: +* type: string +* description: +* example: test +* is_active: +* type: integer +* description: +* example: 1 +* createdby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/createCheckTypeData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/createCheckTypeData' +* responses: +* 200: +* description: create success +* 500: +* description: failure in create +*/ +router.post("/createCheckTypeData", CreditPolicy.createCheckTypeData); + +/** +* @swagger +* definitions: +* updateCheckTypeData: +* type: object +* properties: +* id: +* type: integer +* description: +* example: 1 +* check_type: +* type: string +* description: +* example: test +* is_active: +* type: integer +* description: +* example: 1 +* updatedby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/updateCheckTypeData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/updateCheckTypeData' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/updateCheckTypeData", CreditPolicy.updateCheckTypeData); + + + +/** +* @swagger +* definitions: +* createPropertyTypeData: +* type: object +* properties: +* property_type: +* type: string +* description: +* example: test +* is_active: +* type: integer +* description: +* example: 1 +* createdby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/createPropertyTypeData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/createPropertyTypeData' +* responses: +* 200: +* description: create success +* 500: +* description: failure in create +*/ +router.post("/createPropertyTypeData", CreditPolicy.createPropertyTypeData); + +/** +* @swagger +* definitions: +* updatePropertyTypeData: +* type: object +* properties: +* id: +* type: integer +* description: +* example: 1 +* property_type: +* type: string +* description: +* example: test +* is_active: +* type: integer +* description: +* example: 1 +* updatedby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/updatePropertyTypeData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/updatePropertyTypeData' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/updatePropertyTypeData", CreditPolicy.updatePropertyTypeData); + + + + +/** +* @swagger +* definitions: +* createBusinessActivityData: +* type: object +* properties: +* business_activity_name: +* type: string +* description: +* example: test +* is_active: +* type: integer +* description: +* example: 1 +* createdby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/createBusinessActivityData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/createBusinessActivityData' +* responses: +* 200: +* description: create success +* 500: +* description: failure in create +*/ +router.post("/createBusinessActivityData", CreditPolicy.createBusinessActivityData); + +/** +* @swagger +* definitions: +* updateBusinessActivityData: +* type: object +* properties: +* id: +* type: integer +* description: +* example: 1 +* business_activity_name: +* type: string +* description: +* example: test +* is_active: +* type: integer +* description: +* example: 1 +* updatedby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/updateBusinessActivityData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/updateBusinessActivityData' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/updateBusinessActivityData", CreditPolicy.updateBusinessActivityData); + + + +// Parameter Master Data select api +/** +* @swagger +* /api/PolicyMasterData: * get: * summary: check Parameter MasterData Api * description: check Parameter MasterData Api @@ -34,10 +367,49 @@ module.exports = app => { * 200: * description: success */ -router.get("/ParameterMasterData", CreditPolicy.ParameterMasterData); +router.get("/PolicyMasterData", CreditPolicy.PolicyMasterData); - // Parameter MasterData select api +// DoubleWhammy Data List +/** +* @swagger +* /api/DoubleWhammyDataList: +* get: +* summary: DoubleWhammyDataList Api +* description: +* responses: +* 200: +* description: success +*/ +router.get("/DoubleWhammyDataList", CreditPolicy.DoubleWhammyDataList); + +// DscrLeverageGrid Data List +/** +* @swagger +* /api/DscrLeverageGridDataList: +* get: +* summary: DscrLeverageGridDataList Api +* description: +* responses: +* 200: +* description: success +*/ +router.get("/DscrLeverageGridDataList", CreditPolicy.DscrLeverageGridDataList); + + +// LeverageUsedForEligCat Data List +/** +* @swagger +* /api/LeverageUsedForEligCatDataList: +* get: +* summary: LeverageUsedForEligCatDataList Api +* description: +* responses: +* 200: +* description: success +*/ +router.get("/LeverageUsedForEligCatDataList", CreditPolicy.LeverageUsedForEligCatDataList); + /** * @swagger @@ -52,7 +424,682 @@ router.get("/ParameterMasterData", CreditPolicy.ParameterMasterData); router.get("/AdjustableTang", CreditPolicy.AdjustableTang); - // TokenApi + + + + + +/** +* @swagger +* definitions: +* createPolicyMasterData: +* type: array +* items: +* type: object +* properties: +* section_id: +* type: integer +* description: +* example: 1 +* parameter: +* type: string +* description: +* example: test +* rules: +* type: json +* description: +* example: "{key : value } or value" +* data: +* type: integer +* description: +* example: 0 +* json: +* type: integer +* description: +* example: 1 +* is_active: +* type: integer +* description: +* example: 1 +* createdby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/createPolicyMasterData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/createPolicyMasterData' +* responses: +* 200: +* description: create success +* 500: +* description: failure in create +*/ +router.post("/createPolicyMasterData", CreditPolicy.createPolicyMasterData); + + + +/** +* @swagger +* definitions: +* updatePolicyMasterData: +* type: array +* items: +* type: object +* properties: +* id: +* type: integer +* description: +* example: 00 +* section_id: +* type: integer +* description: +* example: 1 +* parameter: +* type: string +* description: +* example: test +* rules: +* type: json +* description: +* example: "{key : value } or value" +* data: +* type: integer +* description: +* example: 0 +* json: +* type: integer +* description: +* example: 1 +* is_active: +* type: integer +* description: +* example: 1 +* updatedby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/updatePolicyMasterData: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/updatePolicyMasterData' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/updatePolicyMasterData", CreditPolicy.updatePolicyMasterData); + + +/** +* @swagger +* definitions: +* createDoubleWhammy: +* type: array +* items: +* type: object +* properties: +* program_id: +* type: integer +* description: +* example: 1 +* check_type_id: +* type: integer +* description: +* example: 1 +* property_type_id: +* type: integer +* description: +* example: 1 +* property_usage: +* type: string +* description: +* example: Self Occupied +* eligibility_factor_1: +* type: string +* description: +* example: 125 +* eligibility_factor_2: +* type: string +* description: +* example: 133 +* eligibility_factor_3: +* type: string +* description: +* example: 143 +* eligibility_factor_4: +* type: string +* description: +* example: 154 +* eligibility_factor_5: +* type: string +* description: +* example: 167 +* result: +* type: string +* description: +* example: Applicable +* is_active: +* type: integer +* description: +* example: 1 +* createdby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/createDoubleWhammy: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/createDoubleWhammy' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/createDoubleWhammy", CreditPolicy.createDoubleWhammy); + + + +/** +* @swagger +* definitions: +* updateDoubleWhammy: +* type: array +* items: +* type: object +* properties: +* id: +* type: integer +* description: +* example: 50 +* program_id: +* type: integer +* description: +* example: 1 +* check_type_id: +* type: integer +* description: +* example: 1 +* property_type_id: +* type: integer +* description: +* example: 1 +* property_usage: +* type: string +* description: +* example: Self Occupied +* eligibility_factor_1: +* type: string +* description: +* example: 125 +* eligibility_factor_2: +* type: string +* description: +* example: 133 +* eligibility_factor_3: +* type: string +* description: +* example: 143 +* eligibility_factor_4: +* type: string +* description: +* example: 154 +* eligibility_factor_5: +* type: string +* description: +* example: 167 +* result: +* type: string +* description: +* example: Applicable +* is_active: +* type: integer +* description: +* example: 1 +* updatedby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/updateDoubleWhammy: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/updateDoubleWhammy' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/updateDoubleWhammy", CreditPolicy.updateDoubleWhammy); + +/** +* @swagger +* definitions: +* createDscrLeverageGrid: +* type: array +* items: +* type: object +* properties: +* program_id: +* type: integer +* description: +* example: 1 +* business_activity_id: +* type: integer +* description: +* example: 1 +* leverage: +* type: string +* description: +* example: "<=3" +* dscr_min: +* type: string +* description: +* example: ">=0.95" +* dscr_max: +* type: string +* description: +* example: null +* result: +* type: string +* description: +* example: No Deviation +* is_active: +* type: integer +* description: +* example: 1 +* createdby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/createDscrLeverageGrid: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/createDscrLeverageGrid' +* responses: +* 200: +* description: create success +* 500: +* description: failure in create +*/ +router.post("/createDscrLeverageGrid", CreditPolicy.createDscrLeverageGrid); + + +/** +* @swagger +* definitions: +* updateDscrLeverageGrid: +* type: array +* items: +* type: object +* properties: +* id: +* type: integer +* description: +* example: 1 +* program_id: +* type: integer +* description: +* example: 1 +* business_activity_id: +* type: integer +* description: +* example: 1 +* leverage: +* type: string +* description: +* example: "<=3" +* dscr_min: +* type: string +* description: +* example: ">=0.95" +* dscr_max: +* type: string +* description: +* example: null +* result: +* type: string +* description: +* example: No Deviation +* is_active: +* type: integer +* description: +* example: 1 +* updatedby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/updateDscrLeverageGrid: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/updateDscrLeverageGrid' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/updateDscrLeverageGrid", CreditPolicy.updateDscrLeverageGrid); + +/** +* @swagger +* definitions: +* createLeverageUsedForEligCat: +* type: array +* items: +* type: object +* properties: +* program_id: +* type: integer +* description: +* example: 1 +* business_activity_id: +* type: integer +* description: +* example: 1 +* leverage_value: +* type: integer +* description: +* example: 8 +* is_active: +* type: integer +* description: +* example: 1 +* createdby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/createLeverageUsedForEligCat: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/createLeverageUsedForEligCat' +* responses: +* 200: +* description: create success +* 500: +* description: failure in create +*/ +router.post("/createLeverageUsedForEligCat", CreditPolicy.createLeverageUsedForEligCat); +/** +* @swagger +* definitions: +* updateLeverageUsedForEligCat: +* type: array +* items: +* type: object +* properties: +* id: +* type: integer +* description: +* example: 1 +* program_id: +* type: integer +* description: +* example: 1 +* business_activity_id: +* type: integer +* description: +* example: 1 +* leverage_value: +* type: integer +* description: +* example: 8 +* is_active: +* type: integer +* description: +* example: 1 +* updatedby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/updateLeverageUsedForEligCat: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/updateLeverageUsedForEligCat' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/updateLeverageUsedForEligCat", CreditPolicy.updateLeverageUsedForEligCat); + +/** +* @swagger +* definitions: +* createAdjustableTang: +* type: array +* items: +* type: object +* properties: +* property_ownership_document_available: +* type: string +* description: +* example: "Yes" +* type_of_property: +* type: string +* description: +* example: "Residential" +* property_used_in_business: +* type: string +* description: +* example: "Yes" +* property_free_loan_taken: +* type: string +* description: +* example: "No Loan on Property - Property Not on BS" +* property_in_the_name_of_applicant: +* type: string +* description: +* example: "Yes" +* loan_obligated_in_cet: +* type: string +* description: +* example: "Yes" +* property_created_in_last_eight_yr: +* type: string +* description: +* example: "Yes" +* value_to_be_considered: +* type: string +* description: +* example: "market_valuation_rs" +* mv_to_be_added_to_atnw: +* type: integer +* description: +* example: 100 +* final_value_considered: +* type: string +* description: +* example: "(value_to_be_considered * mv_to_be_added_to_atnw )" +* is_active: +* type: integer +* description: +* example: 1 +* createdby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/createAdjustableTang: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/createAdjustableTang' +* responses: +* 200: +* description: create success +* 500: +* description: failure in create +*/ +router.post("/createAdjustableTang", CreditPolicy.createAdjustableTang); +/** +* @swagger +* definitions: +* updateAdjustableTang: +* type: array +* items: +* type: object +* properties: +* id: +* type: integer +* description: +* example: 806 +* property_ownership_document_available: +* type: string +* description: +* example: "Yes" +* type_of_property: +* type: string +* description: +* example: "Residential" +* property_used_in_business: +* type: string +* description: +* example: "Yes" +* property_free_loan_taken: +* type: string +* description: +* example: "No Loan on Property - Property Not on BS" +* property_in_the_name_of_applicant: +* type: string +* description: +* example: "Yes" +* loan_obligated_in_cet: +* type: string +* description: +* example: "Yes" +* property_created_in_last_eight_yr: +* type: string +* description: +* example: "Yes" +* value_to_be_considered: +* type: string +* description: +* example: "market_valuation_rs" +* mv_to_be_added_to_atnw: +* type: integer +* description: +* example: 100 +* final_value_considered: +* type: string +* description: +* example: "(value_to_be_considered * mv_to_be_added_to_atnw )" +* is_active: +* type: integer +* description: +* example: 1 +* updatedby: +* type: integer +* description: +* example: 1 +*/ +/** +* @swagger +* /api/updateAdjustableTang: +* post: +* summary: +* description: +* requestBody: +* content: +* application/json: +* schema: +* $ref: '#/definitions/updateAdjustableTang' +* responses: +* 200: +* description: update success +* 500: +* description: failure in update +*/ +router.post("/updateAdjustableTang", CreditPolicy.updateAdjustableTang); + + + + + + + + + + + + + + + +// TokenApi /** * @swagger diff --git a/package-lock.json b/package-lock.json index 5742fb7..d6d256b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "smc_cet_creditpd_backend", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, "packages": { "": { @@ -8058,8 +8058,7 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "devOptional": true + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { "version": "0.1.4", @@ -8193,7 +8192,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "devOptional": true, "requires": { "once": "^1.4.0" } @@ -9396,8 +9394,7 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "devOptional": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "mkdirp": { "version": "1.0.4", @@ -10172,7 +10169,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "devOptional": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -10220,7 +10216,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "devOptional": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -10686,14 +10681,6 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -10705,6 +10692,14 @@ "strip-ansi": "^3.0.0" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -10717,8 +10712,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "devOptional": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "supports-color": { "version": "5.5.0",