ih-portal
Version:
A project for connecting interaction hub services with catalyst-ui components
152 lines (129 loc) • 6.08 kB
JSX
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,
};