UNPKG

client-ui

Version:

Testing implementation of nodeJs Backend, angular frontend, and hopefully in a way that this can be deployed to s3/cloudfront

174 lines (156 loc) 7.06 kB
/* global angular moduleName */ (function () { "use strict"; angular.module(moduleName).controller("loanOptionsController", loanOptionsController); loanOptionsController.$inject = ["loan", "$state", "$stateParams", "errorHandler", '$filter', "$scope"]; function loanOptionsController(loan, $state, $stateParams, errorHandler, $filter, $scope) { var self = this; self.working = false; self.true = true; // :) self.init = function () { self.errorMessage = ""; self.selectedLoanOffer; self.selectedMethod; self.selectedIndex = 0; self.selectedOfferUnavailable = $stateParams.selectedOfferUnavailable; loan.getLoanOptions() .then(function (loanObject) { self.loan = loan.getCurrentLoan(); var loanOffers = loanObject.loanOfferData.offers; var durationSort = $filter('orderObjectBy')(loanOffers, 'duration'); self.loanOffers = $filter('orderBy')(durationSort, 'amount', false); self.totalOffers = self.loanOffers.length; self.setSpecialOffers(); self.checkCounterOffer(); }, function (error) { loan.getDenialReasons() .then(function (reasons) { errorHandler.checkSorry(reasons, function () { $state.go("sorry"); }); }, function (denialError) { $state.go("sorry"); }); }); }; self.setSpecialOffers = function () { if (self.totalOffers > 0) { self.maxLoan = self.loanOffers[self.totalOffers - 1]; self.highestOfferAmount = self.maxLoan.amount; var lowestPaymentLoanFilterArray = $filter('filter')(self.loanOffers, { amount: self.loan.requestedAmount, duration: 60 }, true); if (lowestPaymentLoanFilterArray) { self.lowestPaymentLoan = lowestPaymentLoanFilterArray[0]; } var shortestPayoffLoanFilterArray = $filter('filter')(self.loanOffers, { amount: self.loan.requestedAmount, duration: 36 }, true); if (shortestPayoffLoanFilterArray) { self.shortestPayoffLoan = shortestPayoffLoanFilterArray[0]; } } }; self.checkCounterOffer = function () { if ((self.loan.denialReasons && self.loan.denialReasons[0] === 'REQUESTED_AMOUNT_UNAVAILABLE') || (self.loan.denialReasons && self.loan.denialReasons[0] === 'SELECTED_OFFER_UNAVAILABLE') || self.selectedOfferUnavailable) { self.counterOffer = true; } }; self.chooseLoanOffer = function (id) { self.selectedLoanId = id; self.working = true; loan.chooseLoanOffer(self.selectedLoanId) .then(function (loanData) { self.working = false; $state.go(loan.getNextStep()); }, function (error) { self.handleError("There was an error selecting your loan offer."); }); }; self.getNextStep = function () { $state.go(loan.getNextStep()); }; self.isSelectedOffer = function (loanOffer) { if (self.selectedLoanId) { return self.selectedLoanId === loanOffer.id; } else if (self.loan.selectedOffer) { return loanOffer.amount === self.loan.selectedOffer.amount && loanOffer.duration === self.loan.selectedOffer.duration; } }; self.specialOfferText = function (loanOfferId) { // lowest payment requested if (self.lowestPaymentLoan && self.lowestPaymentLoan.id) { var lowestPaymentId = self.lowestPaymentLoan.id; } if (loanOfferId === lowestPaymentId) { return 'The lowest monthly payment for the amount you asked for'; } // lowest payment max if (loanOfferId === self.maxLoan.id) { return 'The lowest monthly payment for the most you can borrow'; } // shortest payoff if (self.shortestPayoffLoan && self.shortestPayoffLoan.id) { var shortestPayoftId = self.shortestPayoffLoan.id; } if (loanOfferId === shortestPayoftId) { return 'The fastest way to pay off the loan amount you asked for'; } return null; }; self.handleError = function (error) { self.hasError = true; self.errorMessage = error; self.working = false; }; self.formSubmit = function () { self.working = true; loan.updateLoan(self.userInput.loan) .then(function(loanObj) { self.working = false; $state.go('loanApplication.loanOptions'); }, function(errorLoan) { self.working = false; error(); }); }; //////////////////////// //MOBILE FUNCTIONALITY// //////////////////////// self.selectAndContinue = function () { self.working = true; var offer = self.loanOffers[self.mobileIndex - 1]; loan.chooseLoanOffer(offer.id) .then(function (loanData) { self.working = false; $state.go(loan.getNextStep()); }, function (error) { self.handleError("There was an error selecting your loan offer."); }); }; self.initializeMobileIndex = function () { if (self.loan.selectedOffer) { self.loanOffers.forEach(function (offer, index) { if (offer.amount === self.loan.selectedOffer.amount && offer.duration === self.loan.selectedOffer.duration) { self.initialIndex = index; } }); } else { self.initialIndex = 0; } self.mobileIndex = self.initialIndex + 1; $('.carousel').on('slid.bs.carousel', function () { self.mobileIndex = $('div.active').index() + 1; $scope.$digest(); }); }; self.slide = function (direction) { $('#loanOptionSlider').carousel(direction); }; } }());