UNPKG

ih-portal

Version:

A project for connecting interaction hub services with catalyst-ui components

152 lines (129 loc) 6.08 kB
import React, { Component, PropTypes } from 'react'; import { AccountSummary } from 'catalyst-ui'; export default class AccountSummaryProv extends Component { constructor() { super(...arguments); this.fetch = this.fetch.bind(this); this.invalidate = this.invalidate.bind(this); } componentDidMount() { const { accountSummary } = this.props; if (!accountSummary || (accountSummary.lastAction && accountSummary.lastAction.status === 'error') || !accountSummary.data) { this.fetch(); } } fetch() { const requestParams = { url: __STUDENT_ACCOUNT_URL__, auth: [__USERNAME__, __PASSWORD__], }; this.props.fetch(requestParams); } invalidate() { const requestParams = { url: __STUDENT_ACCOUNT_URL__, auth: [__USERNAME__, __PASSWORD__], }; this.props.invalidate(requestParams); } /** * Filters the balances array and sums the balances which due date past or equal to the DueNow variable plus today's date * @return {string} of the Due Now balance */ getDueNow(balances) { // Get today's date let today = new Date(); // Add the number of days in the future variable to today to calculate the due Now date. let dueDate = today.setDate(today.getDate() + parseInt(__DUE_NOW_DAYS__)); // Filter the balances with due dates that are equal to or sooner/past the due now date. let itemSummaryArray = []; if (!Array.isArray(balances.itemSummary)) { itemSummaryArray.push(balances.itemSummary ); } else { itemSummaryArray = balances.itemSummary; } let dueNowBalances = itemSummaryArray.filter((item)=>Date.parse(item.dueDt)<=dueDate); // Sum the balances and convert to a string let dueNow = dueNowBalances.length <= 0 ? 0 : dueNowBalances.map((item)=>parseFloat(item.ssfBalance)).reduce((a, b)=>a + b); // Convert and return due now balance as a string return dueNow.toString(); } getDueFuture(balances) { // Get today's date let today = new Date(); // Add the number of days in the future variable to today to calculate the due Now date. let dueDate = today.setDate(today.getDate() + parseInt(__DUE_NOW_DAYS__)); // Filter the balances with due dates that are equal to or sooner/past the due now date. let itemSummaryArray = []; if (!Array.isArray(balances.itemSummary)) { itemSummaryArray.push(balances.itemSummary ); } else { itemSummaryArray = balances.itemSummary; } let dueNowBalances = itemSummaryArray.filter((item)=>Date.parse(item.dueDt)>dueDate); // Sum the balances and convert to a string let dueNow = dueNowBalances.length <= 0 ? 0 : dueNowBalances.map((item)=>parseFloat(item.ssfBalance)).reduce((a, b)=>a + b); // Convert and return due now balance as a string return dueNow.toString(); } render() { const data = this.props.summary; var props = {}; props.isFetching = data.isFetching; props.InfoText = 'This account summary provides a snapshot of a student\'s account. \"You Owe\" reflects all unpaid charges for all terms, including future terms. \"Due Now\" reflects any past due charge plus any charge due within ' + __DUE_NOW_DAYS__ + ' days. \"Future Due\" are charges due more than ' + __DUE_NOW_DAYS__ + ' days in the future. Use the \"ACCOUNT INQUIRY\" button to view transaction details.'; if(data.faultMessages){ props.Fault = data.faultMessages; } if (data.data && data.data.ssfGetStudentAcctResp && data.data.ssfGetStudentAcctResp.studentAccountSummary){ let accountsummary = data.data.ssfGetStudentAcctResp.studentAccountSummary; let BalanceView = accountsummary.studentAccountView[0]; let PaymentView = accountsummary.studentAccountView[1]; // let AidView = accountsummary.studentAccountView[2]; props.AccountBalance = accountsummary.ssfOverallActbal; if(accountsummary.ssfMsgLong !== ''){ props.AccountBalanceAltMsg = accountsummary.ssfMsgLong; } if(BalanceView){ // props.DueNowBalance = BalanceView.ssfVwTotalBal === '0'? BalanceView.ssfVwTotalBal : this.getDueNow(BalanceView); props.DueNowBalance = BalanceView.ssfVwTotalBal === '0'? BalanceView.ssfVwTotalBal : this.getDueNow(BalanceView); props.DueNowBalanceAltMsg = BalanceView.ssfMsgLong; // props.FutureBalance = BalanceView.ssfVwTotalBal === '0'? BalanceView.ssfVwTotalBal : this.getDueFuture(BalanceView); props.FutureBalance = BalanceView.ssfVwTotalBal === '0'? BalanceView.ssfVwTotalBal : this.getDueFuture(BalanceView); props.FutureBalanceAltMsg = BalanceView.ssfMsgLong; } if (PaymentView) { if (PaymentView.ssfMsgLong !== '') { props.LastPaymentAltMsg = PaymentView.ssfMsgLong; } let paymentItemSummary = []; if (!Array.isArray(PaymentView.itemSummary)) { paymentItemSummary.push(PaymentView.itemSummary); } else { paymentItemSummary = PaymentView.itemSummary; } props.LastPayment = PaymentView.ssfVwTotalAmt === '0' ? PaymentView.ssfVwTotalBal : paymentItemSummary[0].ssfAmount; if (PaymentView.itemSummary) { props.LastPaymentDate = paymentItemSummary[0].postedDate; } } // if(AidView){ // if(AidView.ssfMsgLong !== ''){ // props.PendingFinancialAltMsg = AidView.ssfMsgLong; // } // props.PendingFinancialAid = AidView.ssfVwTotalAmt; // } props.AccountInquiryUrl=__ACCOUNTINQUIRY_URL__; props.MakePaymentUrl=__MAKEPAYMENT_URL__; props.TermBillUrl=__TERMBILL_URL__; props.PendingFinancialAidUrl=__PENDING_FINANCIAL_AID_URL__; } return ( <AccountSummary {...props} /> ); } } AccountSummaryProv.propTypes = { summary: PropTypes.object, fetch: PropTypes.func.isRequired, invalidate: PropTypes.func.isRequired, };