Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** @module ProposalCalculations */
- const LAMBDA_NAME = 'loanpal-getMonthlyPayments'
- const LambdaHelper = require('./LambdaHelperV2.js')
- const fs = require('fs')
- const request = require('request')
- exports.handler = async (event, context) => {
- const originalEvent = JSON.parse(JSON.stringify(event))
- try {
- LambdaHelper.validateEvent(event, ['body', 'alias', 'api_base_url', 'api_environment', 'api_version'])
- LambdaHelper.validateEvent(event.body, ['fundSetup', 'fund'])
- LambdaHelper.validateEvent(event.body.fundSetup, ['Term_In_Months__c', 'Interest_Rate__c'])
- LambdaHelper.validateEvent(event.body.fund, ['System_Price__c'])
- let loanpalResults = await getMonthlyPayments(event)
- let monthlyPayments = analyzeLoanpalResults(loanpalResults)
- if (event.responseType == 'file') {
- await new Promise(function(resolve, reject){
- fs.writeFile('myjsonfile.json', JSON.stringify(monthlyPayments, null, 4), function(err) {
- if (err) {
- reject(err)
- } else {
- resolve('Saved JSON')
- }
- })
- })
- } else {
- return LambdaHelper.formatResponseData(null, originalEvent, monthlyPayments, LAMBDA_NAME)
- }
- } catch (error) {
- return LambdaHelper.formatResponseData(error, originalEvent, null, LAMBDA_NAME)
- }
- }
- /**********************************************************************************************
- * @description Calls out to genability for the reduced usage savings
- * @param {JSON} event - event passed in
- * @param {JSON} proposalCalculationData - main proposal data
- * @return {JSON} response from genability-reducedUsageSavings lamba function
- ***********************************************************************************************/
- async function getMonthlyPayments(event) {
- let termInYears = parseInt(event.body.fundSetup.Term_In_Months__c) / 12,
- systemPrice = parseInt(event.body.fund.System_Price__c),
- netSystemPrice = systemPrice - (event.body.fund.Down_Payment__c != null ? parseFloat(event.body.fund.Down_Payment__c) : 0)
- let urlParamDict = {
- loanAmount: netSystemPrice,
- term: termInYears,
- rate: event.body.fundSetup.Interest_Rate__c
- }
- let urlParams = []
- for (let param of Object.keys(urlParamDict)) {
- if (urlParamDict.hasOwnProperty(param)) {
- urlParams.push(param + '=' + urlParamDict[param])
- }
- }
- let options = {
- url: 'https://' + event.api_base_url + event.api_environment + event.api_version + '/loanCalc?' + urlParams.join('&') + '&baseItcPct=0.26',
- method: 'GET'
- }
- return new Promise(function(resolve, reject) {
- request(options, function (error, response, body) {
- if (error){
- reject(error)
- } else {
- resolve(JSON.parse(body))
- }
- })
- })
- }
- function analyzeLoanpalResults(loanpalResults) {
- return {
- fund: {
- Monthly_Payment_1__c: parseFloat(loanpalResults[0].initialMonthlyPayment.replace("$", '').replace(/,/g, '')),
- No_Paydown_Payment__c: parseFloat(loanpalResults[0].adjustedMonthlyPayment.replace("$", '').replace(/,/g, '')),
- Monthly_Payment_2__c: parseFloat(loanpalResults[1].adjustedMonthlyPayment.replace("$", '').replace(/,/g, ''))
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment