{"version":3,"sources":["serviceWorker.js","app/utils/helpers.js","app/utils/error.js","app/utils/api.js","app/utils/format.js","app/utils/hooks.js","app/persist/redux/types.js","app/utils/request.js","app/persist/redux/reducers.js","app/persist/redux/actions.js","app/persist/redux/operations.js","app/utils/resource.js","app/utils/validators.js","app/utils/workflow.js","app/legal/redux/types.js","app/legal/redux/operations.js","app/legal/redux/actions.js","app/legal/components/authorized-use.jsx","app/legal/components/legal-page.jsx","app/legal/components/privacy.jsx","app/legal/components/shared-data.jsx","app/legal/components/shared-data-consent.jsx","app/legal/components/shared-data-consent-plaid.jsx","app/legal/components/terms-of-use.jsx","app/legal/redux/reducers.js","app/payment/redux/types.js","app/payment/redux/actions.js","app/payment/redux/operations.js","app/todos/redux/mapper.js","app/todos/components/todo.jsx","app/todos/components/todo-list.jsx","app/todos/redux/types.js","app/todos/redux/actions.js","app/todos/redux/operations.js","app/todos/containers/my-todos.jsx","app/todos/components/todo-complete.jsx","app/todos/components/outstanding-todos.jsx","app/todos/redux/reducers.js","app/todos/redux/selectors.js","app/auth/redux/benefits.js","app/auth/redux/statuses.js","app/auth/redux/selectors.js","app/auth/components/new-password.jsx","app/auth/components/onboarding-graphic.jsx","app/auth/styles/loader-wrapper.jsx","app/auth/components/custom-welcome-message.jsx","app/auth/containers/auth-page.jsx","app/auth/styles/remember-me.jsx","app/auth/components/sign-in-form.jsx","app/auth/styles/form-switcher.jsx","app/auth/redux/types.js","app/auth/redux/actions.js","app/auth/redux/validators.js","app/auth/redux/operations.js","app/auth/containers/login.jsx","app/auth/components/sign-in-crm.jsx","app/auth/containers/crm.jsx","app/auth/containers/logout.jsx","app/auth/components/password-update-form.jsx","app/auth/containers/password-update.jsx","app/auth/components/password-reset-form.jsx","app/auth/containers/password-reset.jsx","app/auth/components/password-out-of-date-form.jsx","app/auth/containers/password-out-of-date.jsx","app/auth/styles/input-wrapper-spaced.jsx","app/auth/components/sign-up-info-form.jsx","app/auth/components/sign-up-register-form.jsx","app/auth/containers/register.jsx","app/auth/components/pre-registered-form.jsx","app/auth/containers/pre-registered.jsx","app/auth/redux/reducers.js","app/routing/components/permission-provider.jsx","app/routing/components/auth-gate.jsx","app/fulfillment/components/pdf-viewer.jsx","app/fulfillment/components/signature.jsx","app/fulfillment/redux/types.js","app/fulfillment/redux/actions.js","app/fulfillment/redux/operations.js","app/fulfillment/redux/validators.js","app/fulfillment/components/sign-fulfillment.jsx","app/fulfillment/containers/emp-cert-complete.jsx","app/fulfillment/containers/emp-cert-check.jsx","app/fulfillment/containers/forbearance-phase-one-complete.jsx","app/fulfillment/containers/forbearance-phase-two-complete.jsx","app/fulfillment/containers/fulfillment.jsx","app/documents/redux/types.js","app/documents/redux/actions.js","app/documents/redux/operations.js","app/documents/styles/api-file-wrapper.jsx","app/documents/styles/example-file-button.jsx","app/documents/containers/api-file.jsx","app/documents/components/upload-success.jsx","app/documents/components/nslds-file-link.jsx","app/documents/containers/document-library.jsx","app/documents/containers/my-documents.jsx","app/documents/redux/reducers.js","app/fulfillment/components/fulfillment-file-link.jsx","app/fulfillment/containers/fulfillment-library.jsx","app/fulfillment/containers/taxes-complete.jsx","app/fulfillment/containers/renewal-emp-cert-check.jsx","app/fulfillment/containers/renewal-emp-cert-complete.jsx","app/fulfillment/containers/pd-forbearance.jsx","app/workflows/idr/redux/types.js","app/workflows/idr/redux/actions.js","app/workflows/idr/redux/validators.js","app/workflows/idr/redux/operations.js","app/fulfillment/containers/renewal-repayment-complete.jsx","app/fulfillment/containers/repayment-complete.jsx","app/fulfillment/redux/reducers.js","app/payment/components/billing-form.jsx","app/payment/components/installment.jsx","app/payment/redux/selectors.js","app/benefits/forgiveness/redux/selectors.js","app/benefits/forgiveness/redux/types.js","app/benefits/forgiveness/redux/operations.js","app/benefits/forgiveness/redux/actions.js","app/payment/components/billing.jsx","app/payment/components/payment-result.jsx","app/payment/components/pci.jsx","app/payment/containers/payment.jsx","app/payment/components/pay-now.jsx","app/payment/redux/reducers.js","app/workflows/agreement/redux/types.js","app/workflows/agreement/redux/actions.js","app/workflows/agreement/redux/validators.js","app/workflows/agreement/redux/operations.js","app/workflows/agreement/components/tab-agreement.jsx","app/workflows/agreement/styles/adjusted-header.jsx","app/workflows/agreement/styles/plan-card.jsx","app/workflows/agreement/components/tab-payment.jsx","app/workflows/agreement/components/plan-service.jsx","app/workflows/agreement/components/tab-plan.jsx","app/workflows/agreement/components/agreement-workflow.jsx","app/workflows/agreement/containers/agreement.jsx","app/workflows/agreement/redux/reducers.js","app/workflows/idr/components/tab-idr.jsx","app/workflows/idr/components/tab-household.jsx","app/workflows/idr/components/tab-simple.jsx","app/workflows/idr/components/tab-plan.jsx","app/workflows/idr/components/idr-workflow.jsx","app/workflows/idr/containers/idr.jsx","app/workflows/idr/containers/idr-complete.jsx","app/workflows/idr/containers/repayment-check.jsx","app/workflows/idr/redux/reducers.js","app/workflows/questionnaire-bts/components/loan-data-table.jsx","app/workflows/questionnaire-bts/redux/types.js","app/workflows/questionnaire-bts/redux/actions.js","app/workflows/questionnaire-bts/redux/validators.js","app/workflows/questionnaire-bts/redux/operations.js","app/workflows/questionnaire-bts/components/tab-education.jsx","app/benefits/forgiveness/components/bts-borrowing-comparison.jsx","app/workflows/questionnaire-bts/components/tab-results.jsx","app/workflows/questionnaire-bts/components/questionnaire-workflow.jsx","app/workflows/questionnaire-bts/containers/questionnaire-bts.jsx","app/workflows/questionnaire-bts/redux/reducers.js","app/workflows/renewal/components/tab-education.jsx","app/workflows/renewal/components/employer-form.jsx","app/workflows/renewal/components/tab-employment.jsx","app/references/redux/validators.js","app/references/components/reference-form.jsx","app/references/components/reference-table.jsx","app/references/redux/types.js","app/references/redux/operations.js","app/references/redux/actions.js","app/references/containers/my-references.jsx","app/references/redux/reducers.js","app/workflows/renewal/components/dependent-form.jsx","app/workflows/renewal/components/tab-household.jsx","app/workflows/renewal/components/income-source-form.jsx","app/workflows/renewal/components/tab-income.jsx","app/workflows/renewal/components/tab-marriage.jsx","app/workflows/renewal/redux/types.js","app/workflows/renewal/redux/actions.js","app/workflows/renewal/redux/validators.js","app/workflows/renewal/redux/operations.js","app/renewal-results/redux/types.js","app/renewal-results/redux/operations.js","app/renewal-results/redux/actions.js","app/renewal-results/redux/reducers.js","app/workflows/renewal/components/tab-results.jsx","app/workflows/renewal/components/tab-review.jsx","app/workflows/nslds/redux/types.js","app/workflows/nslds/redux/actions.js","app/workflows/nslds/redux/operations.js","app/workflows/nslds/types/nslds.js","app/workflows/nslds/redux/field-type.js","app/workflows/nslds/types/nslds-converter.js","app/workflows/nslds/components/nslds-file.jsx","app/workflows/nslds/components/tab-upload.jsx","app/workflows/nslds/components/tab-validate.jsx","app/workflows/nslds/components/tab-review.jsx","app/workflows/nslds/components/nslds-workflow-screening.jsx","app/workflows/renewal/components/tab-nslds.jsx","app/workflows/renewal/components/renewal-workflow.jsx","app/workflows/renewal/containers/renewal.jsx","app/workflows/renewal/containers/wants-meeting.jsx","app/workflows/renewal/redux/reducers.js","app/advisor/redux/types.js","app/advisor/redux/reducers.js","app/advisor/redux/operations.js","app/advisor/redux/actions.js","app/workflows/screening/components/tab-education.jsx","app/workflows/screening/components/tab-finance.jsx","app/workflows/screening/components/tab-info.jsx","app/workflows/screening/components/tab-loans.jsx","app/benefits/contribution/redux/types.js","app/benefits/contribution/redux/operations.js","app/benefits/contribution/redux/actions.js","app/benefits/contribution/redux/validators.js","app/contribution-setup/redux/types.js","app/contribution-setup/redux/reducers.js","app/contribution-setup/redux/operations.js","app/contribution-setup/redux/actions.js","app/contribution-setup/redux/selectors.js","app/benefits/contribution/redux/selectors.js","app/customer-contribution/redux/types.js","app/customer-contribution/redux/reducers.js","app/customer-contribution/redux/operations.js","app/customer-contribution/redux/actions.js","app/customer-contribution/redux/validators.js","app/customer-contribution/components/payment-help.jsx","app/customer-contribution/redux/selectors.js","app/customer-contribution/components/available-payment-history-table.jsx","app/customer-contribution/components/active-contribution.jsx","app/customer-contribution/containers/overview.jsx","app/customer-contribution/components/inactive-contribution.jsx","app/customer-contribution/components/contribution-form.jsx","app/servicers/components/servicer-form.jsx","app/servicers/components/servicer-table.jsx","app/servicers/redux/types.js","app/servicers/redux/operations.js","app/servicers/redux/actions.js","app/servicers/redux/validators.js","app/servicers/containers/servicers.jsx","app/servicers/redux/reducers.js","app/servicers-ref/redux/types.js","app/servicers-ref/redux/operations.js","app/servicers-ref/redux/actions.js","app/accounts/components/account-form.jsx","app/accounts/components/account-table.jsx","app/accounts/redux/types.js","app/accounts/redux/operations.js","app/accounts/redux/actions.js","app/accounts/redux/validators.js","app/accounts/containers/accounts.jsx","app/accounts/containers/my-accounts.jsx","app/accounts/redux/reducers.js","app/accounts/styles/button-spacer.jsx","app/benefits/contribution/containers/active-contributions.jsx","app/benefits/contribution/containers/inactive-contributions.jsx","app/benefits/contribution/components/contribution-summary.jsx","app/benefits/contribution/components/contribution-required-info.jsx","app/customer-contribution-milestone/redux/types.js","app/customer-contribution-milestone/redux/reducers.js","app/customer-contribution-milestone/redux/operations.js","app/customer-contribution-milestone/redux/actions.js","app/customer-contribution-milestone/redux/selectors.js","app/customer-contribution-milestone/components/recent-milestones-table.jsx","app/customer-contribution-milestone/components/available-milestones-table.jsx","app/customer-contribution-milestone/components/milestone-help.jsx","app/customer-contribution-milestone/containers/my-milestones.jsx","app/messages/components/messages.jsx","app/messages/redux/types.js","app/messages/redux/actions.js","app/messages/redux/operations.js","app/messages/containers/message-tile.jsx","app/messages/containers/message-div.jsx","app/messages/redux/reducers.js","app/benefits/contribution/containers/contribution-overview.jsx","app/benefits/contribution/redux/reducers.js","app/benefits/contribution/components/contribution-qualify.jsx","app/need-assistance/components/messages.jsx","app/need-assistance/redux/types.js","app/need-assistance/redux/actions.js","app/need-assistance/redux/operations.js","app/need-assistance/containers/need-assistance.jsx","app/need-assistance/redux/reducers.js","app/profile/components/account-form.jsx","app/profile/components/contact-form.jsx","app/profile/components/personal-form.jsx","app/profile/redux/types.js","app/profile/redux/operations.js","app/profile/redux/actions.js","app/profile/redux/validators.js","app/profile/containers/profile-form.jsx","app/profile/containers/my-profile.jsx","app/profile/redux/reducers.js","app/meetings/components/scheduler-form.jsx","app/meetings/redux/types.js","app/meetings/redux/actions.js","app/meetings/redux/operations.js","app/meetings/redux/validators.js","app/meetings/containers/scheduler.jsx","app/faq/components/faq-question.jsx","app/benefits/contribution/containers/need-assistance.jsx","app/benefits/forgiveness/components/qualify.jsx","app/benefits/forgiveness/components/qualify-short-term.jsx","app/benefits/forgiveness/components/payment-compare.jsx","app/benefits/forgiveness/components/repayment-pie.jsx","app/benefits/forgiveness/components/forgiveness-progress.jsx","app/benefits/forgiveness/components/summary.jsx","app/benefits/forgiveness/components/tax-compare.jsx","app/benefits/forgiveness/components/total-repayment.jsx","app/benefits/forgiveness/containers/my-forgiveness.jsx","app/benefits/forgiveness/components/step-display.jsx","app/self-service-document/redux/types.js","app/self-service-document/redux/reducers.js","app/self-service-document/redux/actions.js","app/self-service-document/redux/operations.js","app/benefits/forgiveness/components/fax-approval.jsx","app/empcert-approval/redux/types.js","app/empcert-approval/redux/reducers.js","app/empcert-approval/components/empcert-approval-form.jsx","app/empcert-approval/components/empcert-approval-success.jsx","app/empcert-approval/components/empcert-approval-invalid.jsx","app/empcert-approval/redux/operations.js","app/empcert-approval/redux/actions.js","app/empcert-approval/redux/validators.js","app/empcert-approval/components/empcert-section-six.jsx","app/empcert-approval/containers/empcert-approval.jsx","app/benefits/forgiveness/components/empcert-client-approval.jsx","app/benefits/forgiveness/components/standard-fax.jsx","app/benefits/forgiveness/components/standard-confirmation.jsx","app/benefits/forgiveness/containers/forbearance-phase-one.jsx","app/benefits/forgiveness/containers/forbearance-phase-one-fs.jsx","app/benefits/forgiveness/containers/forbearance-phase-two.jsx","app/employment-history/redux/types.js","app/employment-history/redux/reducers.js","app/employment-history/components/employment-history-form.jsx","app/employment-history/components/employment-history-table.jsx","app/employment-history/redux/actions.js","app/employment-history/redux/operations.js","app/employment-history/redux/validators.js","app/employment-history/containers/employers.jsx","app/employment-history/components/employment-approver-form.jsx","app/employment-history/containers/employer-approvers.jsx","app/benefits/forgiveness/containers/emp-cert.jsx","app/implementation-results/redux/types.js","app/implementation-results/redux/operations.js","app/implementation-results/redux/actions.js","app/implementation-results/redux/reducers.js","app/benefits/forgiveness/containers/emp-cert-fs.jsx","app/benefits/forgiveness/containers/consolidation.jsx","app/benefits/forgiveness/containers/consolidation-fs.jsx","app/benefits/forgiveness/containers/contribution-ss.jsx","app/benefits/forgiveness/components/component-step-display.jsx","app/benefits/forgiveness/components/docs-upload-needed.jsx","app/benefits/forgiveness/components/renewal-confirmation.jsx","app/benefits/forgiveness/containers/contribution-rsss.jsx","app/benefits/forgiveness/containers/idr.jsx","app/benefits/reducedidr/components/reduced-idr-progress.jsx","app/benefits/forgiveness/containers/idr-reduced.jsx","app/benefits/forgiveness/containers/idr-fs.jsx","app/benefits/forgiveness/containers/welcome.jsx","app/benefits/forgiveness/containers/taxes.jsx","app/benefits/forgiveness/containers/continuing-education.jsx","app/benefits/forgiveness/containers/complete.jsx","app/benefits/forgiveness/containers/profile-verification.jsx","app/benefits/forgiveness/containers/renewal-questionnaire.jsx","app/benefits/forgiveness/containers/renewal-extension.jsx","app/benefits/forgiveness/containers/fee.jsx","app/benefits/forgiveness/containers/forbearance-rs.jsx","app/benefits/forgiveness/containers/emp-cert-ss.jsx","app/benefits/forgiveness/containers/idr-ss.jsx","app/benefits/forgiveness/containers/documents-needed-rs.jsx","app/meetings/components/meeting.jsx","app/meetings/components/meeting-list.jsx","app/meetings/containers/my-meetings.jsx","app/meetings/redux/reducers.js","app/benefits/forgiveness/containers/meeting-rs.jsx","app/benefits/forgiveness/containers/idr-rsfs.jsx","app/benefits/forgiveness/containers/account-review-rs.jsx","app/benefits/forgiveness/containers/recertification.jsx","app/benefits/forgiveness/containers/emp-cert-rsfs.jsx","app/benefits/forgiveness/containers/bts-review.jsx","app/benefits/forgiveness/containers/bts-questionnaire.jsx","app/benefits/forgiveness/containers/nslds-upload.jsx","app/benefits/forgiveness/redux/reducers.js","app/benefits/limited-waiver-opportunity/redux/types.js","app/benefits/limited-waiver-opportunity/redux/reducers.js","app/benefits/limited-waiver-opportunity/components/qualified-payment-pie.jsx","app/benefits/limited-waiver-opportunity/containers/about-assure.jsx","app/benefits/limited-waiver-opportunity/components/qualify.jsx","app/benefits/limited-waiver-opportunity/components/lwo-progress.jsx","app/benefits/limited-waiver-opportunity/containers/consolidation-lwo.jsx","app/benefits/limited-waiver-opportunity/redux/operations.js","app/benefits/limited-waiver-opportunity/redux/actions.js","app/benefits/limited-waiver-opportunity/components/lwo-overview-modals.jsx","app/benefits/limited-waiver-opportunity/components/results-table.jsx","app/benefits/limited-waiver-opportunity/containers/overview.jsx","app/benefits/limited-waiver-opportunity/components/summary.jsx","app/benefits/limited-waiver-opportunity/components/fax-approval.jsx","app/benefits/limited-waiver-opportunity/components/lwo-fax.jsx","app/benefits/limited-waiver-opportunity/components/lwo-opt-out.jsx","app/benefits/limited-waiver-opportunity/components/lwo-confirmation.jsx","app/benefits/limited-waiver-opportunity/containers/loan-information.jsx","app/benefits/limited-waiver-opportunity/components/results.jsx","app/benefits/limited-waiver-opportunity/containers/questionnaire.jsx","app/benefits/limited-waiver-opportunity/containers/agreement.jsx","app/benefits/limited-waiver-opportunity/containers/fee.jsx","app/benefits/limited-waiver-opportunity/containers/employment-certification.jsx","app/benefits/limited-waiver-opportunity/containers/complete.jsx","app/benefits/limited-waiver-opportunity/containers/not-qualified.jsx","app/benefits/limited-waiver-opportunity/containers/confirmation.jsx","app/benefits/refinance/components/qualify.jsx","app/benefits/refinance/redux/types.js","app/benefits/refinance/redux/actions.js","app/benefits/refinance/redux/operations.js","app/benefits/refinance/components/summary-quotes.jsx","app/benefits/refinance/components/enrolled.jsx","app/benefits/refinance/components/quotes-table.jsx","app/benefits/refinance/components/form.jsx","app/benefits/affiliates/redux/types.js","app/benefits/affiliates/redux/operations.js","app/benefits/affiliates/redux/actions.js","app/benefits/affiliates/components/tile.jsx","app/benefits/affiliates/components/link.jsx","app/benefits/affiliates/redux/reducers.js","app/benefits/refinance/containers/my-refinance.jsx","app/benefits/refinance/redux/reducers.js","app/benefits/refinance/components/summary.jsx","app/benefits/simplifi/components/qualify.jsx","app/benefits/simplifi/components/payment-compare.jsx","app/benefits/simplifi/redux/types.js","app/benefits/simplifi/redux/operations.js","app/benefits/simplifi/redux/actions.js","app/benefits/simplifi/redux/selectors.js","app/benefits/simplifi/components/summary.jsx","app/benefits/simplifi/containers/consolidation-complete.jsx","app/benefits/simplifi/containers/consolidation-check.jsx","app/benefits/simplifi/containers/my-simplifi.jsx","app/benefits/simplifi/redux/reducers.js","app/benefits/tuition/redux/types.js","app/benefits/tuition/redux/operations.js","app/benefits/tuition/redux/actions.js","app/benefits/tuition/redux/validators.js","app/benefits/tuition/redux/selectors.js","app/tuition-institution/redux/types.js","app/tuition-institution/redux/reducers.js","app/tuition-institution/components/tuition-institution-form.jsx","app/tuition-institution/redux/actions.js","app/tuition-institution/redux/operations.js","app/tuition-institution/redux/validators.js","app/tuition-institution/components/tuition-institution-row.jsx","app/tuition-institution-term/redux/types.js","app/tuition-institution-term/redux/reducers.js","app/tuition-institution-term/components/tuition-institution-term-form.jsx","app/tuition-institution-term/redux/actions.js","app/tuition-institution-term/redux/operations.js","app/tuition-institution-term/redux/validators.js","app/tuition-institution-term/components/tuition-institution-term-row.jsx","app/tuition-institution-term/components/tuition-institution-history-term-row.jsx","app/tuition-institution-term/components/tuition-institution-current-term-row.jsx","app/tuition-institution/components/tuition-institution-history-row.jsx","app/tuition-institution/components/tuition-institution-current-row.jsx","app/benefits/tuition/components/tuition-setup-summary.jsx","app/benefits/tuition/components/overview-summary.jsx","app/benefits/tuition/components/tuition-status-info.jsx","app/benefits/tuition/components/overview-institutions.jsx","app/benefits/tuition/components/approver-email.jsx","app/benefits/tuition/components/required-information.jsx","app/benefits/tuition/containers/my-tuition.jsx","app/benefits/tuition/containers/my-institutions.jsx","app/benefits/tuition/containers/my-terms.jsx","app/tuition-institution-class/redux/types.js","app/tuition-institution-class/redux/reducers.js","app/tuition-institution-class/redux/selectors.js","app/tuition-institution-class/components/tuition-institution-class-form.jsx","app/tuition-institution-class/redux/actions.js","app/tuition-institution-class/redux/operations.js","app/tuition-institution-class/redux/validators.js","app/tuition-institution-class/components/tuition-institution-class-row.jsx","app/tuition-institution-class/components/tuition-institution-history-class-row.jsx","app/tuition-institution-class/components/tuition-institution-current-class-row.jsx","app/benefits/tuition/containers/my-classes.jsx","app/benefits/tuition/containers/my-reimbursement-history.jsx","app/benefits/tuition/components/qualify.jsx","app/benefits/tuition/components/summary.jsx","app/benefits/tuition/redux/reducers.js","app/benefits/tuition/components/enrolling-tuition.jsx","app/benefits/tuition/containers/need-assistance.jsx","app/benefits/empcert/components/qualify.jsx","app/benefits/empcert/components/emp-cert-progress.jsx","app/benefits/empcert/containers/emp-cert-gen.jsx","app/benefits/empcert/containers/emp-cert-submit.jsx","app/benefits/empcert/containers/emp-cert-check.jsx","app/benefits/empcert/containers/emp-cert-complete.jsx","app/benefits/empcert/containers/emp-cert-correction.jsx","app/benefits/empcert/components/summary.jsx","app/benefits/freshstart/components/qualify.jsx","app/benefits/freshstart/components/fresh-start-progress.jsx","app/benefits/freshstart/components/summary.jsx","app/benefits/freshstart/containers/fresh-start-awaiting.jsx","app/benefits/freshstart/containers/fresh-start-complete.jsx","app/benefits/freshstart/redux/types.js","app/benefits/freshstart/redux/operations.js","app/benefits/freshstart/redux/actions.js","app/benefits/freshstart/containers/fresh-start-contact-servicer.jsx","app/benefits/freshstart/containers/fresh-start-overview.jsx","app/benefits/freshstart/containers/fresh-start-nslds.jsx","app/benefits/freshstart/redux/reducers.js","app/benefits/educational-reengagement/components/qualify.jsx","app/benefits/educational-reengagement/redux/types.js","app/benefits/educational-reengagement/redux/operations.js","app/benefits/educational-reengagement/redux/actions.js","app/benefits/educational-reengagement/redux/validators.js","app/benefits/educational-reengagement/components/summary.jsx","app/benefits/educational-reengagement/components/edu-reengagement-form.jsx","app/benefits/educational-reengagement/containers/edu-reengagement-overview.jsx","app/benefits/educational-reengagement/redux/reducers.js","app/benefits/optimal-situation/components/qualify.jsx","app/benefits/optimal-situation/components/summary.jsx","app/benefits/optimal-situation/redux/reducers.js","app/benefits/optimal-situation/redux/types.js","app/benefits/reducedidr/components/qualify.jsx","app/benefits/reducedidr/components/summary.jsx","app/benefits/identity/containers/my-identity.jsx","app/benefits/reducedidr/redux/reducers.js","app/benefits/reducedidr/redux/types.js","app/benefits/identity/components/enrolled.jsx","app/benefits/insurance/containers/my-insurance.jsx","app/benefits/insurance/components/qualified.jsx","app/closed/containers/closed.jsx","app/dashboard/components/dashboard-banner.jsx","app/dashboard/components/qualified-tuition.jsx","app/dashboard/components/current-events-banner.jsx","app/dashboard/components/subscription-highlight-modal.jsx","app/dashboard/components/reduced-idr-modal.jsx","app/dashboard/containers/my-dashboard.jsx","app/benefits/reducedidr/containers/welcome.jsx","app/benefits/reducedidr/containers/overview.jsx","app/benefits/reducedidr/containers/complete.jsx","app/benefits/reducedidr/containers/profile-verification.jsx","app/benefits/reducedidr/containers/questionnaire.jsx","app/benefits/reducedidr/containers/employment-history.jsx","app/benefits/reducedidr/containers/need-assistance.jsx","app/workflows/screening/redux/types.js","app/workflows/screening/redux/actions.js","app/workflows/screening/redux/validators.js","app/workflows/screening/redux/operations.js","app/workflows/screening/components/tab-results.jsx","app/workflows/screening/components/tab-review.jsx","app/workflows/screening/components/tab-nslds.jsx","app/workflows/screening/components/screening-workflow.jsx","app/workflows/screening/containers/screening.jsx","app/workflows/screening/components/prescreening-form.jsx","app/workflows/screening/containers/prescreening.jsx","app/workflows/screening/redux/reducers.js","app/workflows/tuition/components/tab-institution.jsx","app/workflows/tuition/components/tab-term.jsx","app/workflows/tuition/components/tab-class.jsx","app/workflows/tuition/redux/types.js","app/workflows/tuition/redux/actions.js","app/workflows/tuition/redux/validators.js","app/workflows/tuition/redux/operations.js","app/workflows/tuition/components/tab-review.jsx","app/workflows/tuition/components/tuition-workflow.jsx","app/workflows/tuition/containers/tuition.jsx","app/tuition-approval/redux/types.js","app/workflows/tuition/redux/reducers.js","app/tuition-approval/redux/reducers.js","app/tuition-approval/components/approval-class.jsx","app/tuition-approval/components/tuition-approval-form.jsx","app/tuition-approval/components/tuition-approval-success.jsx","app/tuition-approval/components/tuition-approval-invalid.jsx","app/tuition-approval/redux/actions.js","app/tuition-approval/redux/operations.js","app/tuition-approval/redux/validators.js","app/tuition-approval/containers/tuition-approval.jsx","app/routing/styles/contrast-display.jsx","app/routing/styles/fullscreen-container.jsx","app/routing/styles/shadow-add-card.jsx","app/routing/styles/fullscreen-spacer.jsx","app/routing/components/error-page.jsx","app/routing/components/private-route.jsx","app/workflows/nslds/components/nslds-workflow.jsx","app/workflows/nslds/containers/nslds.jsx","app/workflows/nslds/redux/reducers.js","app/workflows/lwo-agreement/redux/types.js","app/workflows/lwo-agreement/redux/actions.js","app/workflows/lwo-agreement/redux/validators.js","app/workflows/lwo-agreement/redux/operations.js","app/workflows/lwo-agreement/components/tab-agreement.jsx","app/workflows/lwo-agreement/styles/adjusted-header.jsx","app/workflows/lwo-agreement/components/tab-employment.jsx","app/workflows/lwo-agreement/styles/plan-card.jsx","app/workflows/lwo-agreement/components/tab-plan.jsx","app/workflows/lwo-agreement/components/agreement-workflow.jsx","app/workflows/lwo-agreement/containers/lwo-agreement.jsx","app/workflows/lwo-agreement/redux/reducers.js","app/security-questions-setup/redux/types.js","app/security-questions-setup/redux/actions.js","app/security-questions-setup/redux/operations.js","app/security-questions-setup/redux/validators.js","app/security-questions-setup/components/security-questions-form.jsx","app/security-questions-setup/containers/security-questions-auth.jsx","app/security-questions-setup/containers/security-questions-dashboard.jsx","app/security-questions-setup/redux/reducers.js","app/security-questions/redux/types.js","app/security-questions/redux/actions.js","app/security-questions/redux/operations.js","app/security-questions/redux/validators.js","app/security-questions/components/security-question-form.jsx","app/security-questions/containers/security-question-check.jsx","app/security-questions/redux/reducers.js","app/routing/components/router-fullscreen.jsx","app/routing/components/layout-fullscreen.jsx","app/routing/components/persist-gate.jsx","app/tools/plan-tool/redux/types.js","app/tools/plan-tool/redux/reducers.js","app/tools/plan-tool/components/state.jsx","app/tools/plan-tool/redux/actions.js","app/tools/plan-tool/redux/operations.js","app/tools/plan-tool/redux/validators.js","app/tools/plan-tool/components/plan-graph.jsx","app/tools/plan-tool/components/plan-table.jsx","app/tools/plan-tool/components/plan-table-compare.jsx","app/tools/plan-tool/components/data-column.jsx","app/tools/plan-tool/components/fade.jsx","app/tools/plan-tool/components/focus-button.jsx","app/tools/plan-tool/components/input.jsx","app/tools/plan-tool/components/focus-page-inputs.jsx","app/tools/plan-tool/components/focus-page.jsx","app/tools/plan-tool/components/general-card.jsx","app/tools/plan-tool/components/pretax-card.jsx","app/tools/plan-tool/components/input-card.jsx","app/tools/plan-tool/components/input-grid.jsx","app/tools/plan-tool/components/summary.jsx","app/tools/plan-tool/redux/selectors.js","app/tools/plan-tool/containers/plan-tool.jsx","app/password-reset-auth/redux/selectors.js","app/password-reset-auth/redux/types.js","app/password-reset-auth/redux/operations.js","app/password-reset-auth/redux/actions.js","app/password-reset-auth/redux/validators.js","app/password-reset-auth/components/password-text.jsx","app/password-reset-auth/components/new-password-text.jsx","app/password-reset-auth/components/password-result.jsx","app/password-reset-auth/containers/password-auth.jsx","app/password-reset-auth/redux/reducers.js","app/settings/containers/my-settings.jsx","app/faq/redux/types.js","app/faq/redux/actions.js","app/faq/redux/operations.js","app/faq/components/question-answer.jsx","app/faq/containers/faq.jsx","app/faq/redux/reducers.js","app/tools/pretax-tool/components/pretax-items.jsx","app/tools/pretax-tool/components/pretax-existing-items.jsx","app/tools/pretax-tool/components/pretax-form.jsx","app/tools/pretax-tool/redux/selectors.js","app/tools/pretax-tool/redux/types.js","app/tools/pretax-tool/redux/operations.js","app/tools/pretax-tool/redux/actions.js","app/tools/pretax-tool/containers/pretax.jsx","app/tools/retirement-tool/components/retirement-form.jsx","app/tools/pretax-tool/redux/reducers.js","app/tools/retirement-tool/redux/selectors.js","app/tools/retirement-tool/redux/types.js","app/tools/retirement-tool/redux/operations.js","app/tools/retirement-tool/redux/actions.js","app/tools/retirement-tool/containers/retirement.jsx","app/tools/retirement-tool/redux/reducers.js","app/tools/tax-estimator-tool/components/tax-estimator-form.jsx","app/tools/tax-estimator-tool/redux/selectors.js","app/tools/tax-estimator-tool/redux/types.js","app/tools/tax-estimator-tool/redux/operations.js","app/tools/tax-estimator-tool/redux/actions.js","app/tools/tax-estimator-tool/components/tax-estimator-intro.jsx","app/tools/tax-estimator-tool/containers/tax-estimator.jsx","app/tools/taxtool/components/tax-estimate-tool.jsx","app/tools/tax-estimator-tool/redux/reducers.js","app/tools/taxtool/redux/selectors.js","app/tools/taxtool/redux/types.js","app/tools/taxtool/redux/operations.js","app/tools/taxtool/redux/actions.js","app/tools/taxtool/containers/tax-tool.jsx","app/tools/taxtool/redux/reducers.js","app/tools/interestcomparison/components/interest-comparison-tool.jsx","app/tools/interestcomparison/redux/selectors.js","app/tools/interestcomparison/redux/types.js","app/tools/interestcomparison/redux/operations.js","app/tools/interestcomparison/redux/actions.js","app/tools/interestcomparison/containers/interest-comparison.jsx","app/tools/sla-comparison/components/sla-comparison-tool.jsx","app/tools/interestcomparison/redux/reducers.js","app/tools/sla-comparison/redux/selectors.js","app/tools/sla-comparison/redux/types.js","app/tools/sla-comparison/redux/operations.js","app/tools/sla-comparison/redux/actions.js","app/tools/sla-comparison/containers/sla-comparison.jsx","app/benefits/retirement/containers/my-retirement.jsx","app/tools/sla-comparison/redux/reducers.js","app/contact/redux/types.js","app/contact/redux/actions.js","app/contact/redux/operations.js","app/contact/redux/validators.js","app/contact/components/contact-form.jsx","app/contact/components/contact-result.jsx","app/contact/containers/contact.jsx","app/contact/containers/need-assistance.jsx","app/contact/redux/reducers.js","app/plaid/redux/types.js","app/plaid/redux/actions.js","app/plaid/redux/operations.js","app/plaid/components/plaid-button.jsx","app/plaid/containers/plaid-overview.jsx","app/plaid/redux/reducers.js","app/loan-repayment/redux/types.js","app/loan-repayment/redux/operations.js","app/loan-repayment/redux/actions.js","app/loan-repayment/redux/validators.js","app/loan-repayment/components/repayment-history-table.jsx","app/loan-repayment/components/repayment-history-form.jsx","app/loan-repayment/containers/repayment-overview.jsx","app/loan-repayment/containers/repayment-nslds-upload.jsx","app/loan-repayment/redux/reducers.js","app/routing/components/router-dashboard.jsx","app/routing/styles/action-icon.jsx","app/routing/styles/drawer-items.jsx","app/routing/styles/padded-badge.jsx","app/routing/components/layout-dashboard.jsx","app/maintenance/containers/maintenance.jsx","app/maintenance/redux/types.js","app/maintenance/redux/reducers.js","app/quick-qual/redux/operations.js","app/maintenance/redux/operations.js","app/maintenance/redux/actions.js","app/quick-qual/components/learn-more.jsx","app/quick-qual/components/qual-questions.jsx","app/quick-qual/components/quick-qual-results.jsx","app/quick-qual/components/quick-qual.jsx","app/account-unlock/redux/types.js","app/account-unlock/redux/reducers.js","app/account-unlock/redux/operations.js","app/account-unlock/redux/actions.js","app/account-unlock/redux/validators.js","app/account-unlock/components/email.jsx","app/account-unlock/components/having-trouble.jsx","app/account-unlock/components/security-question.jsx","app/account-unlock/components/successful-unlock.jsx","app/account-unlock/containers/account-unlock.jsx","app/routing/components/router-auth.jsx","app/routing/components/layout-auth.jsx","app/routing/components/router-entry.jsx","app/routing/styles/contrast-subtitle.jsx","app/routing/styles/fade.jsx","app/routing/styles/auth-container.jsx","app/routing/styles/shadow-add-card-no-border.jsx","app/routing/styles/padded-dd.jsx","app/tools/modeler/components/retirement-contribution.jsx","app/tools/modeler/redux/selectors.js","app/tools/modeler/redux/types.js","app/tools/modeler/redux/operations.js","app/tools/modeler/redux/actions.js","app/tools/modeler/containers/modeler.jsx","app/tools/modeler/redux/reducers.js","app/servicers-ref/redux/reducers.js","app/root/redux/index.js","app/root/components/app.jsx","app/root/styles/flex-between.jsx","app/root/styles/flex-end.jsx","app/index.js","index.js","app/maintenance/assets/Plaid_logo.png","app/maintenance/assets/Plaid_logo_white.png","app/maintenance/assets/Fiducius.jpg","../node_modules/fiducius-ui/dist/static sync /^/.*/.svg$"],"names":["Boolean","window","location","hostname","match","camelCase","string","arguments","length","undefined","lodashCamelCase","kebabCase","lodashKebabCase","stringIsNullOrEmpty","snakeCase","lodashSnakeCase","startCase","lodashStartCase","upperFirst","lodashUpperFirst","safeAccess","object","path","defaultValue","lodashGet","isEqual","value","other","lodashIsEqual","pick","paths","lodashPick","debounce","func","wait","options","lodashDebounce","JsonApiError","_Error","errors","res","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","status","statusText","name","inherits","wrapNativeSuper","Error","createErrorState","error","prevErrors","validatedAttributes","errorState","objectSpread","newErrors","getStateFromError","newKeys","keys","oldKeys","forEach","a","isInNew","includes","isInOld","generalErrors","e","pointerParts","source","pointer","split","attribute","push","title","detail","message","getApi","token","endpoint","params","url","concat","process","apiFetch","apply","toConsumableArray","createGetRequest","deleteApi","createDeleteRequest","getApiSingle","_ref","asyncToGenerator","regenerator_default","mark","_callee","data","_args","wrap","_context","prev","next","sent","abrupt","stop","_x","_x2","postApi","postData","createPostRequest","patchApi","patchData","createPatchRequest","_ref2","_callee2","opts","_context2","t0","denormalize","baseFetch","t1","_x3","_x4","_ref3","_callee3","_context3","fetch","handleErrors","json","_x5","_x6","hasOwnProperty","camelcaseKeys","deep","Array","isArray","included","map","doc","id","type","attributes","normalize","normalized","reduce","kebabs","key","defineProperty","createQuery","createGetOptions","createDeleteOptions","createPostOptions","createPatchOptions","k","encodeURIComponent","join","method","headers","getApiHeaders","body","JSON","stringify","Accept","Cache-Control","Content-Type","Pragma","_ref4","_callee4","_context4","_x7","removeTimezone","input","convertIsoToSlash","String","slash","replace","convertSlashToIso","iso","moneyFormatter","Intl","NumberFormat","style","currency","minimumFractionDigits","maximumFractionDigits","rateFormatter","formatAsMoney","number","formatter","isNaN","format","formatAsPercent","isStringWithContent","variable","trim","useFocusOnMount","focusRef","useRef","useEffect","current","focus","useScrollToTopOnMount","scrollTo","useResize","ref","setWidth","clientWidth","handleResize","throttle","addEventListener","removeEventListener","redux_types","PERSIST_INITIAL_LOAD","PERSIST_REMEMBER_ME","PERSIST_RESET_STATE","PERSIST_HYDRATE_STATE","PERSIST_CLEAR_REQUEST","PERSIST_CLEAR_RESPONSE","PERSIST_CLEAR_FAILURE","PERSIST_CLEAR_SUCCESS","PERSIST_LOAD_REQUEST","PERSIST_LOAD_RESPONSE","PERSIST_LOAD_FAILURE","PERSIST_LOAD_SUCCESS","PERSIST_SAVE_REQUEST","PERSIST_SAVE_RESPONSE","PERSIST_SAVE_FAILURE","PERSIST_SAVE_SUCCESS","requestStates","mergeRequestStatuses","requests","notStarted","filter","r","isLoading","hasFailed","hasFinished","isEmpty","lastUpdated","latest","requestReducerGenerator","feature","requestName","types","SSC_FEATURE","toUpperCase","SSC_REQUEST_NAME","state","action","requestedState","respondedState","failedState","successState","clear","load","save","persist","combineReducers","cache","rememberMe","initialLoad","redux_actions","Date","now","APP_KEY","persistClearStore","localStorage","removeItem","sessionStorage","persistLoadStore","store","localStore","sessionStore","getItem","parse","persistSaveStore","fullState","selectedState","storageType","serializedState","auth","payment","paymentType","setItem","persistLoadState","dispatch","getState","loadedState","actions","persistClearState","_ref5","_callee5","_context5","persistSaveState","_ref6","_callee6","_context6","persistRememberMe","_ref7","_callee7","_context7","resourceOperations","resourceRequestOperations","resourceTypesGenerator","namespace","op","SSC_NAME","requestTypesGenerator","resourceActionsGenerator","actionName","SSC_ACTION_NAME","endsWith","requestActionsGenerator","resourceReducerGenerator","requestReducers","reducers","validateAttributes","invalidateAttributes","form","meta","cacheIsCurrent","isNew","isReadOnly","isValid","hasValidated","shouldValidate","newMeta","newErrorState","exists","i","resourceOperationsGenerator","validator","loadCollection","loadResource","createResource","updateResource","deleteResource","emptyDecider","operations","accessor","resourceErrorHandlerGenerator","resourceValidateStateGenerator","resourceValidateAttributesGenerator","resourceCacheChangeHandlerGenerator","resourceFormChangeHandlerGenerator","resourceCopyResourceToFormGenerator","resourceClearFormGenerator","resourceLoadCollectionGenerator","customResponseHandler","resourceLoadResourceGenerator","resourceCreateResourceGenerator","resourceType","resourceUpdateResourceGenerator","resourceDeleteResourceGenerator","resolvePath","obj","curr","checkForEmpty","localState","callback","formState","formKeys","currentErrors","validateState","segment","_x8","_x9","_x10","getToken","keyById","_x11","_x12","resultArray","keyed","item","_x13","_x14","_ref8","_callee8","_context8","_x15","_x16","_ref9","_callee9","addedId","_context9","_x17","_x18","_ref10","_callee10","_context10","_x19","_x20","emailPattern","phonePattern","passwordPattern","multipleEmailWithoutSemicolon","AttributeValidator","hasFailures","failure","ValidationFailure","addFailure","limit","handleFailure","customMessage","matchesRegex","array","list","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","err","return","maxLength","minLength","secondDate","compareDate","dateArray","lastDay","getDate","lastDayOfMonth","toString","editingDate","dateList","enteredDate","editingDateObj","firstOfMontheditingDateString","getFullYear","getMonth","padStart","firstOfMonthString","result","find","regex","ValidationError","FormValidator","_this2","clearState","getOwnPropertyNames","constructor","prototype","tryValidate","finalizeValidator","validate","getFailures","throwValidationError","_JsonApiError","_this3","assertThisInitialized","nest","flatData","segments","nested","_len","picks","_key","original","filtered","flatten","nestedData","objToArray","newArray","final","_arr","entries","_i","slicedToArray","_arr2","_i2","key1","value1","legalHandleFormChange","legalUpdateResource","AuthorizedUse","prevProps","request","props","toggleModal","react_default","createElement","Fragment","React","Component","LegalPage","connect","legal","consent","_consent","customerAuthorization","todosLoadCollection","children","fullscreen_container","className","contrast_display","Privacy","legal_page","dist","href","to","SharedData","target","ButtonWrapper","styled","div","_templateObject","ExitButton","_templateObject2","p","theme","textSecondary","primary","SharedDataConsent","setState","submitWarningModal","_this$props","isOpen","hideIcon","onRequestClose","brand","index_es","icon","faTimes","fixedWidth","onClick","size","rel","openSubmitWarningModal","closeSubmitWarningModal","optOut","event","currentTarget","disabled","authLoadPermissions","_optOut","shared_data_consent_plaid_templateObject","shared_data_consent_plaid_templateObject2","SharedDataConsentPlaid","shared_data_consent_plaid_ExitButton","shared_data_consent_plaid_ButtonWrapper","toggleSubmitWarningModal","TermsOfUse","endpointHandler","paymentTypes","NOW","RENEWAL","DEPOSIT","LWO","SERVICE","paymentSetTypeDeposit","paymentHandleCacheChange","paymentLoadResourceSuccess","paymentSetTypeService","paymentServiceId","paymentSetPaymentType","paymentLoadResourceRequest","getUserId","paymentLoadResourceResponse","destination","paymentLoadInfo","paymentServiceIdVal","paymentHandleError","paymentLoadResourceFailure","paymentClearErrors","paymentCopyResourceToForm","paymentHandleFormChange","todoActionTypes","drawerCallback","drawer","toggleDrawer","linkCallback","route","preNavigate","history","linkCallbackPayService","serviceId","modalCallback","todoMap","0","_apiName","actionType","buttonText","1","2","3","4","5","6","7","90","10","11","12","13","14","15","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","150","201","202","203","204","206","207","208","209","250","251","252","253","254","255","256","257","258","259","260","261","301","351","401","402","403","411","412","413","420","421","422","423","424","425","426","501","502","503","504","505","506","602","603","604","605","606","607","608","609","700","701","702","703","704","800","801","805","810","815","820","900","910","920","930","1000","1100","1200","1300","1400","1500","1600","1601","1605","1606","1610","1620","1630","2000","2010","2020","2100","LoaderWrapper","todo_templateObject","StyledTodoCard","Card","todo_templateObject2","boxShadow","boxShadowLarge","TodoActions","_templateObject3","TodoText","_templateObject4","withRouter","isComplete","todo","_useState","toggleNavigation","useState","_useState2","setOpen","todo_TodoText","variant","dangerouslySetInnerHTML","__html","fullText","extraRender","showButton","resultId","invert","renderTodo","todo_list_templateObject","height","StyledHeader4","Header4","todo_list_templateObject2","themeName","textTertiary","TodoList","todos","index","ecfActionIdArray","lwoEcfActionIdArray","toDoIds","b","indexOf","splice","beforeIdArray","afterIdArray","todoArray","values","tempItemsArray","beforeMatchesArray","afterMatchesArray","todoSet","reorderedTodos","reorderToDos","filteredTodos","checkForECFOverlap","dropdownItems","header","actionRequest","loadAllRequest","todo_list_LoaderWrapper","getDropdownHeader","selected","onSelect","updateDropdownSelection","align","getDropdownItems","getFilteredTodoSteps","t","components_todo","assign","resource","itemDescription","todosDisableValidation","todosUpdateResource","todosCopyResourceToForm","todosCopyResourceToFormRequest","todosHandleFormChange","todosCopyResourceToFormResponse","todosCopyResourceToFormSuccess","todosHandleError","todosSendDenied","todosSendUpdate","StyledHeader3","Header3","my_todos_templateObject","Container","my_todos_templateObject2","MyTodos","loadTodos","todo_list","_loadTodos","Actions","CardBody","todo_complete_templateObject","todo_complete_templateObject2","TextLeft","CardText","todo_complete_templateObject3","TodoComplete","showCheckbox","onLoad","onComplete","reloadTodos","_this$props2","leftButtonAction","leftButtonText","rightButtonText","text","fullWidth","todo_complete_LoaderWrapper","label","onChange","handleChange","allowConfirmation","onConfirm","StyledAlert","outstanding_todos_templateObject","OutstandingTodos","hasAnyTodos","hasTodo","ids","benefits","ACCOUNT_SERVICERS","ACCOUNTS","SHARED_DATA","REFINANCE","CONTRIBUTION","FORGIVENESS","SIMPLIFI_CONSOLIDATION","SIMPLIFI_IDR","IDENTITY","STUDENT_LOAN_DISABILITY_INSURANCE","TUITION","EMPCERT","TWELVEKORLESS","BANKINGASABENEFIT","EDUCATIONALREENGAGEMENT","FRESHSTART","REDUCEDIDR","RETIREMENT","benefitStatuses","QUALIFIED","ENROLLING","ENROLLED","INELIGIBLE","DECLINED","READONLY","clientStatuses","NFP_CONTRIBUTION","NFP_PRESALE","NFP_POSTSALE","NFP_RENEWAL","NFP_SSRENEWAL","FP_CONTRIBUTION","FP_PRESALE","FP_POSTSALE","FP_RENEWAL","FP_SSRENEWAL","PRESALE","POSTSALE","CLOSED","OHPAY","REFI","SIMPLIFI","UPSELL","isAuthenticated","isTokenExpired","hasPermissions","passwordNeedsReset","getPasswordResetTokenFromPermissions","authGetRedirectPath","passedSecurityCheck","permissions","useMfa","securityQuestionsSetup","needsScreening","showSkipScreening","shouldSilentRenew","getRefreshToken","isTokenExpiring","renewInProgress","decodedToken","jwtDecode","complete","soon","setMinutes","getMinutes","payload","exp","getTime","silentRenew","getTokenId","getCRMUserId","idType","subject","sub","startCharacter","userIdText","hasBenefit","benefit","benefitEnrollmentStatus","isEnrollingOrEnrolled","isEnrolled","isInAuth","isFullService","planType","calculateCustomerPermissions","statusGroup","hasAccountServicers","hasAccounts","hasContribution","readOnlyContribution","hasStudentLoanDisabilityInsurance","hasScheduleMeeting","hasSharedData","hasForgiveness","inForgiveness","enrolledForgiveness","hasLwo","enrolledLwo","btsQuestionnaireCompleted","forgivenessSteps","findReview","findQuestionnaire","findWelcome","hasBtsQuestionnaireCompleted","hasRefinance","inRefinance","hasSimplifiConsolidation","hasSimplifiIdr","hasSimplifi","inSimplifiConsolidation","inSimplifiIdr","inSimplifi","hasEnterpriseEmpCert","hasFreshStart","hasReducedIDR","hasEducationalReengagement","hasOptimalSituation","retVal","enterpriseOptimalSituation","getOptimalSituation","enrolledFreshStart","enrolledEducationalReengagement","enrollingReducedIDR","isEnrolling","showForgiveness","showLwo","showSimplifi","showSimplifiConsolidation","showSimplifiIdr","showRefinance","showPolaris","CRMUserId","polarisUser","parseInt","getShowPolaris","hasTuition","inTuition","enrolledTuition","readOnlyTuition","qualifiedTuition","homeAddressMissing","hasHomeAddress","isHomeAddressMissing","covidFurlough","hasRetirement","clientStatus","partnerId","hasPayNow","hasRenewalPayNow","isLwoDeclined","isDeclined","hasAnyBenefits","isMarried","consentFormCode","hasConsentToShareData","electronicEmpcertEnabled","enterpriseEnabled","subscriptionAvailable","subscriptionActive","hasBenefitTools","disableScheduling","hasMichiganProgram","skipScreeningMessage","hasPlaid","hasLoanRepayment","isConsolidationSubmitGeneratePaused","isConsolidationCheckPaused","isEmpcertCheckPaused","annualRecertDate","planChangeIndicator","doeIdrCalculation","hasEmployerPaidRenewal","contributionReadOnly","inPreSale","inAuth","lwoSteps","showAccounts","showAccountServicers","showContribution","strategicPartnerId","showIdentity","showPayNow","showRenewalPayNow","showRetirement","showScheduleMeeting","showSharedData","showStudentLoanDisabilityInsurance","homeAddressIsMissing","showTuition","tuitionReadOnly","useMFA","forceSetup","enterpriseEmpcertSteps","freshStartSteps","reducedIdrSteps","plaidSteps","loanRepaymentSteps","StyledInputError","InputError","new_password_templateObject","NewPassword","required","fieldName","show","setShow","faLockOpen","faLock","autoComplete","placeholder","button","onPointerDown","onPointerUp","Wrapper","onboarding_graphic_templateObject","onboarding_graphic_templateObject2","white","employerName","extraOnboard","objectWithoutProperties","onboarding_graphic_StyledHeader4","loader_wrapper_templateObject","CardNoBorder","custom_welcome_message_templateObject","CustomWelcomeMessage","pathName","pathname","Header","Body","then","messages","messageType","messageContent","_this$props$extraOnbo","loader_wrapper","onboarding_graphic","StyledCard","auth_page_templateObject","StyledRow","auth_page_templateObject2","AuthPage","domain","onboarding","greeting","_ref$extraOnboard","auth_container","custom_welcome_message","fullscreen_spacer","RememberMe","InputWrapper","remember_me_templateObject","textPrimary","SignInForm","onSubmit","_ref$rememberMe","firstInput","faUser","inputRef","remember_me","defaultChecked","FormSwitcher","form_switcher_templateObject","auth_redux_types","AUTH_HANDLE_FORM_CHANGE","AUTH_INVALIDATE_ATTRIBUTES","AUTH_INVALIDATE_CACHE","AUTH_VALIDATE_ATTRIBUTES","AUTH_VALIDATE_CACHE","AUTH_LOAD_PERMISSIONS_REQUEST","AUTH_LOAD_PERMISSIONS_RESPONSE","AUTH_LOAD_PERMISSIONS_FAILURE","AUTH_LOAD_PERMISSIONS_SUCCESS","AUTH_LOGIN_REQUEST","AUTH_LOGIN_RESPONSE","AUTH_LOGIN_FAILURE","AUTH_LOGIN_SUCCESS","AUTH_LOGOUT_REQUEST","AUTH_LOGOUT_RESPONSE","AUTH_LOGOUT_FAILURE","AUTH_LOGOUT_SUCCESS","AUTH_PASSWORD_RESET_REQUEST","AUTH_PASSWORD_RESET_RESPONSE","AUTH_PASSWORD_RESET_FAILURE","AUTH_PASSWORD_RESET_SUCCESS","AUTH_PASSWORD_UPDATE_REQUEST","AUTH_PASSWORD_UPDATE_RESPONSE","AUTH_PASSWORD_UPDATE_FAILURE","AUTH_PASSWORD_UPDATE_SUCCESS","AUTH_SIGNUP_REQUEST","AUTH_SIGNUP_RESPONSE","AUTH_SIGNUP_FAILURE","AUTH_SIGNUP_SUCCESS","AUTH_SILENT_RENEW_REQUEST","AUTH_SILENT_RENEW_RESPONSE","AUTH_SILENT_RENEW_FAILURE","AUTH_SILENT_RENEW_SUCCESS","AUTH_PARTNER_LOCATION_REQUEST","AUTH_PARTNER_LOCATION_RESPONSE","AUTH_PARTNER_LOCATION_FAILURE","AUTH_PARTNER_LOCATION_SUCCESS","AUTH_LOAD_THEME_REQUEST","AUTH_LOAD_THEME_RESPONSE","AUTH_LOAD_THEME_FAILURE","AUTH_LOAD_THEME_SUCCESS","AUTH_CLEAR","AUTH_EXPIRING","AUTH_HANDLE_ERROR","AUTH_POPULATE","auth_redux_actions","authHandleFormChange","authInvalidateAttributes","authInvalidateCache","authValidateAttributes","authValidateCache","authLoadPermissionsRequest","authLoadPermissionsResponse","authLoadPermissionsFailure","authLoadPermissionsSuccess","authLoginRequest","authLoginResponse","authLoginFailure","authLoginSuccess","authLogoutRequest","authLogoutResponse","authLogoutFailure","authLogoutSuccess","authPasswordResetRequest","authPasswordResetResponse","authPasswordResetFailure","authPasswordResetSuccess","authPasswordUpdateRequest","authPasswordUpdateResponse","authPasswordUpdateFailure","authPasswordUpdateSuccess","authSignupRequest","authSignupResponse","authSignupFailure","authSignupSuccess","authSilentRenewRequest","authSilentRenewResponse","authSilentRenewFailure","authSilentRenewSuccess","authPartnerLocationRequest","authPartnerLocationResponse","authPartnerLocationFailure","authPartnerLocationSuccess","authClear","authExpiring","authExpired","AUTH_EXPIRED","authHandleError","authPopulate","authSessionTerminated","AUTH_SESSION_TERMINATED","authSilentRenewError","AUTH_SILENT_RENEW_ERROR","authLoadThemeRequest","authLoadThemeResponse","authLoadThemeFailure","authLoadThemeSuccess","RegisterValidator","_FormValidator","createClass","isRequired","hasMaxLength","isValidSingleEmail","hasMinLength","isValidPassword","password","isValidPhoneNumber","authClientLogin","username","authLogin","secret","scope","formData","_data2","client_id","client_secret","grant_type","append","FormData","access_token","refresh_token","expires_in","token_type","Promise","all","authLogout","authPasswordUpdate","email","confirmPassword","_ref11","_callee11","_context11","authGetPartnerLocations","_ref12","_callee12","authData","_context12","partnerLocations","_ref13","_callee13","_context13","_ref14","_callee14","_context14","_x21","_x22","authHandleRegistrationError","_ref15","_callee15","domains","_context15","_x23","_x24","getUrlParams","pl","search","decode","s","decodeURIComponent","query","substring","urlParams","exec","field-name","field-value","_ref17","_callee17","_context17","_x27","_x28","_ref18","_callee18","_context18","_x29","_x30","loginLoadResource","loginClearForm","loginUpdateResource","loginHandleFormChange","loginCopyResourceToForm","loginCreateResource","FinePrint","login_templateObject","fontWeightNormal","Login","preventDefault","_this$state","signIn","referrer","wasReferred","prevState","updateRememberMe","sign_in_form","login","react_router","getRedirectPath","shadow_add_card","getForm","form_switcher","react_router_dom","loadPermissions","remember","getThemePreference","authThemePreference","SignInCRMForm","CRMLogin","loaded","fromCRM","signOut","document","_this$state2","sign_in_crm","authCRMLogin","Logout","hideChat","logout","password_update_form_templateObject","StyledLink","password_update_form_templateObject2","PasswordUpdateForm","_ref$errors","defaults","new_password","password_update_form_FinePrint","getRedirectPathAuthenticated","getRedirectPathPublic","submitChange","newPassword","validatePassword","queryString","updateFormState","password_update_form","password_reset_form_templateObject","password_reset_form_templateObject2","PasswordResetForm","password_reset_form_FinePrint","password_reset_form_StyledLink","requestPasswordReset","authPasswordReset","setEmail","password_reset_form","password_out_of_date_form_templateObject","password_out_of_date_form_templateObject2","password_out_of_date_form_templateObject3","PasswordOutOfDateForm","password_out_of_date_form_StyledInputError","password_out_of_date_form_FinePrint","password_out_of_date_form_StyledLink","oldPassword","authPasswordOutOfDateReset","password_out_of_date_form","Styling","input_wrapper_spaced_templateObject","first","last","InputWrapperSpaced","timeZones","","America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Anchorage","America/Adak","StyledCheckbox","sign_up_info_form_templateObject","TextMessageText","sign_up_info_form_templateObject2","sign_up_info_form_templateObject3","StyledCardText","sign_up_info_form_templateObject4","SignUpInfoForm","showInstructions","handleInstructionsButton","bind","_this$props$data","_this$props$errors","locations","showLocations","onBack","showNFPQuestion","daylightSavings","partnerMemberId","phoneNumber","textNotifications","input_wrapper_spaced","firstName","htmlFor","middleInitial","lastName","suffix","dob","affordance","mask","timeZone","clientNonProfit","faQuestionCircle","sign_up_info_form_ButtonWrapper","sign_up_register_form_templateObject","FORM_ID","SignUpRegisterForm","_ref$data","registrationCode","toggleFormError","touchedCode","setTouchedCode","sign_up_register_form_ButtonWrapper","hasData","existingErrors","canContinue","Register","partnerDomain","stepTwo","showFormError","saveRequest","signUp","newState","_this$props3","loadingPartnerData","getLoader","999","cacheLocations","acc","l","sign_up_info_form","createUser","back","sign_up_register_form","step","getRegistrationCode","_this$props4","switchForm","_state$auth","signup","partnerLocation","_ref16","_callee16","_context16","_data","partnerDefinedFields","_x25","_x26","pre_registered_form_templateObject","pre_registered_form_templateObject2","PreRegisteredForm","pre_registered_form_FinePrint","pre_registered_form_StyledLink","pre_registered_form","passwordReset","passwordUpdate","themePreference","AUTH_CLEAR_ERRORS","AUTH_CLEAR_FORM","PermissionContext","createContext","showSimplifiIDR","repaymentPlan","PermissionProvider","Provider","propTypes","node","shape","bool","withPermissions","Consumer","context","_ref$isAuthenticated","pdfjs","GlobalWorkerOptions","workerSrc","version","DocumentPane","pdf_viewer_templateObject","borderWidth","level2","borderRadius","DocumentPageControls","pdf_viewer_templateObject2","PdfViewer","base64","paneRef","isFulfillment","width","_useState3","numPages","pageNumber","_useState4","entry","file","onLoadSuccess","signature_templateObject","InputLabel2","InputLabel","signature_templateObject2","CanvasWrapper","signature_templateObject3","Signature","wrapper","canvas","handleMouseEvents","toData","toDataURL","onMouseUp","onMouseLeave","onTouchEnd","build_default","canvasProps","maxWidth","signature_ButtonWrapper","FulfillmentValidator","isValidEmail","fulfillmentDisableValidation","fulfillmentCopyResourceToForm","fulfillmentHandleFormChange","fulfillmentLoadCollection","fulfillmentInvalidateCache","fulfillmentLoadResource","fulfillmentUpdateResource","fulfillmentValidateAttributes","sign_fulfillment_templateObject","SignFulfillment","updateForm","docId","signaturePadClient","signaturePadSpouse","signRequest","signContract","scrollRef","createRef","hasHtml","redirect","loadHtml","_this$props2$data","_this$props2$errors","_this$props2$form","pdf_viewer","na","sign_fulfillment_InputLabel2","signature","handleClientSignature","needSpouseSignature","handleSpouseSignature","submit","ownProps","fulfillment","_loadHtml","EmpCertComplete","todo_complete","emp_cert_complete_TodoText","_action","EmpCertCheck","emp_cert_check_TodoText","ForbearancePhaseOneComplete","forbearance_phase_one_complete_TodoText","ForbearancePhaseTwoComplete","forbearance_phase_two_complete_TodoText","sign_fulfillment","fileId","documents_redux_types","DOCUMENTS_REMOVE_FROM_CACHE","documents_redux_actions","documentsRemoveFromCache","documentsLoadTrFaq","documentsLoadResourceRequest","documentsLoadResourceResponse","documentsLoadResourceSuccess","documentsHandleError","documentsLoadResourceFailure","documents","documentsHandleCacheChange","documentsLoadExampleFile","code","hostFileId","documentsDisableValidation","documentsHandleFormChange","documentsLoadCollection","documentsLoadResource","documentsCreateResource","ApiFileWrapper","api_file_wrapper_templateObject","ExampleFileButton","example_file_button_templateObject","borderRadiusBadge","NSLDSFileTypeList","OthersFileTypeList","ApiFile","trDoc","refreshPage","uploadCompleted","rest","extractFileData","uploadDoc","fileTypeCd","addError","fileString","fileToBase64","fileData","lastModified","lastModifiedDate","contentType","base64string","reader","FileReader","resolve","reject","onerror","abort","onload","dataUrl","readAsDataURL","ex","_this$props$file","getFileFromData","shouldDownload","getDocData","exampleFile","description","shouldDownloadExampleFile","getExampleDocData","hasExampleFile","example_file_button","onDownloadExample","blob","b64toBlob","navigator","msSaveBlob","link","URL","createObjectURL","download","appendChild","click","revokeObjectURL","remove","isUploading","removeFromCache","clearUploadedFile","isDownloading","docUploaded","_this$props$file2","allowedDownload","accept","allowDelete","allowDownload","allowUpload","fileName","fileType","requiredUpload","onDownloadFile","onDownload","onAddFile","onUpload","onAddFileFailure","onUploadFailure","api_file_wrapper","getExampleFileBadge","getUploaderProps","_state$documents$requ","_getDocData","_uploadDoc","documentClearUploadedFile","loadDocs","_loadDocs","UploadSuccess","modalRef","closeForm","trFileUpload","getMessage","flex_between","fileCss","hasFile","css","_templateObject5","_templateObject6","_templateObject7","highContrast","nslds_file_link_templateObject4","nslds_file_link_templateObject","nslds_file_link_templateObject2","nslds_file_link_templateObject3","hoverCss","FileItem","zoneRef","_templateObject8","_templateObject9","ActionOverlay","_templateObject10","OverlayBackground","_templateObject11","level4","danger","OverlayIconLayers","span","_templateObject12","lowContrast","FileName","Header5","_templateObject13","image","faSquare","faExternalLink","transform","FlexWrap","document_library_templateObject","DocumentLibrary","openModal","isTrDoc","isTrUpload","files","handleUpload","errorCount","keyCount","sort","api_file","nslds_file_link","getOtherProps","upload_success","getErrors","Spacer","my_documents_templateObject","MyDocuments","fulfillment_library","document_library","fulfillment_file_link_templateObject5","fulfillment_file_link_templateObject6","fulfillment_file_link_templateObject7","fulfillment_file_link_templateObject4","fulfillment_file_link_templateObject","fulfillment_file_link_templateObject2","fulfillment_file_link_templateObject3","fulfillment_file_link_templateObject8","fulfillment_file_link_templateObject9","fulfillment_file_link_templateObject10","fulfillment_file_link_templateObject11","fulfillment_file_link_templateObject12","fulfillment_file_link_templateObject13","fulfillment_file_link_FileItem","fulfillment_file_link_FileName","fulfillment_file_link_ActionOverlay","fulfillment_file_link_OverlayBackground","fulfillment_file_link_OverlayIconLayers","fulfillment_library_templateObject","fileLinks","8","FulfillmentLibrary","docs","loading","empty","fulfillment_library_FlexWrap","viewOnly","signed","fulfillment_file_link","TaxesComplete","taxes_complete_TodoText","RenewalEmpCertCheck","renewal_emp_cert_check_TodoText","RenewalEmpCertComplete","renewal_emp_cert_complete_TodoText","PdForbearance","pd_forbearance_TodoText","IdrValidator","highestAgiValue","isGreaterThan","validNumber","selfService","IDRM","existingRepaymentPlan","custPovertyGuidelines","guidelineForClientIDR","idrGuideline100","isLessThanOrEqualTo","customerStatus","isReducedIdr","idrValidator","question8Response","idrLoadComplete","idrLoadResourceRequest","idrLoadResourceResponse","idr","idrHandleCacheChange","idrLoadResourceSuccess","idrHandleError","idrLoadResourceFailure","idrCopyCompleteToForm","idrCopyResourceToFormRequest","idrHandleFormChange","idrCopyResourceToFormResponse","idrCopyResourceToFormSuccess","idrSaveComplete","idrUpdateResourceRequest","idrUpdateResourceResponse","idrUpdateResourceSuccess","idrUpdateResourceFailure","idrClearForm","idrCopyResourceToForm","idrLoadResource","idrInvalidateCache","idrUpdateResource","idrValidateAttributes","RenewalRepaymentComplete","idrValidateState","incomeDocToInclude","RepaymentComplete","userId","_onLoad","billing_form_templateObject","BillingForm","billing_form_InputLabel2","phone","address1","address2","city","zipCode","InstallmentCard","installment_templateObject","Installment","amount","_ref$title","dueDate","onlyPayment","parseISO","getPaymentInfo","getPaymentCache","getCurrentPaymentType","yearlyResults","getForgivenessData","getMonthlyPayment","createSelector","monthlyPayment","incomeBasedRepayment","estimatedMonthlyPayment","getMonthlySavings","planResults","standardRepayment","getNewPayment","getOldPayment","getStandardPayment","getTotalForgiveness","estimatedLoanForgiveness","getTotalStandardRepayment","planYearlyResults","getTotalIdrRepayment","totalForgiveness","totalSTD","estimatedBalanceToBePaid","getRepaymentTerm","getShowTaxCompare","getBenefitStatus","getPastYearSavings","doeIdrPayment","getCurrentYearSavings","islsIdrPayment","getSAVEPlanSavings","stdPayment","saveCalculation","getISLSIDRPayment","forgivenessLoadResource","InstallmentWrapper","billing_templateObject","SubscriptionWrapper","billing_templateObject2","SubscriptionContentWrapper","billing_templateObject3","StyledDivLeft","billing_templateObject4","MessagePaddedDiv","billing_templateObject5","Billing","paymentOption","n","d","nth","showSubscriptionModal","getInfo","paymentMode","loadForgiveness","forgivenessData","_this$props2$pastYear","pastYearSavings","_this$props2$currentY","currentYearSavings","_this$props2$saveProg","saveProgramSavings","_this$props2$forgiven","info","payments","payInFull","overflow","unshift","toISOString","showSavingsText","showSAVESavingsText","showIncreaseText","savingsAmountText","colspan","paymentInstalls","checked","handleChangePaymentOption","installment","slice","getCurrentDayNumber","billing_form","_getInfo","PaymentResult","getPaymentStatus","resetPaymentStatus","paymentStatus","paymentGetPaymentStatus","paymentCreateResourceRequest","paymentCreateResourceResponse","paymentCreateResourceSuccess","paymentCreateResourceFailure","pci_templateObject","getYears","thisYear","years","Pci","pci_LoaderWrapper","cardNumber","month","year","cvv","payment_templateObject","double","Payment","reloadPage","saveBillingInfo","postPayment","postUrl","leavePage","redirectUrl","setUpPaymentType","prevSave","currentSave","prevPost","postRequest","currentPost","billing","pci","handlePciChange","payment_result","payment_ButtonWrapper","resetTransaction","nextStep","prevStep","continueToBenefit","matches","mm","yy","billing-cc-number","billing-cc-exp","billing-cvv","_reloadPage","paymentUpdateResourceSuccess","_leavePage","paymentUpdateResourceRequest","paymentUpdateResourceResponse","paymentUpdateResourceFailure","ISLSIDRPayment","setPaymentType","_setPaymentType","payNowType","handleClick","PaddedBadge","Badge","pay_now_templateObject","faExclamationDark","AgreementValidator","agreementCopyResourceToForm","agreementHandleFormChange","agreementLoadResource","agreementInvalidateCache","agreementUpdateResource","agreementValidateAttributes","agreementValidateState","AGREEMENT_DOC_ID","tab_agreement_templateObject","TabAgreement","skipSave","saveContract","_this$props3$data","_this$props3$errors","tab_agreement_InputLabel2","agreement","AdjustedHeader","Header2","adjusted_header_templateObject","PlanCard","plan_card_templateObject","getOption","option","currentPayInFull","optionLabel","plan_card","TabPlan","fullMessage","fullServicePayInFullMessage","selfServicePayInFullMessage","planMessage","fullServicePaymentPlanMessage","selfServicePaymentPlanMessage","adjusted_header","PlanBody","plan_service_templateObject","level0","stripTitle","stripCheck","PlanService","service","planSelected","allowedChangeChoice","planServiceName","planServiceText","planServiceId","FlexTitle","tab_plan_templateObject","fullServicePlan","points","selfServicePlan","getPlan","plan","cost","planLabel","allowPlanTypeChoice","selfServiceCost","fullServiceCost","services","plan_service","getServices","AgreementWorkflow","validateTab","tabs","agreementStatus","tab_agreement","skipToAgreement","tab_plan","sectionValidationStatus","tab_payment","loadData","section","getTabs","finalButton","handleTabChange","_state$agreement","copyResourceToForm","_loadData","_validateTab","tab","Agreement","agreement_workflow","emptyState","addressOne","addressTwo","birthDate","consolidated","continuedEducation","creditScore","degree","degreeSought","federalPrivateMix","household","income","interestRate","jobTitle","knowSomeoneWithLoans","loanBalance","married","parentPlus","privateBalance","privateLoans","privatePayment","privateServicer","readOnly","referrerName","results","school","spouseIncome","startDate","taxFiling","usState","IDR_DOC_ID","tab_idr_templateObject","tab_idr_templateObject2","TabIdr","re","test","ssn1State","ssn2State","ssn3State","ssnOnFile","fade","tab_idr_InputLabel2","tab_idr_TextLeft","idrSSN","handleNumericChange","_saveContract","WorkflowAlert","tab_household_templateObject","tab_household_templateObject2","InputHelp2","InputHelp","tab_household_templateObject3","ContactMessage","TabHousehold","agi","validateSpecificAttributes","question5Response","tab_household_InputLabel2","min","question6Response","question7Response","A","B","C","question9BResponse","question9CResponse","question10Response","question13Response","question14Response","question15Response","tab_household_ContactMessage","question16Response","question11Response","question12Response","validateForm","tab_simple_templateObject","tab_simple_templateObject2","TabSimple","tab_simple_InputLabel2","tab_simple_InputHelp2","components_tab_plan_templateObject","tab_plan_templateObject2","isReducedIdrRenewal","tab_plan_InputLabel2","PAYE","IBR","ICR","SAVE","OTHER","repaymentBegan","inDeferOrForbearance","tab_plan_InputHelp2","_state$idr","IdrWorkflow","newData","clearDependentAttributes","getDependentAttributes","retArray","simple","tab_idr","components_tab_plan","tab_household","tab_simple","signApplication","clearData","selectableAttributes","getPlanAttributes","getHouseHoldAttributes","getSimpleAttributes","idrStatus","finalPageLocksFlow","finalPageCheck","reviewValidationStatus","penUltimateButton","Idr","idr_workflow","repayTypeName","IdrComplete","idr_complete_TodoText","mapRepaymentType","projectedRepaymentType","actualRepaymentType","loadRequest","_ref$form","projectedIdr","doeRepayDate","doeRepayEndDate","actualIdr","RepaymentCheck","repayment_check_TodoText","LoanDataTableTwo","numRows","newLoanAmtBorrowed","tuitionPercent","recommendedBorrowingTuition","recommendedBorrowingLivingExp","livingExpPercent","tmpArray","initialLoanBalance","arraySize","calculateTableValues","questionnaireBts","parentLoaded","QuestionnaireBtsValidator","validDate","borrowedAddFedLoans","questionnaireBtsClearForm","questionnaireBtsCopyResourceToForm","questionnaireBtsHandleFormChange","questionnaireBtsValidateAttributes","questionnaireBtsCreateResource","questionnaireBtsLoadCollection","questionnaireBtsLoadResource","questionnaireBtsUpdateResource","TabEducation","showForm","allowedDegreeTypes","loadEducation","getRequest","graduationIncomeText","loan_data_table","loanAmtBorrow","graduateDate","graduationIncome","_state$questionnaireB","educationErrors","_loadEducation","BtsBorrowingCompare","initialBalance","newBalance","recommendedBorrowing","showPreviousYears","labels","colors","requestData","variables","loanLabels","backgroundArray","initLoanBalance","h","newLoanBalance","removeEmptyEntries","getChartValues","getChartLabels","getBackColors","bars","allSameColor","backgroundColor","config","showXAxisLabel","xAxisLabel","showYAxisLabel","yAxisLabel","axisLabelFontSize","Flex","tab_results_templateObject","ButtonRight","Button","tab_results_templateObject2","TabResults","RedirectUri","BtsYear","questionnaireSave","btsYearId","bts_borrowing_comparison","setRedirect","_questionnaireSave","QuestionnaireBTSWorkflow","farthest","redirectURI","tab_education","tab_results","resultValidationStatus","education","clearForm","QuestionnaireBTS","questionnaire_workflow","returnToSchool","returnToSchoolDate","degreeType","ASSOC","BA","MA","PHD","CERT","degreeSpecialty","creditHours","borrowMore","borrowMoreAmount","borrowMoreGraduationDate","borrowMoreExpectedIncome","EmployerForm","employmentEmploymentClassification","employmentEmploymentType","currentStatus","employmentEmployerName","employmentJobTitle","employmentStartDate","employmentEndDate","employmentEin","employmentPayPeriods","employmentHours","employmentAddress1","employmentAddress2","optional","employmentCity","employmentState","employmentZip","tab_employment_templateObject","TabEmployment","addEmployer","employmentSizeCorrect","initialEmployerSize","employmentNewEmployerAmount","tab_employment_WorkflowAlert","initialSize","employers","forms","totalSize","employerErrors","employer_form","getEmployers","relationTypes","ADV","CHILD","FIAF","FIAM","FRND","GRANC","GRANP","PARNT","REFER","SBLNG","SPOUS","UN/AN","ReferenceValidator","RegExp","reference_form_templateObject","ReferenceForm","checkNoMissingData","checkNoErrors","zip","relationType","_this$props$data2","otherRelationDescription","animation","appear","in","unmountOnExit","reference_form_TextLeft","enableSubmit","Empty","reference_table_templateObject","EmptyReferences","ReferenceTable","_ref$references","references","onEditReference","reference_table_EmptyReferences","row","faEdit","columns","sortable","referencesClearForm","referencesCopyResourceToForm","referencesCreateResource","referencesHandleFormChange","referencesLoadCollection","referencesUpdateResource","MyReferences","formId","hydrateForm","reference","handleForm","createReference","updateReference","loadReferences","wasLoading","currently","showTitle","reference_table","onAddReference","faPlusCircle","reference_form","onUpdate","onCreate","_state$references","servicerCache","servicers","servicerName","_createReference","_hydrateForm","_updateReference","RowFade","dependent_form_templateObject","DependentForm","dependentName","dependentLastName","dependentRelationship","dependentBirthdate","StyledLede","Lede","components_tab_household_templateObject","currentHouseholdSize","clientHouseholdSizeCorrect","householdSize","dependents","existingSize","dependentErrors","dependent_form","getDependents","income_source_form_templateObject","IncomeSourceForm","income_source_form_RowFade","incomeSource","annualIncome","TabIncome","haveAdditionalJobs","additionalJobCount","incomeSources","incomeSourceErrors","income_source_form","getAdditionalIncomeSources","additionalJobs","tab_marriage_templateObject","TabMarriage","clientMarriageStatusCorrect","initialMarriageStatus","clientCurrentlyMarried","currentlyEngaged","marriageDate","taxFileType","SGL","HOH","MFS","MFJ","spousePayPeriods","spouseHasStudentLoans","spouseLoanBalance","tab_marriage_WorkflowAlert","RenewalValidator","validDateRequiredAndAfterToday","isGreaterThanOrEqualTo","today","setDate","employersCount","renewalValidator","getValueFromNullableBool","initialValue","changedJobs","currentHouseholdSizeCorrect","currentlyEmployed","currentlyEmployedFulltime","incomeChanged","newJobNonProfit","initialHouseholdSize","renewalCopyResourceToForm","renewalHandleFormChange","renewalLoadResource","renewalUpdateResource","renewalValidateAttributes","renewalSaveQuestionnaire","renewalValidateState","renewal","revertData","isValidDate","date","origData","oldJobEndDate","newJobStartDate","dependent","dependent-name","dependent-last-name","dependent-relationship","dependent-birthdate","additionalJob","income-source","annual-income","employer","employment-employer-name","employment-job-title","employment-start-date","employment-end-date","employment-ein","employment-pay-periods","employment-hours","employment-address1","employment-address2","employment-city","employment-state","employment-zip","employment-employment-classification","employment-employment-type","employment-employment-history-id","employmentEmploymentHistoryId","employment-employment-history-address-id","employmentEmploymentHistoryAddressId","renewalResultsLoadResource","renewalResultsUpdateResource","saveRenewal","formsAreValid","_this$props$renewalDa","renewalData","showPlanChangeContent","_this$props3$renewalD","isReducedIDR","showFullServiceMessagingContent","fullServiceMessagingEnterprise","fullServiceMessagingVoluntary","documentsReceived","getSelfServiceScenarioContent","renewalResults","_saveRenewal","TabReview","nsldsClearForm","nsldsHandleFormChange","nsldsCopyResourceToForm","nsldsValidateAttributes","nsldsCreateResource","nsldsHandleCacheChange","nsldsSetFormData","nslds","nsldsPostData","nsldsData","nsldsCreateResourceRequest","fixDataForPost","nsldsCreateResourceResponse","nsldsCreateResourceSuccess","nsldsHandleError","nsldsCreateResourceFailure","fixSubdata","arrayKeys","fixArray","arrayData","_loop","newItem","NSLDS","totalOutstandingByLoanType","loans","grants","overpayments","programs","awards","NSLDSTotalOutstanding","loanType","principal","interest","NSLDSLoan","loanStatuses","loanDisbursements","loanContacts","loanSpecialContacts","loanAwardId","loanAttendingSchoolName","loanAttendingSchoolOpeid","loanDate","loanRepaymentBeginDate","loanPeriodBeginDate","loanPeriodEndDate","loanAmount","loanDisbursedAmount","loanCanceledAmount","loanOutstandingPrincipalBalance","loanOutstandingPrincipalBalanceAsOfDate","loanOutstandingInterestBalance","loanOutstandingInterestBalanceAsOfDate","loanInterestRateType","loanInterestRate","loanRepaymentPlanType","loanRepaymentPlanBeginDate","loanRepaymentPlanScheduledAmount","loanRepaymentPlanIdrPlanAnniversaryDate","loanConfirmedSubsidyStatus","loanSubsidizedUsageInYears","loanReaffirmationDate","loanMostRecentPaymentEffectiveDate","loanNextPaymentDueDate","loanCumulativePaymentAmount","loanPslfCumulativeMatchedMonths","loanId","servicerId","NSLDSLoanStatus","loanStatus","loanStatusDescription","loanStatusEffectiveDate","NSLDSLoanDisbursement","loanDisbursementDate","loanDisbursementAmount","NSLDSLoanContact","loanContactType","loanContactName","loanContactStreetAddress1","loanContactStreetAddress2","loanContactCity","loanContactStateCode","loanContactZipCode","loanContactPhoneNumber","loanContactPhoneExtension","loanContactEmailAddress","loanContactWebSiteAddress","NSLDSLoanSpecialContact","loanSpecialContactReason","loanSpecialContact","NSLDSGrant","grantContacts","grantType","grantAttendingSchoolName","grantAttendingSchoolOpeid","grantAwardYear","grantScheduledAmount","grantAwardAmount","grantDisbursedAmount","grantRemainingAmountToBePaid","grantFirstTime","grantAdditionalEligibility","NSLDSGrantContact","grantContactType","grantContactName","grantContactStreetAddress1","grantContactStreetAddress2","grantContactCity","grantContactStateCode","grantContactZipCode","NSLDSOverpayment","overpaymentContacts","overpaymentSpecialContacts","overpaymentAidType","overpaymentAttendingSchoolName","overpaymentAttendingSchoolOpeid","overpaymentDisbursementDate","overpaymentStatus","overpaymentRepaymentDate","NSLDSOverpaymentContact","overpaymentContactType","overpaymentContactName","overpaymentContactStreetAddress1","overpaymentContactStreetAddress2","overpaymentContactCity","overpaymentContactStateCode","overpaymentContactZipCode","overpaymentContactPhoneNumber","overpaymentContactPhoneExtension","overpaymentContactEmailAddress","overpaymentContactWebSiteAddress","NSLDSOverpaymentSpecialContact","overpaymentSpecialContactReason","overpaymentSpecialContact","NSLDSProgram","programStatuses","programSchoolName","programSchoolOpeid","programCIPTitle","programCredentialLevel","programBeginDate","programPublishedLengthInYears","NSLDSProgramStatus","programStatusDescription","programStatusEffectiveDate","NSLDSAward","awardSchoolName","awardSchoolOpeid","awardEarliestDisbursementDate","awardLoanPeriodBeginDate","awardLoanPeriodEndDate","awardSubsidizedUsage","awardSubsidyStatus","nsldsFieldType","student","NSLDSImporter","fileReader","content","handleFileRead","readAsText","fieldGroup","nsldsFieldGroup","line","lineItem","parseNSLDSFile","hasFieldInGroup","ParseNSLDSStudent","ParseNSLDSTotals","ParseNSLDSLoans","ParseNSLDSGrants","ParseNSLDSOverpayments","ParseNSLDSPrograms","ParseNSLDSAwards","nsldsObject","fileSource","fileRequestDate","getFileRequestDate","replaceAll","studentFirstName","studentMiddleInitial","studentLastName","studentStreetAddress1","studentStreetAddress2","studentCity","studentStateCode","studentCountryCode","studentZipCode","studentEmailAddress","studentHomePhoneCountryCode","studentHomePhoneNumber","studentHomePhonePreferred","studentCellPhoneContryCode","studentCellPhoneNumber","studentCellPhonePreferred","studentWorkPhoneContryCode","studentWorkPhoneNumber","studentWorkPhonePreferred","studentSULAMaximumEligibilityPeriod","studentSULASubsidizedUsagePeriod","studentSULARemainingEligibilityPeriod","studentEnrollmentStatus","studentEnrollmentStatusEffectiveDate","studentTotalAllLoansOutstandingPrincipal","studentTotalAllLoansOutstandingInterest","studentPellLifetimeEligibilityUsed","studentIraqAndAfghanistanServiceLifetimeEligibilityUsed","studentTotalAllGrants","undergraduateAggregateSubsidizedTotal","undergraduateAggregateUnsubsidizedTotal","undergraduateAggregateCombinedTotal","graduateAggregateSubsidizedTotal","graduateAggregateUnsubsidizedTotal","graduateAggregateCombinedTotal","aggregateSubsidizedTotal","aggregateUnsubsidizedTotal","aggregateCombinedTotal","currLoanType","findIndex","newTotalLoanType","grantIndex","newGrant","ParseNSLDSGrantContact","grantContactIndex","grantTypeCodeDescription","overpaymentIndex","newOverpayment","itemName","ParseNSLDSOverpaymentContact","ParseNSLDSOverpaymentSpecialContact","overpaymentContactIndex","overpaymentSpecialContactIndex","nsldsLoanType","loanIndex","newLoan","ParseNsldsLoanStatus","ParseNsldsLoanDisbursement","ParseNsldsLoanContact","ParseNSLDSLoanSpecialContact","loanStatusIndex","loanDisbursementIndex","loanContactIndex","loanSpecialContactIndex","GetLoanType","newLoanStatus","newLoanDisbursement","newLoanContact","newGrantContact","newOverpaymentContact","newOverpaymentSpecialContact","programIndex","newProgram","ParseNSLDSProgramStatus","programStatusIndex","newProgramStatus","awardIndex","newAward","testCounter","lineData","day","hour","NSLDSFile","uploadSuccessful","getNsldsData","nsldsHandleChange","importer","handleFileChosen","isSpouseNslds","_nsldsHandleChange","TextBlock","tab_upload_templateObject","PaddedDiv","tab_upload_templateObject2","VerticalCentered","tab_upload_templateObject3","StyledButton","tab_upload_templateObject4","SpacedDiv","tab_upload_templateObject5","TabUpload","external","openCloseModal","nslds_file","getNSLDSFile","updateNsldsUploaded","getErrorMessage","getModalText","tab_validate_templateObject","Centered","tab_validate_templateObject2","tab_validate_templateObject3","TabValidate","uploadDifferentNslds","newFieldsMissing","inScreening","hasErrors","errorContent","successContent","tab_validate_StyledButton","clearUploadedNslds","nsldsUploaded","tab_validate_TextBlock","fileUploaded","fileNotUploaded","tab_review_templateObject","tab_review_TextBlock","nsldsRequest","handleWorkflowComplete","uploadNslds","failed","failedUpload","workflowComplete","successfulUpload","nsldsFile","fileCode","fromScreening","nsldsUploadData","NSLDSWorkflowScreening","upload","inNSLDSWorkflow","currentToDo","toDoItemForRedirect","lwoStep","stepCurrent","currentLwoToDo","validateNsldsInfo","tab_upload","tab_validate","components_tab_review","allowedNavigate","review","_state$nslds","documentsLoadScreeningNSLDS","tab_nslds_templateObject","tab_nslds_templateObject2","RenewalTabNSLDS","isNSLDSWorkflowComplete","showNotNeeded","setShowNotNeeded","federalLoanBalance","nslds_workflow_screening","tab_nslds_Centered","tab_nslds_StyledButton","RenewalWorkflow","nsldsWorkflowComplete","marriage","employment","NSLDSValidationStatus","nsldsWorkFlowStartOver","removeNSLDSFileFromCache","uploaded","hasResults","tab_marriage","components_tab_household","components_tab_education","tab_employment","tab_income","tab_nslds","nsldsWorkFlowComplete","tab_review","components_tab_results","attributeStr","loadTabs","_state$renewal","advisor","Renewal","renewal_workflow","wants_meeting_TodoText","advisorInvalidateCache","advisorLoadResource","tab_education_templateObject","highestCompletedDegree","NONE","doctorateType","MD","DO","DDM","DDS","DVM","VMD","Other","continuingEducation","tab_education_RowFade","tab_finance_templateObject","TabFinance","IDK","UNDER","MID","HIGH","tab_finance_RowFade","SING","SEP","JOINT","referrerHasExplanation","referOpts","TabInfo","referrerExplanation","hireDate","homeAddressOne","homeAddressTwo","homeCity","homeState","homeZipCode","FadeFragment","tab_loans_templateObject","TabLoans","federalMonthlyPayment","pslfOnOwn","federalPrivateConsolidatedMix","hasParentPlus","hasPrivateLoans","privateInterestRate","ContributionValidator","valueMatchesList","approverEmail","clientEmails","contributionLoadResource","contributionCreateResource","contributionClearForm","contributionLoadCollection","contributionCopyResourceToForm","contributionHandleFormChange","contributionUpdateResource","contributionSetupLoadResource","getContributionSetupData","getContributionData","CustomerContributionValidator","customerContributionClearForm","customerContributionCopyResourceToForm","customerContributionHandleFormChange","customerContributionLoadCollection","customerContributionCreateResource","customerContributionUpdateResource","payment_help_templateObject","TopDiv","payment_help_templateObject2","BorderedDiv","payment_help_templateObject3","payment_help_templateObject4","PaymentHelp","payment_help_PaddedDiv","payment_help_StyledHeader4","getEmployerMonthlyAmountDisplay","contributionType","employerContribution","monthlyEmployerContribution","available_payment_history_table_templateObject","AvailablePaymentHistoryTable","displayHeaders","displayBody","displayEmployeeAmt","employeeContribution","account","employerAmount","employeeAmount","totalAmount","paymentScheduleDate","pageSize","getTable","available_payment_history_table_PaddedDiv","active_contribution_templateObject","PaddedIcon","FontAwesomeIcon","active_contribution_templateObject2","DivRight","active_contribution_templateObject3","PaymentHelpButton","active_contribution_templateObject4","active_contribution_templateObject5","ActiveContribution","showHelp","showModal","closeHelp","openHelp","closeModal","stepsCompleted","stageText","contributionStatus","categories","paymentHistory","element","monthlyAccountPayment","setup","nonPslfAllowCustomEmployeeContribution","dataLevel","contributionData","onEditContribution","padded_dd","getProgressBar","allowedEdit","active_contribution_StyledButton","getMonthlyEmployerContribution","showEmployeeContribution","active_contribution_PaddedDiv","getEmployerContribution","getEmployeeContribution","accountType","currentBalance","paymentSuccessDate","scheduledPayments","_this$props5","_this$props5$dataLeve","active","getBaseInfo","getRecentPaymentInfo","getFooterText","payment_help","available_payment_history_table","getDetailedInfo","customerContributionData","customerContribution","StyledDiv","overview_templateObject","overview_templateObject2","overview_templateObject3","StyledHeader5","overview_templateObject4","Overview","redirectUri","numActive","overview_DivRight","overview_StyledButton","components","contribution","active_contribution","componentDisplayNames","inactive_contribution_templateObject","inactive_contribution_templateObject2","inactive_contribution_templateObject3","InactiveContribution","inactive_contribution_DivRight","inactive_contribution_StyledButton","inactive_contribution_PaddedDiv","contribution_form_templateObject","CustomerContributionForm","accountsOnFile","currentLoanBalance","_this$props3$contribu","contributionEligibleAccounts","onAccountChange","getSelectedAccountInfo","D","P","true","false","_this$props4$errors","contribution_form_TextLeft","accounts","servicer_form_templateObject","StyledFade","servicer_form_templateObject2","ServicerForm","question1Text","question1Response","question2Text","question2Response","question3Text","question3Response","_this$props$data3","checkSecondColumnNoMissingData","routingNumber","checkSecondColumnNoErrors","_this$props3$refServi","refServicers","selectRefServicer","isCreating","refId","refServicerId","colVar","getShowSecondColumn","phoneExtension","servicer_form_TextLeft","ServicerTable","_ref$servicers","onEditServicer","ServicerValidator","servicersClearForm","servicersCopyResourceToForm","servicersHandleFormChange","servicersLoadCollection","servicersCreateResource","servicersUpdateResource","servicers_templateObject","servicers_templateObject2","servicers_templateObject3","servicers_templateObject4","Servicers","stopPropagation","template","copiedServicer","servicer","createServicer","updateServicer","instructionType","showTuitionInstructions","showContributionInstructions","reload","toDos","servicers_PaddedBadge","faSolidExclamation","servicers_PaddedIcon","hasContributionAccountTypes","refs","-1","servicers_StyledButton","onAddServicer","getIconForAdd","emptyMessage","servicer_table","servicer_form","onSelectRef","servicers_StyledCardText","_state$servicers","_createServicer","_updateServicer","refServicersLoadCollection","account_form_templateObject","InputAddonStyled","InputAddon","account_form_templateObject2","AccountForm","contbReverification","loanTypeCode","hasMultipleAccountDescriptions","loanDescription","accountNumber","loanServicerId","multipleTrAccounts","checkForMultipleTRAccounts","toUpper","errorNickname","_this$props4$servicer","allowedAccountTypes","hasTRAccountTypes","idrRepayment","handleContributionChanges","_this$props5$errors","account_form_TextLeft","AccountTable","_ref$accounts","onEditAccount","renderer","AccountValidator","addCustomMessage","isLessThan","isAfterDate","accountsClearForm","accountsCopyResourceToForm","accountsHandleFormChange","accountsLoadCollection","accountsCreateResource","accountsLoadResource","accountsUpdateResource","accounts_templateObject","accounts_templateObject2","accounts_templateObject3","accounts_templateObject4","Accounts","createAccount","updateAccount","accounts_PaddedBadge","accounts_PaddedIcon","showAddForForgive","showAddButton","accounts_StyledButton","onAddAccount","account_table","account_form","accounts_StyledCardText","_state$accounts","_createAccount","_updateAccount","MyAccounts","accountTypes","getAccountTypeDropDownOptions","loadMyAccountInfo","containers_servicers","reloadServicers","containers_accounts","reloadAccounts","ButtonSpacer","button_spacer_templateObject","active_contributions_templateObject","active_contributions_templateObject2","active_contributions_templateObject3","active_contributions_templateObject4","active_contributions_templateObject5","ActiveContributions","eligibleAccounts","contributionAvailableAccounts","uri","createCustomerContribution","getContributionEligibleAccounts","getContributionAvailableAccounts","updateCustomerContribution","active_contributions_PaddedBadge","active_contributions_PaddedIcon","_this$props4$data","active_contributions_StyledDiv","active_contributions_StyledButton","onAddContribution","active_contributions_StyledHeader5","contribution_form","_state$customerContri","_createCustomerContribution","_updateCustomerContribution","inactive_contributions_templateObject","inactive_contributions_templateObject2","InactiveContributions","numInactive","inactive_contributions_StyledHeader5","inactive_contributions_StyledDiv","inactive_contribution","contribution_summary_templateObject","contribution_summary_templateObject2","contribution_summary_templateObject3","FlexFooter","CardFooter","contribution_summary_templateObject4","ContributionSummary","getFAQ","_this$props$fromDashb","fromDashboard","retComponent","payoutStartDate","contributionRequest","contribution_summary_StyledDiv","faqUploaded","onDownloadFaq","contribution_summary_PaddedIcon","faFileDownload","totalContribution","totalEmployerContribution","monthsInProgram","ytdContribution","ytdEmployerContribution","contribution_summary_StyledHeader5","getPayoutDate","contribution_required_info_templateObject","contribution_required_info_templateObject2","ContributionRequiredInfo","contribution_required_info_PaddedBadge","contribution_required_info_DivRight","customerContributionMilestoneLoadCollection","customerContributionMilestoneClearForm","customerContributionMilestoneCopyResourceToForm","customerContributionMilestoneHandleFormChange","convertMilestonePaymentCodeToDescription","customerContributionMilestoneCreateResource","customerContributionMilestoneUpdateResource","convertMilestoneAccruementTypeCodeToDescription","milestoneType","RecentMilestonesTable","AlignLeft","available_milestones_table_templateObject","AvailableMilestonesTable","milestone_help_templateObject","milestone_help_templateObject2","milestone_help_templateObject3","milestone_help_templateObject4","MilestoneHelp","accruementBody","milestoneAccruementType","paymentBody","milestonePaymentType","milestone_help_TopDiv","milestone_help_BorderedDiv","milestone_help_PaddedDiv","milestone_help_StyledHeader4","getAccruementBody","getPaymentBody","my_milestones_templateObject","my_milestones_templateObject2","my_milestones_templateObject3","MyMilestones","my_milestones_DivRight","my_milestones_StyledButton","my_milestones_PaddedIcon","recent_milestones_table","available_milestones_table","milestone_help","customerContributionMilestone","MessageDiv","messages_templateObject","MessageDivNoPadding","messages_templateObject2","EmbedContainer","messages_templateObject3","EmbedContainerIFrame","iframe","messages_templateObject4","avatarLink","showAvatar","showMessage","noPadding","src","allow","allowfullscreen","messages_MessageDiv","messagesLoadResource","loadMessage","messagesLoadResourceRequest","messagesLoadResourceResponse","messagesHandleCacheChange","messagesUpdateResourceSuccess","messagesHandleError","messagesLoadResourceFailure","_loadMessage2","tileTitle","dataObject","messageObject","displayContent","_load","modalMessage","getMessageObject","contribution_overview_templateObject","ContributionOverview","urlInput","showSetUp","handleSetupButton","filingStatus","milestoneRequest","contribution_overview_ButtonRight","setRedirectURI","message_tile","contribution_summary","overview","contribution_required_info","my_milestones","Spaced","contribution_qualify_templateObject","ContributionQualify","components_messages_templateObject","components_messages_templateObject2","components_messages_templateObject3","components_messages_templateObject4","messages_EmbedContainer","messages_EmbedContainerIFrame","components_messages_MessageDiv","messages_MessageDivNoPadding","needAssistanceLoadResource","needAssistanceLoadResourceRequest","needAssistanceLoadResourceResponse","needAssistance","needAssistanceHandleCacheChange","needAssistanceUpdateResourceSuccess","needAssistanceHandleError","needAssistanceLoadResourceFailure","messageId","showAlert","components_messages","contactEmail","contact_form_templateObject","contact_form_templateObject2","ContactForm","cellPhone","contact_form_StyledCheckbox","contact_form_TextMessageText","altPhone","PersonalForm","maidenName","driverLicenseNumber","driverLicenseState","ProfileValidator","requiredSelection","needsProfileVerification","checkRequired","profileCopyResourceToForm","profileHandleFormChange","profileLoadResource","profileUpdateResource","profileSaveForm","profile","verifyProfile","StyledWrapper","profile_form_templateObject","ProfileForm","saveData","verification","contact","personal","getFormData","_this$props6","_this$props6$data","_this$props6$errors","copyRequest","updateRequest","combined","personal_form","components_account_form","contact_form","Id","flex_end","saveAndRedirect","_state$profile","_saveData","MyProfile","profile_form","scheduler_form_templateObject","scheduler_form_templateObject2","StyledBody","scheduler_form_templateObject3","StyledText","scheduler_form_templateObject4","StyledFooter","scheduler_form_templateObject5","StyledGroup","InputGroup","scheduler_form_templateObject6","NoteWrapper","scheduler_form_templateObject7","InputHelpLeft","scheduler_form_templateObject8","InputLabelLeft","scheduler_form_templateObject9","getPhoneNumber","checkMeetingDateTimeIsSelected","getHours","startOfToday","SchedulerForm","schedule","slots","_ref$phone","_ref$rescheduleID","rescheduleID","note","setNote","setSelected","dates","useMemo","Set","u","getDatesFromSlots","times","getTimesForSelectedDate","scheduler_form_StyledCard","scheduler_form_LoaderWrapper","dateFormat","includeTimes","includeDates","inline","timeFormat","timeCaption","showTimeSelect","meetingsValidator","MeetingsValidator","meetingsDeleteResource","meetingsCreateResource","meetingsHandleCacheChange","meetingsHandleFormChange","meetingsCancelMeeting","meetings","available","meetingsLoadCollectionRequest","meetingsLoadCollectionResponse","meetingsLoadCollectionSuccess","meetingsHandleError","meetingsLoadCollectionFailure","StyledSuccess","scheduler_templateObject","secondary","Scheduler","schedulerIsOpen","shouldClose","successfulSchedule","_this$props$slots","open","meetingStartTime","_this$props$slots2","time","_this$props$slots3","meeting","phoneChanged","phoneType","scheduleMeeting","clearSlots","loadSlots","createRequest","reloadProfile","_this$props3$form","_this$props3$reschedu","faCheckCircle","buttonBrand","toggleScheduler","scheduler_form","getOpenSlots","formRequest","getPhone","slotsRequest","_cache","meetingsCreateResourceRequest","meetingid","meetingsCreateResourceResponse","meetingsCreateResourceSuccess","meetingsCreateResourceFailure","meetingsScheduleMeeting","FaqQuestion","showAnswer","faAngleDown","faAngleRight","question","needAssistanceObject","ContributionAssistanceObject","ContributionPromptObject","needAssistanceText","needAssistanceAvatarLink","needAssistancePrompt","blocktext","showSpeakToAnExpertButton","text-align","scheduler","need_assistance","display","faq_question","qualify_templateObject","ForgivenessQualify","newPayment","savings","qualify_Spaced","qualify_short_term_templateObject","ForgivenessShortTermQualify","qualify_short_term_Spaced","payment_compare_templateObject","PaymentCompare","oldPayment","_ref$bigTitle","bigTitle","payment_compare_StyledRow","dataType","repayment_pie_templateObject","RepaymentPie","repay","forgive","_ref$cutout","cutout","repayment_pie_StyledRow","pie","StyleBar","ProgressBar","forgiveness_progress_templateObject","ForgivenessProgress","forgivenessStep","stepPath","stepText","fullServiceSteps","completedSteps","stepComplete","Math","currentSteps","stepPaths","steps","getCurrentStepPath","currentURI","getCompletedSteps","getCurrentStep","removeContainer","getTotalSteps","getLockedSteps","getCurrentStepText","onCurrentStep","goToCurrentStep","summary_templateObject","summary_templateObject2","ForgivenessSummary","monthlySavings","standardPayment","totalIdrRepayment","totalStandardRepayment","redirectToFAQ","summary_PaddedIcon","btsReviewDate","recertDate","renewalQuestionnaireDate","renewalRecertificationDeadline","renewalDocumentDate","payment_compare","repayment_pie","forgiveness_progress","summary_FlexFooter","forgiveness","TaxCompare","_ref$jointly","jointly","_ref$separately","separately","_ref$savings","legend","horizontal","TotalRepayment","_ref$totalStd","totalStd","_ref$totalIdr","totalIdr","_ref$years","lines","fill","xDataType","yDataType","multiAxis","xScaleLabelDisplay","xScaleLabelLabelString","yScaleLabelDisplay","yScaleLabelLabelString","MyForgiveness","repaymentTerm","showTaxCompare","isPreSale","nextPayment","total_repayment","my_references","tax_compare","marriedFilingJointly","marriedFilingSeparate","taxSavings","StepDisplay","showBody","selfServiceDocumentHandleCacheChange","selfServiceDocumentMarkStatus","readyToSend","sentToServicer","documentIncorrect","selfServiceDocument","selfServiceDocumentClearDocument","old","selfServiceDocumentUpdateAll","selfServiceDocumentUpdateResource","selfServiceDocumentUpdateResourceRequest","selfServiceDocumentUpdateResourceResponse","selfServiceDocumentUpdateResourceSuccess","selfServiceDocumentHandleError","selfServiceDocumentUpdateResourceFailure","selfServiceDocumentClientEmpCertApproval","documentId","empcertApproval","ssn1","ssn2","ssn3","selfServiceDocumentLoadDocuments","toDoStepId","selfServiceDocumentLoadCollectionRequest","selfServiceDocumentLoadCollectionResponse","selfServiceDocumentLoadCollectionSuccess","selfServiceDocumentLoadCollectionFailure","fax_approval_templateObject","FaxApproval","markDocument","alreadySent","documentIncorrectModal","stepId","isFulfillmentDoc","showSubmitWarning","fax_approval_TextLeft","getFormReviewInstructions","submitDocumentIncorrect","toggleDocumentIncorrectModal","submitApproval","update","_update","_markDocument","_alreadySent","_documentIncorrect","empcert_approval_form_templateObject","empcert_approval_form_templateObject2","EmpcertApprovalForm","handleApproverSignature","handleSectionSixModal","customerName","ein","employerWebsite","employmentBeginDate","employmentHoursPerWeek","employmentStatus","htmlfor","empcert_approval_form_StyledInputError","empcert_approval_form_RowFade","approverName","approverPhone","approverTitle","signaturePadApprover","allowedToSubmit","EmpCertApprovalValidator","empcertApprovalCopyResourceToForm","empcertApprovalClearForm","empcertApprovalHandleFormChange","empcertApprovalLoadResource","empcertApprovalUpdateResource","empcertApprovalSaveApprovalInfo","LeftText","empcert_section_six_templateObject","faXIcon","_ref$request","submitSuccessful","setSubmitSuccessful","hasSubmitted","setHasSubmitted","_useState5","_useState6","openSectionSixModal","setOpenSectionSixModal","hasServerErrors","getElementsByClassName","empcert_approval_success","empcert_approval_form","empcert_approval_invalid","empcert_section_six","empcert_client_approval_templateObject","clientSignAndApprove","_clientSignAndApprove","setFormState","setssn1State","setssn2State","_useState7","_useState8","setssn3State","_useState9","_useState10","setDocumentIncorrectModal","empcert_client_approval_TextLeft","empCertSSN","InputWrapper2","standard_fax_templateObject","StandardFax","confirm","_this$props$documents","additionalData","updateDocumentStatus","stepMapping","getStepMapping","currentStep","forReducedIDR","enterpriseEmpCertSteps","enterpriseEmpCertStep","reducedIdrStep","reducedIDRStep","showNewForm","_this$props5$document","documentBody","paymentNeeded","documentStatus","documentStatusString","uploadedToFiducius","button_spacer","showDocument","employmentHistoryId","onUpdateDocumentStatus","reloadDocs","_this$props$documents2","allowedConfirm","_this$props$documents3","_this$props$documents4","inProcessing","processing","dd","_this$props$documents5","customRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","customLocale","englishDefault","formatRelative","baseDate","dateToSend","todayDate","getTodaysDate","adjustedMeetingTime","addSuffix","locale","goToInfo","_this$props7","updateToDosAndLoad","_this$props8","faxesInProcessing","getDateToSend","getDocumentList","showGoToNextStep","showConfirmation","fax_approval","getCurrentToDo","empcert_client_approval","_updateToDosAndLoad","_reload","_confirm","_updateDocumentStatus","standard_confirmation_templateObject","standard_confirmation_templateObject2","StandardConfirmation","idrConfirm","checkStepCompletedReducedIDR","checkStepCompletedForgive","checkNotYetAtStepReducedIDR","checkNotYetAtStepForgive","goToCurrentStepReducedIDR","goToCurrentStepForgive","_this$props9","_this$props10","checkNotYetAtStep","standard_confirmation_StyledHeader4","checkStepCompleted","needsDocumentsGenerated","checkLockedForLWO","redirectForLWO","redirectForDocumentGeneration","standard_fax","redirectForInSchoolQuestionnaire","standard_confirmation_InputWrapper2","additionalInfoNeeded","_idrConfirm","ForbearancePhaseOne","step_display","standard_confirmation","ForbearancePhaseOneFS","ForbearancePhaseTwo","employment_history_form_templateObject","EmploymentHistoryForm","endDate","payPeriods","hours","employmentClassification","employmentType","employment_history_form_TextLeft","EmploymentHistoryTable","_ref$employers","onEditEmployer","onDeleteEmployer","showEdit","showDelete","deleteButtonPos","deletable","faTrash","employmentHistoryValidator","EmploymentHistoryValidator","employmentHistoryClearForm","employmentHistoryCopyResourceToForm","employmentHistoryHandleFormChange","employmentHistoryLoadCollection","employmentHistoryLoadResource","employmentHistoryCreateResource","employmentHistoryDeleteResource","employmentCreateResource","employmentUpdateResource","employmentHistoryUpdateResourceRequest","employmentHistory","employmentHistoryUpdateResourceResponse","employmentHistoryHandleCacheChange","employmentHistoryUpdateResourceSuccess","employmentHistoryHandleError","employmentHistoryUpdateResourceFailure","empcertSaveApproverInfo","stepState","employmentHistoryCache","attributeObject","empcertApproverEmail","empcertApproverUnknown","empcertNeeded","updatingApprover","employmentDeleteResource","employers_templateObject","employers_templateObject2","FlexRow","employers_templateObject3","employers_templateObject4","employers_templateObject5","AlignTextLeft","employers_templateObject6","Employers","prevRequestLoading","currentRequest","createEmployer","updateEmployer","deleteEmployer","openPartTimeEmpModal","handlePartTimeEmpModal","createLoading","updateLoading","deleteLoading","create","deleteR","processCloseForm","checkCloseForm","reloadWithTodos","employers_PaddedIcon","employers_StyledLede","checkQualification","employers_StyledButton","onAddEmployer","employment_history_table","partTimeEmpModalContent","employment_history_form","onUpdateOrDelete","_state$employmentHist","_createEmployer","_updateEmployer","_deleteEmployer","employment_approver_form_templateObject","employment_approver_form_templateObject2","isReducedIDREmpCert","foundErrors","approverEmailFromEligFile","eligfileEmpcertApproverEmail","approverEmailFromPartnerSetup","emplifyAuthorizedOfficialEmail","getEmpcertApproverEmail","employment_approver_form_TextLeft","employment_approver_form_StyledCheckbox","_submit","setErrorState","formErrors","employerId","isEmployerUnknown","clientEmailAddress","clientEmail","clientUsername","newError","isClientEmailAddress","emailAddressValue","emailList","toLowerCase","newFormData","approverUnknown","employment_approver_form","EmpCert","handleSectionClick","sectionName","showStep1","showStep2","showStep3","scrollToStep","nextToDo","empCertStep","stepDateRestriction","stepRestriction","showStep1b","getElementById","scrollIntoView","behavior","electronicEmpCertApprovalEnabled","step1Complete","getStep1Brand","restrictionDate","getStep3RestrictionDate","handleStep1Click","getStep2Brand","handleStep2Click","getStep3Brand","handleStep3Click","employer_approvers","overlayCard","hideOverlay","disableChildren","implementationResultsLoadResource","implementationResultsUpdateResource","EmpCertFS","empCertReceived","implementationResults","Consolidation","message_div","ConsolidationFS","consolidationAppSigned","ContributionSS","CurrentToDo","disableButtons","ComponentStepDisplay","showProp","handleShowProp","DocsNeededForRSUpload","docsNeeded","documentButton","docArray","taxesNeeded","spouseTaxesNeeded","paycheckNeeded","spousepaycheckNeeded","EmploymentCertificationNeeded","pretaxLetterNeeded","wtwoNeeded","clientNSLDSNeeded","spouseNSLDSNeeded","driversLicenseNeeded","fedLoanAuthNeeded","documentsNeeded","taxText","paystubText","docArray2","key2","value2","redirectToDocuments","renewal_confirmation_templateObject","renewal_confirmation_templateObject2","renewal_confirmation_templateObject3","RenewalConfirmation","getNextStepPath","confirmEmploymentHistory","confirmDenied","empCertDeniedModal","acknowledgeRsFeeCredits","enterpriseEmpcertStep","renewal_confirmation_InputLabel2","renewal_confirmation_InputWrapper2","redirectForDocumentUploadOrSign","redirectForProfileVerification","redirectForQuestionnaire","redirectForRenewalPayment","rsCreditProcess","redirectForNSLDSUpload","onConfirmDenied","atCompleteStep","completeStep","getResources","docs_upload_needed","zeroBalance","renewal_confirmation_TextLeft","toggleEmpCertDeniedModal","_acknowledgeRsFeeCredits","_confirmDenied","_confirmEmploymentHistory","ContributionRSSS","component_step_display","renewal_confirmation","customStep3Show","servicerNames","goToStep3","repaymentPlanAmountInfo","planChangingInfo","isMarriedText","projectedRepaymentPlanType","planChangingCode","getServicerNames","reduced_idr_progress_templateObject","ReducedIDRProgress","reduced_idr_progress_StyleBar","IdrReduced","inStepId","retStepId","getStepId","benefitData","isMarriedRenewalText","repaymentPlanLabelText","repaymentAmountLabelText","reduced_idr_progress","getShowGracePeriodOverlay","getGracePeriodEndDate","IDRFS","repaymentAppSigned","welcome_templateObject","TextLeftList","ul","welcome_templateObject2","welcome_templateObject3","Welcome","showProfile","showReferences","showServicers","showAuthorizedUse","handleProfileScroll","handleReferenceScroll","handleServicerScroll","handleAuthorizedUseScroll","getForbearanceText","authUseCompleted","referencesCompleted","CurrentForgivenessStep","checkAuthorizedUseCompleted","checkReferencesCompleted","getResource","checkProfileCompleted","handleProfileClick","handleReferencesClick","handleAuthorizedUseClick","checkServicersCompleted","handleServicersClick","welcome_TextLeft","welcome_ButtonWrapper","Taxes","taxesStep","OHGraduation","clientGraduated","gradReadyForStrategy","Complete","inRecert","getFailedInfo","ProfileVerification","RenewalQuestionnaire","RenewalExtension","FeeRS","renewalBalance","paymentReceived","serviceFee","feePaid","getFeeText","ForbearanceRS","EmpCertSS","correctionStepRedirect","checkForCorrectionStep","IDRSS","DocNeededRSFS","StyledMeetingCard","meeting_templateObject","meeting_templateObject2","cancelMeeting","advisorName","isMeetingPast","meeting_StyledFooter","meeting_list_templateObject","meeting_list_templateObject2","MeetingList","meeting_list_Wrapper","m","components_meeting","meeting_list_StyledHeader4","my_meetings_templateObject","my_meetings_templateObject2","MyMeetingContainer","my_meetings_templateObject3","MyMeetings","loadMeetings","deleteRequest","_this$props$myMeeting","myMeetings","my_meetings_Container","my_meetings_StyledHeader3","meeting_list","_cancelMeeting","MeetingRSFS","response","numMeetings","MeetingDateTime","meetingScheduledDate","slotId","IDRRSFS","IDRAvailable","idrDelivered","AccountReviewRS","Recertification","recertificationSubmitted","Moment","submissionToBeCompletedDate","recertificationSubmittedDate","EmpCertRSFS","empCertApproved","LeftContent","bts_review_templateObject","RightContent","bts_review_templateObject2","bts_review_templateObject3","BottomContent","bts_review_templateObject4","VerticalLine","bts_review_templateObject5","bts_review_templateObject6","TabbedDD","bts_review_templateObject7","bts_review_templateObject8","BtsReview","bts_review_StyledHeader5","buttonType","showHistory","monthly","initial","previous","oneDimArray","j","livingExp","recommended","livingExpensePercent","negativeLivingExp","tuitionBorrowed","tuitionLeftToBorrow","livingExpBorrowed","livingExpLeftToBorrow","negativeTuition","recommendedBorrowingRemain","recommendedBorrowingRemainAddInfo","tableVariables","totalBorrowRec","recTuitionToBorrow","recLivingExpToBorrow","newYearlyBorrowedAmt","EstIDR","ExpectedIncome","EstStandard","loanTicks","tableData","pivotDataTable","pivotTableHeaders","getPivotHeaders","prevYearLoanBalance","getPrevYearBal","getTuitionLeft","getLivingExpLeft","handleYearlyMonthly","abs","bts_review_ButtonRight","handleChartHistory","bts_review_StyledButton","handleEducationClick","educationCreditTaxesInfo","fafsaFinancialAidInfo","benefitsRetirementInfo","BtsQuestionnaire","questNeeded","showEmpty","NSLDSUpload","qualified_payment_pie_templateObject","QpPie","qualifiedPayments","paymentsRemain","qualified_payment_pie_StyledRow","about_assure_templateObject","AboutAssure","about_assure_StyledCardText","components_qualify_templateObject","lwo_progress_templateObject","LwoProgress","lwoStepsTotal","currentLwoStep","lwo_progress_StyleBar","ConsolidationLwo","lwo_progress","limitedWaiverOpportunityLoadResource","limitedWaiverOpportunityUpdateResource","limitedWaiverOpportunityCopyResourceToForm","lwo_overview_modals_templateObject","LwoOverviewModals","showCalc","showConfirm","aModalIsOpen","resetModalOption","modalOption","showBorrow","showTaxes","lwo_overview_modals_StyledCardText","ResultsTable","_ref$loans","_ref$showEstimated","showEstimated","loan","loanTypeName","estimatedQps","LwoOverview","modalToOpen","results_table","eligibleLoans","qualified_payment_pie","qualifiedPayment","submittedLoans","lwo_overview_modals","eHRequests","lwoRequests","limitedWaiverOpportunity","components_summary_templateObject","LwoSummary","retComponents","pslfQps","getCardText","getSummaryCharts","components_summary_FlexFooter","components_fax_approval_templateObject","components_fax_approval_TextLeft","submitAlreadySent","lwo_fax_templateObject","LwoFax","lwo_fax_InputWrapper2","components_fax_approval","lwo_opt_out_templateObject","LwoOptOutModal","clickOption","handleModalAction","lwo_opt_out_StyledCardText","lwo_confirmation_templateObject","lwo_confirmation_templateObject2","LwoConfirmation","showOptOutModal","optOutLwo","companyPaid","originationPaid","lwo_confirmation_InputLabel2","lwo_confirmation_InputWrapper2","redirectForPayment","checkStepCurrentAndComplete","redirectForNsldsUpload","showOptOut","openOptOutModal","redirectToLearnMore","redirectToSignAgreement","lwo_opt_out","handleOptOutModal","lwo_fax","_optOutLwo","loan_information_templateObject","LwoLoanInfo","lwo_confirmation","results_templateObject","Results","_ref$permissions","showResults","results_StyledDiv","questionnaire_templateObject","LwoQuestionnaire","questionnaire_templateObject2","questionnaire_templateObject3","firstLoanDate","getFirstLoanDateFormatted","containers_employers","fullRequest","innerAsyncLoaderContent","questionnaire_StyledDiv","currentStage","currentBenefitStage","agreement_templateObject","agreement_templateObject2","agreement_templateObject3","agreement_templateObject4","agreement_templateObject5","agreement_templateObject6","LwoAgreement","openNeverWorkFiduModal","handleNeverWorkFiduModal","renderCompanyPaid","renderOriginationPaid","renderVoluntaryPaid","lwoCost","agreement_SpacedDiv","agreement_StyledButton","agreement_PaddedIcon","renderPaidTile","agreement_AlignTextLeft","agreement_FlexRow","agreement_StyledLede","LwoFee","employment_certification_templateObject","employment_certification_templateObject2","employment_certification_templateObject3","employment_certification_templateObject4","employment_certification_templateObject5","employment_certification_templateObject6","LwoEmploymentCertification","stepNumber","buttonStageId","openWhatHappenStepModal","handleWhatHappenStepModal","getRestrictionDate","employment_certification_StyledButton","employment_certification_PaddedIcon","getButtonBrand","handleStepClick","employment_certification_AlignTextLeft","employment_certification_FlexRow","employment_certification_StyledLede","LwoComplete","LwoNotQualified","showPSLFMessage","confirmation_templateObject","LwoFinalConfirmation","refinance_components_qualify_templateObject","RefinanceQualify","rate","refinance_components_qualify_Spaced","operations2","refiLoadResource","refiDisableValidation","refiGetExistingQuotes","refiLoadResourceRequest","refiLoadResourceResponse","refi","quotes","refiHandleCacheChange","refiHandleError","refiLoadResourceFailure","refiUpdateResourceSuccess","refiLoadResourceSuccess","summary_quotes_templateObject","SummaryQuotes","_this$props$request","summary_quotes_LoaderWrapper","enrolled_templateObject","enrolled_templateObject2","QuotesTable","sendApply","_ref$quotes","rateType","termLength","form_templateObject","OpeIdText","form_templateObject2","InstitutionWrapper","form_templateObject3","Highlight","strong","form_templateObject4","colorLevel","warning","asyncFetcher","render","institution","institutionName","parts","part","renderInstitutionResult","RefinanceForm","updateOpeId","fetcher","form_StyledButton","getAffiliateLinkByName","_result","affiliate","cdnLocation","affiliateLink","affiliateLoadCollection","LinkWrapper","tile_templateObject","AffiliateLink","tile_templateObject2","AffiliateImage","CdnImage","tile_templateObject3","AffiliateTile","getAffiliates","affiliates","order","tile_AffiliateLink","cdn","imagePath","lightImage","darkImage","alt","imageAltText","imageSubText","processedAffiliates","getSortedAffiliates","_state$affiliate","GetAffiliateLinkByName","affiliateName","affiliateByName","_affiliateByName","linkText","targetText","relText","affiliateData","setAffiliateData","isSubscribed","StyledLoader","my_refinance_templateObject","my_refinance_templateObject2","FlexEnd","my_refinance_templateObject3","MyRefinance","getQuotes","hasRequestedQuotes","opeId","disclaimerIsOpen","hasAddress","redirectURL","alertText","prevApply","applyRequest","prevForm","getFormRequest","currentApply","currentForm","selectionUrl","getQuotesRequest","components_link","components_form","quotes_table","toggleDisclaimer","my_refinance_TextLeft","_state$refi","_getForm","cacheKeys","acceptLoanType","refiHandleFormChange","_state","refiUpdateResourceRequest","refiUpdateResourceResponse","refiUpdateResourceFailure","q","refiSendApply","refiUpdateOpeId","refinance_components_summary_templateObject","components_summary_templateObject2","summary_templateObject3","summary_Spaced","currentMonthlyPayment","summary_LoaderWrapper","refinance_components_summary_FlexFooter","simplifi_components_qualify_templateObject","SimpliFiQualify","simplifi_components_qualify_Spaced","_ref$newPayment","_ref$oldPayment","simplifiLoadResource","getSimplifiData","simplifi_components_summary_templateObject","simplifi","program","components_payment_compare","simplifi_components_summary_FlexFooter","ConsolidationComplete","consolidation_complete_TodoText","ConsolidationCheck","consolidation_check_TodoText","TuitionValidator","tuitionLoadResource","tuitionCopyResourceToForm","tuitionHandleFormChange","tuitionUpdateResource","getTuitionData","getTuitionInstitutionData","tuition_institution_form_templateObject","ResultWrapper","tuition_institution_form_templateObject2","tuition_institution_form_templateObject3","tuition_institution_form_templateObject4","TuitionInstitutionForm","tuition_institution_form_InstitutionWrapper","tuition_institution_form_Highlight","dapipId","showFetcher","onUpdateDropdown","asyncNullFetcher","tuition_institution_form_TextLeft","tuitionInstitutionValidator","TuitionInstitutionValidator","tuitionInstitutionClearForm","tuitionInstitutionCopyResourceToForm","tuitionInstitutionHandleFormChange","tuitionInstitutionLoadResource","tuitionInstitutionLoadCollection","tuitionInstitutionCreateResource","tuitionInstitutionDeleteResource","institutionUpdateResource","tuitionInstitutionUpdateResourceRequest","tuitionInstitution","tuitionInstitutionUpdateResourceResponse","tuitionInstitutionUpdateResourceSuccess","tuitionInstitutionHandleError","tuitionInstitutionUpdateResourceFailure","institutionDeleteResource","tuition_institution_row_templateObject","DivEnd","tuition_institution_row_templateObject2","tuition_institution_row_templateObject3","TuitionInstitutionRow","degrees","certifications","allowedCertifications","hydrateInstitutionForm","institutionId","isDeleting","institutionSelection","handleInstitutionForm","updateInstitution","handleDeleteInstitution","clearInstitutionForm","specialDegreeName","getDegreeTypeDropDownOptions","getCertificationDropDownOptions","tuition_institution_row_StyledButton","editInstitution","editable","deleteInstitution","getDegreeText","tuition_institution_form","onChangeInstitution","updateInstitutionDropdown","onDeleteInstitution","onUpdateInstitution","onCreateInstitution","_state$tuitionInstitu","loadInstitution","_hydrateInstitutionForm","_updateInstitution","_handleDeleteInstitution","tuition_institution_term_form_templateObject","TuitionInstitutionTermForm","defaultInstitutionId","termName","totalCost","costPerCreditHour","theDate","institutionList","tuition_institution_term_form_TextLeft","tuitionInstitutionTermValidator","TuitionInstitutionTermValidator","startDateLimit","isBeforeDate","tuitionInstitutionTermClearForm","tuitionInstitutionTermCopyResourceToForm","tuitionInstitutionTermHandleFormChange","tuitionInstitutionTermLoadResource","tuitionInstitutionTermDeleteResource","tuitionInstitutionTermLoadCollection","termCreateResource","tuitionInstitutionTermCreateResourceRequest","tuitionInstitutionTerm","tuitionInstitutionTermCreateResourceResponse","tuitionInstitutionTermCreateResourceSuccess","tuitionInstitutionTermHandleError","tuitionInstitutionTermCreateResourceFailure","termUpdateResource","tuitionInstitutionTermUpdateResourceRequest","tuitionInstitutionTermUpdateResourceResponse","tuitionInstitutionTermUpdateResourceSuccess","tuitionInstitutionTermUpdateResourceFailure","termDeleteResource","tuition_institution_term_row_templateObject","tuition_institution_term_row_templateObject2","tuition_institution_term_row_templateObject3","TuitionInstitutionTermRow","realInstitutions","termId","terms","hydrateTermForm","handleTermForm","updateTerm","handleDeleteTerm","clearTermForm","hasMissingInformation","_this$props$form","term","tuition_institution_term_row_DivEnd","tuition_institution_term_row_StyledButton","editTerm","deleteTerm","padded_badge","renderMissingInfoLengend","tuition_institution_term_form","onChangeTerm","onDeleteTerm","onUpdateTerm","onCreateTerm","getInstitutionList","_hydrateTermForm","_updateTerm","_handleDeleteTerm","TuitionInstitutionHistoryTermRow","showTerm","classes","reimbursementDate","reimbursedAmount","myClass","grade","tuition_institution_current_term_row_templateObject","ToolTipSpan","tuition_institution_current_term_row_templateObject2","currentStatusCode","termEndDate","getAllStepsDenied","expectedPayoutDate","tuition_institution_current_term_row_PaddedIcon","getClassRowInformation","TuitionInstitutionHistoryRow","showInstitution","tuition_institution_history_term_row","tuition_institution_current_term_row","tuition_setup_summary_templateObject","tuition_setup_summary_templateObject2","tuition_setup_summary_templateObject3","AlignTextRight","tuition_setup_summary_templateObject4","tuition_setup_summary_templateObject5","TuitionSetupSummary","qualifyingPrograms","certificationsAllowed","benefitLimit","generalReimbTimeframe","enrollmentQualifyingPrograms","pslfQualification","benefitEnrollmentEnd","reimbursementTime","round","reimbursementTimeMaxWage","maxReimbursementAmount","employeeLifetimeMax","tuition_setup_summary_AlignTextLeft","tuition_setup_summary_FlexRow","tuition_setup_summary_StyledLede","degreeTermSetupEndModifier","endOrStartDegree","documentTimeLimitDegree","degreeTermPrePaySetupEndModifier","degreeRegistration","degreeReimbursementTiming","degreeReimbInfoTime","degreeReimbursementRequestEnd","certificationReimbursementRequestEndModifier","degreeReimbursementRequestEndModifier","degreePrePayTermSetupEndModifier","certTermSetupEndModifier","certTermPrePaySetupEndModifier","endOrStart","documentTimeLimit","certRegistration","certReimbursementTiming","certReimbInfoTime","certificationTermSetupEndModifier","certificationPrePayTermSetupEndModifier","certificationReimbursementRequestEnd","trSetUp","preApprovalStatus","docReceivedDate","docRecommendedDate","getGeneralInformation","getDegreeInformation","getCertificationInformation","getReimbursementInformation","tuition_setup_summary_StyledCardText","buttonLocation","overview_summary_templateObject","overview_summary_templateObject2","PolicyInformationDiv","overview_summary_templateObject3","OverviewSummary","overview_summary_PaddedIcon","alertMessage","needSpecialMessage","overview_summary_FlexRow","maxYtdReimbursed","totalReimbursed","ytdReimbursed","pendingReimbursement","tuition_setup_summary","TuitionStatusInfo","postApprovalStatus","approvalType","overview_institutions_templateObject","overview_institutions_templateObject2","overview_institutions_templateObject3","overview_institutions_templateObject4","OverviewInstitutions","openStatusModal","handleStatusModal","overview_institutions_FlexRow","tuition_institution_current_row","overview_institutions_StyledButton","manageInstitutionsRedirect","overview_institutions_PaddedBadge","manageTermsRedirect","manageClassesRedirect","overview_institutions_PaddedIcon","noReimbursementsOnFile","showCarousel","getCarouselComponents","getCarouselButtons","tuition_status_info","approver_email_templateObject","approver_email_templateObject2","ApproverEmail","prevLoading","approver_email_TextLeft","approver_email_FlexRow","tuition","required_information_templateObject","RequiredInformation","required_information_PaddedBadge","needApproverEmail","updateManagerEmail","approver_email","my_tuition_templateObject","MyTuition","_this$props2$permissi","my_tuition_ButtonRight","overview_summary","required_information","overview_institutions","institutionRequest","my_institutions_templateObject","my_institutions_templateObject2","MyInstitutions","institutions","addClass","my_institutions_PaddedIcon","my_institutions_FlexRow","tuition_institution_row","my_terms_templateObject","my_terms_templateObject2","MyTerms","hasMissingInfo","my_terms_FlexRow","my_terms_PaddedIcon","currentInstitution","noInstitutionsOnFile","tuition_institution_term_row","missingInfo","noTermsOnFile","degreeGradeList","F","AC","FW","FI","certificationGradeList","editableGrade","editableClassName","tuition_institution_class_form_templateObject","TuitionInstitutionClassForm","isCertification","setGradeTextValue","termList","gradeList","Term In Progress","tuition_institution_class_form_TextLeft","tuitionInstitutionClassValidator","TuitionInstitutionClassValidator","tuitionInstitutionClassClearForm","tuitionInstitutionClassCopyResourceToForm","tuitionInstitutionClassHandleFormChange","tuitionInstitutionClassLoadResource","tuitionInstitutionClassDeleteResource","tuitionInstitutionClassLoadCollection","tuitionInstitutionClassCreateResource","classUpdateResource","tuitionInstitutionClassUpdateResourceRequest","tuitionInstitutionClass","tuitionInstitutionClassUpdateResourceResponse","tuitionInstitutionClassUpdateResourceSuccess","tuitionInstitutionClassHandleError","tuitionInstitutionClassUpdateResourceFailure","classDeleteResource","tuition_institution_class_row_templateObject","tuition_institution_class_row_templateObject2","tuition_institution_class_row_templateObject3","TuitionInstitutionClassRow","classId","hydrateClassForm","handleClassForm","updateClass","handleDeleteClass","clearClassForm","formType","thisClass","classCurrent","isClassCurrentAndEditable","tuition_institution_class_row_DivEnd","tuition_institution_class_row_StyledButton","editClass","deleteClass","tuition_institution_class_form","onChangeClass","onDeleteClass","onUpdateClass","onCreateClass","getTermList","_hydrateClassForm","_updateClass","_handleDeleteClass","TuitionInstitutionHistoryClassRow","TuitionInstitutionCurrentClassRow","my_classes_templateObject","my_classes_templateObject2","my_classes_templateObject3","MyClasses","my_classes_FlexRow","my_classes_PaddedIcon","_this4","_this5","currentTerm","my_classes_StyledButton","curClass","tuition_institution_class_row","noClassesOnFile","my_reimbursement_history_templateObject","MyReimbursementHistory","my_reimbursement_history_FlexRow","tuition_institution_history_row","tuition_components_qualify_templateObject","TuitionQualify","tuitionAmount","tuition_components_qualify_Spaced","qualifiedForgiveness","tuition_components_summary_templateObject","tuition_components_summary_templateObject2","TuitionSummary","institutionData","_this$props2$institut","components_summary_PaddedIcon","getTermInfo","tuition_components_summary_FlexFooter","enrolling_tuition_templateObject","TRAssistanceObject","TRMessagePromptObject","empcert_components_qualify_templateObject","EmpcertQualify","empcert_components_qualify_Spaced","emp_cert_progress_templateObject","EnterpriseEmpcertProgress","emp_cert_progress_StyleBar","EmpCertGenerate","reducedIdrRedirect","emp_cert_progress","EmpCertSubmit","stepNextReviewDate","getNextReviewDate","EmpCertCorrection","freshstart_components_qualify_templateObject","FreshStartQualify","freshstart_components_qualify_Spaced","fresh_start_progress_templateObject","FreshStartProgress","freshStartStep","fresh_start_progress_StyleBar","freshstart_components_summary_templateObject","freshstart_components_summary_templateObject2","FreshStartSummary","objectDestructuringEmpty","components_summary_Spaced","fresh_start_progress","freshstart_components_summary_FlexFooter","fresh_start_awaiting_templateObject","setRedirectUri","setShowCheckbox","hasCompletedStep","fresh_start_awaiting_InputWrapper2","freshStartLoadResource","freshStart","openAgenciesModal","setOpenAgenciesModal","getGuarantyAgencyInfo","freshStartDefaultedLoans","heldByGuaranty","hasDeptOfEdAgency","hasGuarantyAgency","heldByDeptOfEd","hasDeptOfEd","hasGuaranty","getMainText","qualifiedForForgive","fresh_start_overview_templateObject","fresh_start_overview_templateObject2","fresh_start_overview_EmbedContainer","fresh_start_overview_EmbedContainerIFrame","_contact","setNsldsUploaded","setInNSLDSWorkflow","setNsldsWorkflowComplete","isCurrentStep","funcSetOpenModal","showNSLDSUploadButton","newNsldsUploaded","educational_reengagement_components_qualify_templateObject","EducationalReengagementQualify","educational_reengagement_components_qualify_Spaced","EducationalReengagementValidator","educationalReengagementLoadResource","educationalReengagementUpdateResource","educationalReengagementHandleFormChange","educational_reengagement_components_summary_templateObject","educational_reengagement_components_summary_templateObject2","educationalReengagement","translateDegree","expectedReturnToSchoolDate","summary_PaddedBadge","expectedGraduationDate","educational_reengagement_components_summary_FlexFooter","edu_reengagement_form_templateObject","edu_reengagement_form_templateObject2","edu_reengagement_form_TextLeft","edu_reengagement_form_StyledFade","edu_reengagement_overview_templateObject","updateEducationalReengagement","_updateEducationalReengagement","openUpdateModal","setOpenUpdateModal","edu_reengagement_overview_PaddedBadge","edu_reengagement_form","optimal_situation_components_qualify_templateObject","OptimalSituationQualify","optimal_situation_components_qualify_Spaced","optimal_situation_components_summary_templateObject","OptimalSituationSummary","optimal_situation_components_summary_Spaced","reducedidr_components_qualify_templateObject","ReducedIDRQualify","reducedidr_components_qualify_Spaced","reducedidr_components_summary_templateObject","reducedidr_components_summary_FlexFooter","MyIdentity","IdentityEnrolled","MyInsurance","InsuranceEnrolled","pay_now","BannerCard","dashboard_banner_templateObject","quinary","primaryB","PartnershipWrapper","dashboard_banner_templateObject2","StyledPartnershipLogoDisplay","dashboard_banner_templateObject3","topBarHeight","BannerGreeting","dashboard_banner_templateObject4","BannerRow","dashboard_banner_templateObject5","FullHeightCol","dashboard_banner_templateObject6","company","parseSubdomain","leftClass","rightClass","qualified_tuition_templateObject","QualifiedTuition","qualified_tuition_StyledAlert","CurrentEventsBanner","AlertText","markVideoWatched","_markVideoWatched","openSubscriptionModal","setOpenSubscriptionModel","subscriptionModalMessage","setSubscriptionModalMessage","avatarFrame","setAttribute","reduced_idr_modal_templateObject","reduced_idr_modal_templateObject2","markAcknowledged","_markAcknowledged","openIDRModal","setOpenIDRModal","reduced_idr_modal_ExitButton","reduced_idr_modal_TextLeft","ShowSharedDataConsent","isEmulation","MyDashboard","current_events_banner","qualified_tuition","outstanding_todos","shared_data_consent","reduced_idr_modal","subscription_highlight_modal","dashboard_banner","summary","empcert_components_summary","components_summary","optimal_situation_components_summary","reducedidr_components_summary","freshstart_components_summary","educational_reengagement_components_summary","tuition_components_summary","simplifi_components_summary","refinance_components_summary","components_enrolled","qualified","tile","containers_closed","containers_welcome_templateObject","containers_welcome_templateObject2","containers_welcome_templateObject3","setShowAuthorizedUse","setAuthUseCompleted","modalOpen","setModalOpen","empCertTodo","shareDataConsentCompleted","containers_welcome_TextLeft","welcome_TextLeftList","containers_welcome_ButtonWrapper","containers_overview_templateObject","ReducedIDROverview","overview_ButtonRight","employerCount","ReducedIDRAssistanceObject","ScreeningValidator","screeningValidator","screeningCopyResourceToForm","screeningHandleFormChange","screeningLoadResource","screeningUpdateResource","screeningValidateAttributes","screeningSkip","screeningValidateState","screeningUpdateResourceRequest","skipScreening","screeningUpdateResourceResponse","screening","screeningHandleCacheChange","screeningHandleError","screeningUpdateResourceFailure","components_tab_results_templateObject","IEFix","components_tab_results_templateObject2","tab_results_templateObject3","screeningSave","getResults","reloadPermissions","tab_results_Flex","slfpPartnership","tab_results_Spaced","qualifiedRefi","refinance_components_qualify","refiInterestRate","enterpriseBenefits","qualifiedShortTermForgive","qualify","forgivenessMonthlyPayment","forgivenessAmountSaved","qualify_short_term","qualifiedSimplifi","qualifiedFreshStart","simplifi_components_qualify","qualifiedEmployerContribution","contribution_qualify","employerContributionMonthlyAmount","qualifiedTuitionReimbursement","tuition_components_qualify","qualifiedEnterpriseEmpcert","empcert_components_qualify","freshstart_components_qualify","qualifiedReducedIDR","reducedidr_components_qualify","qualifiedEducationalReengagement","educational_reengagement_components_qualify","qualifiedOptimalSituation","optimal_situation_components_qualify","needsMeeting","referral","newForm","components_tab_nslds_templateObject","components_tab_nslds_templateObject2","TabNSLDS","components_tab_nslds_Centered","components_tab_nslds_StyledButton","ScreeningWorkflow","showNSLDS","finance","hasAdvisorResults","tab_info","tab_loans","components_tab_nslds","tab_finance","screening_components_tab_education","screening_components_tab_review","screening_components_tab_results","tabsObjectArray","buildTabsObjectArray","showSharedDataConsent","_state$screening","Screening","screening_workflow","prescreening_form_templateObject","prescreening_form_templateObject2","prescreeningSave","_prescreeningSave","setSkipScreening","prescreening_form_StyledInputError","prescreening_form_ButtonWrapper","Prescreening","prescreening_form","TabInstitution","createInstitution","institutionErrors","addInstitution","_createInstitution","TabTerm","createTerm","termIdA","termIdB","hasEditableTerms","noInstitutionSelected","termIdMatchCheck","addTerm","termForm","termRequests","termErrors","_createTerm","TabClass","getExistingInfo","noTermSelected","tuitionInstitutionClassValidateAttributes","components_tab_review_templateObject","tab_review_templateObject2","maxClassId","classSave","addAnotherClass","tab_review_Flex","tab_review_StyledButton","_classSave","TuitionWorkflow","classSection","tab_institution","tab_term","tab_class","tuition_components_tab_review","class","Tuition","tuition_workflow","ApprovalClass","approvalStatus","classNote","tuition_approval_form_templateObject","TuitionApprovalForm","classLength","classStatus","approval_class","getClasses","tuition_approval_form_StyledInputError","tuitionApprovalValidator","TuitionApprovalValidator","approvalStatus0","approvalStatus1","approvalStatus2","approvalStatus3","approvalStatus4","approvalStatus5","approvalStatus6","approvalStatus7","approvalStatus8","approvalStatus9","approvalStatus10","tuitionApprovalCopyResourceToForm","tuitionApprovalClearForm","tuitionApprovalHandleFormChange","tuitionApprovalLoadResource","tuitionApprovalUpdateResource","tuitionApprovalSaveApprovalInfo","tuitionApproval","class-id","class-name","approval-status","class-note","class-status","TuitionApproval","tuition_approval_success","tuition_approval_form","tuition_approval_invalid","ContrastDisplay","Header1","contrast_display_templateObject","FullscreenContainer","fullscreen_container_templateObject","ShadowAddCard","shadow_add_card_templateObject","FullscreenSpacer","fullscreen_spacer_templateObject","TextCenter","error_page_templateObject","404","500","ErrorPage","PrivateRoute","shouldRenewToken","silentRenewToken","component","_this$props$isAuthent","from","_data3","NSLDSWorkflow","getRedirectUrl","getRedirectButtonText","NSLDSContainer","nslds_workflow","LwoAgreementValidator","lwoAgreementCopyResourceToForm","lwoAgreementHandleFormChange","lwoAgreementLoadResource","lwoAgreementInvalidateCache","lwoAgreementUpdateResource","lwoAgreementValidateAttributes","lwoAgreementClearForm","lwoAgreementValidateState","components_tab_agreement_templateObject","components_tab_agreement_InputLabel2","lwoAgreement","styles_adjusted_header_templateObject","components_tab_employment_templateObject","tab_employment_templateObject2","employmentIncorrect","showEmployerIncorrect","styles_adjusted_header","tab_employment_InputLabel2","tab_employment_StyledButton","styles_plan_card_templateObject","lwo_agreement_components_tab_plan_templateObject","partnershipName","styles_plan_card","tab_plan_FlexTitle","invalidEmployers","employersCorrect","lwo_agreement_components_tab_plan","components_tab_employment","components_tab_agreement","_state$lwoAgreement","fulfillData","_signContract","_invalidEmployers","components_agreement_workflow","securityQuestionsSetupValidator","SecurityQuestionsSetupValidator","noBlankSpace","isValidSecurityQuestion","securityQuestionsSetupClearForm","securityQuestionsSetupCopyResourceToForm","securityQuestionsSetupHandleFormChange","securityQuestionsSetupLoadResource","SecurityQuestionsForm","stateShowSaveButton","saveSecurityQuestions","securityResponse1","securityResponse2","securityResponse3","securityQuestion1","securityQuestion2","securityQuestion3","stateSecurityQuestion1","stateSecurityQuestion2","stateSecurityQuestion3","showSaveButton","group1Questions","group2Questions","group3Questions","_state$securityQuesti","_saveSecurityQuestions","accessToken","tokenExpiresIn","SecurityQuestionsAuth","getSecurityQuestionGroup","groupId","questions","isSubmitted","getQuestions","security_questions_form","SecurityQuestionsDashboard","SecurityQuestionsValidator","securityQuestionsClearForm","securityQuestionsCopyResourceToForm","securityQuestionsHandleFormChange","securityQuestionsLoadResource","securityQuestionsUpdateResource","securityQuestions","SecurityQuestionForm","handleKeyPress","securityQuestionResponse","securityQuestion","onKeyPress","SecurityQuestionsCheck","securityQuestionAttemptCount","shouldRedirect","responseRequest","checkResponse","securityChecksum","shouldLogout","security_question_form","_checkResponse","RouterFullscreen","exact","tuition_approval","empcert_approval","private_route","Fulfillment","SecurityQuestionCheck","Logo","layout_fullscreen_templateObject","layout_fullscreen_templateObject2","primaryA","level1","StyledLogo","LogoDisplay","layout_fullscreen_templateObject3","LogoWrapper","layout_fullscreen_templateObject4","StyledLogoWrapper","layout_fullscreen_templateObject5","StyledHeader1","layout_fullscreen_templateObject6","layout_fullscreen_templateObject7","LayoutFullscreen","emulationId","shouldLoadLocations","loadPartnerLocations","_this$props2$align","changeTheme","emulationMessage","layout_fullscreen_Wrapper","faPlus","layout_fullscreen_StyledHeader3","router_fullscreen","RouterPersist","loadState","layout_fullscreen","defaultState","General","Plan Type","multiplier","help","Household Size","Marital Status","Client Gross Income","Spouse Gross Income","hide","IDR Type","Client Loan Balance","Spouse Loan Balance","Current Loan Payment","Qualifying Payments","Filing Status","Tax Cost","Monthly Retirement Contribution","projectedRetirementDate","Retirement Percentage","Monthly Retirement Amount","Modified Retirement Percentage","Modified Retirement Amount","Health Insurance","Insurance Type","Insurance Coverage","Pre-Tax Insurance Cost","Annual HSA Contribution","Other Pre-Tax Costs / Contributions","Deduction 1 Value","customInput","showDeleteButton","Modified Other Pre-Tax Costs / Contributions","Modified Deduction 1 Value","UIData","ChartData","ComparisonChartData","GraphData","getMonthlyPaymentByPaymentType","modified","paymentAmount","povertyTablePercentage","houseHoldSize","povertyGuidelinesDB","hhSizeFromDB","lower48Value","modifiedAgi","gi","pow","otherDeductionsTotal","usd","toLocaleString","pmts","numMonths","numOfMonths","getNumberOfMonths","fullYears","floor","partialYear","lastYearMonths","ibp","std","months","accSavings","ret","accRetirement","hsa","accHsa","reOrderDeductionNames","newObj","getNewState","page","newDeductionObjectName","planToolValidator","PlanToolValidator","loadPolarisData","planToolLoadResource","planToolHandleCacheChange","planTool","planToolLoadResourceSuccess","planToolUpdateResource","planToolClearForm","planToolHandleFormChange","planToolCopyResourceToForm","planToolCreateResource","ChartJS","register","registerables","font","chartData","y","datasets","borderColor","interaction","intersect","responsive","plugins","tooltip","mode","callbacks","ts","dataset","parsed","scales","x","ticks","v","PlanGraph","react_chartjs_2_es","PlanTable","chartRef","PlanTableCompare","yearsToCompare","compareRef","DataColumn","forwardRef","useContext","AppContext","projectedYears","plan_table_PlanTable","plan_graph_PlanGraph","plan_table_compare_PlanTableCompare","compareChartRef","CENTER","Fade","_ref$reverse","reverse","skip","setSkip","out","_useSpring","useSpring","duration","opacity","_useSpring2","styles","spring","set","start","esm","FocusButton","focusPage","FocusContext","input_templateObject","DeleteButtonDiv","input_templateObject2","DeductionInputDiv","input_templateObject3","IDRTypeInput","PlanTypeInput","FilingInput","MaritalInput","InsuranceInput","CoverageInput","DeductionInput","onFocus","select","input_StyledButton","HtmlInput","_ref$min","HtmlInputMaskDate","_ref2$errors","withHelp","hidden","delegate","input_IDRTypeInput","input_PlanTypeInput","input_DeductionInput","input_HtmlInput","input_FilingInput","input_MaritalInput","input_InsuranceInput","input_CoverageInput","input_HtmlInputMaskDate","hasLabel","focus_page_inputs_templateObject","FocusPageInputs","_useContext","onChangeDeductionAction","focus_page_inputs_StyledButton","FocusPage","focus_page_inputs_FocusPageInputs","focus_button_FocusButton","GeneralCard","inputs","inputDict","o","fullDict","half","ceil","left","right","justifyContent","pretax_card_templateObject","PretaxCard","modifiedInputs","pretax_card_StyledButton","InputCard","general_card_GeneralCard","pretax_card_PretaxCard","InputGrid","_props","general","pretax","modifiedPretax","input_card_InputCard","displayName","_state$planTool","savePlanToolData","_savePlanToolData","loadFormFromData","_loadFormFromData","_ref$formDefaults","formDefaults","loadFormObject","scrollDiv","absFix","gridRef","_useContext2","focused","useLayoutEffect","scrollHeight","fade_Fade","innerHTML","focus_page_FocusPage","getBenefitData","defaultData","loadData2","setFocused","dataLoaded","setDataLoaded","povertyTable","planTypeMultiplier","maritalStatus","clientGrossIncome","spouseGrossIncome","idrType","clientLoanBalance","currentLoanPayment","qualifyingPayments","taxCost","retirementPercentage","monthlyRetirementAmount","modifiedRetirementPercentage","modifiedMonthlyRetirementAmount","insuranceType","insuranceCoverage","preTaxInsuranceCost","annualHsaContribution","deductions","modifiedDeductions","healthInsurance","monthlyRetirementContribution","taxes","otherPreTaxCosts","modifiedOtherPreTaxCosts","mergedObject","formObject","tmp","deductionArray","deductionsObjects","newDeduction","modifiedDeductionArray","modifiedDeductionsObjects","newModifiedDeduction","_e$currentTarget","plan_tool_components_summary","getPasswordData","PasswordAuthValidator","passwordauthLoadResource","passwordauthUpdateResource","passwordauthHandleFormChange","PasswordText","passwordauthCopyResourceToForm","passwordauthClearForm","passwordauthCreateResource","resestToken","handleShow","new_password_text_templateObject","NewPasswordText","showMeToo","new_password_text_StyledInputError","handleShowMeToo","ContactResult","PasswordAuth","currentPassword","retval","savePasswordData","requestStatus","handleUsername","MatchStatus","password_text","new_password_text","password_result","stepBack","_state$passwordauth","passwordauth","_savePasswordData","MySettings","changeFluid","darkTheme","fluid","faMoonStars","faSun","faq_redux_types","faq_redux_actions","dataAlreadyExists","subjectId","faq","faqLoadQuestionAnswers","subjId","customerFaq","questionAnswers","customerFaqLoadResourceRequest","customerFaqHandleCacheChange","customerFaqLoadResourceResponse","customerFaqLoadResourceSuccess","customerFaqHandleError","customerFaqLoadResourceFailure","QuestionAnswer","customerFaqHandleFormChange","faqs","faqComponents","faqItem","questionAnswer","answer","loadQuestionAnswers","_this$props3$faqs","getQuestionAndAnswers","BottomRow","faq_templateObject","Faq","retButtons","subjects","question_answer","loadFaqSubjects","_this$props$cache","questionRequest","myRef","getFaqComponents","getFaqSubects","customerFaqLoadCollectionRequest","customerFaqLoadCollectionResponse","customerFaqLoadCollectionSuccess","customerFaqLoadCollectionFailure","PretaxItems","retirementVal","deductionAmount","deductionName","handleAddDeduction","handleDeductionAmount","handleDeductionName","deduction","PretaxExistingItems","deductionType","toFixed","PretaxForm","sum","count","items","existingDeductions","totalExistingDeductions","totalNewDeductions","handleTotalDeductions","childDeduction","famSize","totalDeductions","renderCount","handleIncomeChange","handleFamSizeChange","handleExistingDeductions","total","repaymentPlanValue","agiIncome","povertyGuideline","saveMultiplier","savePovertyGuideline","newAgi","newIdr","tempArray","pretax_existing_items","pretax_items","grossPay","modelerLoadResource","modelerHandleFormChange","modelerClearForm","modelerUpdateResource","modelerCopyResourceToForm","modeler","modelerCreateResource","pretax_form","_state$modeler","RetirementForm","retirementPercent","handleRetirementChange","retirementAmount","retirementAmountOmega","totalLoan","handleRetirementAmount","handleRetirementAmountOmega","handleSliderChange","handleRetirementFormChange","handleTotalLoan","totalLoanBal","totalPrincipal","alpha","omega","forgivenessAGIAlpha","forgivenessAGIOmega","totalIDRPaymentsAlpha","totalIDRPaymentsOmega","principalAlpha","principalOmega","alphaIDR","omegaIDR","totalForgivenessAlpha","totalForgivenessOmega","alphaPercent","omegaPercent","Modeler","retirement_form","tax_estimator_form_templateObject","StyledDivCentered","tax_estimator_form_templateObject2","tax_estimator_form_templateObject3","tax_estimator_form_templateObject4","StyledColumn","tax_estimator_form_templateObject5","InputLabelCentered","tax_estimator_form_templateObject6","tax_estimator_form_templateObject7","StyledCardLoanBalance","tax_estimator_form_templateObject8","StyledCardFinal","tax_estimator_form_templateObject9","StyledCardStacked","tax_estimator_form_templateObject10","tax_estimator_form_templateObject11","StyledCardTextTopMargin","tax_estimator_form_templateObject12","StyledHeader2NoBottom","tax_estimator_form_templateObject13","StyledDd","_templateObject14","StyledLinkButton","_templateObject15","_templateObject16","StyledInputTextDisabled","InputText","_templateObject17","TaxEstimatorForm","showFinalPage","setShowFinalPage","showAGIModal","setShowAGIModal","showHouseholdInformationModal","setShowHouseholdInformationModal","showAssistantModal","setShowAssistantModal","setIncome","_useState11","_useState12","clientAndSpouseIncome","setClientAndSpouseIncome","_useState13","_useState14","clientAndSpouseHouseholdSizeState","setClientAndSpouseHouseholdSize","_useState15","_useState16","householdSizeState","setHouseholdSize","_useState17","_useState18","setRepaymentPlan","_useState19","_useState20","clientMonthlyPayment","setClientMonthlyPayment","_useState21","_useState22","clientAndSpouseMonthlyPayment","setClientAndSpouseMonthlyPayment","_useState23","_useState24","spouseMonthlyPayment","setSpouseMonthlyPayment","_useState25","_useState26","clientAnnualLoanPayment","setClientAnnualLoanPayment","_useState27","_useState28","clientAndSpouseAnnualLoanPayment","setClientAndSpouseAnnualLoanPayment","_useState29","_useState30","repaymentSavings","setRepaymentSavings","_useState31","_useState32","setClientLoanBalance","_useState33","_useState34","setSpouseLoanBalance","_useState35","_useState36","resultText","setResultText","initialRepaymentPlan","clientHouseholdSize","setClientMonthlyAndAnnualPayment","setClientAndSpouseMonthlyAndAnnualPayment","calculateRepaymentSavingsAndResultText","repaymentSavingsValue","getResultText","spMonthlyPayment","annualLoanPayment","parseFloat","spLoanBalance","clLoanBalance","balanceRatio","scrollToTop","handleClientRepaymentPlanChange","clientAgiIncome","clientAndSpouseAgiIncome","clientAndSpouseHouseholdSize","clientRepaymentPlan","clientAndSpouseRepaymentPlan","clientFederalLoanBalance","spouseFederalLoanBalance","tax_estimator_form_StyledCard","tax_estimator_form_StyledDiv","tax_estimator_form_StyledRow","tax_estimator_form_StyledCardText","tax_estimator_form_StyledDivLeft","print","tax_estimator_form_MessagePaddedDiv","TaxEstimatorIntro","handleIntroButtonClick","getSingleMessage","setMessageContent","showIntroPage","setShowIntroPage","tax_estimator_intro","tax_estimator_form","TaxEstimateTool","clientIncome","clientChildCliam","spouseChildClaim","educationCredit","childCareCredit","singleEducationCredit","singleChildCareCredit","clientOtherCredit","spouseOtherCredit","jointOtherCredit","clientDeductions","spouseDeductions","studentInterestDeduction","jointInterestDeduction","tuitionDeduction","jointTuitionDeduction","educatorExpense","spouseEducatorExpense","handleFilingStatus","handleClientIncomeChange","handleSpouseIncomeChange","handleClientChildCliam","handleSpouseChildCliam","handleClientDeductionChange","handleSpouseDeductionChange","handleEducationCreditChange","handleChildCareCreditChange","handleSingleEducationCreditChange","handleSingleChildCareCreditChange","handleClientOtherCredit","handleSpouseOtherCredit","handleJointOtherCredit","handleClientLoanBalance","handleSpouseLoanBalance","handleStudentLoanIntDeduction","handleJointInterestDeduction","handleTuitionDeduction","handleJointTuitionDeduction","handleEducatorExpense","handleSpouseEducatorExpense","spouseChildCliam","itemizedOrStandardNameClient","itemizedOrStandardNameSpouse","clientChildClaim","studentIntDeduction","jointIntDeduction","educatorDeduction","spouseEducatorDed","jointDeductionsForm","jointIncomeForm","jointTaxableIncome","jointChildClaimForm","clientTaxableIncome","spouseTaxableIncome","jointTaxBracket","clientTaxBracket","spouseTaxBracket","clientChildTaxCredit","spouseChildTaxCredit","TaxCredit","planMultiplier","clientTaxDue","spouseTaxDue","jointTaxDue","idrAmount","jointIdrAmount","jointIdrName","standardRepaymentAmt","overallSavings","tax_estimate_tool","InterestComparisonTool","currentRepaymentTerm","currentInterest","newRepaymentTerm","newInterest","handleCurrentBalanceChange","handleCurrentInterest","handleCurrentTerm","handleNewInterest","handleNewTerm","avgInterestRate","cInterest","nInterest","currentPayment","currentSchedule","longestPaymentTerm","loopPrincipal","newSchedule","newLoopPrincipal","titleFormatter","yMin","interest_comparison_tool","SLAComparisonTool","contributionAmount","handleContribution","contributionAmnt","monthlyContributionPayment","totalInterest","PaymentSchedule","ContributionSchedule","contributionPrincipal","principalMonthlyPayment","ContrPayoffTime","totalContributionInterest","flag","TimeReduced","TimeReducedYear","TimeReducedMonth","sla_comparison_tool","RetirementConfig","max","RetirementLines","xAxes","taxConfig","MyRetirement","yAxes","stacked","beginAtZero","contactValidator","ContactValidator","contactLoadInfo","contactHandleCacheChange","contactLoadResourceRequest","contactLoadResource","contactLoadResourceResponse","contactLoadResourceSuccess","contactHandleError","contactLoadResourceFailure","contactCopyResourceToForm","contactHandleFormChange","contact_templateObject","contact_templateObject2","contact_templateObject3","Contact","returnAlertText","contact_ButtonRight","components_contact_form","contact_result","contact_ButtonWrapper","contactUpdateResourceRequest","contactUpdateResourceResponse","contactUpdateResourceSuccess","contactUpdateResourceFailure","getPlaidToken","plaidLoadResourceRequest","plaidLoadResourceResponse","plaid","plaidHandleCacheChange","plaidUpdateResourceSuccess","plaidHandleError","plaidLoadResourceFailure","setPlaidPublicToken","metadata","plaidUpdateResourceRequest","publicToken","linkToken","institution_id","plaidUpdateResourceResponse","plaidUpdateResourceFailure","unlinkPlaidAccount","savePlaidLinkMetadata","plaidHandleFormChange","plaidUpdateResource","plaid_button_templateObject","plaid_button_templateObject2","plaidData","_getPlaidToken2","plaidConnectionId","_setPlaidPublicToken2","_unlinkPlaidAccount2","_savePlaidLinkMetadata2","keyId","setLoadingToggle","loadingToggle","setToken","linkTokenGenerated","setLinkTokenGenerated","onSuccess","useCallback","onEvent","onExit","receivedRedirectUri","_usePlaidLink","usePlaidLink","ready","exit","isMounted","plaidToken","connectionStatus","plaid_button_ButtonWrapper","plaid_overview_templateObject","getActivePlaidConnections","_getActivePlaidConnections2","checkForReconnectTodo","showPlaidConsentDialog","PlaidLogoDark","PlaidLogoLight","optedOut","consentComplete","plaid_button","plaid_overview_ButtonWrapper","LoanRepaymentValidator","firstDay","isOnOrAfterDate","isOnOrBeforeDate","existingPaymentMonths","paymentMonthAlreadyExists","origPaymentDate","loanRepaymentClearForm","loanRepaymentCopyResourceToForm","loanRepaymentHandleFormChange","loanRepaymentLoadCollection","loanRepaymentLoadResource","loanRepaymentCreateResource","loanRepaymentDeleteResource","loanRepaymentUpdateResource","repayment_history_table_templateObject","repayment_history_table_templateObject2","RepaymentHistoryTable","MaximumPaymentAmount","inBandSix","paymentDate","requiredIdrPaymentAmount","editRow","deleteRow","repayment_history_table_PaddedDiv","repayment_history_table_StyledDivCentered","repayment_history_form_templateObject","repayment_history_form_templateObject2","repayment_history_form_templateObject3","repayment_history_form_templateObject4","repayment_history_form_templateObject5","DivLeft","repayment_history_form_templateObject6","repayment_history_form_templateObject7","_ref$servicerNameList","servicerNameList","monthlyInvoiceAmount","showWarningDialog","setShowWarningDialog","showInformationDialog","setShowInformationDialog","closeInformationDialog","openInformationDialog","deleteDialog","closeWarningDialog","repayment_history_form_TextLeft","repayment_history_form_StyledButton","repayment_history_form_PaddedIcon","repayment_history_form_ExitButton","repayment_history_form_ButtonWrapper","loanRepayment","createPayment","_createPayment","updatePayment","_updatePayment","deletePayment","_deletePayment","_clearForm","setShowForm","setFormId","setActionName","deadlineDate","showAdd","repayment_history_table","repayment_history_form","paymentDifference","RepaymentNSLDSUpload","IdrReducedRenewal","idr_reduced","IdrReducedRenewalComplete","reducedidr_containers_complete","RouterDashboard","MySimpliFi","ContributionNeedAssistance","TRNeedAssistance","MyPretaxTool","MyRetirementTool","TaxEstimatorTool","PlanTool","MyTaxTool","MySLAComparison","MyInterestComparison","Closed","ContactNeedAssistance","MyPasswordAuth","EmpCertGen","FreshStartOverview","FreshStartContact","FreshStartAwaiting","FreshStartNSLDS","FreshStartComplete","EducationalReengagementOverview","ReducedIDRWelcome","ReducedIDRComplete","ReducedIDRProfileVerification","ReducedIDRQuestionnaire","ReducedIDREmploymentHistory","ReducedIDRNeedAssistance","PlaidOverview","RepaymentOverview","ActionIcon","action_icon_templateObject","DrawerItems","drawer_items_templateObject","padded_badge_templateObject","LayoutDashboard","darkThemeState","sc","resetChat","showChat","head","drawers","navigationOpen","sidebar","SideBar","TopBar","updateThemeSettings","router_dashboard","drawer_items","my_meetings","my_todos","DropdownAdjust","Dropdown","layout_dashboard_templateObject","StyledDrawerButton","layout_dashboard_templateObject2","OffsetBadge","layout_dashboard_templateObject3","DrawerButton","propKey","_ref$badge","badge","action_icon","getActionItemLength","getAvailableActions","todosCount","profileDropdown","faUserCircle","unstyled","layout_dashboard_DrawerButton","faTasks","faCalendarAlt","withTheme","_ref2$todosCount","links","Copyright","layout_dashboard_templateObject4","SidebarText","layout_dashboard_templateObject5","SideBarBenefits","subItem","faCheckDark","faCheckLight","faLockDark","faLockLight","faHandsHelpingDark","faHandsHelpingLight","faCertificateDark","retEnterpriseEmpcertSteps","getEnterpriseEmpcertSteps","faBackwardDark","faBackwardLight","retFreshStartSteps","getFreshStartSteps","faMoneyBillWaveDark","faMoneyBillWaveLight","reducedIDRSteps","retReducedIDRSteps","getReducedIDRSteps","faBellSchoolDark","faBellSchoolLight","faCogsDark","faCogsLight","retLwoSteps","getLwoSteps","faPiggyBankDark","faPiggyBankLight","faTuitionDark","faTuitionLight","faCompressAltDark","faCompressAltLight","faExclamationLight","faMoneyCheckDark","faMoneyCheckLight","faSackDollarDark","faSackDollarLight","faUserShieldDark","faUserShieldLight","faWheelchairDark","faWheelchairLight","faHomeDark","faHomeLight","faUserCircleDark","faUserCircleLight","faUniversityDark","faUniversityLight","faCabinetFilingDark","faCabinetFilingLight","SideBarHome","faMoneyBillDark","faMoneyBillLight","SideBarLoanRepayments","faClipboardListDark","SideBarTools","faShieldAltDark","faShieldAltLight","faFileAltDark","faFileAltLight","faDatabaseDark","faDatabaseLight","faQuestionCircleDark","faQuestionCircleLight","faMailboxDark","faMailboxLight","getYear","maintenance_templateObject","Maintenance","maintenance_Wrapper","Fiducius","PovertyGuidelines","maintenanceLoadResource","roundToFraction","decimal","fraction","direction","calculatePayment","periods","pmt","getPovertyGuidelineAmount","locationIndex","runQuickQualifier","salary","yearFirstLoan","bts","nPer","standRate","standTotal","ibRepay","ibTotal","perCt","netSalary","lbf","LearnMore","learnMore","loansMyself","loansSpouse","loansChildren","loansParents","sendSMS","QualQuestions","onSubmitClick","ppLoan","quick_qual_results_templateObject","SpacedButton","quick_qual_results_templateObject2","QuickQualResults","onBackClick","quick_qual_results_Spaced","QuickQual","_data$resultText","_this$state3","_this$state4","showLearnMore","showQualifier","learn_more","qual_questions","quick_qual_results","AccountUnlockValidator","accountUnlockCopyResourceToForm","accountUnlockClearForm","accountUnlockHandleFormChange","accountUnlockUpdateResource","Email","having_trouble_templateObject","having_trouble_templateObject2","HavingTrouble","having_trouble_FinePrint","having_trouble_StyledLink","SecurityQuestion","successful_unlock_templateObject","SuccessfulUnlock","goToLogin","goToForgotPassword","successful_unlock_SpacedButton","account_unlock_templateObject","accountUnlock","setForm","redirectPath","updateRedirectPath","submitForm","setRedirectOnSuccess","account_unlock_LoaderWrapper","successful_unlock","security_question","components_email","having_trouble","RouterAuth","auth_page","crm","password_reset","password_update","account_unlock","pre_registered","password_out_of_date","containers_register","maintenance","quick_qual","layout_auth_templateObject","layout_auth_templateObject2","layout_auth_templateObject3","layout_auth_templateObject4","layout_auth_templateObject5","sidebarWidthAdjust","layout_auth_templateObject6","layout_auth_templateObject7","layout_auth_templateObject8","layout_auth_templateObject9","LayoutAuth","layout_auth_Wrapper","layout_auth_Logo","layout_auth_StyledLogoWrapper","layout_auth_StyledLogo","layout_auth_PartnershipWrapper","layout_auth_StyledHeader1","layout_auth_StyledPartnershipLogoDisplay","layout_auth_LogoWrapper","layout_auth_StyledHeader3","router_auth","LayoutFullscreenAlignStart","LayoutDashboardWithProps","layout_dashboard","checkMaintenance","appVersionMajor","appVersionMinor","appVersionPatch","maintenanceEnabled","validateSecurityCheck","customerId","securityId","saveRefId","sParam","sParameterName","sURLVariables","getUrlParameter","fullUrl","RouterEntry","getAuthRedirectPath","getSecurityId","crmId","emulation","checkedMaintenance","lastPath","fullCheck","contrast_subtitle_templateObject","FadeClasses","fade_templateObject","AuthContainer","auth_container_templateObject","shadow_add_card_no_border_templateObject","PaddedDD","padded_dd_templateObject","RetirementTool","povGuidelines","povGuidCalc","minVal","maxVal","startingValue","boxValue","ticksOn","tickNum","dummyVar","retirement_contribution","middleware","thunkMiddleware","appReducer","accountsReducer","accountUnlockReducer","advisorReducer","affiliateReducer","agreementReducer","authReducer","contactReducer","contributionReducer","contributionSetup","contributionSetupReducer","customerContributionReducer","customerContributionMilestoneReducer","customerFaqReducer","documentsReducer","employmentHistoryReducer","forgivenessReducer","modelerReducer","fulfillmentReducer","idrReducer","implementationResultsReducer","legalReducer","limitedWaiverOpportunityReducer","lwoAgreementReducer","meetingsReducer","nsldsReducer","passwordAuthReducer","paymentReducer","persistReducer","profileReducer","questionnaireBtsReducer","referencesReducer","refiReducer","refServicersReducer","renewalReducer","renewalResultsReducer","securityQuestionsReducer","securityQuestionsSetupReducer","servicersReducer","screeningReducer","simplifiReducer","tools","taxtoolReducer","todosReducer","tuitionReducer","tuitionInstitutionReducer","tuitionInstitutionTermReducer","tuitionInstitutionClassReducer","maintenanceReducer","tuitionApprovalReducer","selfServiceDocumentReducer","empcertApprovalReducer","planToolReducer","freshStartReducer","educationalReengagementReducer","messagesReducer","plaidReducer","loanRepaymentReducer","needAssistanceReducer","compose","applyMiddleware","createStore","createStoreWithMiddleware","resetState","persistTypes","App","lightTheme","greenLight","newLight","settings","closeDrawers","light","dark","greenlight","newlight","es","AppStore","styled_components_browser_esm","getTheme","persist_gate","basename","router_entry","FlexBetween","flex_between_templateObject","flex_end_templateObject","ReactDOM","src_app","serviceWorker","registration","unregister","module","exports","__webpack_require__","./blocks.svg","./choose.svg","./document.svg","./empty.svg","./felix-update.svg","./felix.svg","./file-add.svg","./file-collect.svg","./files.svg","./finance.svg","./no-data.svg","./photo.svg","./thought.svg","./usability.svg","webpackContext","req","webpackContextResolve"],"mappings":"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wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,uCACA,6BACA,2BACA,uBACA,wBACA,sBACA,kBACA,yBACA,oBACA,uBACA,uBACA,mBACA,oBACA,mBAEJ,IAAK,qBACH,MAAO,CACL,qBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBACA,iBACA,iBACA,sBAEJ,IAAK,sBACH,MAAO,CACL,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBACA,iBACA,iBACA,sBAEJ,QACE,MAAO,CAACA,MAzmBKlC,OAAA6G,EAAA,EAAA7G,QAAA+Z,EAAA,EAAA/Z,QAAA+Z,EAAA,EAAA/Z,CAAAD,IAAA,kBA6mBD,SAAC0rB,GAAU,IACnB/nB,EAAS3D,EAAK4b,MAAdjY,KACJ80E,EAAe90E,GAAQA,EAAK2nD,aAE5BmtB,SACKhd,GAAI,iBAEJA,GAAI,MAGTgd,GAAyB,GAAT/sD,GAClB1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BACA,yBACA,sBACA,iBACA,qBACA,yBACA,sBACA,iBACA,qBACA,yBACA,sBACA,iBACA,qBACA,yBACA,sBACA,iBACA,qBACA,yBACA,sBACA,iBACA,qBACA,yBACA,sBACA,iBACA,qBACA,yBACA,sBACA,iBACA,qBACA,yBACA,sBACA,iBACA,qBACA,yBACA,sBACA,iBACA,qBACA,yBACA,sBACA,kBACA,sBACA,0BACA,wBAEF2M,UAAW,CACT,aACA,mBACA,2BACA,2BACA,cACA,kBACA,aACA,iBACA,sBAEFykB,WAAY,CACV,wBACA,8BACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,sCACA,4BACA,0BACA,sBACA,uBACA,qBACA,iBACA,wBACA,mBACA,sBACA,sBACA,kBACA,mBACA,iBACA,uCACA,6BACA,2BA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","file":"static/js/main.07f506f3.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read http://bit.ly/CRA-PWA.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","// This is a simple wrapper for lodash library functions so that our app is encapsulated and\r\n// shielded against changing which (or no) helper library we want to use. This also provides a\r\n// consistent API that makes the most sense for our use cases.\r\nimport { default as lodashCamelCase } from 'lodash/camelCase';\r\nimport { default as lodashDebounce } from 'lodash/debounce';\r\nimport { default as lodashGet } from 'lodash/get';\r\nimport { default as lodashIsEqual } from 'lodash/isEqual';\r\nimport { default as lodashKebabCase } from 'lodash/kebabCase';\r\nimport { default as lodashPick } from 'lodash/pick';\r\nimport { default as lodashSnakeCase } from 'lodash/snakeCase';\r\nimport { default as lodashStartCase } from 'lodash/startCase';\r\nimport { default as lodashUpperFirst } from 'lodash/upperFirst';\r\n\r\n// String manipulation\r\n\r\n/**\r\n * Converts a string to camel case\r\n *\r\n * @param {string} [string=''] - The string to convert\r\n * @returns {string} Returns the converted string\r\n */\r\nexport const camelCase = (string = '') => lodashCamelCase(string);\r\n\r\n/**\r\n * Converts a string to kebab case\r\n *\r\n * @param {string} [string=''] - The string to convert\r\n * @returns {string} Returns the converted string\r\n */\r\nexport const kebabCase = (string = '') => lodashKebabCase(string);\r\n\r\n/**\r\n *\r\n * @param {*} string - The value to check\r\n * @returns {boolean} Returns string not null or empty\r\n */\r\nexport const stringIsNullOrEmpty = (string) => {\r\n return string === undefined || string === null || string === '';\r\n};\r\n\r\n/**\r\n *\r\n * @param {*} string - The value to check\r\n * @returns {boolean} Returns string not null or empty after trimming whitespace\r\n */\r\nexport const stringIsNullOrWhitespace = (string) => {\r\n return string === undefined || string === null || string.trim() === '';\r\n};\r\n\r\n/**\r\n * Converts a string to snake case\r\n *\r\n * @param {string} [string=''] - The string to convert\r\n * @returns {string} Returns the converted string\r\n */\r\nexport const snakeCase = (string = '') => lodashSnakeCase(string);\r\n\r\n/**\r\n * Converts a string to start case\r\n *\r\n * @param {string} [string=''] - The string to convert\r\n * @returns {string} Returns the converted string\r\n */\r\nexport const startCase = (string = '') => lodashStartCase(string);\r\n\r\n/**\r\n * Converts a string to upper first\r\n *\r\n * @param {string} [string=''] - The string to convert\r\n * @returns {string} Returns the converted string\r\n */\r\nexport const upperFirst = (string = '') => lodashUpperFirst(string);\r\n\r\n// Object manipulation\r\n/**\r\n * Gets the value at `path` of `object`. If the resolved value is\r\n * `undefined`, the `defaultValue` is returned in its place.\r\n *\r\n * @param {Object} object - The object to query.\r\n * @param {Array|string} path - The path of the property to get.\r\n * @param {*} [defaultValue] - The value returned for `undefined` resolved values.\r\n * @returns {*} Returns the resolved value.\r\n *\r\n * // const object = { a: [{ b: { c: 3 } }] };\r\n * // get(object, 'a[0].b.c'); // => 3\r\n * // get(object, ['a', '0', 'b', 'c']); // => 3\r\n * // get(object, 'a.b.c', 'default'); // => 'default'\r\n */\r\nexport const safeAccess = (object, path, defaultValue = null) =>\r\n lodashGet(object, path, defaultValue);\r\n\r\n/**\r\n * Performs a deep comparison between two values to determine if they are\r\n * equivalent.\r\n *\r\n * **Note:** This method supports comparing arrays, array buffers, booleans,\r\n * date objects, error objects, maps, numbers, Object objects, regexes, sets,\r\n * strings, symbols, and typed arrays. Object objects are compared by their own,\r\n * not inherited, enumerable properties. Functions and DOM nodes are compared by\r\n * strict equality, i.e. ===.\r\n *\r\n * @param {*} value - The value to compare.\r\n * @param {*} other - The other value to compare.\r\n * @returns {boolean} Returns true if the values are equivalent, else false.\r\n */\r\nexport const isEqual = (value, other) => lodashIsEqual(value, other);\r\n\r\n/**\r\n * Creates an object composed of the picked `object` properties.\r\n *\r\n * @param {Object} object - The source object.\r\n * @param {...(string|string[])} [paths] - The property paths to pick.\r\n * @returns {Object} Returns the new object.\r\n *\r\n * // const object = { a: 1, b: '2', c: 3 }\r\n * // pick(object, ['a', 'c']) // => { a: 1, c: 3 }\r\n */\r\nexport const pick = (object, paths = undefined) => lodashPick(object, paths);\r\n\r\n// Function manipulation\r\n/**\r\n * Creates a debounced function that delays invoking `func` until after `wait`\r\n * milliseconds have elapsed since the last time the debounced function was\r\n * invoked, or until the next browser frame is drawn. The debounced function\r\n * comes with a `cancel` method to cancel delayed `func` invocations and a\r\n * `flush` method to immediately invoke them. Provide `options` to indicate\r\n * whether `func` should be invoked on the leading and/or trailing edge of the\r\n * `wait` timeout. The `func` is invoked with the last arguments provided to the\r\n * debounced function. Subsequent calls to the debounced function return the\r\n * result of the last `func` invocation.\r\n *\r\n * @param {Function} func - The function to debounce.\r\n * @param {number} [wait=0] - The number of milliseconds to delay; if omitted, `requestAnimationFrame` is used (if available).\r\n * @param {Object} [options={}] - The options object.\r\n * @param {boolean} [options.leading=false] - Specify invoking on the leading edge of the timeout.\r\n * @param {number} [options.maxWait] - The maximum time `func` is allowed to be delayed before it's invoked.\r\n * @param {boolean} [options.trailing=true] - Specify invoking on the trailing edge of the timeout.\r\n * @returns {Function} Returns the new debounced function.\r\n */\r\nexport const debounce = (func, wait = 0, options = {}) => lodashDebounce(func, wait, options);\r\n","import { camelCase, safeAccess } from './helpers';\r\n\r\n// Our API errors need to adhere to the [json:api](https://jsonapi.org/) spec\r\nexport class JsonApiError extends Error {\r\n constructor(errors, res) {\r\n super(res.status + ' ' + res.statusText);\r\n this.errors = errors;\r\n this.name = 'JsonApiError';\r\n this.res = res;\r\n }\r\n}\r\n\r\n/**\r\n * Creates the error state for the current redux segment\r\n *\r\n * @param {JsonApiError|Error} error - Error object\r\n * @param {Object} prevErrors - Previous error state to merge errors into\r\n * @param {Object} validatedAttributes - Selected attributes to update state for\r\n *\r\n * @returns {Object} - Error object keyed to attributes with optional tab segments\r\n */\r\nexport const createErrorState = (error, prevErrors, validatedAttributes = null) => {\r\n const errorState = { ...prevErrors };\r\n const newErrors = getStateFromError(error);\r\n const newKeys = Object.keys(newErrors);\r\n const oldKeys = Object.keys(prevErrors);\r\n\r\n if (!validatedAttributes) {\r\n // If we got here from a non-validation action, these errors overwrite\r\n // the whole error state for the store segment\r\n return newErrors;\r\n }\r\n\r\n validatedAttributes.forEach((a) => {\r\n const isInNew = newKeys.includes(a);\r\n const isInOld = oldKeys.includes(a);\r\n\r\n if (isInNew) {\r\n // Validation failure: overwrite anything old\r\n errorState[a] = newErrors[a];\r\n } else if ((isInOld && !isInNew) || (!isInOld && !isInNew)) {\r\n // Re-validation succeeds OR first time validation succeeds\r\n errorState[a] = false;\r\n }\r\n });\r\n\r\n return errorState;\r\n};\r\n\r\nconst getStateFromError = (error) => {\r\n const errorState = { generalErrors: [] };\r\n\r\n if (error instanceof JsonApiError && safeAccess(error, 'errors.length') !== 0) {\r\n error.errors.forEach((e) => {\r\n if (safeAccess(e, 'source.pointer')) {\r\n const pointerParts = e.source.pointer.split('/');\r\n const attribute = camelCase(pointerParts[pointerParts.length - 1]);\r\n errorState[attribute] = e;\r\n\r\n // TODO: consider allowing multiple errors per attribute?\r\n // if (!errorState[attribute]) {\r\n // errorState[attribute] = [];\r\n // }\r\n // errorState[attribute].push(e);\r\n } else {\r\n errorState['generalErrors'].push(e);\r\n }\r\n });\r\n } else if (error instanceof Error) {\r\n errorState.generalErrors.push({\r\n title: error.name,\r\n detail: error.message,\r\n });\r\n } else {\r\n throw new Error('Unprocessable error.');\r\n }\r\n\r\n if (errorState.generalErrors.length < 1) {\r\n errorState.generalErrors = false;\r\n }\r\n\r\n return errorState;\r\n};\r\n","import fetch from 'cross-fetch';\r\nimport camelcaseKeys from 'camelcase-keys';\r\nimport { kebabCase, safeAccess } from './helpers';\r\nimport { JsonApiError } from './error';\r\n\r\n/* =========================== PUBLIC MODULE API ============================ */\r\n/**\r\n * Perform a GET request to the Resource API.\r\n *\r\n * @param {string} token - API access token\r\n * @param {string} endpoint - The API endpoint\r\n * @param {Object} params - Query params for the GET request\r\n *\r\n * @see apiFetch for fetch implementation\r\n */\r\nexport const getApi = (token, endpoint, params = null) => {\r\n const url = `${process.env.REACT_APP_API_BASE_URL}${endpoint}`;\r\n return apiFetch(...createGetRequest(token, url, params));\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} token - API access token\r\n * @param {string} endpoint - The API endpoint\r\n *\r\n * @see apiFetch for fetch implementation\r\n */\r\nexport const deleteApi = (token, endpoint) => {\r\n const url = `${process.env.REACT_APP_API_BASE_URL}${endpoint}`;\r\n return apiFetch(...createDeleteRequest(token, url));\r\n};\r\n\r\n/**\r\n * Wraps the getApi function to simplify getting single result endpoints\r\n *\r\n * @param {string} token - API access token\r\n * @param {string} endpoint - The API endpoint\r\n * @param {Object} params - Query params for the GET request\r\n *\r\n * @throws {Error} when there's an ambiguous result\r\n * @see getApi for wrapped function\r\n *\r\n * @returns {Object} single object result from the API\r\n */\r\nexport const getApiSingle = async (token, endpoint, params = null) => {\r\n let data = await getApi(token, endpoint, params);\r\n if (!data || data.length < 0) {\r\n data = null;\r\n } else if (data.length > 2) {\r\n throw new Error('Got unexpected ambiguous result');\r\n } else {\r\n data = data[0];\r\n }\r\n\r\n return data;\r\n};\r\n\r\n/**\r\n * Post data to the Resource API\r\n *\r\n * @param {string} token - API access token\r\n * @param {string} endpoint - The API endpoint\r\n * @param {Object} postData - An object to be converted to JSON for the API post\r\n *\r\n * @see apiFetch for fetch implementation\r\n */\r\nexport const postApi = (token, endpoint, postData) => {\r\n const url = `${process.env.REACT_APP_API_BASE_URL}${endpoint}`;\r\n return apiFetch(...createPostRequest(token, url, postData));\r\n};\r\n\r\n/**\r\n * Patch data to the Resource API\r\n *\r\n * @param {string} token - API access token\r\n * @param {string} endpoint - The API endpoint\r\n * @param {Object} patchData - An object to be converted to JSON for the API patch\r\n *\r\n * @see apiFetch for fetch implementation\r\n */\r\nexport const patchApi = (token, endpoint, patchData) => {\r\n const url = `${process.env.REACT_APP_API_BASE_URL}${endpoint}`;\r\n return apiFetch(...createPatchRequest(token, url, patchData));\r\n};\r\n\r\n/**\r\n * Fetches a URL with a set of options and parses the output.\r\n * Assumes the API is formatted according to\r\n * [json:api](https://jsonapi.org/) spec\r\n *\r\n * @param {string} url - The url to fetch\r\n * @param {Object} opts - Options for the url\r\n *\r\n * @see baseFetch for the base fetching implementation\r\n * @see denormalize for the json:api spec denormalization\r\n * @returns {Array} An array of documents fetched from the json:api endpoint\r\n */\r\nexport const apiFetch = async (url, opts) => {\r\n return denormalize(await baseFetch(url, opts));\r\n};\r\n\r\n/**\r\n * Fetches a URL with a set of options and parses the output as json\r\n *\r\n * @param {string} url - The url to fetch\r\n * @param {Object} opts - Options for the url\r\n *\r\n * @throws {Error|JsonApiError} on response status >= 400\r\n * @returns {Object} the json returned by a successful API post\r\n */\r\nexport const baseFetch = async (url, opts) => {\r\n const res = await fetch(url, opts);\r\n if (res.status >= 400) {\r\n await handleErrors(res);\r\n } else {\r\n if (res.status === 204) {\r\n return;\r\n } else {\r\n return res.json();\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Denormalizes a json-api formatted response object into an array of objects\r\n *\r\n * @param {Object} json - Json object to denormalize\r\n *\r\n * @throws {ReferenceError}\r\n * @returns {Array} Array of objects representing json api documents\r\n */\r\nexport const denormalize = (json = null) => {\r\n if (json === null) {\r\n return [];\r\n }\r\n\r\n // Get primary document data\r\n let data = json.hasOwnProperty('data') ? camelcaseKeys(json.data, { deep: true }) : [];\r\n data = Array.isArray(data) ? data : [data];\r\n\r\n // Get included resources\r\n let included = json.hasOwnProperty('included')\r\n ? camelcaseKeys(json.included, { deep: true })\r\n : [];\r\n included = Array.isArray(included) ? included : [included];\r\n\r\n return [\r\n ...data.map((doc) => {\r\n return {\r\n id: doc.id,\r\n type: doc.type,\r\n ...doc.attributes,\r\n included: included,\r\n };\r\n }),\r\n ];\r\n};\r\n\r\n/**\r\n * Normalizes an object into json api format\r\n *\r\n * @param {string} type - Type of resource\r\n * @param {Object} data - Data to be serialized\r\n * @param {string} id - The resource's ID\r\n *\r\n * @returns {Object} normalized object according to the json api spec\r\n */\r\nexport const normalize = (type, data, id = null) => {\r\n let normalized = {\r\n data: {\r\n type: type,\r\n attributes: Object.keys(data).reduce(\r\n (kebabs, key) => ({\r\n ...kebabs,\r\n [kebabCase(key)]: data[key],\r\n }),\r\n {}\r\n ),\r\n },\r\n };\r\n\r\n // POSTs usually don't have an ID before creation\r\n if (id) {\r\n normalized.data['id'] = id;\r\n }\r\n\r\n return normalized;\r\n};\r\n\r\n/* ======================== PRIVATE MODULE HELPERS ========================== */\r\nconst createGetRequest = (token, url, params = null) => [\r\n url + (params ? '?' + createQuery(params) : ''),\r\n createGetOptions(token),\r\n];\r\n\r\nconst createDeleteRequest = (token, url) => [url, createDeleteOptions(token)];\r\n\r\nconst createPostRequest = (token, url, postData = {}) => [url, createPostOptions(token, postData)];\r\n\r\nconst createPatchRequest = (token, url, patchData = {}) => [\r\n url,\r\n createPatchOptions(token, patchData),\r\n];\r\n\r\nconst createQuery = (params) =>\r\n Object.keys(params)\r\n .map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))\r\n .join('&');\r\n\r\nconst createGetOptions = (token) => ({\r\n method: 'GET',\r\n headers: getApiHeaders(token),\r\n});\r\n\r\nconst createDeleteOptions = (token) => ({\r\n method: 'DELETE',\r\n headers: getApiHeaders(token),\r\n});\r\n\r\nconst createPostOptions = (token, postData) => ({\r\n method: 'POST',\r\n body: JSON.stringify(postData),\r\n headers: getApiHeaders(token),\r\n});\r\n\r\nconst createPatchOptions = (token, patchData) => ({\r\n method: 'PATCH',\r\n body: JSON.stringify(patchData),\r\n headers: getApiHeaders(token),\r\n});\r\n\r\nconst getApiHeaders = (token = null) => {\r\n let headers = {\r\n Accept: 'application/vnd.api+json',\r\n 'Cache-Control': 'no-cache',\r\n 'Content-Type': 'application/vnd.api+json',\r\n Pragma: 'no-cache',\r\n };\r\n\r\n if (token) {\r\n headers['Authorization'] = 'Bearer ' + token;\r\n }\r\n\r\n return headers;\r\n};\r\n\r\nconst handleErrors = async (res) => {\r\n const json = res && (await res.json());\r\n if (safeAccess(json, 'errors')) {\r\n throw new JsonApiError(json.errors, res);\r\n } else {\r\n throw new Error(`${res.status} ${res.statusText}: ${res.body}`);\r\n }\r\n};\r\n","export const removeTimezone = (input) => input.split('T')[0];\r\n\r\nexport const convertIsoToSlash = (input) => {\r\n if (typeof input === 'string' || input instanceof String) {\r\n let slash = removeTimezone(input);\r\n slash = slash.replace(/(\\d{4})-(\\d{2})-(\\d{2})/, '$2/$3/$1');\r\n return slash;\r\n }\r\n};\r\n\r\nexport const convertSlashToIso = (input) => {\r\n if (typeof input === 'string' || input instanceof String) {\r\n let iso = input.replace(/(\\d{2})\\/(\\d{2})\\/(\\d{4})/, '$3-$1-$2');\r\n iso = removeTimezone(iso);\r\n return iso;\r\n }\r\n};\r\n\r\nconst moneyFormatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n});\r\n\r\nconst rateFormatter = new Intl.NumberFormat('en-US', {\r\n style: 'percent',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n});\r\n\r\nexport const formatAsMoney = (number, formatter = moneyFormatter) => {\r\n return isNaN(number) ? number : formatter.format(number);\r\n};\r\n\r\nexport const formatAsPercent = (number, formatter = rateFormatter) =>\r\n formatter.format(number / 100);\r\n\r\nexport const isStringWithContent = (variable) => {\r\n return typeof variable === 'string' && variable.trim() !== '';\r\n};\r\n","import { useEffect, useRef } from 'react';\r\nimport throttle from 'lodash/throttle';\r\n\r\nexport const useFocusOnMount = () => {\r\n const focusRef = useRef(null);\r\n useEffect(() => focusRef.current.focus(), []);\r\n return focusRef;\r\n};\r\n\r\nexport const useScrollToTopOnMount = () => {\r\n useEffect(() => window.scrollTo(0, 0), []);\r\n};\r\n\r\nexport const useResize = (ref, setWidth) => {\r\n useEffect(() => {\r\n if (ref && ref.current) {\r\n setWidth(ref.current.clientWidth);\r\n }\r\n }, [ref, setWidth]);\r\n\r\n useEffect(() => {\r\n const handleResize = throttle(() => {\r\n if (ref && ref.current) {\r\n setWidth(ref.current.clientWidth);\r\n }\r\n }, 500);\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, [ref, setWidth]);\r\n};\r\n","// Storage persistence types\r\nconst PERSIST_INITIAL_LOAD = 'app/persist/INITIAL_LOAD';\r\nconst PERSIST_REMEMBER_ME = 'app/persist/REMEMBER_ME';\r\nconst PERSIST_HYDRATE_STATE = 'app/persist/HYDRATE_STATE';\r\nconst PERSIST_RESET_STATE = 'app/persist/RESET_STATE';\r\n\r\nconst PERSIST_CLEAR_REQUEST = 'app/persist/CLEAR_REQUEST';\r\nconst PERSIST_CLEAR_RESPONSE = 'app/persist/CLEAR_RESPONSE';\r\nconst PERSIST_CLEAR_FAILURE = 'app/persist/CLEAR_FAILURE';\r\nconst PERSIST_CLEAR_SUCCESS = 'app/persist/CLEAR_SUCCESS';\r\n\r\nconst PERSIST_LOAD_REQUEST = 'app/persist/LOAD_REQUEST';\r\nconst PERSIST_LOAD_RESPONSE = 'app/persist/LOAD_RESPONSE';\r\nconst PERSIST_LOAD_FAILURE = 'app/persist/LOAD_FAILURE';\r\nconst PERSIST_LOAD_SUCCESS = 'app/persist/LOAD_SUCCESS';\r\n\r\nconst PERSIST_SAVE_REQUEST = 'app/persist/SAVE_REQUEST';\r\nconst PERSIST_SAVE_RESPONSE = 'app/persist/SAVE_RESPONSE';\r\nconst PERSIST_SAVE_FAILURE = 'app/persist/SAVE_FAILURE';\r\nconst PERSIST_SAVE_SUCCESS = 'app/persist/SAVE_SUCCESS';\r\n\r\nexport default {\r\n PERSIST_INITIAL_LOAD,\r\n PERSIST_REMEMBER_ME,\r\n\r\n PERSIST_RESET_STATE,\r\n PERSIST_HYDRATE_STATE,\r\n\r\n PERSIST_CLEAR_REQUEST,\r\n PERSIST_CLEAR_RESPONSE,\r\n PERSIST_CLEAR_FAILURE,\r\n PERSIST_CLEAR_SUCCESS,\r\n\r\n PERSIST_LOAD_REQUEST,\r\n PERSIST_LOAD_RESPONSE,\r\n PERSIST_LOAD_FAILURE,\r\n PERSIST_LOAD_SUCCESS,\r\n\r\n PERSIST_SAVE_REQUEST,\r\n PERSIST_SAVE_RESPONSE,\r\n PERSIST_SAVE_FAILURE,\r\n PERSIST_SAVE_SUCCESS,\r\n};\r\n","import { JsonApiError } from './error';\r\nimport { camelCase, snakeCase, upperFirst } from './helpers';\r\n\r\nconst requestStates = ['REQUEST', 'RESPONSE', 'FAILURE', 'SUCCESS'];\r\n\r\n/**\r\n * Takes multiple request status objects and merges them into one final request\r\n * status object. The merging is true biased. If any of the requests contains\r\n * a true value for one of the statuses, it will be true in the final object.\r\n * Likewise, the most current lastUpdated value is the final value. Note that\r\n * this implementation could cause a result that is both notStarted and\r\n * hasFinished. There's not a more sensible way to merge these requests though\r\n * and our implementation of AsyncLoader should handle this by priority.\r\n *\r\n * @param {Array} requests - Array of request objects to merge together\r\n *\r\n * @returns {Object} - Final merged request status object\r\n */\r\nexport const mergeRequestStatuses = (requests) => {\r\n return {\r\n notStarted: requests.filter((r) => r.notStarted).length > 0,\r\n isLoading: requests.filter((r) => r.isLoading).length > 0,\r\n hasFailed: requests.filter((r) => r.hasFailed).length > 0,\r\n hasFinished: requests.filter((r) => r.hasFinished).length > 0,\r\n isEmpty: requests.filter((r) => r.isEmpty).length > 0,\r\n lastUpdated: requests.reduce((latest, r) => {\r\n const current = r.lastUpdated ? r.lastUpdated : 0;\r\n return current > latest ? current : latest;\r\n }, 0),\r\n };\r\n};\r\n\r\n/**\r\n * Generates status tracking types for asynchronous requests\r\n *\r\n * @param {string} feature - Feature name request falls under.\r\n * @param {string} requestName - Name of request\r\n * @param {string} namespace - (Optional) Namespace for types. Defaults to 'app'.\r\n *\r\n * @returns {Object} - Object of generated types\r\n */\r\nexport const requestTypesGenerator = (feature, requestName, namespace = 'app') => {\r\n let types = {};\r\n const SSC_FEATURE = snakeCase(feature).toUpperCase();\r\n const SSC_NAME = snakeCase(requestName).toUpperCase();\r\n\r\n requestStates.forEach((state) => {\r\n types[`${SSC_FEATURE}_${SSC_NAME}_${state}`] = `${namespace}/${feature}/${SSC_NAME}_${state}`;\r\n });\r\n\r\n return types;\r\n};\r\n\r\n/**\r\n * Generates status tracking actions for asynchronous requests\r\n *\r\n * @param {string} feature - Feature name request falls under.\r\n * @param {string} requestName - Name of request\r\n * @param {Object} types - Action types to create actions for\r\n *\r\n * @returns {Object} - Object of generated actions\r\n */\r\nexport const requestActionsGenerator = (feature, requestName, types) => {\r\n let actions = {};\r\n\r\n requestStates.forEach((state) => {\r\n const actionName = feature + upperFirst(camelCase(requestName)) + upperFirst(camelCase(state));\r\n const SSC_ACTION_NAME = snakeCase(actionName).toUpperCase();\r\n if (state === 'SUCCESS') {\r\n actions[actionName] = (isEmpty = false, key = null) => ({\r\n type: types[SSC_ACTION_NAME],\r\n isEmpty,\r\n key,\r\n lastUpdated: Date.now(),\r\n });\r\n } else if (state === 'FAILURE') {\r\n actions[actionName] = (error, key = null) => ({\r\n type: types[SSC_ACTION_NAME],\r\n key,\r\n error,\r\n lastUpdated: Date.now(),\r\n });\r\n } else {\r\n actions[actionName] = (key = null) => ({\r\n type: types[SSC_ACTION_NAME],\r\n key,\r\n lastUpdated: Date.now(),\r\n });\r\n }\r\n });\r\n\r\n return actions;\r\n};\r\n\r\n/**\r\n * Generates a status tracking reducer for an asynchronous request\r\n *\r\n * @param {string} feature - Feature to create reducer for\r\n * @param {string} requestName - Request name to create reducer for\r\n * @param {Object} types - Request redux types\r\n *\r\n * @yields {Function} Request reducer\r\n */\r\nexport const requestReducerGenerator = (feature, requestName, types) => {\r\n const SSC_FEATURE = snakeCase(feature).toUpperCase();\r\n const SSC_REQUEST_NAME = snakeCase(requestName).toUpperCase();\r\n\r\n return (\r\n state = {\r\n key: null,\r\n notStarted: true,\r\n isLoading: false,\r\n hasFailed: false,\r\n hasFinished: false,\r\n isEmpty: false,\r\n lastUpdated: null,\r\n },\r\n action\r\n ) => {\r\n switch (action.type) {\r\n case types[`${SSC_FEATURE}_${SSC_REQUEST_NAME}_REQUEST`]:\r\n return requestedState(state, action.lastUpdated, action.key);\r\n case types[`${SSC_FEATURE}_${SSC_REQUEST_NAME}_RESPONSE`]:\r\n return respondedState(state, action.lastUpdated, action.key);\r\n case types[`${SSC_FEATURE}_${SSC_REQUEST_NAME}_FAILURE`]:\r\n if (action.error instanceof JsonApiError) {\r\n return failedState(\r\n {\r\n error: action.error.errors,\r\n ...state,\r\n },\r\n action.lastUpdated,\r\n action.key\r\n );\r\n } else {\r\n return failedState(state, action.lastUpdated, action.key);\r\n }\r\n case types[`${SSC_FEATURE}_${SSC_REQUEST_NAME}_SUCCESS`]:\r\n return successState(state, action.lastUpdated, action.isEmpty, action.key);\r\n default:\r\n return state;\r\n }\r\n };\r\n};\r\n\r\nconst requestedState = (state, lastUpdated, key) => ({\r\n ...state,\r\n key: key,\r\n notStarted: false,\r\n isLoading: true,\r\n hasFailed: false,\r\n hasFinished: false,\r\n lastUpdated: lastUpdated,\r\n});\r\n\r\nconst respondedState = (state, lastUpdated, key) => ({\r\n ...state,\r\n key: key,\r\n notStarted: false,\r\n isLoading: false,\r\n hasFailed: false,\r\n hasFinished: true,\r\n isEmpty: false,\r\n lastUpdated: lastUpdated,\r\n});\r\n\r\nconst failedState = (state, lastUpdated, key) => ({\r\n ...state,\r\n key: key,\r\n notStarted: false,\r\n isLoading: false,\r\n hasFailed: true,\r\n hasFinished: true,\r\n isEmpty: false,\r\n lastUpdated: lastUpdated,\r\n});\r\n\r\nconst successState = (state, lastUpdated, isEmpty = false, key) => ({\r\n ...state,\r\n key: key,\r\n notStarted: false,\r\n isLoading: false,\r\n hasFailed: false,\r\n hasFinished: true,\r\n isEmpty: isEmpty,\r\n lastUpdated: lastUpdated,\r\n});\r\n","import types from './types';\r\nimport { combineReducers } from 'redux';\r\nimport { requestReducerGenerator } from '../../utils/request';\r\n\r\nconst clear = requestReducerGenerator('persist', 'clear', types);\r\nconst load = requestReducerGenerator('persist', 'load', types);\r\nconst save = requestReducerGenerator('persist', 'save', types);\r\n\r\nconst cache = (\r\n state = {\r\n rememberMe: false,\r\n initialLoad: false,\r\n },\r\n action\r\n) => {\r\n switch (action.type) {\r\n case types.PERSIST_INITIAL_LOAD:\r\n return { ...state, initialLoad: action.initialLoad };\r\n case types.PERSIST_REMEMBER_ME:\r\n return { ...state, rememberMe: action.rememberMe };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst persist = combineReducers({\r\n cache,\r\n requests: combineReducers({\r\n clear,\r\n load,\r\n save,\r\n }),\r\n});\r\n\r\nexport default persist;\r\n","import types from './types';\r\n\r\n// Data actions\r\nconst persistInitialLoad = (initialLoad) => ({\r\n type: types.PERSIST_INITIAL_LOAD,\r\n initialLoad,\r\n});\r\nconst persistRememberMe = (rememberMe) => ({\r\n type: types.PERSIST_REMEMBER_ME,\r\n rememberMe,\r\n});\r\n// Note: must be handled in rootReducer in order to act on the entire state tree\r\nconst persistHydrateState = (data) => ({\r\n type: types.PERSIST_HYDRATE_STATE,\r\n data,\r\n});\r\n// Note: must be handled in rootReducer in order to act on the entire state tree\r\nconst persistResetState = () => ({\r\n type: types.PERSIST_RESET_STATE,\r\n});\r\n\r\n// Clear state and browser storage\r\nconst persistClearRequest = () => ({\r\n type: types.PERSIST_CLEAR_REQUEST,\r\n});\r\nconst persistClearResponse = () => ({\r\n type: types.PERSIST_CLEAR_RESPONSE,\r\n});\r\nconst persistClearFailure = (error) => ({\r\n error,\r\n type: types.PERSIST_CLEAR_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst persistClearSuccess = () => ({\r\n type: types.PERSIST_CLEAR_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\n// Load from browser storage to redux\r\nconst persistLoadRequest = () => ({\r\n type: types.PERSIST_LOAD_REQUEST,\r\n});\r\nconst persistLoadResponse = () => ({\r\n type: types.PERSIST_LOAD_RESPONSE,\r\n});\r\nconst persistLoadFailure = (error) => ({\r\n error,\r\n type: types.PERSIST_LOAD_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst persistLoadSuccess = () => ({\r\n type: types.PERSIST_LOAD_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\n// Save from redux to browser storage\r\nconst persistSaveRequest = () => ({\r\n type: types.PERSIST_SAVE_REQUEST,\r\n});\r\nconst persistSaveResponse = (data) => ({\r\n type: types.PERSIST_SAVE_RESPONSE,\r\n data,\r\n});\r\nconst persistSaveFailure = () => ({\r\n type: types.PERSIST_SAVE_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst persistSaveSuccess = () => ({\r\n type: types.PERSIST_SAVE_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\nexport default {\r\n persistInitialLoad,\r\n persistRememberMe,\r\n persistHydrateState,\r\n persistResetState,\r\n\r\n persistClearRequest,\r\n persistClearResponse,\r\n persistClearFailure,\r\n persistClearSuccess,\r\n\r\n persistLoadRequest,\r\n persistLoadResponse,\r\n persistLoadFailure,\r\n persistLoadSuccess,\r\n\r\n persistSaveRequest,\r\n persistSaveResponse,\r\n persistSaveFailure,\r\n persistSaveSuccess,\r\n};\r\n","import actions from './actions';\r\nimport { safeAccess } from '../../utils';\r\n\r\nconst APP_KEY = 'fiducius-app-state';\r\n\r\n// Clear the stored state from browser storage if it exists\r\nconst persistClearStore = async () => {\r\n // No try catch, handle failure in loadState operation\r\n localStorage.removeItem(APP_KEY);\r\n sessionStorage.removeItem(APP_KEY);\r\n};\r\n\r\n// Get the stored state from browser storage if it exists\r\nconst persistLoadStore = async () => {\r\n let store = undefined;\r\n let localStore = null;\r\n let sessionStore = null;\r\n\r\n // No try catch, handle failure in loadState operation\r\n localStore = localStorage.getItem(APP_KEY);\r\n sessionStore = sessionStorage.getItem(APP_KEY);\r\n\r\n if (!localStore && sessionStore) {\r\n store = JSON.parse(sessionStore);\r\n } else if ((localStore && !sessionStore) || (localStore && sessionStore)) {\r\n // opt for localstore if both are there\r\n store = JSON.parse(localStore);\r\n }\r\n\r\n // Something bad happened to get here\r\n return store;\r\n};\r\n\r\nconst persistSaveStore = async (fullState) => {\r\n const selectedState = {\r\n auth: { cache: fullState.auth.cache },\r\n payment: {\r\n cache: {\r\n paymentType: safeAccess(fullState, 'payment.cache.paymentType'),\r\n },\r\n },\r\n persist: { cache: fullState.persist.cache },\r\n // TODO: persist everything we want\r\n };\r\n\r\n // No try catch, handle failure in saveState operation\r\n const storageType = fullState.persist.cache.rememberMe ? localStorage : sessionStorage;\r\n const serializedState = JSON.stringify(selectedState);\r\n storageType.setItem(APP_KEY, serializedState);\r\n};\r\n\r\n// Request to load of the persisted state from browser storage\r\n// Structure as external request b/c we're interacting with the browser API\r\nexport const persistLoadState = () => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.persistLoadRequest());\r\n\r\n const loadedState = await persistLoadStore();\r\n dispatch(actions.persistLoadResponse());\r\n\r\n if (loadedState === undefined) {\r\n dispatch(actions.persistResetState());\r\n } else {\r\n dispatch(actions.persistHydrateState(loadedState));\r\n }\r\n\r\n if (!getState().persist.cache.initialLoad) {\r\n dispatch(actions.persistInitialLoad(true));\r\n }\r\n\r\n dispatch(actions.persistLoadSuccess());\r\n } catch (error) {\r\n dispatch(actions.persistLoadFailure(error));\r\n }\r\n};\r\n\r\n// Request to clear the current state tree and persisted browser storage\r\n// Structure as external request b/c we're interacting with the browser API\r\nexport const persistClearState = () => async (dispatch) => {\r\n try {\r\n dispatch(actions.persistClearRequest());\r\n await persistClearStore();\r\n dispatch(actions.persistClearResponse());\r\n await dispatch(actions.persistResetState());\r\n dispatch(actions.persistClearSuccess());\r\n } catch (error) {\r\n dispatch(actions.persistLoadFailure(error));\r\n }\r\n};\r\n\r\n// Request to save the current state tree to the browser storage\r\n// Structure as external request b/c we're interacting with the browser API\r\nexport const persistSaveState = () => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.persistSaveRequest());\r\n await persistSaveStore(getState());\r\n dispatch(actions.persistSaveResponse());\r\n dispatch(actions.persistSaveSuccess());\r\n } catch (error) {\r\n dispatch(actions.persistSaveFailure(error));\r\n }\r\n};\r\n\r\n// Set the rememberMe flag\r\nexport const persistRememberMe = (rememberMe) => async (dispatch) => {\r\n dispatch(actions.persistRememberMe(rememberMe));\r\n await dispatch(persistSaveState());\r\n};\r\n\r\n// Set the initial load flag\r\nexport const persistInitialLoad = (initialLoad) => async (dispatch) => {\r\n dispatch(actions.persistInitialLoad(initialLoad));\r\n await dispatch(persistSaveState());\r\n};\r\n\r\nexport default {\r\n persistClearState,\r\n persistLoadState,\r\n persistSaveState,\r\n persistRememberMe,\r\n};\r\n","// Common API resource operations\r\nimport { combineReducers } from 'redux';\r\n\r\nimport { persistSaveState } from '../persist';\r\nimport { getToken } from '../auth/redux/selectors';\r\n\r\nimport { deleteApi, getApi, normalize, patchApi, postApi } from './api';\r\nimport { createErrorState } from './error';\r\nimport { camelCase, isEqual, safeAccess, snakeCase, upperFirst } from './helpers';\r\nimport { requestTypesGenerator, requestActionsGenerator, requestReducerGenerator } from './request';\r\n\r\n// TODO: could hook alerts into the request status\r\n\r\nconst resourceOperations = [\r\n 'CLEAR_ERRORS',\r\n 'CLEAR_FORM',\r\n 'DISABLE_READONLY',\r\n 'DISABLE_VALIDATION',\r\n 'ENABLE_READONLY',\r\n 'ENABLE_VALIDATION',\r\n 'HANDLE_CACHE_CHANGE',\r\n 'HANDLE_ERROR',\r\n 'HANDLE_FORM_CHANGE',\r\n 'INVALIDATE_ATTRIBUTES',\r\n 'INVALIDATE_CACHE',\r\n 'VALIDATE_ATTRIBUTES',\r\n 'VALIDATE_CACHE',\r\n];\r\n\r\nconst resourceRequestOperations = [\r\n 'COPY_RESOURCE_TO_FORM',\r\n 'CREATE_RESOURCE',\r\n 'DELETE_RESOURCE',\r\n 'LOAD_COLLECTION',\r\n 'LOAD_RESOURCE',\r\n 'UPDATE_RESOURCE',\r\n];\r\n\r\n/**\r\n * Generates common resource action types\r\n *\r\n * @param {string} feature - Feature name.\r\n * @param {string} namespace - (Optional) Namespace for types. Defaults to 'app'.\r\n *\r\n * @returns {Object} - Object of generated types\r\n */\r\nexport const resourceTypesGenerator = (feature, namespace = 'app') => {\r\n let types = {};\r\n const SSC_FEATURE = snakeCase(feature).toUpperCase();\r\n resourceOperations.forEach((op) => {\r\n types[`${SSC_FEATURE}_${op}`] = `${namespace}/${feature}/${op}`;\r\n });\r\n\r\n resourceRequestOperations.forEach((op) => {\r\n types = { ...types, ...requestTypesGenerator(feature, op, namespace) };\r\n });\r\n\r\n return types;\r\n};\r\n\r\n/**\r\n * Generates common resource action creators\r\n *\r\n * @param {string} feature - Feature to create actions for\r\n * @param {Object} types - Object of types to generate action creators for.\r\n *\r\n * @returns {Object} - Object of generated actions\r\n */\r\nexport const resourceActionsGenerator = (feature, types) => {\r\n let actions = {};\r\n\r\n resourceOperations.forEach((op) => {\r\n const actionName = feature + upperFirst(camelCase(op));\r\n const SSC_ACTION_NAME = snakeCase(actionName).toUpperCase();\r\n\r\n // switch(true) lets us use comparators in the case because it\r\n // evaluates to true === (evaluated boolean from comparator)\r\n switch (true) {\r\n case SSC_ACTION_NAME.endsWith('HANDLE_CACHE_CHANGE'):\r\n case SSC_ACTION_NAME.endsWith('HANDLE_FORM_CHANGE'):\r\n actions[actionName] = (data) => ({\r\n type: types[SSC_ACTION_NAME],\r\n data,\r\n });\r\n break;\r\n case SSC_ACTION_NAME.endsWith('HANDLE_ERROR'):\r\n actions[actionName] = (errors) => ({\r\n type: types[SSC_ACTION_NAME],\r\n errors,\r\n });\r\n break;\r\n case SSC_ACTION_NAME.endsWith('INVALIDATE_ATTRIBUTES'):\r\n actions[actionName] = (attributes, errorState) => ({\r\n type: types[SSC_ACTION_NAME],\r\n attributes,\r\n errorState,\r\n });\r\n break;\r\n case SSC_ACTION_NAME.endsWith('VALIDATE_ATTRIBUTES'):\r\n actions[actionName] = (attributes, errorState) => ({\r\n type: types[SSC_ACTION_NAME],\r\n attributes,\r\n errorState,\r\n });\r\n break;\r\n default:\r\n actions[actionName] = () => ({\r\n type: types[SSC_ACTION_NAME],\r\n });\r\n break;\r\n }\r\n });\r\n\r\n resourceRequestOperations.forEach((op) => {\r\n actions = { ...actions, ...requestActionsGenerator(feature, op, types) };\r\n });\r\n\r\n return actions;\r\n};\r\n\r\n/**\r\n * Generates common resource reducers\r\n *\r\n * @param {string} feature - Feature name\r\n * @param {Object} types - Resource redux action types\r\n * @param {string|undefined} namespace - Feature's namespace\r\n */\r\nexport const resourceReducerGenerator = (feature, types, namespace = '') => {\r\n const SSC_FEATURE = snakeCase(feature).toUpperCase();\r\n\r\n const cache = (state = {}, action) => {\r\n switch (action.type) {\r\n case types[`${SSC_FEATURE}_HANDLE_CACHE_CHANGE`]: {\r\n return { ...action.data };\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n };\r\n\r\n const errors = (state = {}, action) => {\r\n switch (action.type) {\r\n case types[`${SSC_FEATURE}_CLEAR_ERRORS`]: {\r\n return {};\r\n }\r\n case types[`${SSC_FEATURE}_HANDLE_ERROR`]: {\r\n return { ...action.errors };\r\n }\r\n case types[`${SSC_FEATURE}_VALIDATE_ATTRIBUTES`]: {\r\n let newErrors = validateAttributes(action.attributes, action.errorState).errors;\r\n return { ...state, ...newErrors };\r\n }\r\n case types[`${SSC_FEATURE}_INVALIDATE_ATTRIBUTES`]: {\r\n let newErrors = invalidateAttributes(action.attributes, action.errorState).errors;\r\n return { ...state, ...newErrors };\r\n }\r\n default:\r\n return state;\r\n }\r\n };\r\n\r\n const form = (state = {}, action) => {\r\n switch (action.type) {\r\n case types[`${SSC_FEATURE}_CLEAR_FORM`]: {\r\n return {};\r\n }\r\n case types[`${SSC_FEATURE}_HANDLE_FORM_CHANGE`]: {\r\n return { ...action.data };\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n };\r\n\r\n const meta = (\r\n state = {\r\n cacheIsCurrent: false,\r\n isNew: false,\r\n isReadOnly: false,\r\n isValid: false,\r\n hasValidated: false,\r\n shouldValidate: true,\r\n },\r\n action\r\n ) => {\r\n switch (action.type) {\r\n case types[`${SSC_FEATURE}_DISABLE_VALIDATION`]: {\r\n return { ...state, shouldValidate: false };\r\n }\r\n case types[`${SSC_FEATURE}_ENABLE_VALIDATION`]: {\r\n return { ...state, shouldValidate: true };\r\n }\r\n case types[`${SSC_FEATURE}_DISABLE_READONLY`]: {\r\n return { ...state, isReadOnly: false };\r\n }\r\n case types[`${SSC_FEATURE}_ENABLE_READONLY`]: {\r\n return { ...state, isReadOnly: true };\r\n }\r\n case types[`${SSC_FEATURE}_INVALIDATE_ATTRIBUTES`]: {\r\n let newMeta = invalidateAttributes(action.attributes, action.errorState).meta;\r\n return { ...state, ...newMeta };\r\n }\r\n case types[`${SSC_FEATURE}_INVALIDATE_CACHE`]: {\r\n return { ...state, cacheIsCurrent: false };\r\n }\r\n case types[`${SSC_FEATURE}_VALIDATE_CACHE`]: {\r\n return { ...state, cacheIsCurrent: true };\r\n }\r\n case types[`${SSC_FEATURE}_VALIDATE_ATTRIBUTES`]: {\r\n let newMeta = validateAttributes(action.attributes, action.errorState).meta;\r\n return { ...state, ...newMeta };\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n };\r\n\r\n const requestReducers = resourceRequestOperations.reduce((reducers, op) => {\r\n const requestName = camelCase(op);\r\n return {\r\n ...reducers,\r\n [requestName]: requestReducerGenerator(feature, requestName, types),\r\n };\r\n }, {});\r\n\r\n const requests = combineReducers(requestReducers);\r\n\r\n return combineReducers({\r\n cache,\r\n errors,\r\n form,\r\n meta,\r\n requests,\r\n });\r\n};\r\n\r\nexport const invalidateAttributes = (attributes, errorState) => {\r\n let newErrorState = { ...errorState };\r\n const meta = {\r\n hasValidated: false,\r\n isValid: false,\r\n };\r\n\r\n attributes.forEach((a) => {\r\n newErrorState[a] = {};\r\n });\r\n\r\n return {\r\n errors: { ...newErrorState },\r\n meta,\r\n };\r\n};\r\n\r\nexport const validateAttributes = (validatedAttributes, errorState) => {\r\n let newErrorState = { ...errorState }; // start with previous state of errors\r\n\r\n validatedAttributes.forEach((a) => {\r\n const exists = Object.keys(newErrorState).includes(a);\r\n const isEmpty = isEqual(newErrorState[a], {});\r\n if (exists && isEmpty) {\r\n newErrorState[a] = false;\r\n }\r\n });\r\n\r\n let isValid = true;\r\n const keys = Object.keys(newErrorState);\r\n for (let i = 0; i < keys.length; i++) {\r\n if (newErrorState[keys[i]] !== false) {\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n\r\n const meta = {\r\n hasValidated: true,\r\n isValid: isValid,\r\n };\r\n\r\n return {\r\n errors: { ...newErrorState },\r\n meta,\r\n };\r\n};\r\n\r\n/**\r\n * Generates common redux operations for a feature\r\n *\r\n * @param {string} feature - Name of feature\r\n * @param {Object} actions - Redux actions for the feature\r\n * @param {string} namespace - Namespace of the feature\r\n * @param {FormValidator|undefined} validator - FormValidator if the resource should validate\r\n * @param {Object|undefined} loadCollection - Object describing the GET collection endpoint\r\n * @param {string} loadCollection.endpoint - Endpoint GET collection\r\n * @param {Function} loadCollection.customResponseHandler - Customize the response body of the GET collection ednpoint\r\n * @param {Object|undefined} loadResource - Object describing the GET id endpoint\r\n * @param {string} loadResource.endpoint - Endpoint GET id\r\n * @param {Function} loadResource.customResponseHandler - Customize the response body of the GET id ednpoint\r\n * @param {Object|undefined} createResource - Object describing the POST collection endpoint\r\n * @param {string} createResource.endpoint - Endpoint POST collection\r\n * @param {Function} createResource.customResponseHandler - Customize the response body of the POST collection ednpoint\r\n * @param {Function} createResource.resourceType - Resource type to include in POST body\r\n * @param {Object|undefined} updateResource - Object describing the PATCH id endpoint\r\n * @param {string} updateResource.endpoint - Endpoint PATCH id\r\n * @param {Function} updateResource.customResponseHandler - Customize the response body of the PATCH id ednpoint\r\n * @param {Function} updateResource.resourceType - Resource type to include in PATCH body\r\n * @param {Object|undefined} deleteResource - Object describing the DELETE id endpoint\r\n * @param {string} deleteResource.endpoint - Endpoint DELETE id\r\n * @param {Function} deleteResource.customResponseHandler - Customize the response body of the DELETE id ednpoint\r\n * @param {Function|undefined} emptyDecider - Function to decide if the cache is considered empty\r\n *\r\n * @returns {Object} - Object containing the resource operations\r\n */\r\nexport const resourceOperationsGenerator = (\r\n feature,\r\n actions,\r\n namespace = null,\r\n validator = null,\r\n loadCollection = null,\r\n loadResource = null,\r\n createResource = null,\r\n updateResource = null,\r\n deleteResource = null,\r\n emptyDecider = null\r\n) => {\r\n // all the actions are put on the operation object by default, then we\r\n // override the ones that should be higher level.\r\n let operations = { ...actions };\r\n const accessor = namespace ? `${namespace}.${feature}` : feature;\r\n\r\n // Order of operations creation matters! We need to reference some created\r\n // operations in other generators\r\n operations[`${feature}HandleError`] = resourceErrorHandlerGenerator(feature, actions, accessor);\r\n\r\n if (validator) {\r\n operations[`${feature}ValidateState`] = resourceValidateStateGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n validator\r\n );\r\n\r\n operations[`${feature}ValidateAttributes`] = resourceValidateAttributesGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n validator\r\n );\r\n }\r\n\r\n operations[`${feature}HandleCacheChange`] = resourceCacheChangeHandlerGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations\r\n );\r\n\r\n operations[`${feature}HandleFormChange`] = resourceFormChangeHandlerGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations\r\n );\r\n\r\n operations[`${feature}CopyResourceToForm`] = resourceCopyResourceToFormGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider\r\n );\r\n\r\n operations[`${feature}ClearForm`] = resourceClearFormGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider\r\n );\r\n\r\n if (loadCollection) {\r\n operations[`${feature}LoadCollection`] = resourceLoadCollectionGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n loadCollection.endpoint,\r\n loadCollection.customResponseHandler\r\n );\r\n }\r\n\r\n if (loadResource) {\r\n operations[`${feature}LoadResource`] = resourceLoadResourceGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n loadResource.endpoint,\r\n loadResource.customResponseHandler\r\n );\r\n }\r\n\r\n if (createResource) {\r\n operations[`${feature}CreateResource`] = resourceCreateResourceGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n createResource.endpoint,\r\n createResource.customResponseHandler,\r\n createResource.resourceType\r\n );\r\n }\r\n\r\n if (updateResource) {\r\n operations[`${feature}UpdateResource`] = resourceUpdateResourceGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n updateResource.endpoint,\r\n updateResource.customResponseHandler,\r\n updateResource.resourceType\r\n );\r\n }\r\n\r\n if (deleteResource) {\r\n operations[`${feature}DeleteResource`] = resourceDeleteResourceGenerator(\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n deleteResource.endpoint,\r\n deleteResource.customResponseHandler\r\n );\r\n }\r\n\r\n return operations;\r\n};\r\n\r\nconst resolvePath = (obj, path) =>\r\n path.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), obj);\r\n\r\nexport const checkForEmpty = (localState, callback = null) => {\r\n if (callback) {\r\n return callback(localState);\r\n } else {\r\n return !(safeAccess(localState, 'cache') && Object.keys(localState.cache).length > 0);\r\n }\r\n};\r\n\r\nconst resourceErrorHandlerGenerator = (feature, actions, accessor) => (\r\n error,\r\n attributes = null\r\n) => async (dispatch, getState) => {\r\n const prevErrors = resolvePath(getState(), accessor).errors;\r\n const errorState = createErrorState(error, prevErrors, attributes);\r\n await dispatch(actions[`${feature}HandleError`](errorState));\r\n};\r\n\r\nconst resourceValidateStateGenerator = (\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n validator\r\n) => () => (dispatch, getState) => {\r\n const formState = resolvePath(getState(), accessor).form;\r\n const formKeys = Object.keys(formState);\r\n let currentErrors = () => resolvePath(getState(), accessor).errors;\r\n try {\r\n dispatch(actions[`${feature}InvalidateAttributes`](formKeys, currentErrors()));\r\n validator.validateState(formState);\r\n } catch (error) {\r\n dispatch(operations[`${feature}HandleError`](error, formKeys));\r\n } finally {\r\n dispatch(actions[`${feature}ValidateAttributes`](formKeys, currentErrors()));\r\n }\r\n};\r\n\r\nconst resourceValidateAttributesGenerator = (feature, actions, accessor, operations, validator) => (\r\n attributes\r\n) => (dispatch, getState) => {\r\n const formState = resolvePath(getState(), accessor).form;\r\n let currentErrors = () => resolvePath(getState(), accessor).errors;\r\n try {\r\n dispatch(actions[`${feature}InvalidateAttributes`](attributes, currentErrors()));\r\n validator.validateAttributes(attributes, formState);\r\n } catch (error) {\r\n dispatch(operations[`${feature}HandleError`](error, attributes));\r\n } finally {\r\n dispatch(actions[`${feature}ValidateAttributes`](attributes, currentErrors()));\r\n }\r\n};\r\n\r\nconst resourceFormChangeHandlerGenerator = (feature, actions, accessor, operations) => (\r\n data,\r\n attributes = null\r\n) => async (dispatch, getState) => {\r\n const meta = resolvePath(getState(), accessor).meta;\r\n dispatch(actions[`${feature}HandleFormChange`](data));\r\n dispatch(actions[`${feature}InvalidateCache`]());\r\n\r\n if (meta.shouldValidate) {\r\n dispatch(operations[`${feature}ValidateAttributes`](attributes));\r\n }\r\n\r\n // don't really need persistence on forms\r\n // await dispatch(persistSaveState());\r\n};\r\n\r\nconst resourceCacheChangeHandlerGenerator = (feature, actions, accessor, operations) => (\r\n data\r\n) => async (dispatch, getState) => {\r\n dispatch(actions[`${feature}HandleCacheChange`](data));\r\n dispatch(actions[`${feature}ValidateCache`]());\r\n await dispatch(persistSaveState());\r\n};\r\n\r\nconst resourceCopyResourceToFormGenerator = (\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider\r\n) => (id) => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions[`${feature}CopyResourceToFormRequest`]());\r\n const data = resolvePath(getState(), accessor).cache[id];\r\n dispatch(actions[`${feature}HandleFormChange`](data));\r\n dispatch(actions[`${feature}CopyResourceToFormResponse`]());\r\n\r\n const segment = resolvePath(getState(), accessor);\r\n dispatch(actions[`${feature}CopyResourceToFormSuccess`](checkForEmpty(segment, emptyDecider)));\r\n } catch (error) {\r\n dispatch(operations[`${feature}HandleError`](error));\r\n }\r\n};\r\n\r\nconst resourceClearFormGenerator = (\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider\r\n) => () => async (dispatch, getState) => {\r\n dispatch(actions[`${feature}ClearForm`]());\r\n dispatch(actions[`${feature}ClearErrors`]());\r\n};\r\n\r\nconst resourceLoadCollectionGenerator = (\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n endpoint,\r\n customResponseHandler\r\n) => () => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n try {\r\n dispatch(actions[`${feature}LoadCollectionRequest`]());\r\n let data = await getApi(getToken(getState()), endpoint);\r\n\r\n dispatch(actions[`${feature}LoadCollectionResponse`]());\r\n if (customResponseHandler) {\r\n data = customResponseHandler(data);\r\n }\r\n\r\n data = keyById(data);\r\n await dispatch(operations[`${feature}HandleCacheChange`](data));\r\n\r\n const segment = resolvePath(getState(), accessor);\r\n dispatch(actions[`${feature}LoadCollectionSuccess`](checkForEmpty(segment, emptyDecider)));\r\n } catch (error) {\r\n dispatch(operations[`${feature}HandleError`](error));\r\n dispatch(actions[`${feature}LoadCollectionFailure`](error));\r\n }\r\n};\r\n\r\nexport const keyById = (resultArray) =>\r\n resultArray.reduce(\r\n (keyed, item) => ({\r\n ...keyed,\r\n [item.id]: item,\r\n }),\r\n {}\r\n );\r\n\r\nconst resourceLoadResourceGenerator = (\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n endpoint,\r\n customResponseHandler\r\n) => (id, key = null) => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n const state = getState();\r\n try {\r\n dispatch(actions[`${feature}LoadResourceRequest`](key));\r\n let data = await getApi(getToken(state), `${endpoint}/${id}`);\r\n\r\n dispatch(actions[`${feature}LoadResourceResponse`](key));\r\n if (customResponseHandler) {\r\n data = customResponseHandler(data);\r\n }\r\n\r\n const cache = {\r\n ...resolvePath(state, accessor).cache,\r\n ...keyById(data),\r\n };\r\n\r\n await dispatch(operations[`${feature}HandleCacheChange`](cache));\r\n\r\n const segment = resolvePath(getState(), accessor);\r\n dispatch(actions[`${feature}LoadResourceSuccess`](checkForEmpty(segment, emptyDecider), key));\r\n } catch (error) {\r\n dispatch(operations[`${feature}HandleError`](error));\r\n dispatch(actions[`${feature}LoadResourceFailure`](error, key));\r\n }\r\n};\r\n\r\nconst resourceDeleteResourceGenerator = (\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n endpoint,\r\n customResponseHandler\r\n) => (id, key = null) => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n try {\r\n dispatch(actions[`${feature}DeleteResourceRequest`](key));\r\n await deleteApi(getToken(getState()), `${endpoint}/${id}`);\r\n\r\n dispatch(actions[`${feature}DeleteResourceResponse`](key));\r\n\r\n let cache = resolvePath(getState(), accessor).cache;\r\n delete cache[id];\r\n\r\n await dispatch(operations[`${feature}HandleCacheChange`](cache));\r\n\r\n const segment = resolvePath(getState(), accessor);\r\n dispatch(actions[`${feature}DeleteResourceSuccess`](checkForEmpty(segment, emptyDecider), key));\r\n } catch (error) {\r\n dispatch(operations[`${feature}HandleError`](error));\r\n dispatch(actions[`${feature}DeleteResourceFailure`](error, key));\r\n }\r\n};\r\n\r\nconst resourceCreateResourceGenerator = (\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n endpoint,\r\n customResponseHandler,\r\n resourceType\r\n) => (key = null) => async (dispatch, getState) => {\r\n const state = getState();\r\n let segment = resolvePath(state, accessor);\r\n try {\r\n if (safeAccess(segment, 'errors.length') > 0) {\r\n throw new Error('The form contains errors and cannot be saved until they are fixed.');\r\n }\r\n\r\n if (segment.meta.isReadOnly) {\r\n throw new Error('The form is readonly. Any changes will not be saved.');\r\n }\r\n\r\n dispatch(actions[`${feature}CreateResourceRequest`](key));\r\n const postData = normalize(resourceType, segment.form);\r\n let data = await postApi(getToken(state), endpoint, postData);\r\n\r\n dispatch(actions[`${feature}CreateResourceResponse`](key));\r\n if (customResponseHandler) {\r\n data = customResponseHandler(data);\r\n }\r\n const addedId = safeAccess(data[0], 'id') || -1;\r\n const cache = { ...segment.cache, ...keyById(data) };\r\n\r\n await dispatch(operations[`${feature}HandleCacheChange`](cache));\r\n\r\n segment = resolvePath(getState(), accessor);\r\n dispatch(actions[`${feature}CreateResourceSuccess`](checkForEmpty(segment, emptyDecider), key));\r\n return addedId;\r\n } catch (error) {\r\n dispatch(operations[`${feature}HandleError`](error));\r\n dispatch(actions[`${feature}CreateResourceFailure`](error, key));\r\n }\r\n};\r\n\r\nconst resourceUpdateResourceGenerator = (\r\n feature,\r\n actions,\r\n accessor,\r\n operations,\r\n emptyDecider,\r\n endpoint,\r\n customResponseHandler,\r\n resourceType\r\n) => (id, key = null) => async (dispatch, getState) => {\r\n const state = getState();\r\n let segment = resolvePath(state, accessor);\r\n try {\r\n if (safeAccess(segment, 'errors.length') > 0) {\r\n throw new Error('The form contains errors and cannot be saved until they are fixed.');\r\n }\r\n\r\n if (segment.meta.isReadOnly) {\r\n throw new Error('The form is readonly. Any changes will not be saved.');\r\n }\r\n\r\n dispatch(actions[`${feature}UpdateResourceRequest`](key));\r\n const patchData = normalize(resourceType, segment.form, id);\r\n let data = await patchApi(getToken(state), `${endpoint}/${id}`, patchData);\r\n\r\n dispatch(actions[`${feature}UpdateResourceResponse`](key));\r\n if (customResponseHandler) {\r\n data = customResponseHandler(data);\r\n }\r\n\r\n const cache = { ...segment.cache, ...keyById(data) };\r\n await dispatch(operations[`${feature}HandleCacheChange`](cache));\r\n\r\n segment = resolvePath(getState(), accessor);\r\n dispatch(actions[`${feature}UpdateResourceSuccess`](checkForEmpty(segment, emptyDecider), key));\r\n } catch (error) {\r\n dispatch(operations[`${feature}HandleError`](error));\r\n dispatch(actions[`${feature}UpdateResourceFailure`](error, key));\r\n }\r\n};\r\n","// Generic validator functions\r\nimport { JsonApiError } from './error';\r\nimport { getDate, lastDayOfMonth, format } from 'date-fns';\r\n\r\n// We don't use \\w\\d\\s becuase they can be implemented differently in non-PCRE implementations\r\n// [\\w] = [a-zA-Z0-9_] - Notice the underscore that we don't want either\r\n// [\\d] = [0-9]\r\n// [\\s] = [\\r\\n\\t\\f\\v ] - return, newline, tab, form-feed, vertical whitespace, space literal\r\nexport const emailPattern = /^([a-zA-Z\\d!#$%&'*+\\-/=?^_`{}|]+[_+.-])*[a-zA-Z\\d!#$%&'*+\\-/=?^_`{}|']+@(\\w+[.-])*\\w{1,63}\\.[a-zA-Z]+$/g;\r\nconst phonePattern = /(\\([0-9]{3}\\) [0-9]{3}-[0-9]{4}|[0-9]{10})/g;\r\nconst passwordPattern = /^(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9\\r\\n\\t\\f\\v ])([^\\r\\n\\t\\f\\v ]){8,50}$/g;\r\nconst multipleEmailWithoutSemicolon = /^.+[^;][\\s]\\S+$/g;\r\n\r\nexport class AttributeValidator {\r\n constructor(attribute, value) {\r\n this.attribute = attribute;\r\n this.value = value;\r\n this.error = new ValidationError();\r\n }\r\n\r\n hasFailed = () => {\r\n return this.error.hasFailures();\r\n };\r\n\r\n throwValidationError = () => {\r\n throw this.error;\r\n };\r\n\r\n handleFailure = (message) => {\r\n const failure = new ValidationFailure(`This field ${message}`, this.attribute);\r\n this.error.addFailure(failure);\r\n };\r\n\r\n isGreaterThanOrEqualTo = (limit) => {\r\n if (this.value < limit) {\r\n this.handleFailure(`must be greater than or equal to ${limit}.`);\r\n }\r\n };\r\n\r\n isGreaterThan = (limit) => {\r\n if (this.value <= limit) {\r\n this.handleFailure(`must be greater than ${limit}.`);\r\n }\r\n };\r\n\r\n isLessThan = (limit) => {\r\n if (this.value >= limit) {\r\n this.handleFailure(`must be less than ${limit}.`);\r\n }\r\n };\r\n\r\n isLessThanOrEqualTo = (limit, customMessage) => {\r\n if (this.value > limit) {\r\n if (!customMessage) {\r\n this.handleFailure(`must be less than or equal to ${limit}.`);\r\n } else {\r\n this.handleFailure(`must be less than or equal to ${limit}. ` + customMessage);\r\n }\r\n }\r\n };\r\n\r\n isRequired = () => {\r\n if (!this.value && this.value !== false && this.value !== 0) {\r\n this.handleFailure('is required.');\r\n }\r\n };\r\n\r\n isRequiredAndNotNull = () => {\r\n if (this.value !== null && !this.value && this.value !== false && this.value !== 0) {\r\n this.handleFailure('is required.');\r\n }\r\n };\r\n\r\n addCustomMessage = (message) => {\r\n if (message.length > 0) {\r\n this.handleFailure(message);\r\n }\r\n };\r\n\r\n isValidSingleEmail = () => {\r\n this.matchesRegex(emailPattern, 'must be a valid email address');\r\n };\r\n\r\n isValidEmail = () => {\r\n if (this.value.includes(';') || this.value.match(multipleEmailWithoutSemicolon)) {\r\n let failure = false;\r\n let array = this.value.split(';');\r\n array.forEach((value) => {\r\n if ((value !== null && !value.trim().match(emailPattern)) || array.length === 1) {\r\n failure = true;\r\n }\r\n });\r\n\r\n if (failure) {\r\n this.handleFailure('must have valid email addresses separated by a semicolon');\r\n }\r\n } else {\r\n this.matchesRegex(emailPattern, 'must be a valid email address');\r\n }\r\n };\r\n\r\n isValidPassword = () => {\r\n this.matchesRegex(\r\n passwordPattern,\r\n 'must be between 8 and 50 characters using at least one of each: <ul><li>Uppercase letters</li><li>Lowercase letters</li><li>Numbers</li><li>Special characters ` ~ ! @ # $ % ^ & * ( ) - _ = + [ { ] } \\\\ | ; : \\' \" , < . > / ?</li></ul>'\r\n );\r\n };\r\n\r\n isValidPhoneNumber = () => {\r\n this.matchesRegex(phonePattern, 'must be formatted as (###) ###-####');\r\n };\r\n\r\n isValidSecurityQuestion = () => {\r\n if (this.value === '0') {\r\n this.handleFailure(`Please select a security question`);\r\n }\r\n };\r\n\r\n valueMatchesList = (value, list) => {\r\n for (let item of list) {\r\n if (item.toUpperCase() === value.toUpperCase()) {\r\n this.handleFailure('must be a different value.');\r\n }\r\n }\r\n };\r\n\r\n hasMaxLength = (maxLength) => {\r\n if (this.value != null && this.value.length > maxLength) {\r\n this.handleFailure(`must be ${maxLength} characters or less.`);\r\n }\r\n };\r\n\r\n hasMinLength = (minLength) => {\r\n if (this.value != null && this.value.length < minLength) {\r\n this.handleFailure(`must be ${minLength} characters or more.`);\r\n }\r\n };\r\n\r\n validNumber = () => {\r\n if (this.value === undefined || this.value === '' || isNaN(this.value)) {\r\n this.handleFailure('is an invalid number.');\r\n }\r\n };\r\n\r\n checkRequired = () => {\r\n if (this.value === false) {\r\n this.handleFailure('is required to be checked to continue.');\r\n }\r\n };\r\n\r\n noBlankSpace = () => {\r\n if (this.value.trim().length === 0) {\r\n this.handleFailure('cannot contain just blank spaces.');\r\n }\r\n };\r\n\r\n requiredSelection = () => {\r\n if (this.value === undefined || this.value === null || this.value === '') {\r\n this.handleFailure('is required.');\r\n }\r\n };\r\n\r\n isAfterDate = (secondDate) => {\r\n const compareDate = new Date(secondDate);\r\n const enteredDate = new Date(this.value);\r\n\r\n if (enteredDate < compareDate) {\r\n this.handleFailure(`date must be later than ${format(compareDate, 'MM/dd/yyyy')}`);\r\n }\r\n };\r\n\r\n isBeforeDate = (secondDate) => {\r\n const compareDate = new Date(secondDate);\r\n const enteredDate = new Date(this.value);\r\n\r\n if (enteredDate > compareDate) {\r\n this.handleFailure(`date must be before ${format(compareDate, 'MM/dd/yyyy')}`);\r\n }\r\n };\r\n\r\n isOnOrAfterDate = (secondDate) => {\r\n const compareDate = new Date(secondDate);\r\n const enteredDate = new Date(this.value);\r\n\r\n if (enteredDate < compareDate - 1) {\r\n this.handleFailure(`date must be on or later than ${format(compareDate, 'MM/dd/yyyy')}`);\r\n }\r\n };\r\n\r\n isOnOrBeforeDate = (secondDate) => {\r\n const compareDate = new Date(secondDate);\r\n const enteredDate = new Date(this.value);\r\n\r\n if (enteredDate > compareDate) {\r\n this.handleFailure(`date must be on or before ${format(compareDate, 'MM/dd/yyyy')}`);\r\n }\r\n };\r\n\r\n validDate = () => {\r\n if (this.value.includes('/')) {\r\n let dateArray = this.value.split('/');\r\n let lastDay = getDate(lastDayOfMonth(new Date(dateArray[2], dateArray[0], 0)));\r\n\r\n if (\r\n this.value === undefined ||\r\n this.value === '' ||\r\n new Date(this.value) === 'Invalid date' ||\r\n !(dateArray[1] <= lastDay) //dateArray[1] holds the Date the client entered.\r\n ) {\r\n this.handleFailure('is an invalid date.');\r\n }\r\n }\r\n };\r\n\r\n validDateRequiredAndAfterToday = () => {\r\n if (this.value === null) {\r\n this.handleFailure('is an invalid date.');\r\n } else if (new Date(this.value).toString() === 'Invalid Date') {\r\n this.handleFailure('is an invalid date.');\r\n } else if (new Date(this.value) < Date.now()) {\r\n this.handleFailure(`date must be later than ${format(Date.now(), 'MM/dd/yyyy')}`);\r\n }\r\n };\r\n\r\n paymentMonthAlreadyExists = (editingDate, dateList) => {\r\n const enteredDate = new Date(this.value);\r\n const editingDateObj = new Date(editingDate);\r\n const firstOfMontheditingDateString =\r\n editingDateObj.getFullYear().toString() +\r\n '-' +\r\n (editingDateObj.getMonth() + 1).toString().padStart(2, '0') +\r\n '-01T00:00:00';\r\n const firstOfMonthString =\r\n enteredDate.getFullYear().toString() +\r\n '-' +\r\n (enteredDate.getMonth() + 1).toString().padStart(2, '0') +\r\n '-01T00:00:00';\r\n\r\n var result = dateList.find((item) => {\r\n return item === firstOfMonthString;\r\n });\r\n\r\n // This means the month was found\r\n if (result !== undefined && (result !== null) & (result.length > 0)) {\r\n // && (editingDate !== undefined && result !== firstOfMontheditingDateString))\r\n // if editingDate == undefined, this is an 'add'. if editingDate exists, then the month of the editing row should be allowed.\r\n if (\r\n editingDate === undefined ||\r\n (editingDate !== undefined && result !== firstOfMontheditingDateString)\r\n ) {\r\n this.handleFailure('value is invalid. An existing payment for this month already exists.');\r\n }\r\n }\r\n };\r\n\r\n matchesRegex = (regex, message) => {\r\n if (this.value !== null && !this.value.match(regex)) {\r\n this.handleFailure(message);\r\n }\r\n };\r\n}\r\n\r\nexport class FormValidator {\r\n constructor() {\r\n this.error = new ValidationError();\r\n }\r\n\r\n clearState = () => {\r\n this.error = new ValidationError();\r\n };\r\n\r\n validateState = (state) => {\r\n this.clearState();\r\n const methods = Object.getOwnPropertyNames(this.constructor.prototype);\r\n\r\n methods.forEach((method) => {\r\n if (\r\n method !== 'clearState' &&\r\n method !== 'constructor' &&\r\n method !== 'finalizeValidator' &&\r\n method !== 'tryValidate' &&\r\n method !== 'validateAttribute' &&\r\n method !== 'validateState' &&\r\n method !== 'validate'\r\n ) {\r\n this.tryValidate(method, state[method], state);\r\n }\r\n });\r\n\r\n this.finalizeValidator();\r\n };\r\n\r\n validateAttributes = (attributes, state) => {\r\n this.clearState();\r\n\r\n attributes.forEach((attribute) => {\r\n this.tryValidate(attribute, state[attribute], state);\r\n });\r\n this.finalizeValidator();\r\n };\r\n\r\n tryValidate = (attribute, value, state) => {\r\n try {\r\n this.validate(attribute, value, state);\r\n } catch (e) {\r\n if (e instanceof ValidationError) {\r\n e.getFailures().forEach((failure) => {\r\n this.error.addFailure(failure);\r\n });\r\n } else {\r\n throw e;\r\n }\r\n }\r\n };\r\n\r\n validate = (attribute, value, state) => {\r\n const validator = new AttributeValidator(attribute, value);\r\n if (this[attribute]) {\r\n this[attribute](validator, state);\r\n if (validator.hasFailed()) {\r\n validator.throwValidationError();\r\n }\r\n }\r\n };\r\n\r\n finalizeValidator = () => {\r\n if (this.error.hasFailures()) {\r\n throw this.error;\r\n }\r\n };\r\n}\r\n\r\nexport class ValidationError extends JsonApiError {\r\n constructor() {\r\n const errors = [];\r\n const mockResponse = {\r\n status: 422,\r\n statusText: 'Client Side Validation Error',\r\n };\r\n\r\n super(errors, mockResponse);\r\n this.name = 'ValidationError';\r\n this.errors = [];\r\n }\r\n\r\n addFailure = (failure) => {\r\n this.errors.push({ ...failure });\r\n };\r\n\r\n hasFailures = () => {\r\n return this.errors.length > 0;\r\n };\r\n\r\n getFailures = () => {\r\n return this.errors;\r\n };\r\n}\r\n\r\nclass ValidationFailure {\r\n constructor(message, attribute) {\r\n this.title = 'Client Side Validation Failure';\r\n this.detail = message;\r\n this.status = 422;\r\n this.source = {\r\n pointer: '/data/attributes/' + attribute,\r\n };\r\n }\r\n}\r\n","/**\r\n * Takes an array of keys and filters an object through a curried function to\r\n * only include properties with keys in the input array.\r\n *\r\n * @param {Array.<string>} picks - Array of string keys to pick from the object\r\n *\r\n * @returns {(original: Object) => Object} the object filtering function\r\n */\r\nconst pick = (...picks) => (original) =>\r\n picks.reduce(\r\n (filtered, key) => ({\r\n ...filtered,\r\n [key]: original[key],\r\n }),\r\n {}\r\n );\r\n\r\n/**\r\n * Maps flat data to nested data based on an object with arrays of property keys\r\n *\r\n * @param {Object} flatData - Flat data to be segmented into nested tabs\r\n * @param {Array.<string>} segments - Map of segments and keys to nest flatData\r\n *\r\n * @returns {Object.<string, Array>} An object with segmented arrays of keys\r\n */\r\nexport const nest = (flatData, segments) =>\r\n Object.keys(segments).reduce(\r\n (nested, segment) => ({\r\n ...nested,\r\n [segment]: pick(...segments[segment])(flatData),\r\n }),\r\n {}\r\n );\r\n\r\n/**\r\n * Takes an object with a single level of nested data and flattens it\r\n *\r\n * @param {Object} nestedData - Nested tab data to be flattened into single object\r\n *\r\n * @returns {Object} An object with a level of nesting removed\r\n */\r\nexport const flatten = (nestedData) =>\r\n Object.keys(nestedData).reduce(\r\n (flatData, key) => ({\r\n ...flatData,\r\n ...nestedData[key],\r\n }),\r\n {}\r\n );\r\n\r\n/**\r\n * Takes an object with a single level of nested data and flattens it\r\n *\r\n * @param {Object} nestedData - Nested tab data to be converted to an array of objects\r\n *\r\n * @returns {Object} An array with a level of nesting removed\r\n */\r\nexport const objToArray = (nestedData) => {\r\n var newArray = [];\r\n //var count = 0;\r\n\r\n if (nestedData !== undefined) {\r\n var final = [];\r\n\r\n for (let [_key, value] of Object.entries(nestedData)) {\r\n newArray = [];\r\n //alert(newArray.length)\r\n for (let [key1, value1] of Object.entries(value)) {\r\n //alert(`${key1}: ${value1}`);\r\n newArray.push(key1 + ':' + value1);\r\n //alert(newArray)\r\n }\r\n final.push({ newArray });\r\n //count++;\r\n }\r\n }\r\n return final;\r\n};\r\n\r\nexport default {\r\n flatten,\r\n nest,\r\n objToArray,\r\n};\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('legal');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/simple-authorize',\r\n resourceType: 'simple-authorize',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'legal',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst { legalHandleFormChange, legalUpdateResource } = operations;\r\n\r\nexport { legalHandleFormChange, legalUpdateResource };\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('legal', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n//import styled from 'styled-components';\r\n/*import {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardHeader,\r\n CardText,\r\n CardTitle,\r\n Header4,\r\n Modal,\r\n} from 'fiducius-ui';*/\r\n\r\nimport { todosLoadCollection } from '../../todos';\r\n\r\nimport { legalHandleFormChange, legalUpdateResource } from '../redux/operations';\r\n\r\n/*const ButtonWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-around;\r\n align-items: center;\r\n margin: 1.5rem 0 3rem 0;\r\n`;\r\n\r\nconst TextLeftList = styled.ul`\r\n text-align: left;\r\n`;\r\n\r\nconst TextLeft = styled.p`\r\n text-align: left;\r\n`;*/\r\n\r\nconst AUTH_KEY = 'AUTH';\r\n\r\nclass AuthorizedUse extends React.Component {\r\n static propTypes = {\r\n consent: t.func.isRequired,\r\n isOpen: t.bool,\r\n request: t.object,\r\n toggleModal: t.func.isRequired,\r\n };\r\n\r\n componentDidUpdate(prevProps) {\r\n const { request } = this.props;\r\n if (\r\n request.key === AUTH_KEY &&\r\n prevProps.request.isLoading &&\r\n !request.isLoading &&\r\n !request.hasFailed\r\n ) {\r\n this.props.toggleModal();\r\n }\r\n }\r\n\r\n render() {\r\n //const { isOpen, request, toggleModal } = this.props;\r\n return (\r\n <></>\r\n /*<Modal isOpen={isOpen}>\r\n <Card brand={request.hasFailed ? 'danger' : 'primary'}>\r\n {request.hasFailed && <CardHeader>Saving Authorized Use Failure</CardHeader>}\r\n <CardBody>\r\n <CardTitle>Authorized Use Consent</CardTitle>\r\n <CardText>\r\n <Header4>What am I authorizing?</Header4>\r\n <TextLeft>Your signature authorizes Fiducius to:</TextLeft>\r\n <TextLeftList>\r\n <li>\r\n Properly align your student loans and establish the correct repayment plan with\r\n The Department of Education for loan forgiveness.\r\n </li>\r\n <li>\r\n Create and/or access your student loan service(s) account(s) to manage the loan\r\n forgiveness program on your behalf.\r\n </li>\r\n <li>\r\n Submit pre-filled consolidation application on your behalf at the loan servicer of\r\n your choice.\r\n </li>\r\n <li>\r\n Put your loan(s) in forbearance if that's part of your financial plan built by\r\n your advisor.\r\n </li>\r\n <li>We will not utilize your FSA ID to access your account.</li>\r\n </TextLeftList>\r\n </CardText>\r\n </CardBody>\r\n <ButtonWrapper>\r\n <Button invert brand=\"textTertiary\" size=\"lg\" onClick={toggleModal}>\r\n Cancel\r\n </Button>\r\n <Button brand=\"primary\" size=\"lg\" onClick={this.props.consent}>\r\n I agree\r\n </Button>\r\n </ButtonWrapper>\r\n </Card>\r\n </Modal>*/\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.legal.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n consent: async () => {\r\n await dispatch(legalHandleFormChange({ id: AUTH_KEY, customerAuthorization: true }, []));\r\n await dispatch(legalUpdateResource(AUTH_KEY, AUTH_KEY));\r\n dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AuthorizedUse);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\n\r\nimport { FullscreenContainer, ContrastDisplay } from '../../routing';\r\n\r\nconst LegalPage = ({ children, title }) => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row no-gutters\">\r\n <div className=\"col-12\">\r\n <ContrastDisplay>{title}</ContrastDisplay>\r\n {children}\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nLegalPage.propTypes = {\r\n children: t.node,\r\n title: t.string.isRequired,\r\n};\r\n\r\nexport default LegalPage;\r\n","import React from 'react';\r\nimport LegalPage from './legal-page';\r\nimport { Card, CardBody, CardFooter, CardHeader, CardText, Link } from 'fiducius-ui';\r\n\r\nconst Privacy = () => (\r\n <LegalPage title=\"Privacy Policy\">\r\n <Card>\r\n <CardHeader>Last updated October 7, 2021</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <p>\r\n Fiducius, LLC and its affiliates (collectively \"Fiducius, LLC, we, our, or us\") wants\r\n you to be clear how we are using information and the ways in which you can protect your\r\n privacy.\r\n </p>\r\n <p>This Privacy Notice (\"Notice\") explains:</p>\r\n <ul>\r\n <li>What information we collect and why we collect it.</li>\r\n <li>How we use that information.</li>\r\n <li>The choices we offer, including how to access and update information.</li>\r\n </ul>\r\n <p>\r\n This Notice discloses the current privacy practices for Fiducius, LLC, and your access\r\n to and use of our website (\"site\") are subject to this Notice. By accessing and using\r\n this site, you are acknowledging and agreeing to the terms of the Notice. If you do not\r\n agree to our Notice, please do not use our site.\r\n </p>\r\n <p>\r\n We have tried to keep this Notice as simple as possible, but if you are not familiar\r\n with terms like cookies, IP addresses, pixel tags and browsers, then read about these\r\n key terms first. Your privacy matters to Fiducius, LLC so whether you are new to\r\n Fiducius, LLC or a long-time user, please do take the time to get to know our practices.\r\n If you have any questions, consult this page.\r\n </p>\r\n\r\n <h4>1. Information We Collect </h4>\r\n <p>We collect information in two ways:</p>\r\n <ul>\r\n <li>\r\n Information you give us - For example, our services require you to sign up for a\r\n Fiducius, LLC Account. When you do, we'll ask for personal information, like your\r\n name, email address, telephone number, certain financial information and credit card\r\n information.\r\n </li>\r\n <li>\r\n Information we get from your use of our services - We may collect information about\r\n the services that you use and how you use them, like when you visit a website that\r\n uses our advertising services or you view and interact with our ads and content. This\r\n information includes:\r\n <ul>\r\n <li>\r\n Device information - We may collect device-specific information (such as your\r\n hardware model, operating system version, unique device identifiers, and mobile\r\n network information including phone number). Fiducius, LLC may associate your\r\n device identifiers or phone number with your Fiducius, LLC Account.\r\n </li>\r\n <li>\r\n Log information - When you use our services or view content provided by Fiducius,\r\n LLC, we may automatically collect and store certain information in server logs.\r\n This may include:\r\n <ul>\r\n <li>Details of how you used our service, such as your search queries.</li>\r\n <li>\r\n Telephone log information like your phone number, calling-party number,\r\n forwarding numbers, time and date of calls, duration of calls, SMS routing\r\n information and types of calls.\r\n </li>\r\n <li>Internet protocol address.</li>\r\n <li>\r\n Device event information such as crashes, system activity, hardware settings,\r\n browser type, browser language, the date and time of your request and referral\r\n URL.\r\n </li>\r\n <li>\r\n Cookies that may uniquely identify your browser or your Fiducius, LLC Account.\r\n </li>\r\n </ul>\r\n </li>\r\n <li>\r\n Location information - When you use a location-enabled Fiducius, LLC service, we\r\n may collect and process information about your actual location, like GPS signals\r\n sent by a mobile device.\r\n </li>\r\n <li>\r\n Unique application numbers - Certain services include a unique application number.\r\n This number and information about your installation (for example, the operating\r\n system type and application version number) may be sent to Fiducius, LLC when you\r\n install or uninstall that service or when that service periodically contacts our\r\n servers, such as for automatic updates.\r\n </li>\r\n <li>\r\n Local storage - We may collect and store information (including personal\r\n information) locally on your device using mechanisms such as browser web storage\r\n (including HTML 5) and application data caches.\r\n </li>\r\n <li>\r\n Cookies and anonymous identifiers - We and our partners use various technologies\r\n to collect and store information when you visit a Fiducius, LLC service, and this\r\n may include sending one or more cookies or anonymous identifiers to your device.\r\n We also use cookies and anonymous identifiers when you interact with services we\r\n offer to our partners, such as payment processing services.\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n\r\n <h4>2. How We Use Information We Collect</h4>\r\n <p>\r\n We use the information we collect from all of our services to provide, maintain, protect\r\n and improve these services, to develop new ones, and to protect Fiducius, LLC and our\r\n partners, affiliates, service providers and users. We may also use this information to\r\n offer you tailored content.\r\n </p>\r\n <p>\r\n When you contact Fiducius, LLC, we may keep a record of your communication to help solve\r\n any issues you might be facing. We may use your email address to inform you about our\r\n services, such as letting you know about upcoming changes or improvements.{' '}\r\n </p>\r\n <p>\r\n We may use information collected from cookies and other technologies, like pixel tags,\r\n to improve your user experience and the overall quality of our services. We may combine\r\n personal information from one service with information, including personal information,\r\n from our partners, affiliates, service providers.{' '}\r\n </p>\r\n <p>\r\n We will ask for your express consent before using your personal information for a\r\n purpose other than those that are set out in Section 5 of this Notice.{' '}\r\n </p>\r\n\r\n <h4>3. Transparency and Choice</h4>\r\n <p>\r\n People have different privacy concerns. Our goal is to be clear about what information\r\n we collect, so that you can make meaningful choices about how it is used. For example,\r\n you can view and edit your information provided by you on your Fiducius, LLC account.{' '}\r\n </p>\r\n <p>\r\n You may also set your browser to block all cookies, including cookies associated with\r\n our services, or to indicate when a cookie is being set by us. However, it is important\r\n to remember that our services may not function properly if your cookies are disabled.{' '}\r\n </p>\r\n\r\n <h4>4. Accessing and Updating Your Personal Information</h4>\r\n <p>\r\n Whenever you use our services, we aim to provide you with access to your personal\r\n information. If that information is wrong, we strive to give you ways to update it\r\n quickly or to delete it – unless we have to keep that information for legitimate\r\n business or legal purposes. When updating your personal information, we may ask you to\r\n verify your identity before we can act on your request.{' '}\r\n </p>\r\n <p>\r\n We aim to maintain our services in a manner that protects information from accidental or\r\n malicious destruction. Because of this, after you delete information from our services,\r\n we may not immediately delete residual copies from our active servers and may not remove\r\n information from our backup systems.{' '}\r\n </p>\r\n\r\n <h4>5. Information We Share</h4>\r\n <p>\r\n We do not share personal information with nonaffiliated third parties unless one of the\r\n following circumstances applies:\r\n </p>\r\n <ul>\r\n <li>\r\n With your prior express consent: For example, when you establish an account with\r\n Fiducius, LLC, we will ask your permission to share your personal information with\r\n nonaffiliated third parties so that the third parties can market their services to you\r\n and you have the right to opt out of us sharing your information at any time by\r\n contacting us at{' '}\r\n <a href=\"mailto:customer.service@getfiducius.com\">\r\n customer.service@getfiducius.com{' '}\r\n </a>{' '}\r\n or <a href=\"tel:5136455400\">(513) 645-5400</a>.\r\n </li>\r\n <li>\r\n For external processing: We will share personal information with our partners,\r\n affiliates or service providers in the performance of services on our behalf. These\r\n entities are required to comply with agreed upon confidentiality and security\r\n measures.\r\n </li>\r\n <li>\r\n For legal reasons: We will share personal information with nonaffiliated third parties\r\n if we have a good-faith belief that access, use, preservation or disclosure of the\r\n information is reasonably necessary to:\r\n <ul>\r\n <li>\r\n Meet any applicable law, regulation, legal process (e.g., subpoena) or enforceable\r\n governmental request.\r\n </li>\r\n <li>\r\n Enforce this Terms of Service, including investigation of potential violations.\r\n </li>\r\n <li>Detect, prevent, or otherwise address fraud, security or technical issues.</li>\r\n <li>\r\n Protect against harm to the rights, property or safety of Fiducius, LLC, our\r\n users, service providers, and the public as required or permitted by law.\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <p>\r\n We may share aggregated, non-personally identifiable information publicly and with our\r\n partners, affiliates or service providers. For example, we may share information\r\n publicly to show trends about the general use of our services.{' '}\r\n </p>\r\n <p>\r\n If Fiducius, LLC is involved in a merger, acquisition or asset sale, we will continue to\r\n ensure the confidentiality of any personal information and give affected users notice\r\n before personal information is transferred or becomes subject to a different privacy\r\n policy.{' '}\r\n </p>\r\n\r\n <h4>6. Information Security</h4>\r\n <p>\r\n We work hard to protect Fiducius, LLC and our users from unauthorized access to or\r\n unauthorized alteration, disclosure or destruction of information we hold. In\r\n particular:\r\n </p>\r\n <ul>\r\n <li>We encrypt many of our services using SSL.</li>\r\n <li>\r\n We regularly review our information collection, storage and processing practices,\r\n including physical security measures, to guard against unauthorized access to systems.\r\n </li>\r\n <li>\r\n We restrict access to personal information to Fiducius, LLC employees, contractors and\r\n agents who need to know that information in order to process it for us, and who are\r\n subject to contractual confidentiality obligations and may be disciplined or\r\n terminated by Fiducius, LLC if they fail to meet these obligations.\r\n </li>\r\n </ul>\r\n <p>\r\n Fiducius, LLC does not guarantee or warrant the security of any information transmitted\r\n to us. You send us information at your own risk. Fiducius, LLC shall not be responsible\r\n for any harm that may result as a result of a breach of confidentiality in respect to\r\n any use of this site or any information transmitted to this site.\r\n </p>\r\n\r\n <h4>7. Preventing Identity Theft</h4>\r\n <p>\r\n In order to help us protect your personal information, it is important that you always\r\n keep your account information safe. Never share your username or password with anyone,\r\n under any circumstances.\r\n </p>\r\n <p>\r\n Fiducius, LLC will NEVER initiate a request via email for your sensitive information\r\n (e.g., Social Security number, username, or password). We will ask for documents to be\r\n uploaded or faxed when a meeting is scheduled. If you receive an email asking for your\r\n sensitive information, you should be suspicious of the request and promptly contact us\r\n at <a href=\"tel:5136455400\">(513) 645-5400</a> to report the suspicious activity.\r\n </p>\r\n <p>\r\n Please be aware, however, that in certain telephone, in-person or online transactions we\r\n may ask for your full Social Security number, or other information before conducting the\r\n transactions you have requested. For example, we may ask for such information in order\r\n to begin our application process to get you enrolled with our services. Additional\r\n information regarding identity theft and the steps you can take to help protect yourself\r\n from fraud can be found on the Federal Trade Commission website.\r\n </p>\r\n\r\n <h4>8. Children's Privacy</h4>\r\n <p>\r\n Fiducius, LLC sites are not directed at children under the age of 13. We operate our\r\n sites in compliance with the Children's Online Privacy Protection Act and will not\r\n knowingly collect or use personally identifiable information from anyone under 13.\r\n However, we will accept and store data on minors as part of the application information\r\n required in order to provide our services.\r\n </p>\r\n\r\n <h4>9. When This Notice Applies</h4>\r\n <p>\r\n Our Notice applies to all of the services offered by Fiducius, LLC and its affiliates,\r\n but excludes services that have separate privacy policies that do not incorporate this\r\n Notice or information that we have received that was collected under another company's\r\n privacy policy.{' '}\r\n </p>\r\n <p>\r\n Our Notice does not apply to services offered by other companies or individuals,\r\n including products or sites that may be displayed to you in search results or other\r\n sites linked from our services. Our Notice does not cover the information practices of\r\n other companies and organizations who are linked to our services, and who may use\r\n cookies, pixel tags and other technologies to serve and offer relevant services.{' '}\r\n </p>\r\n\r\n <h4>10. Compliance and Cooperation with Regulatory Authorities</h4>\r\n <p>\r\n We regularly review our compliance with our Notice. When we receive formal written\r\n complaints, we will contact the person who made the complaint to follow up. We work with\r\n the appropriate regulatory authorities, including local data protection authorities, to\r\n resolve any complaints regarding the transfer of personal data that we cannot resolve\r\n with our users directly.{' '}\r\n </p>\r\n\r\n <h4>11. Changes</h4>\r\n <p>\r\n Our Notice may change from time to time. We will post any Notice changes on this page\r\n and, if the changes are significant, we will provide a more prominent notice (including,\r\n for certain services, email notification of Notice changes). We will also keep prior\r\n versions of this Notice in an archive for your review.{' '}\r\n </p>\r\n\r\n <h4>12. Contact Us</h4>\r\n <p>\r\n For questions regarding our privacy practices, contact us at{' '}\r\n <a href=\"mailto:customer.service@getfiducius.com\">customer.service@getfiducius.com </a>{' '}\r\n or <a href=\"tel:5136455400\">(513) 645-5400</a>.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Link to=\"/dashboard\">Return to dashboard</Link>\r\n </CardFooter>\r\n </Card>\r\n </LegalPage>\r\n);\r\n\r\nexport default Privacy;\r\n","import React from 'react';\r\nimport LegalPage from './legal-page';\r\nimport { Card, CardBody, CardFooter, CardText, Link } from 'fiducius-ui';\r\n\r\nconst SharedData = () => (\r\n <LegalPage title=\"Shared Data Consent\">\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <p>\r\n Consent allows Fiducius, LLC to share your personal information with non-affiliated\r\n third parties to market their services to you. The personal information we will share\r\n includes: your name, address, age, telephone number, email address; if applicable, your\r\n dependent's age and address; and information regarding your student loan amount,\r\n balance, loan payments, retirement savings, and other financial information. You have\r\n the right to opt-out of this sharing at any time by contacting us at{' '}\r\n <a href=\"mailto:info@getfiducius.com\" target=\"_top\">\r\n info@getfiducius.com\r\n </a>{' '}\r\n or <a href=\"tel:5136455400\">(513) 645-5400</a>.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Link to=\"/dashboard\">Return to dashboard</Link>\r\n </CardFooter>\r\n </Card>\r\n </LegalPage>\r\n);\r\n\r\nexport default SharedData;\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTimes } from '@fortawesome/pro-regular-svg-icons';\nimport { Button, Card, CardBody, CardHeader, CardText, CardTitle, Modal } from 'fiducius-ui';\n\nimport { authLoadPermissions } from '../../auth';\nimport { todosLoadCollection } from '../../todos';\n\nimport { legalHandleFormChange, legalUpdateResource } from '../redux/operations';\n\nconst ButtonWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n align-items: center;\n margin: 1.5rem 0 3rem 0;\n`;\n\nconst ExitButton = styled.div`\n color: ${(p) => p.theme.textSecondary};\n float: right;\n\n &:hover {\n color: ${(p) => p.theme.primary};\n cursor: pointer;\n }\n`;\n\nconst OPT_IN_KEY = 'SDCON';\nconst OPT_OUT_KEY = 'SDOPT';\nconst SD_KEY = 'SHARED_DATA';\n\nclass SharedDataConsent extends React.Component {\n static propTypes = {\n consent: t.func.isRequired,\n isOpen: t.bool,\n optOut: t.func.isRequired,\n request: t.object,\n toggleModal: t.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = { submitWarningModal: false };\n }\n\n componentDidUpdate(prevProps) {\n const { request } = this.props;\n if (\n request.key === SD_KEY &&\n prevProps.request.isLoading &&\n !request.isLoading &&\n !request.hasFailed\n ) {\n this.props.toggleModal();\n }\n }\n\n openSubmitWarningModal = () => {\n this.setState({ ...this.state, submitWarningModal: true });\n };\n\n closeSubmitWarningModal = () => {\n this.setState({ ...this.state, submitWarningModal: false });\n };\n\n render() {\n const { isOpen, request, toggleModal, hideIcon } = this.props;\n return (\n <>\n <Modal isOpen={isOpen} onRequestClose={toggleModal}>\n <Card brand={request.hasFailed ? 'danger' : 'primary'}>\n {request.hasFailed && <CardHeader>Saving Data Consent Failure</CardHeader>}\n <CardBody>\n {!hideIcon && (\n <ExitButton>\n <FontAwesomeIcon icon={faTimes} fixedWidth onClick={toggleModal} size=\"lg\" />\n </ExitButton>\n )}\n <CardTitle>Shared Data Consent</CardTitle>\n <CardText>\n <p>\n Fiducius works with non-affiliated third parties, including some health welfare\n financial service providers that may work with your employer (i.e. insurance\n broker, retirement provider). These parties have financial solutions that may\n further help you save on your student loan payment or otherwise help you with your\n financial wellness. By clicking on \"I Accept\" you are authorizing Fiducius to\n share your personal information you provide with these parties as outlined in our{' '}\n <a href=\"/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">\n Privacy Policy\n </a>{' '}\n and{' '}\n <a href=\"/terms-of-use\" target=\"_blank\" rel=\"noopener noreferrer\">\n Terms of Use\n </a>\n , to help facilitate best possible outcomes for your individual situation. You may\n opt out at any time by contacting us at{' '}\n <a href=\"mailto:info@getfiducius.com\" target=\"_top\">\n info@getfiducius.com\n </a>\n .\n </p>\n </CardText>\n </CardBody>\n <ButtonWrapper>\n <Button brand=\"highContrast\" size=\"lg\" onClick={this.openSubmitWarningModal}>\n I Decline\n </Button>\n <Button brand=\"primary\" size=\"lg\" onClick={this.props.consent}>\n I Accept\n </Button>\n </ButtonWrapper>\n </Card>\n </Modal>\n <Modal isOpen={this.state.submitWarningModal} onRequestClose={this.closeSubmitWarningModal}>\n <Card brand={request.hasFailed ? 'danger' : 'primary'}>\n {request.hasFailed && <CardHeader>Saving Data Consent Failure</CardHeader>}\n <CardBody>\n {!hideIcon && (\n <ExitButton>\n <FontAwesomeIcon\n icon={faTimes}\n fixedWidth\n onClick={this.closeSubmitWarningModal}\n size=\"lg\"\n />\n </ExitButton>\n )}\n <CardTitle>Shared Data Consent</CardTitle>\n <CardText>\n <p>\n Declining this consent will result in a loss of certain benefits, as they cannot\n be managed without your consent. Are you sure you want to Decline and lose certain\n eligibility?\n </p>\n </CardText>\n </CardBody>\n <ButtonWrapper>\n <Button brand=\"highContrast\" size=\"lg\" onClick={this.props.optOut}>\n I Decline\n </Button>\n <Button brand=\"primary\" size=\"lg\" onClick={this.props.consent}>\n I Accept to Maintain My Benefit Eligibility\n </Button>\n </ButtonWrapper>\n </Card>\n </Modal>\n </>\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n request: state.legal.requests.updateResource,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n consent: async (event) => {\n event.currentTarget.disabled = true;\n await dispatch(legalHandleFormChange({ id: OPT_IN_KEY, customerAuthorization: true }, []));\n await dispatch(legalUpdateResource(OPT_IN_KEY, SD_KEY));\n dispatch(authLoadPermissions());\n dispatch(todosLoadCollection());\n },\n optOut: async (event) => {\n event.currentTarget.disabled = true;\n await dispatch(legalHandleFormChange({ id: OPT_OUT_KEY, customerAuthorization: false }, []));\n await dispatch(legalUpdateResource(OPT_OUT_KEY, SD_KEY));\n dispatch(authLoadPermissions());\n dispatch(todosLoadCollection());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SharedDataConsent);\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimes } from '@fortawesome/pro-regular-svg-icons';\r\nimport { Button, Card, CardBody, CardHeader, CardText, CardTitle, Modal } from 'fiducius-ui';\r\n\r\nimport { authLoadPermissions } from '../../auth';\r\nimport { todosLoadCollection } from '../../todos';\r\n\r\nimport { legalHandleFormChange, legalUpdateResource } from '../redux/operations';\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-around;\r\n align-items: center;\r\n margin: 1.5rem 0 3rem 0;\r\n`;\r\n\r\nconst ExitButton = styled.div`\r\n color: ${(p) => p.theme.textSecondary};\r\n float: right;\r\n\r\n &:hover {\r\n color: ${(p) => p.theme.primary};\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nconst OPT_IN_KEY = 'PDCON';\r\nconst OPT_OUT_KEY = 'PDOPT';\r\nconst SD_KEY = 'SHARED_DATA';\r\n\r\nclass SharedDataConsentPlaid extends React.Component {\r\n static propTypes = {\r\n consent: t.func.isRequired,\r\n isOpen: t.bool,\r\n optOut: t.func.isRequired,\r\n request: t.object,\r\n toggleModal: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { submitWarningModal: false };\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { request } = this.props;\r\n if (\r\n request.key === SD_KEY &&\r\n prevProps.request.isLoading &&\r\n !request.isLoading &&\r\n !request.hasFailed\r\n ) {\r\n this.props.toggleModal();\r\n }\r\n }\r\n\r\n toggleSubmitWarningModal = () => {\r\n this.props.toggleModal();\r\n this.setState({ ...this.state, submitWarningModal: !this.state.submitWarningModal });\r\n };\r\n\r\n closeSubmitWarningModal = () => {\r\n this.setState({ ...this.state, submitWarningModal: false });\r\n };\r\n\r\n render() {\r\n const { isOpen, request, toggleModal, hideIcon } = this.props;\r\n return (\r\n <Modal isOpen={isOpen} onRequestClose={toggleModal}>\r\n <Card brand={request.hasFailed ? 'danger' : 'primary'}>\r\n {request.hasFailed && <CardHeader>Saving Data Consent Failure</CardHeader>}\r\n <CardBody>\r\n {!hideIcon && (\r\n <ExitButton>\r\n <FontAwesomeIcon icon={faTimes} fixedWidth onClick={toggleModal} size=\"lg\" />\r\n </ExitButton>\r\n )}\r\n <CardTitle>Shared Data Consent</CardTitle>\r\n <CardText>\r\n <p>\r\n Fiducius works with non-affiliated third parties, including some health welfare\r\n financial service providers that may work with your employer (i.e. insurance broker,\r\n retirement provider). These parties have financial solutions that may further help\r\n you save on your student loan payment or otherwise help you with your financial\r\n wellness. By clicking on \"I Accept\" you are authorizing Fiducius to share your\r\n personal information you provide with these parties to help facilitate best possible\r\n outcomes for your individual situation. You may opt out at any time by contacting us\r\n at{' '}\r\n <a href=\"mailto:info@getfiducius.com\" target=\"_top\">\r\n info@getfiducius.com\r\n </a>{' '}\r\n or <a href=\"tel:5136455400\">(513) 645-5400</a>.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <ButtonWrapper>\r\n {/* <Button brand=\"highContrast\" size=\"lg\" onClick={this.props.optOut}> */}\r\n <Button brand=\"highContrast\" size=\"lg\" onClick={this.toggleSubmitWarningModal}>\r\n I Decline\r\n </Button>\r\n <Button brand=\"primary\" size=\"lg\" onClick={this.props.consent}>\r\n I Accept\r\n </Button>\r\n </ButtonWrapper>\r\n </Card>\r\n\r\n <Modal isOpen={this.state.submitWarningModal} onRequestClose={this.closeSubmitWarningModal}>\r\n <Card brand={request.hasFailed ? 'danger' : 'primary'}>\r\n {request.hasFailed && <CardHeader>Saving Data Consent Failure</CardHeader>}\r\n <CardBody>\r\n {!hideIcon && (\r\n <ExitButton>\r\n <FontAwesomeIcon\r\n icon={faTimes}\r\n fixedWidth\r\n onClick={this.toggleSubmitWarningModal}\r\n size=\"lg\"\r\n />\r\n </ExitButton>\r\n )}\r\n <CardTitle>Shared Data Consent</CardTitle>\r\n <CardText>\r\n <p>\r\n Declining this consent will result in a loss of certain benefits, as they cannot\r\n be managed without your consent. Are you sure you want to Decline and lose certain\r\n eligibility?\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <ButtonWrapper>\r\n <Button brand=\"highContrast\" size=\"lg\" onClick={this.props.optOut}>\r\n I Decline\r\n </Button>\r\n <Button brand=\"primary\" size=\"lg\" onClick={this.props.consent}>\r\n I Accept to Maintain My Benefit Eligibility\r\n </Button>\r\n </ButtonWrapper>\r\n </Card>\r\n </Modal>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.legal.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n consent: async (event) => {\r\n event.currentTarget.disabled = true;\r\n await dispatch(legalHandleFormChange({ id: OPT_IN_KEY, customerAuthorization: true }, []));\r\n await dispatch(legalUpdateResource(OPT_IN_KEY, SD_KEY));\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n },\r\n optOut: async (event) => {\r\n event.currentTarget.disabled = true;\r\n await dispatch(legalHandleFormChange({ id: OPT_OUT_KEY, customerAuthorization: false }, []));\r\n await dispatch(legalUpdateResource(OPT_OUT_KEY, SD_KEY));\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SharedDataConsentPlaid);\r\n","import React from 'react';\r\nimport LegalPage from './legal-page';\r\nimport { Card, CardBody, CardFooter, CardHeader, CardText, Link } from 'fiducius-ui';\r\n\r\nconst TermsOfUse = () => (\r\n <LegalPage title=\"Terms of Use\">\r\n <Card>\r\n <CardHeader>Last Updated: May 28, 2024</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <p>\r\n Welcome to the website (\"site\") of Fiducius, LLC (together \"Fiducius, LLC,\" \"we,\" \"us,\"\r\n or \"our\"). This site is owned and maintained by SLS to provide information about our\r\n organization and services and your use of our services. Your access to and use of this\r\n site are subject to these Terms of Use (\"Terms of Use\" or \"TOS\"). Please read the TOS\r\n carefully before you start to use the site. By using our site, you accept and agree to\r\n be bound and abide by the TOS and our Privacy Policy, which is incorporated herein by\r\n reference. If you do not want to agree to our TOS or our Privacy Policy, you must exit\r\n the site. You also agree to abide by all applicable local, state, federal, and\r\n international law in your use of this site and not to use this site in any manner not\r\n intended by Fiducius, LLC.\r\n </p>\r\n\r\n <h4>1. Amendment of the TOS</h4>\r\n <p>\r\n We reserve the right to amend the TOS without notice. If we decide to change the TOS we\r\n will post those changes here. You are responsible for regularly monitoring this site in\r\n order to remain informed of any changes. Any such amendment shall be effective once the\r\n revised terms have been posted on this site and your use of this site indicates your\r\n acceptance of any modified terms. The date of the most recent revisions will be provided\r\n at the top of this page.\r\n </p>\r\n\r\n <h4>2. Modification of Site and Services</h4>\r\n <p>\r\n We reserve the right to withdraw or modify this site and/or any service or content we\r\n provide on the site in our sole discretion without notice and without penalty. We will\r\n not be liable if for any reason all or any part of the site is unavailable at any time\r\n or for any period. From time to time, we may restrict access to some parts of the site,\r\n or the entire site, to users, including registered users.\r\n </p>\r\n <p>\r\n You are responsible for making all arrangements necessary for you to have access to the\r\n site.\r\n </p>\r\n <p>\r\n You are responsible for ensuring that all persons, including any children or minors, who\r\n access the site through your internet connection are aware of the TOS, and that they\r\n comply with it.\r\n </p>\r\n <p>\r\n To access the site or some of the resources it offers, you may be asked to provide\r\n certain registration details or other information. It is a condition of your use of the\r\n site that all the information you provide on the site is correct, current and complete.\r\n If you choose, or you are provided with, a user name, password or any other piece of\r\n information as part of our security procedures, you must treat such information as\r\n confidential, and you must not disclose it to any third party. You agree to immediately\r\n notify Fiducius, LLC of any unauthorized use of your user name or password or any other\r\n breach of security. You also agree to ensure that you exit from your account at the end\r\n of each session. You should use particular caution when accessing your account from a\r\n public or shared computer so that others are not able to view or record your password or\r\n other personal information.\r\n </p>\r\n <p>\r\n We have the right to disable any user identification code or password, whether chosen by\r\n you or provided by us, at any time in our sole discretion for any or no reason,\r\n including, if in our opinion, you have failed to comply with any provision of the TOS.\r\n At our sole discretion, we may terminate, change, suspend, or discontinue any aspect of\r\n the site, including, but not limited to, our offered services. We may also impose limits\r\n on certain features of the site and restrict all or part of access to this site, without\r\n notice, and without being subject to penalty.\r\n </p>\r\n\r\n <h4>3. Restrictions</h4>\r\n <p>\r\n This site is available only to individuals that can form legally binding contracts under\r\n applicable law. By accessing and/or otherwise using this site and/or its services, you\r\n (a) certify that you are at least 18 years of age and (b) have read and agree to be\r\n legally bound by the TOS. In accordance with the Federal Children's Online Privacy\r\n Protection Act of 1998 (COPPA), we will never knowingly solicit, nor will we accept,\r\n personally identifiable information from users known to be under thirteen (13) years of\r\n age. However, we will accept and store data on minors submitted by you as part of the\r\n application information required in order for us to provide our services.\r\n </p>\r\n\r\n <h4>4. Intellectual Property Rights</h4>\r\n <p>\r\n The site and its entire contents, features and functionality (including but not limited\r\n to all information, software, text, displays, images, video and audio, and the design,\r\n selection and arrangement thereof), are owned by Fiducius, LLC, its licensors or other\r\n providers of such material and are protected by United States and international\r\n copyright, trademark, patent, trade secret and other intellectual property or\r\n proprietary rights laws. You must not reproduce, sell or exploit for any commercial\r\n purposes any part of the site, access to the site or use of the site or any services or\r\n materials available through the site.\r\n </p>\r\n <p>\r\n If you print, copy, modify, download or otherwise use any part of the site in breach of\r\n the TOS, your right to use the site will cease immediately and you must, at our option,\r\n return or destroy any copies of the materials you have made. No right, title or interest\r\n in or to the site or any content on the site is transferred to you, and all rights not\r\n expressly granted are reserved by Fiducius, LLC. Any use of the site not expressly\r\n permitted by the TOS is a breach of the TOS and may violate copyright, trademark and\r\n other laws.\r\n </p>\r\n\r\n <h4>5. Fiducius, LLC Trademarks</h4>\r\n <p>\r\n Our name, logo and all related names, logos, product and service marks, designs and\r\n slogans are trademarks of Fiducius, LLC or its affiliates or licensors. You must not use\r\n such marks without our prior written permission. All other names, brands and marks are\r\n either used for identification purposes only, or displayed with permission, and are the\r\n trademarks of their respective owners.\r\n </p>\r\n\r\n <h4>6. Communications to Fiducius, LLC; Participation Disclaimer</h4>\r\n <p>\r\n Although we encourage you to email us, you should not email us any content that contains\r\n personal or confidential information. With respect to all emails that you send to us,\r\n including but not limited to, feedback, questions, comments, suggestions, and the like,\r\n Fiducius, LLC shall be free to use any ideas, concepts, know-how, or techniques\r\n contained in your communications for any purpose whatsoever, including but not limited\r\n to, the development, production and marketing of our services that incorporate such\r\n information.\r\n </p>\r\n <p>\r\n We reserve the right to block or remove communications or materials that are determined\r\n to be (a) abusive, defamatory or obscene, (b) fraudulent, deceptive or misleading, (c)\r\n in violation of a copyright, trademark or; other intellectual property right of another,\r\n or (d) offensive or otherwise unacceptable to Fiducius, LLC in its sole discretion.\r\n </p>\r\n\r\n <h4>7. Third-Party Sites, Products and Services</h4>\r\n <p>\r\n This site may contain information provided by, and links to, third parties other than\r\n Fiducius, LLC and its affiliates that provide services to, or for, users of this site or\r\n Fiducius, LLC. Fiducius, LLC specifically does not represent or warrant that it is\r\n responsible for the content or performance of third-party sites or any transactions with\r\n them. Furthermore, Fiducius, LLC disclaims all liability and makes no representations or\r\n warranties for any products or services sold or provided by any third-party. Any\r\n transaction with a third-party is subject to the agreements and/or the terms and\r\n conditions of the third-party. Third-party links do not imply that Fiducius, LLC is\r\n affiliated or associated with, or is legally authorized to use any trademark, trade\r\n name, logo, or copyright symbol displayed in or accessible through the links, or that\r\n any linked site is authorized to use any trademark, trade name, logo, or copyright\r\n symbol of Fiducius, LLC.\r\n </p>\r\n\r\n <h4>8. Prohibited Uses</h4>\r\n <p>\r\n You may use the site only for lawful purposes and in accordance with the TOS. You agree\r\n not to use the site:\r\n </p>\r\n <ul>\r\n <li>\r\n In any way that violates any applicable federal, state, local and international law or\r\n regulation (including, without limitation, any laws regarding the export of data or\r\n software to and from the US or other countries).\r\n </li>\r\n <li>\r\n To send, knowingly receive, upload, download, use or re-use any material which does\r\n not comply with the standards set out in the TOS.\r\n </li>\r\n <li>\r\n To impersonate or attempt to impersonate Fiducius, LLC or an Fiducius, LLC employee,\r\n another user, or person or entity (including, without limitation, the use of e-mail\r\n addresses or screen names associated with any of the foregoing).\r\n </li>\r\n <li>\r\n To engage in any other conduct that restricts or inhibits anyone's use or enjoyment of\r\n the site, or which, as determined by us, may harm Fiducius, LLC, its affiliates,\r\n partners, service providers or users of the site or expose them to liability.\r\n </li>\r\n </ul>\r\n <p>Additionally, you agree not to:</p>\r\n <ul>\r\n <li>\r\n Use the site in any manner that could disable, overburden, damage, or impair the site\r\n or interfere with any other party's use of the site, including their ability to engage\r\n in real time activities through the site.\r\n </li>\r\n <li>\r\n Use any robot, spider or other automatic device, process or means to access the site\r\n for any purpose, including to monitor or copy any of the material on the site.\r\n </li>\r\n <li>\r\n Use any manual process to monitor or copy any of the material on the site or for any\r\n other unauthorized purpose without our prior written consent.\r\n </li>\r\n <li>\r\n Use any device, software or routine that interferes with the proper working of the\r\n site.\r\n </li>\r\n <li>\r\n Introduce any viruses, trojan horses, worms, logic bombs or other material which is\r\n malicious or technologically harmful.\r\n </li>\r\n <li>\r\n Attempt to gain unauthorized access to, interfere with, damage or disrupt any parts of\r\n the site, the server on which the site is stored, or any server, computer or database\r\n connected to the site.\r\n </li>\r\n <li>\r\n Attack the site via a denial-of-service attack or a distributed denial-of-service\r\n attack.\r\n </li>\r\n <li>Otherwise attempt to interfere with the proper working of the site.</li>\r\n </ul>\r\n\r\n <h4>9. Reliance on Information Posted</h4>\r\n <p>\r\n The information presented on or through the site is made available solely for general\r\n information purposes. We do not warrant the accuracy, completeness or usefulness of this\r\n information. Any reliance you place on such information is strictly at your own risk. We\r\n disclaim all liability and responsibility arising from any reliance placed on such\r\n materials by you or any other visitor to the site, or by anyone who may be informed of\r\n any of its contents.\r\n </p>\r\n\r\n <h4>10. Changes to the Site</h4>\r\n <p>\r\n We may update the site from time to time, but its content is not necessarily complete or\r\n up-to-date. Any of the material on the site may be out of date at any given time, and we\r\n are under no obligation to update such material. We may change the site at any time with\r\n or without notice. We may suspend access to the site, or close it indefinitely.\r\n </p>\r\n\r\n <h4>11. Information About You and Your Visits to the Site</h4>\r\n <p>\r\n All information we collect on this site is subject to our Privacy Policy. By using the\r\n site, you consent to all actions taken by us with respect to your information in\r\n compliance with the Privacy Policy. You represent and warrant that all data provided by\r\n you is accurate.\r\n </p>\r\n\r\n <h4>12. Online Purchases</h4>\r\n <p>\r\n All purchases through our site or other transactions for the sale of goods, or services\r\n formed through the site or as a result of visits made by you are governed by our Privacy\r\n Policy, which is incorporated into the TOS.\r\n </p>\r\n\r\n <h4 id=\"SMS\">13. Fiducius | 16 Hands, LLC - Short Code 89216</h4>\r\n <p>\r\n <strong>Terms of Service</strong>\r\n </p>\r\n <ol>\r\n <li>\r\n When you opt-in to the service, we will send you a message to confirm your signup.\r\n Text <strong>JOIN</strong> to <strong>89216</strong> to receive Fiducius Alerts.{' '}\r\n <strong>\r\n Message and data rates may apply. Your message rate will vary based on your use.\r\n </strong>{' '}\r\n Text <strong>HELP</strong> for help. Text <strong>STOP</strong> to cancel.\r\n </li>\r\n <li>\r\n You can cancel this service at any time. Just text <strong>STOP</strong> to{' '}\r\n <strong>89216</strong>. After you send the message <strong>STOP</strong> to us, we\r\n will send you a reply message to confirm that you have been unsubscribed. After this,\r\n you will no longer receive messages from us.\r\n <br />\r\n If you want to join again, just sign up as you did the first time and we will start\r\n sending messages to you again.\r\n </li>\r\n <li>\r\n If at any time you forget what keywords are supported, just text <strong>HELP</strong>{' '}\r\n to <strong>89216</strong>. After you send the message <strong>HELP</strong> to us, we\r\n will respond with instructions on how to use our service as well as how to\r\n unsubscribe.\r\n </li>\r\n <li>\r\n <strong>Participating carriers:</strong> AT&T, Verizon Wireless, Sprint, T-Mobile,\r\n U.S. Cellular, Boost Mobile, MetroPCS, Virgin Mobile, Alaska Communications Systems\r\n (ACS), Appalachian Wireless (EKN), Bluegrass Cellular, Cellular One of East Central,\r\n IL (ECIT), Cellular One of Northeast Pennsylvania, Cricket, Coral Wireless (Mobi PCS),\r\n COX, Cross, Element Mobile (Flat Wireless), Epic Touch (Elkhart Telephone), GCI,\r\n Golden State, Hawkeye (Chat Mobility), Hawkeye (NW Missouri), Illinois Valley\r\n Cellular, Inland Cellular, iWireless (Iowa Wireless), Keystone Wireless (Immix\r\n Wireless/PC Man), Mosaic (Consolidated or CTC Telecom), Nex-Tech Wireless, NTelos,\r\n Panhandle Communications, Pioneer, Plateau (Texas RSA 3 Ltd), Revol, RINA, Simmetry\r\n (TMP Corporation), Thumb Cellular, Union Wireless, United Wireless, Viaero Wireless,\r\n and West Central (WCC or 5 Star Wireless).\r\n </li>\r\n <li>Carriers are not liable for delayed or undelivered messages.</li>\r\n <li>\r\n As always, message and data rates may apply for any messages sent to you from us and\r\n to us from you. If you have any questions about your text plan or data plan, it is\r\n best to contact your wireless provider.\r\n <br />\r\n For all questions about the services provided by this short code, you can send an\r\n email to{' '}\r\n <a href=\"mailto:customer.service@getfiducius.com\">\r\n customer.service@getfiducius.com{' '}\r\n </a>\r\n .\r\n </li>\r\n <li>\r\n If you have any questions regarding privacy, please read our{' '}\r\n <a href=\"https://www.myfiducius.com/privacy\">privacy policy</a>.\r\n </li>\r\n </ol>\r\n\r\n <h4 id=\"SMS\">14. Fiducius | 16 Hands, LLC - Long Codes</h4>\r\n <p>\r\n <strong>Terms of Service</strong>\r\n </p>\r\n <ol>\r\n <li>\r\n When you opt-in to the service, we will send you a message to confirm your signup.\r\n Text <strong>JOIN</strong> to one of our long codes to receive Fiducius Alerts.{' '}\r\n <strong>\r\n Message and data rates may apply. Your message rate will vary based on your use.\r\n </strong>{' '}\r\n Text <strong>HELP</strong> for help. Text <strong>STOP</strong> to cancel.\r\n </li>\r\n <li>\r\n You can cancel this service at any time. Just text <strong>STOP</strong> back to the\r\n long code. After you send the message <strong>STOP</strong> to us, we will send you a\r\n reply message to confirm that you have been unsubscribed. After this, you will no\r\n longer receive messages from us from that long code.\r\n <br />\r\n If you want to join again, just sign up as you did the first time and we will start\r\n sending messages to you again.\r\n </li>\r\n <li>\r\n If at any time you forget what keywords are supported, just text <strong>HELP</strong>{' '}\r\n to the long code. After you send the message <strong>HELP</strong> to us, we will\r\n respond with instructions on how to use our service as well as how to unsubscribe.\r\n </li>\r\n <li>\r\n <strong>Participating carriers:</strong> AT&T, Verizon Wireless, Sprint, T-Mobile,\r\n U.S. Cellular, Boost Mobile, MetroPCS, Virgin Mobile, Alaska Communications Systems\r\n (ACS), Appalachian Wireless (EKN), Bluegrass Cellular, Cellular One of East Central,\r\n IL (ECIT), Cellular One of Northeast Pennsylvania, Cricket, Coral Wireless (Mobi PCS),\r\n COX, Cross, Element Mobile (Flat Wireless), Epic Touch (Elkhart Telephone), GCI,\r\n Golden State, Hawkeye (Chat Mobility), Hawkeye (NW Missouri), Illinois Valley\r\n Cellular, Inland Cellular, iWireless (Iowa Wireless), Keystone Wireless (Immix\r\n Wireless/PC Man), Mosaic (Consolidated or CTC Telecom), Nex-Tech Wireless, NTelos,\r\n Panhandle Communications, Pioneer, Plateau (Texas RSA 3 Ltd), Revol, RINA, Simmetry\r\n (TMP Corporation), Thumb Cellular, Union Wireless, United Wireless, Viaero Wireless,\r\n and West Central (WCC or 5 Star Wireless).\r\n </li>\r\n <li>Carriers are not liable for delayed or undelivered messages.</li>\r\n <li>\r\n As always, message and data rates may apply for any messages sent to you from us and\r\n to us from you. If you have any questions about your text plan or data plan, it is\r\n best to contact your wireless provider.\r\n <br />\r\n For all questions about the services provided by this short code, you can send an\r\n email to{' '}\r\n <a href=\"mailto:customer.service@getfiducius.com\">\r\n customer.service@getfiducius.com{' '}\r\n </a>\r\n .\r\n </li>\r\n <li>\r\n If you have any questions regarding privacy, please read our{' '}\r\n <a href=\"https://www.myfiducius.com/privacy\">privacy policy</a>.\r\n </li>\r\n </ol>\r\n\r\n <h4>15. Geographic Restrictions</h4>\r\n <p>\r\n The owner of the site is based in the State of Ohio. We provide this site for use only\r\n by persons located in the United States. We make no claims that the site or any of its\r\n content is accessible or appropriate outside of the United States. Access to the site\r\n may not be legal by certain persons or in certain countries. If you access the site from\r\n outside the United States, you do so on your own initiative and are responsible for\r\n compliance with local laws.\r\n </p>\r\n\r\n <h4>16. Disclaimer of Warranties</h4>\r\n <p>\r\n You understand that we cannot and do not guarantee or warrant that files available for\r\n downloading from the internet or the site will be free of viruses or other destructive\r\n code. You are responsible for implementing sufficient procedures and checkpoints to\r\n satisfy your particular requirements for anti-virus protection and accuracy of data\r\n input and output, and for maintaining a means external to our site for any\r\n reconstruction of any lost data. WE WILL NOT BE LIABLE FOR ANY LOSS OR DAMAGE CAUSED BY\r\n A DISTRIBUTED DENIAL-OF-SERVICE ATTACK, VIRUSES OR OTHER TECHNOLOGICALLY HARMFUL\r\n MATERIAL THAT MAY INFECT YOUR COMPUTER EQUIPMENT, COMPUTER PROGRAMS, DATA OR OTHER\r\n PROPRIETARY MATERIAL DUE TO YOUR USE OF THE SITE OR ANY SERVICES OR ITEMS OBTAINED\r\n THROUGH THE SITE OR TO YOUR DOWNLOADING OF ANY MATERIAL POSTED ON IT, OR ON ANY SITE\r\n LINKED TO IT.\r\n </p>\r\n <p>\r\n YOUR USE OF THE SITE, ITS CONTENT AND ANY SERVICES OR ITEMS OBTAINED THROUGH THE SITE IS\r\n AT YOUR OWN RISK. THE SITE, ITS CONTENT AND ANY SERVICES OR ITEMS OBTAINED THROUGH THE\r\n SITE ARE PROVIDED ON AN \"AS IS\" AND \"AS AVAILABLE\" BASIS, WITHOUT ANY WARRANTIES OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED. NEITHER THE COMPANY NOR ANY PERSON ASSOCIATED WITH THE\r\n COMPANY MAKES ANY WARRANTY OR REPRESENTATION WITH RESPECT TO THE COMPLETENESS, SECURITY,\r\n RELIABILITY, QUALITY, ACCURACY OR AVAILABILITY OF THE SITE. WITHOUT LIMITING THE\r\n FOREGOING, NEITHER THE COMPANY NOR ANYONE ASSOCIATED WITH THE COMPANY REPRESENTS OR\r\n WARRANTS THAT THE SITE, ITS CONTENT OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE SITE\r\n WILL BE ACCURATE, RELIABLE, ERROR-FREE OR UNINTERRUPTED, THAT DEFECTS WILL BE CORRECTED,\r\n THAT OUR SITE OR THE SERVER THAT MAKES IT AVAILABLE ARE FREE OF VIRUSES OR OTHER HARMFUL\r\n COMPONENTS OR THAT THE SITE OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE SITE WILL\r\n OTHERWISE MEET YOUR NEEDS OR EXPECTATIONS.\r\n </p>\r\n <p>\r\n THE COMPANY HEREBY DISCLAIMS ALL WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,\r\n STATUTORY OR OTHERWISE, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,\r\n NON-INFRINGEMENT AND FITNESS FOR PARTICULAR PURPOSE.\r\n </p>\r\n <p>\r\n THE FOREGOING DOES NOT AFFECT ANY WARRANTIES WHICH CANNOT BE EXCLUDED OR LIMITED UNDER\r\n APPLICABLE LAW.\r\n </p>\r\n\r\n <h4>17. Limitation on Liability</h4>\r\n\r\n <p>\r\n IN NO EVENT WILL Fiducius, LLC, ITS AFFILIATES OR THEIR LICENSORS, PARTNERS, SERVICE\r\n PROVIDERS, EMPLOYEES, AGENTS, OFFICERS OR DIRECTORS BE LIABLE FOR DAMAGES OF ANY KIND,\r\n UNDER ANY LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH YOUR USE, OR INABILITY TO\r\n USE, THE SITE, ANY SITES LINKED TO IT, ANY CONTENT ON THE SITE OR SUCH OTHER SITES OR\r\n ANY SERVICES OR ITEMS OBTAINED THROUGH THE SITE OR SUCH OTHER SITES, INCLUDING ANY\r\n DIRECT, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL OR PUNITIVE DAMAGES, INCLUDING BUT\r\n NOT LIMITED TO, PERSONAL INJURY, PAIN AND SUFFERING, EMOTIONAL DISTRESS, LOSS OF\r\n REVENUE, LOSS OF PROFITS, LOSS OF BUSINESS OR ANTICIPATED SAVINGS, LOSS OF USE, LOSS OF\r\n GOODWILL, LOSS OF DATA, AND WHETHER CAUSED BY TORT (INCLUDING NEGLIGENCE), BREACH OF\r\n CONTRACT OR OTHERWISE, EVEN IF FORESEEABLE.\r\n </p>\r\n <p>\r\n THE FOREGOING DOES NOT AFFECT ANY LIABILITY WHICH CANNOT BE EXCLUDED OR LIMITED UNDER\r\n APPLICABLE LAW.\r\n </p>\r\n\r\n <h4>18. Indemnification</h4>\r\n <p>\r\n You agree to defend, indemnify and hold harmless Fiducius, LLC, its affiliates and\r\n licensors and their respective officers, directors, employees, contractors, agents,\r\n licensors and suppliers from and against any claims, liabilities, damages, judgments,\r\n awards, losses, costs, expenses or fees (including reasonable attorneys' fees) resulting\r\n from your violation of the TOS or your use of the site, including, without limitation,\r\n any use of the site's content, services and products other than as expressly authorized\r\n in the TOS or your use of any information obtained from the site.\r\n </p>\r\n\r\n <h4>19. Governing Law and Jurisdiction</h4>\r\n <p>\r\n This TOS and any dispute or claim arising out of, or related to, it, their subject\r\n matter or their formation (in each case, including non-contractual disputes or claims)\r\n shall be governed by and construed in accordance with the internal laws of the State of\r\n Ohio without giving effect to any choice or conflict of law provision or rule (whether\r\n of the State of Ohio or any other jurisdiction).\r\n </p>\r\n <p>\r\n Any legal suit, action or proceeding arising out of, or related to, the TOS or the site\r\n shall be instituted exclusively in the federal courts of the United States or the courts\r\n of the State of Ohio in each case located in the City of Cincinnati and County of\r\n Hamilton, although we retain the right to bring any suit, action or proceeding against\r\n you for breach of these Terms of Use in your country of residence or any other relevant\r\n country. You agree to waive any and all objections to the exercise of jurisdiction over\r\n you by such courts and to venue in such courts.\r\n </p>\r\n\r\n <h4>20. Limitation on Time to File Claims</h4>\r\n <p>\r\n ANY CAUSE OF ACTION OR CLAIM YOU MAY HAVE ARISING OUT OF OR RELATING TO THESE TERMS OF\r\n USE OR THE SITE MUST BE COMMENCED WITHIN ONE (1) YEAR AFTER THE CAUSE OF ACTION ACCRUES,\r\n OTHERWISE, SUCH CAUSE OF ACTION OR CLAIM IS PERMANENTLY BARRED.\r\n </p>\r\n\r\n <h4>21. Waiver and Severability</h4>\r\n <p>\r\n No waiver of the TOS by Fiducius, LLC shall be deemed a further or continuing waiver of\r\n such term or condition or any other term or condition, and any failure of Fiducius, LLC\r\n to assert a right or provision under the TOS shall not constitute a waiver of such right\r\n or provision.\r\n </p>\r\n <p>\r\n If any provision of these TOS is held by a court of competent jurisdiction to be\r\n invalid, illegal or unenforceable for any reason, such provision shall be eliminated or\r\n limited to the minimum extent such that the remaining provisions of the TOS will\r\n continue in full force and effect.\r\n </p>\r\n\r\n <h4>22. Entire Agreement</h4>\r\n <p>\r\n The TOS and our Privacy Policy constitute the sole and entire agreement between you and\r\n Fiducius, LLC with respect to the site and supersede all prior and contemporaneous\r\n understandings, agreements, representations and warranties, both written and oral, with\r\n respect to the site.\r\n </p>\r\n\r\n <h4>23. Your Comments and Concerns</h4>\r\n <p>\r\n This site is operated by Fiducius, LLC at:\r\n <br />\r\n 151 West 4th St.\r\n <br />\r\n Suite 700C\r\n <br />\r\n Cincinnati, OH 45202\r\n <br />\r\n <a href=\"tel:5136455400\">(513) 645-5400</a>\r\n <br />\r\n <br />\r\n All feedback, comments, requests for technical support and other communications relating\r\n to the site including notices of copyright infringement claims should be directed to:{' '}\r\n <a href=\"mailto:customer.service@getfiducius.com\">customer.service@getfiducius.com </a>\r\n <br />\r\n <br />\r\n Thank you for visiting the site.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Link to=\"/dashboard\">Return to dashboard</Link>\r\n </CardFooter>\r\n </Card>\r\n </LegalPage>\r\n);\r\n\r\nexport default TermsOfUse;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('legal', types);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('payment');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('payment', types);\r\n","import actions from './actions';\r\nimport { getToken, getUserId, authLoadPermissions } from '../../auth';\r\nimport {\r\n baseFetch,\r\n getApi,\r\n keyById,\r\n normalize,\r\n patchApi,\r\n resourceOperationsGenerator,\r\n safeAccess,\r\n} from '../../utils';\r\n\r\nconst endpointHandler = {\r\n endpoint: '/payment',\r\n customResponseHandler: null,\r\n resourceType: 'payment',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'payment',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n endpointHandler\r\n);\r\n\r\nexport const paymentTypes = {\r\n NOW: 'PayNow',\r\n RENEWAL: 'PayRenewal',\r\n DEPOSIT: 'PayDeposit',\r\n LWO: 'PayLWO',\r\n SERVICE: 'PayService',\r\n};\r\n\r\nconst paymentSetTypeDeposit = () => async (dispatch, getState) => {\r\n await dispatch(\r\n operations.paymentHandleCacheChange({\r\n ...getState().payment.cache,\r\n paymentType: paymentTypes.DEPOSIT,\r\n })\r\n );\r\n dispatch(actions.paymentLoadResourceSuccess());\r\n};\r\n\r\nconst paymentSetTypeRenewal = () => async (dispatch, getState) => {\r\n await dispatch(\r\n operations.paymentHandleCacheChange({\r\n ...getState().payment.cache,\r\n paymentType: paymentTypes.RENEWAL,\r\n })\r\n );\r\n dispatch(actions.paymentLoadResourceSuccess());\r\n};\r\n\r\nconst paymentSetTypeLWO = () => async (dispatch, getState) => {\r\n await dispatch(\r\n operations.paymentHandleCacheChange({\r\n ...getState().payment.cache,\r\n paymentType: paymentTypes.LWO,\r\n })\r\n );\r\n dispatch(actions.paymentLoadResourceSuccess());\r\n};\r\n\r\nconst paymentSetTypeService = (id) => async (dispatch, getState) => {\r\n await dispatch(\r\n operations.paymentHandleCacheChange({\r\n ...getState().payment.cache,\r\n paymentType: paymentTypes.SERVICE,\r\n paymentServiceId: id,\r\n })\r\n );\r\n dispatch(actions.paymentLoadResourceSuccess());\r\n};\r\n\r\nconst paymentSetPaymentType = () => async (dispatch, getState) => {\r\n dispatch(actions.paymentLoadResourceRequest());\r\n const state = getState();\r\n const id = getUserId(state);\r\n\r\n let data = await getApi(getToken(state), `/pay-now-destination/${id}`);\r\n dispatch(actions.paymentLoadResourceResponse());\r\n await dispatch(\r\n operations.paymentHandleCacheChange({\r\n ...getState().payment.cache,\r\n paymentType: data[0].destination,\r\n paymentServiceId: 0,\r\n })\r\n );\r\n dispatch(actions.paymentLoadResourceSuccess());\r\n};\r\n\r\nconst paymentResetStatus = () => async (dispatch, getState) => {\r\n try {\r\n await dispatch(paymentClearErrors());\r\n\r\n dispatch(actions.paymentCreateResourceRequest());\r\n dispatch(actions.paymentCreateResourceResponse());\r\n dispatch(actions.paymentCreateResourceSuccess());\r\n } catch (error) {\r\n dispatch(actions.paymentCreateResourceFailure());\r\n }\r\n};\r\n\r\nconst paymentDefaultPaymentType = () => async (dispatch, getState) => {\r\n const { cache } = getState().payment;\r\n if (cache && !Object.values(paymentTypes).includes(cache.paymentType)) {\r\n dispatch(paymentSetPaymentType());\r\n }\r\n};\r\n\r\nconst paymentLoadInfo = (key = null) => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n try {\r\n dispatch(actions.paymentLoadResourceRequest(key));\r\n const state = getState();\r\n const type = state.payment.cache.paymentType;\r\n if (!type) {\r\n throw new Error('Invalid payment type');\r\n }\r\n\r\n let endpoint = `/payment-page-one/${type}`;\r\n\r\n if (state.payment.cache.paymentServiceId && state.payment.cache.paymentServiceId > 0) {\r\n endpoint = `/payment-page-one/${type}_${state.payment.cache.paymentServiceId}`;\r\n }\r\n\r\n let data = await getApi(getToken(state), endpoint);\r\n\r\n dispatch(actions.paymentLoadResourceResponse(key));\r\n\r\n let paymentServiceIdVal = key === null ? 0 : key;\r\n if (type === paymentTypes.SERVICE && key === null) {\r\n paymentServiceIdVal = safeAccess(data[0], 'paymentInfo.id', 0);\r\n }\r\n\r\n const cache = {\r\n ...getState().payment.cache,\r\n ...keyById(data),\r\n paymentServiceId: paymentServiceIdVal,\r\n };\r\n\r\n await dispatch(operations.paymentHandleCacheChange(cache));\r\n\r\n dispatch(actions.paymentLoadResourceSuccess(null, key));\r\n } catch (error) {\r\n dispatch(operations.paymentHandleError(error));\r\n dispatch(actions.paymentLoadResourceFailure(error, key));\r\n }\r\n};\r\n\r\nconst paymentSaveBillingInfo = () => async (dispatch, getState) => {\r\n const state = getState();\r\n try {\r\n if (safeAccess(state, 'payment.errors.length', 0) > 0) {\r\n throw new Error('The form contains errors and cannot be saved until they are fixed.');\r\n }\r\n const paymentType = safeAccess(state, 'payment.cache.paymentType');\r\n if (!paymentType || !Object.values(paymentTypes).includes(paymentType)) {\r\n throw new Error('Invalid payment type');\r\n }\r\n\r\n dispatch(actions.paymentUpdateResourceRequest());\r\n const patchData = normalize('payment-page-one', state.payment.form, paymentType);\r\n\r\n let endpoint = `/payment-page-one/${paymentType}`;\r\n\r\n if (state.payment.cache.paymentServiceId && state.payment.cache.paymentServiceId > 0) {\r\n endpoint = `/payment-page-one/${paymentType}_${state.payment.cache.paymentServiceId}`;\r\n }\r\n\r\n let data = await patchApi(getToken(state), endpoint, patchData);\r\n\r\n dispatch(actions.paymentUpdateResourceResponse());\r\n\r\n const cache = { ...getState().payment.cache, ...keyById(data) };\r\n await dispatch(operations.paymentHandleCacheChange(cache));\r\n\r\n dispatch(actions.paymentUpdateResourceSuccess());\r\n } catch (error) {\r\n dispatch(operations.paymentHandleError(error));\r\n dispatch(actions.paymentUpdateResourceFailure(error));\r\n }\r\n};\r\n\r\nconst paymentPostPayment = (form, postUrl) => async (dispatch, getState) => {\r\n try {\r\n const month = form.month.toString();\r\n const mm = month.length === 1 ? `0${month}` : month;\r\n const yy = form.year.substring(2);\r\n\r\n const data = {\r\n 'billing-cc-number': form.cardNumber,\r\n 'billing-cc-exp': `${mm}${yy}`,\r\n 'billing-cvv': form.cvv,\r\n };\r\n\r\n const formData = Object.keys(data).reduce((form, k) => {\r\n form.append(k, data[k]);\r\n return form;\r\n }, new FormData());\r\n\r\n const opts = {\r\n body: formData,\r\n method: 'POST',\r\n };\r\n dispatch(actions.paymentCreateResourceRequest());\r\n await baseFetch(postUrl, opts);\r\n\r\n dispatch(actions.paymentCreateResourceResponse());\r\n dispatch(actions.paymentCreateResourceSuccess());\r\n } catch (error) {\r\n dispatch(actions.paymentCreateResourceFailure());\r\n }\r\n};\r\n\r\nconst paymentGetPaymentStatus = (token, key = null) => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n try {\r\n dispatch(actions.paymentLoadResourceRequest());\r\n const state = getState();\r\n\r\n let url = `/payment-page-three/${token}`;\r\n if (key !== null || (key && key > 0)) {\r\n url = `/payment-page-three/${token}_${key}`;\r\n }\r\n\r\n await getApi(getToken(state), url);\r\n\r\n dispatch(actions.paymentLoadResourceResponse());\r\n\r\n const cache = {\r\n ...getState().payment.cache,\r\n paymentStatus: 'success',\r\n };\r\n\r\n const paymentType = safeAccess(state, 'payment.cache.paymentType');\r\n if (paymentType === paymentTypes.NOW) {\r\n dispatch(authLoadPermissions());\r\n }\r\n\r\n await dispatch(operations.paymentHandleCacheChange(cache));\r\n\r\n dispatch(actions.paymentLoadResourceSuccess());\r\n } catch (error) {\r\n dispatch(operations.paymentHandleError(error));\r\n dispatch(actions.paymentLoadResourceFailure(error));\r\n }\r\n};\r\n\r\nconst paymentResetUpdateRequest = () => async (dispatch) => {\r\n dispatch(actions.paymentUpdateResourceSuccess());\r\n};\r\n\r\nconst { paymentClearErrors, paymentCopyResourceToForm, paymentHandleFormChange } = operations;\r\n\r\nexport {\r\n paymentClearErrors,\r\n paymentCopyResourceToForm,\r\n paymentResetUpdateRequest,\r\n paymentDefaultPaymentType,\r\n paymentGetPaymentStatus,\r\n paymentHandleFormChange,\r\n paymentLoadInfo,\r\n paymentPostPayment,\r\n paymentSaveBillingInfo,\r\n paymentSetPaymentType,\r\n paymentSetTypeDeposit,\r\n paymentSetTypeRenewal,\r\n paymentSetTypeLWO,\r\n paymentSetTypeService,\r\n paymentResetStatus,\r\n};\r\n","import React from 'react';\nimport { SharedDataConsent } from '../../legal';\nimport { paymentSetTypeDeposit, paymentSetTypeService } from '../../payment/redux/operations';\n//import { RenewalWantsMeeting } from '../../workflows/renewal';\n\nexport const todoActionTypes = {\n TODO_ACTION_DRAWER: 'TODO_ACTION_DRAWER',\n TODO_ACTION_LINK: 'TODO_ACTION_LINK',\n TODO_ACTION_MODAL: 'TODO_ACTION_MODAL',\n TODO_ACTION_READONLY: 'TODO_ACTION_READONLY',\n TODO_ACTION_REDUX: 'TODO_ACTION_REDUX',\n TODO_ACTION_LINKPAYSERVICE: 'TODO_ACTION_LINKPAYSERVICE',\n};\n\nconst drawerCallback = (drawer) => (toggleDrawer) => () => toggleDrawer(drawer);\n\nconst linkCallback = (route, preNavigate = null) => (history, dispatch, toggleDrawer) => () => {\n preNavigate && preNavigate(dispatch);\n history.push(route);\n toggleDrawer();\n};\n\nconst linkCallbackPayService = (route, preNavigate = null) => (\n history,\n dispatch,\n toggleDrawer,\n serviceId\n) => () => {\n preNavigate && preNavigate(dispatch, serviceId);\n history.push(route);\n toggleDrawer();\n};\n\nconst modalCallback = (Component) => (props) => <Component {...props} />;\n\n/*const reduxCallback = (action) => (id, dispatch) => () => action(id, dispatch);\n\nconst standardDispatch = async (id, dispatch) => {\n await dispatch(todosCopyResourceToForm(id));\n await dispatch(todosUpdateResource(id, id));\n dispatch(fulfillmentLoadCollection());\n dispatch(todosLoadCollection());\n};*/\n\nexport const todoMap = {\n 0: {\n id: 0,\n _apiName: 'screening',\n action: linkCallback('/screening'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Screening',\n },\n 1: {\n id: 1,\n _apiName: 'scheduleMeeting',\n action: drawerCallback('meetings'),\n actionType: todoActionTypes.TODO_ACTION_DRAWER,\n buttonText: 'Schedule A Meeting',\n },\n 2: {\n id: 2,\n _apiName: 'docUpload',\n action: linkCallback('/documents'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To My Documents',\n },\n 3: {\n id: 3,\n _apiName: 'agreement',\n action: linkCallback('/agreement'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To My Agreement',\n },\n 4: {\n id: 4,\n _apiName: 'docsToSign',\n action: linkCallback('/documents'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Sign Documents',\n },\n 5: {\n id: 5,\n _apiName: 'payDeposit',\n action: linkCallback('/payment', (dispatch) => dispatch(paymentSetTypeDeposit())),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Pay Deposit',\n },\n 6: {\n id: 6,\n _apiName: 'sharedDataConsent',\n action: modalCallback(SharedDataConsent),\n actionType: todoActionTypes.TODO_ACTION_MODAL,\n buttonText: 'Consent To Share Data',\n },\n 7: {\n id: 7,\n _apiName: 'authorizedUse',\n action: linkCallback('/benefits/forgiveness/welcome'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 90: {\n id: 90,\n _apiName: 'cancelMeeting',\n action: drawerCallback('meetings'),\n actionType: todoActionTypes.TODO_ACTION_DRAWER,\n buttonText: 'Cancel My Meeting',\n },\n 10: {\n id: 10,\n _apiName: 'updateProfile',\n action: linkCallback('/benefits/forgiveness/welcome'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 11: {\n id: 11,\n _apiName: 'updateServicers',\n action: linkCallback('/benefits/forgiveness/welcome'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 12: {\n id: 12,\n _apiName: 'updateReferences',\n action: linkCallback('/benefits/forgiveness/welcome'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 13: {\n id: 13,\n _apiName: 'updateAccounts',\n action: linkCallback('/accounts'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Update My Accounts',\n },\n 14: {\n id: 14,\n _apiName: 'scheduleConferenceCall',\n action: drawerCallback('meetings'),\n actionType: todoActionTypes.TODO_ACTION_DRAWER,\n buttonText: 'Schedule A Conference Call',\n },\n 15: {\n id: 15,\n _apiName: 'updateContributions',\n action: linkCallback('/benefits/contribution'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Update My Contributions',\n },\n 101: {\n id: 101,\n _apiName: 'informationComplete',\n action: linkCallback('/benefits/forgiveness/welcome'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Confirm Information Collection Complete', // dummy\n },\n 102: {\n id: 102,\n _apiName: 'forbearancePhase1Complete',\n action: linkCallback('/benefits/forgiveness/forbearance-p1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 103: {\n id: 103,\n _apiName: 'consolidationGenerated',\n action: linkCallback('/benefits/forgiveness/consolidate/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 104: {\n id: 104,\n _apiName: 'consolidationConfirmation',\n action: linkCallback('/benefits/forgiveness/consolidate/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 105: {\n id: 105,\n _apiName: 'consolidationComplete',\n action: linkCallback('/benefits/forgiveness/consolidate/step-3'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 106: {\n id: 106,\n _apiName: 'empCertTransferGenerated',\n action: linkCallback('/benefits/forgiveness/empcert/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 107: {\n id: 107,\n _apiName: 'empCertTransferConfirmation',\n action: linkCallback('/benefits/forgiveness/empcert/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 108: {\n id: 108,\n _apiName: 'empCertTransferComplete',\n action: linkCallback('/benefits/forgiveness/empcert/step-3'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 109: {\n id: 109,\n _apiName: 'forbearancePhase2Complete',\n action: linkCallback('/benefits/forgiveness/forbearance-p2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 110: {\n id: 110,\n _apiName: 'taxesFiled',\n action: linkCallback('/benefits/forgiveness/taxes'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 111: {\n id: 111,\n _apiName: 'idrSubmissionGenerated',\n action: linkCallback('/benefits/forgiveness/idr/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 112: {\n id: 112,\n _apiName: 'idrConfirmation',\n action: linkCallback('/benefits/forgiveness/idr/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 113: {\n id: 113,\n _apiName: 'idrComplete',\n action: linkCallback('/benefits/forgiveness/idr/step-3'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 114: {\n id: 114,\n _apiName: 'contributionIdrUpload',\n action: linkCallback('/benefits/forgiveness/contribution-ss/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 115: {\n id: 115,\n _apiName: 'contributionReview',\n action: linkCallback('/benefits/forgiveness/contribution-ss/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 150: {\n id: 150,\n _apiName: 'btsQuestionnaire',\n action: linkCallback('/benefits/forgiveness/bts-questionnaire'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 201: {\n id: 201,\n _apiName: 'renewalQuestionnaire',\n action: linkCallback('/renewal'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Renewal Questionnaire',\n },\n 202: {\n id: 202,\n _apiName: 'renewalDocuments',\n action: linkCallback('/benefits/forgiveness/docs-needed'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 203: {\n id: 203,\n _apiName: 'renewalScheduleMeeting',\n action: linkCallback('/benefits/forgiveness/meeting'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 204: {\n id: 204,\n _apiName: 'renewalPayment',\n action: linkCallback('/benefits/forgiveness/fee'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 206: {\n id: 206,\n _apiName: 'renewalToBeSubmitted',\n action: () => {}, // dummy\n actionType: todoActionTypes.TODO_ACTION_READONLY,\n buttonText: 'Renewal To Be Submitted', // dummy\n },\n 207: {\n id: 207,\n _apiName: 'renewalSubmitted',\n action: () => {}, // dummy\n actionType: todoActionTypes.TODO_ACTION_READONLY,\n buttonText: 'Renewal Submitted', // dummy\n },\n 208: {\n // TODO: Send Opt-out patch to API, don't need feedback on elect meeting, but need to schedule\n // MUST set result-id to 1 for API during PATCH\n id: 208,\n _apiName: 'renewalChooseWantsMeeting',\n action: () => {}, // dummy\n actionType: todoActionTypes.TODO_ACTION_MODAL,\n buttonText: 'View Meeting Options',\n },\n 209: {\n id: 209,\n _apiName: 'renewalUpdateProfile',\n action: linkCallback('/profile'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Update My Profile',\n },\n\n 250: {\n id: 250,\n _apiName: 'renewalSsAnnualFeeCollected',\n action: linkCallback('/benefits/forgiveness/fee'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 251: {\n id: 251,\n _apiName: 'renewalSsForbearanceNeeded',\n action: linkCallback('/benefits/forgiveness/forbearance-rs'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 252: {\n id: 252,\n _apiName: 'renewalSsEmpCertGenerated',\n action: linkCallback('/benefits/forgiveness/empcert-ss/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 253: {\n id: 253,\n _apiName: 'renewalSsEmpCertConfirmation',\n action: linkCallback('/benefits/forgiveness/empcert-ss/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 254: {\n id: 254,\n _apiName: 'renewalSsEmpCertComplete',\n action: linkCallback('/benefits/forgiveness/empcert-ss/step-3'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 255: {\n id: 255,\n _apiName: 'renewalSsIDRGenerated',\n action: linkCallback('/benefits/forgiveness/idr-ss/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 256: {\n id: 256,\n _apiName: 'renewalSsIDRConfirmation',\n action: linkCallback('/benefits/forgiveness/idr-ss/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 257: {\n id: 257,\n _apiName: 'renewalSsIDRComplete',\n action: linkCallback('/benefits/forgiveness/idr-ss/step-3'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 258: {\n id: 258,\n _apiName: 'renewalSsYearComplete',\n action: linkCallback('/profile'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Oh, Hi There',\n },\n 259: {\n id: 259,\n _apiName: 'renewalSsExtensionNeeded',\n action: linkCallback('/benefits/forgiveness/renewal-extension'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 260: {\n id: 260,\n _apiName: 'renewalSsIdrUpload',\n action: linkCallback('/benefits/forgiveness/contribution-rsss/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 261: {\n id: 261,\n _apiName: 'renewalSsIdrReview',\n action: linkCallback('/benefits/forgiveness/contribution-rsss/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n\n 301: {\n id: 301,\n _apiName: 'simplifiUpdateReferences',\n action: linkCallback('/benefits/simplifi'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Update My References',\n },\n 351: {\n id: 351,\n _apiName: 'uploadNSLDS',\n action: linkCallback('/benefits/forgiveness/nslds'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Upload Your NSLDS',\n },\n\n 401: {\n id: 401,\n _apiName: 'tuitionUpdateApproverEmail',\n action: linkCallback('/benefits/tuition/overview'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Update Manager Email',\n },\n\n 402: {\n id: 402,\n _apiName: 'tuitionCreateReimbursementServicer',\n action: linkCallback('/accounts'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Create Account Servicer for Tuition Reimbursement',\n },\n\n 403: {\n id: 403,\n _apiName: 'tuitionCreateReimbursementAccount',\n action: linkCallback('/accounts'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Create Tuition Account',\n },\n\n 411: {\n id: 411,\n _apiName: 'tuitionUploadPayment',\n action: linkCallback('/documents'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Upload Documents',\n },\n\n 412: {\n id: 412,\n _apiName: 'tuitionUploadGrades',\n action: linkCallback('/documents'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Upload Documents',\n },\n\n 413: {\n id: 413,\n _apiName: 'tuitionUploadPaymentAndGrades',\n action: linkCallback('/documents'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Upload Documents',\n },\n\n 420: {\n id: 420,\n _apiName: 'tuitionCompleteTermInfo_Deprecated',\n action: linkCallback('/benefits/tuition/overview'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Edit Term _ Deprecated',\n },\n 421: {\n id: 421,\n _apiName: 'tuitionUpdateHomeAddress',\n action: linkCallback('/profile'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Enter Home Address',\n },\n\n 422: {\n id: 422,\n _apiName: 'tuitionCreateInstitution',\n action: linkCallback('/benefits/tuition/institutions'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Create Institution',\n },\n\n 423: {\n id: 423,\n _apiName: 'tuitionCreateTerm',\n action: linkCallback('/benefits/tuition/terms'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Create Term',\n },\n\n 424: {\n id: 424,\n _apiName: 'tuitionUpdateTerm',\n action: linkCallback('/benefits/tuition/terms'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Update Term',\n },\n\n 425: {\n id: 425,\n _apiName: 'tuitionCreateClass',\n action: linkCallback('/benefits/tuition/classes'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Create Class',\n },\n\n 426: {\n id: 426,\n _apiName: 'tuitionUpdateClassGrade',\n action: linkCallback('/benefits/tuition/classes'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Update Class',\n },\n\n 501: {\n id: 501,\n _apiName: 'contributionAddServicer',\n action: linkCallback('/accounts'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Add Servicer/Bank',\n },\n 502: {\n id: 502,\n _apiName: 'contributionAddAccount',\n action: linkCallback('/accounts'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Add Accounts',\n },\n 503: {\n id: 503,\n _apiName: 'contributionProofRequired',\n action: linkCallback('/documents'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Upload Documents',\n },\n 504: {\n id: 504,\n _apiName: 'contributionNoActiveAccounts',\n action: linkCallback('/benefits/contribution/active-contributions'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Select Accounts',\n },\n 505: {\n id: 505,\n _apiName: 'contributionPSLFProofRequired',\n action: linkCallback('/benefits/forgiveness/contribution-ss/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go to Step',\n },\n 506: {\n id: 506,\n _apiName: 'contributionPSLFRenewalProofRequired',\n action: linkCallback('/benefits/forgiveness/contribution-rsss/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go to Step',\n },\n 602: {\n id: 602,\n _apiName: 'lwoUploadNslds',\n action: linkCallback('/benefits/limited-waiver-opportunity/loan-information'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Upload My NSLDS',\n },\n 603: {\n id: 603,\n _apiName: 'lwoQuestionnaire',\n action: linkCallback('/benefits/limited-waiver-opportunity/questionnaire'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go to Step',\n },\n 604: {\n id: 604,\n _apiName: 'lwoAgreement',\n action: linkCallback('/benefits/limited-waiver-opportunity/agreement'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go to Step',\n },\n 605: {\n id: 605,\n _apiName: 'lwoPayFee',\n action: linkCallback('/benefits/limited-waiver-opportunity/fee'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go to Step',\n },\n 606: {\n id: 606,\n _apiName: 'lwoGenerateEcf',\n action: linkCallback('/benefits/limited-waiver-opportunity/employment-certification/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go to Step',\n },\n 607: {\n id: 607,\n _apiName: 'lwoSubmitEcf',\n action: linkCallback('/benefits/limited-waiver-opportunity/employment-certification/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go to Step',\n },\n 608: {\n id: 608,\n _apiName: 'lwoCompleteEcf',\n action: linkCallback('/benefits/limited-waiver-opportunity/employment-certification/step-3'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go to Step',\n },\n 609: {\n id: 609,\n _apiName: 'lwoQualifyingPaymentCheck',\n action: linkCallback('/benefits/limited-waiver-opportunity/confirmation'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go to Step',\n },\n 700: {\n id: 700,\n _apiName: 'payService',\n action: linkCallbackPayService('/payment', (dispatch, id) =>\n dispatch(paymentSetTypeService(id))\n ),\n actionType: todoActionTypes.TODO_ACTION_LINKPAYSERVICE,\n buttonText: 'Go To Step',\n },\n 701: {\n id: 701,\n _apiName: 'payService',\n action: linkCallbackPayService('/payment', (dispatch, id) =>\n dispatch(paymentSetTypeService(id))\n ),\n actionType: todoActionTypes.TODO_ACTION_LINKPAYSERVICE,\n buttonText: 'Go To Step',\n },\n 702: {\n id: 702,\n _apiName: 'payService',\n action: linkCallbackPayService('/payment', (dispatch, id) =>\n dispatch(paymentSetTypeService(id))\n ),\n actionType: todoActionTypes.TODO_ACTION_LINKPAYSERVICE,\n buttonText: 'Go To Step',\n },\n 703: {\n id: 703,\n _apiName: 'payService',\n action: linkCallbackPayService('/payment', (dispatch, id) =>\n dispatch(paymentSetTypeService(id))\n ),\n actionType: todoActionTypes.TODO_ACTION_LINKPAYSERVICE,\n buttonText: 'Go To Step',\n },\n 704: {\n id: 704,\n _apiName: 'payService',\n action: linkCallbackPayService('/payment', (dispatch, id) =>\n dispatch(paymentSetTypeService(id))\n ),\n actionType: todoActionTypes.TODO_ACTION_LINKPAYSERVICE,\n buttonText: 'Go To Step',\n },\n\n // TODO: Insert 800s here for StandaloneEmpCert\n 800: {\n id: 800,\n _apiName: 'empCertGenerate',\n action: linkCallback('/benefits/empcert/generate'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 801: {\n id: 801,\n _apiName: 'empCertApproval',\n action: linkCallback('/benefits/empcert/generate'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 805: {\n id: 805,\n _apiName: 'empCertAwaitingCorrection',\n action: linkCallback('/benefits/empcert/correction'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 810: {\n id: 810,\n _apiName: 'empCertSubmit',\n action: linkCallback('/benefits/empcert/submit'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 815: {\n id: 815,\n _apiName: 'empCertCheck',\n action: linkCallback('/benefits/empcert/check'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 820: {\n id: 820,\n _apiName: 'empCertCheck',\n action: linkCallback('/benefits/empcert/complete'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 900: {\n id: 900,\n _apiName: 'freshStartContact',\n action: linkCallback('/benefits/freshstart/contact'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 910: {\n id: 910,\n _apiName: 'freshStartAwaiting',\n action: linkCallback('/benefits/freshstart/awaiting'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 920: {\n id: 920,\n _apiName: 'freshStartNSLDSUpload',\n action: linkCallback('/benefits/freshstart/nslds'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 930: {\n id: 930,\n _apiName: 'freshStartComplete',\n action: linkCallback('/benefits/freshstart/complete'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1000: {\n id: 1000,\n _apiName: 'eduReengagementDates',\n action: linkCallback('/benefits/educational-reengagement/overview'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Provide Dates',\n },\n 1100: {\n id: 1100,\n _apiName: 'reducedIDRWelcome',\n action: linkCallback('/benefits/reducedidr/welcome'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1200: {\n id: 1200,\n _apiName: 'reducedIDRGenerate',\n action: linkCallback('/benefits/reducedidr/idr/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1300: {\n id: 1300,\n _apiName: 'reducedIDRSubmit',\n action: linkCallback('/benefits/reducedidr/idr/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1400: {\n id: 1400,\n _apiName: 'reducedIDRReview',\n action: linkCallback('/benefits/reducedidr/idr/step-3'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1500: {\n id: 1500,\n _apiName: 'reducedIDRComplete',\n action: linkCallback('/benefits/reducedidr/complete'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1600: {\n id: 1600,\n _apiName: 'reducedIDRGenerateRenewal',\n action: linkCallback('/benefits/reducedidr/idrrenewal/step-1'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1601: {\n id: 1601,\n _apiName: 'reducedIDRProfileVerification',\n action: linkCallback('/benefits/reducedidr/profile'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1605: {\n id: 1605,\n _apiName: 'reducedIDRQuestionnaire',\n action: linkCallback('/benefits/reducedidr/questionnaire'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1606: {\n id: 1606,\n _apiName: 'reducedIDRUpdateEmployment',\n action: linkCallback('/benefits/reducedidr/employmenthistory'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1610: {\n id: 1610,\n _apiName: 'reducedIDRSubmitRenewal',\n action: linkCallback('/benefits/reducedidr/idrrenewal/step-2'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1620: {\n id: 1620,\n _apiName: 'reducedIDRReviewRenewal',\n action: linkCallback('/benefits/reducedidr/idrrenewal/step-3'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 1630: {\n id: 1630,\n _apiName: 'reducedIDRCompleteRenewal',\n action: linkCallback('/benefits/reducedidr/completerenewal'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Go To Step',\n },\n 2000: {\n id: 2000,\n _apiName: 'linkPlaidAccount',\n action: linkCallback('/plaid/overview'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Link Your Plaid Account',\n },\n 2010: {\n id: 2010,\n _apiName: 'reconnectPlaidAccount',\n action: linkCallback('/plaid/overview'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Re-link Your Plaid Account',\n },\n 2020: {\n id: 2020,\n _apiName: 'sharedDataConsentPlaid',\n action: modalCallback(SharedDataConsent),\n actionType: todoActionTypes.TODO_ACTION_MODAL,\n buttonText: 'Consent To Share Data',\n },\n 2100: {\n id: 2100,\n _apiName: 'loanRepayment',\n action: linkCallback('/loan-repayments/overview'),\n actionType: todoActionTypes.TODO_ACTION_LINK,\n buttonText: 'Add',\n },\n};\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withRouter } from 'react-router';\r\nimport { BrandColor, Button, Card, CardBody, CardText, Header5, Loader } from 'fiducius-ui';\r\n\r\nimport { todoActionTypes } from '../redux/mapper';\r\n\r\nconst LoaderWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\n\r\nconst StyledTodoCard = styled(Card)`\r\n box-shadow: ${(p) => p.theme.boxShadow};\r\n transition: box-shadow 200ms ease-in-out;\r\n &:hover {\r\n box-shadow: ${(p) => p.theme.boxShadowLarge};\r\n }\r\n`;\r\n\r\nconst TodoActions = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n`;\r\n\r\nconst TodoText = styled.div`\r\n margin-top: 0.3rem;\r\n`;\r\n\r\n// TODO: I know there has to be a better way to encapsulate this stuff.\r\nconst renderTodo = (\r\n todo,\r\n history,\r\n isOpen,\r\n toggleDrawer,\r\n toggleModal,\r\n dispatch,\r\n toggleNavigation\r\n) => {\r\n let onClick = null;\r\n let extraRender = null;\r\n let showButton = true;\r\n\r\n switch (todo.actionType) {\r\n case todoActionTypes.TODO_ACTION_DRAWER: {\r\n onClick = todo.action(toggleDrawer);\r\n break;\r\n }\r\n case todoActionTypes.TODO_ACTION_LINK: {\r\n onClick = todo.action(history, dispatch, toggleDrawer);\r\n break;\r\n }\r\n case todoActionTypes.TODO_ACTION_LINKPAYSERVICE: {\r\n onClick = todo.action(history, dispatch, toggleDrawer, todo.original.resultId);\r\n break;\r\n }\r\n case todoActionTypes.TODO_ACTION_MODAL: {\r\n extraRender = todo.action({ id: todo.id, isOpen, toggleModal, toggleDrawer });\r\n onClick = toggleModal;\r\n break;\r\n }\r\n case todoActionTypes.TODO_ACTION_READONLY: {\r\n showButton = false;\r\n onClick = undefined;\r\n break;\r\n }\r\n case todoActionTypes.TODO_ACTION_REDUX: {\r\n onClick = todo.action(todo.id, dispatch);\r\n break;\r\n }\r\n default: {\r\n throw new Error('Undefined todo action handler');\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {extraRender}\r\n {showButton && (\r\n <Button invert brand=\"primary\" onClick={onClick}>\r\n {todo.buttonText}\r\n </Button>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst getLoader = () => (\r\n <LoaderWrapper>\r\n <Loader variant=\"bounce\" />\r\n </LoaderWrapper>\r\n);\r\n\r\nconst Todo = ({ history, isComplete, request, todo, toggleDrawer, dispatch, toggleNavigation }) => {\r\n const [isOpen, setOpen] = useState(false);\r\n const toggleModal = () => setOpen(!isOpen);\r\n\r\n return (\r\n <StyledTodoCard brand={isComplete ? 'secondary' : request.hasFailed ? 'danger' : 'tertiary'}>\r\n <CardBody>\r\n <CardText>\r\n <TodoActions>\r\n <TodoText>\r\n {request.isLoading ? (\r\n getLoader()\r\n ) : (\r\n <Header5>\r\n <BrandColor brand=\"textPrimary\">\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: isComplete ? (\r\n <s>\r\n {todo.fullText &&\r\n todo.fullText.replace('Assure', 'Assure<span>℠</span>')}\r\n </s>\r\n ) : (\r\n todo.fullText &&\r\n todo.fullText.replace('Assure', 'Assure<span>℠</span>')\r\n ),\r\n }}\r\n />\r\n </BrandColor>\r\n </Header5>\r\n )}\r\n {!isComplete &&\r\n renderTodo(\r\n todo,\r\n history,\r\n isOpen,\r\n toggleDrawer,\r\n toggleModal,\r\n dispatch,\r\n toggleNavigation\r\n )}\r\n </TodoText>\r\n </TodoActions>\r\n </CardText>\r\n </CardBody>\r\n </StyledTodoCard>\r\n );\r\n};\r\n\r\nTodo.propTypes = {\r\n brand: t.string,\r\n dispatch: t.func.isRequired,\r\n history: t.object,\r\n id: t.number,\r\n isComplete: t.bool,\r\n request: t.object,\r\n todo: t.shape({\r\n buttonText: t.string.isRequired,\r\n fullText: t.string.isRequired,\r\n action: t.func.isRequired,\r\n }).isRequired,\r\n toggleDrawer: t.func.isRequired,\r\n toggleNavigation: t.func.isRequired,\r\n};\r\n\r\nexport default connect()(withRouter(Todo));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\n\r\nimport t from 'prop-types';\r\nimport { Header4, Loader, Dropdown, DropdownItem } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport Todo from './todo';\r\n\r\nconst LoaderWrapper = styled.div`\r\n height: calc(${(p) => p.height}px - 2em);\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\n\r\nconst StyledHeader4 = styled(Header4)`\r\n color: ${(p) => (p.theme.themeName === 'greenlight' ? p.theme.textTertiary : 'inherit')};\r\n`;\r\nclass TodoList extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n loadAllRequest: t.object,\r\n todos: t.array,\r\n toggleNavigation: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n todoSet: '0',\r\n };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n getDropdownItems() {\r\n const { todos } = this.props;\r\n let dropdownItems = [];\r\n let filteredTodos = this.checkForECFOverlap(todos);\r\n\r\n dropdownItems.push(<DropdownItem value=\"0\">All Items</DropdownItem>);\r\n if (filteredTodos.filter((a) => a.id >= 1 && a.id <= 15).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"1\">General</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 100 && a.id <= 199).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"2\">Forgiveness</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 200 && a.id <= 299).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"3\">Renewal</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 300 && a.id <= 399).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"4\">SimpliFi</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 400 && a.id <= 499).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"5\">Tuition Reimbursement</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 500 && a.id <= 599).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"6\">Contribution</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 600 && a.id <= 699).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"7\">Assure℠</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 800 && a.id <= 899).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"8\">Emplify</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 900 && a.id <= 999).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"9\">Fresh Start</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 1000 && a.id <= 1099).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"10\">Educational Reengagement</DropdownItem>);\r\n }\r\n if (filteredTodos.filter((a) => a.id >= 1100 && a.id <= 1630).length > 0) {\r\n dropdownItems.push(<DropdownItem value=\"11\">Reduced IDR</DropdownItem>);\r\n }\r\n\r\n return dropdownItems;\r\n }\r\n\r\n checkForECFOverlap = (todos) => {\r\n let ecfActionIdArray = [106, 107, 252, 253];\r\n let lwoEcfActionIdArray = [606, 607];\r\n if (\r\n todos.filter((a) => ecfActionIdArray.includes(a.id)).length > 0 &&\r\n todos.filter((a) => lwoEcfActionIdArray.includes(a.id)).length > 0\r\n ) {\r\n let index;\r\n ecfActionIdArray.forEach((a) => {\r\n let toDoIds = todos.map((b) => b.id);\r\n index = toDoIds.indexOf(a);\r\n if (index >= 0) {\r\n todos.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n return todos;\r\n };\r\n\r\n reorderToDos = (todos, beforeIdArray, afterIdArray) => {\r\n let todoArray = Object.values(todos);\r\n if (todoArray.length > 0) {\r\n let tempItemsArray = [];\r\n let beforeMatchesArray = todoArray.filter((a) => beforeIdArray.includes(a.id));\r\n let afterMatchesArray = todoArray.filter((a) => afterIdArray.includes(a.id));\r\n\r\n if (afterMatchesArray.length > 0 && beforeMatchesArray.length > 0) {\r\n let index;\r\n afterMatchesArray.forEach((a) => {\r\n // Gets an array of id numbers in the todo array\r\n let toDoIds = todoArray.map((b) => b.id);\r\n\r\n // Finds the index of the first item in the 'after' array in the full todo list\r\n index = toDoIds.indexOf(a.id);\r\n\r\n if (index >= 0) {\r\n // If it exists, remove it from the array. This would remove the items from the array that are in empCertIdArray\r\n tempItemsArray.splice(tempItemsArray.length, 0, ...todoArray.splice(index, 1));\r\n }\r\n });\r\n\r\n //Find the index of the LAST item in beforeMatchesArray in the full todoArray, and splice in tempEmpCertArray\r\n index = todoArray.indexOf(beforeMatchesArray[beforeMatchesArray.length - 1]);\r\n todoArray.splice(index + 1, 0, ...tempItemsArray);\r\n }\r\n }\r\n\r\n return todoArray;\r\n };\r\n\r\n getDropdownHeader() {\r\n let header = <></>;\r\n switch (this.state.todoSet) {\r\n case '0':\r\n header = <>All Items</>;\r\n break;\r\n case '1':\r\n header = <>General</>;\r\n break;\r\n case '2':\r\n header = <>Forgiveness</>;\r\n break;\r\n case '3':\r\n header = <>Renewal</>;\r\n break;\r\n case '4':\r\n header = <>SimpliFi</>;\r\n break;\r\n case '5':\r\n header = <>Tuition Reimbursement</>;\r\n break;\r\n case '6':\r\n header = <>Contribution</>;\r\n break;\r\n case '7':\r\n header = <>Assure℠</>;\r\n break;\r\n case '8':\r\n header = <>Emplify</>;\r\n break;\r\n case '9':\r\n header = <>Fresh Start</>;\r\n break;\r\n case '10':\r\n header = <>Educational Reengagement</>;\r\n break;\r\n case '11':\r\n header = <>Reduced IDR</>;\r\n default:\r\n break;\r\n }\r\n return header;\r\n }\r\n\r\n updateDropdownSelection = (value) => {\r\n this.setState({ todoSet: value });\r\n };\r\n\r\n getFilteredTodoSteps = () => {\r\n const { todos } = this.props;\r\n\r\n // Put Repayment Todos Before...\r\n let beforeIdArray = [111, 112, 113, 114, 115, 255, 256, 257, 260, 261];\r\n\r\n // The EmpCert Todos\r\n let afterIdArray = [106, 107, 108, 252, 253, 254];\r\n\r\n let reorderedTodos = this.reorderToDos(todos, beforeIdArray, afterIdArray);\r\n\r\n let filteredTodos = this.checkForECFOverlap(reorderedTodos);\r\n\r\n switch (this.state.todoSet) {\r\n case '0':\r\n return filteredTodos;\r\n case '1':\r\n return filteredTodos.filter((a) => a.id >= 1 && a.id <= 15);\r\n case '2':\r\n return filteredTodos.filter((a) => a.id >= 100 && a.id <= 199);\r\n case '3':\r\n return filteredTodos.filter((a) => a.id >= 200 && a.id <= 299);\r\n case '4':\r\n return filteredTodos.filter((a) => a.id >= 300 && a.id <= 399);\r\n case '5':\r\n return filteredTodos.filter((a) => a.id >= 400 && a.id <= 499);\r\n case '6':\r\n return filteredTodos.filter((a) => a.id >= 500 && a.id <= 599);\r\n case '7':\r\n return filteredTodos.filter((a) => a.id >= 600 && a.id <= 699);\r\n case '8':\r\n return filteredTodos.filter((a) => a.id >= 800 && a.id <= 899);\r\n case '9':\r\n return filteredTodos.filter((a) => a.id >= 900 && a.id <= 999);\r\n case '10':\r\n return filteredTodos.filter((a) => a.id >= 1000 && a.id <= 1099);\r\n case '11':\r\n return filteredTodos.filter((a) => a.id >= 1100 && a.id <= 1630);\r\n default:\r\n return filteredTodos;\r\n }\r\n };\r\n\r\n render() {\r\n const { todos, actionRequest, loadAllRequest } = this.props;\r\n return (\r\n <div className=\"todo-list\">\r\n {loadAllRequest.isLoading && (\r\n <>\r\n <StyledHeader4>Checking to see what items need completed</StyledHeader4>\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={2} />\r\n </LoaderWrapper>\r\n </>\r\n )}\r\n {!loadAllRequest.isLoading && (\r\n <>\r\n {safeAccess(todos, 'length') > 0 ? (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Dropdown\r\n key=\"exampleTheme\"\r\n header={this.getDropdownHeader()}\r\n selected={this.state.todoSet}\r\n onSelect={this.updateDropdownSelection} //make a new function that gets change theme func, and async\r\n align=\"left\"\r\n >\r\n {this.getDropdownItems()}\r\n </Dropdown>\r\n </div>\r\n </div>\r\n {this.getFilteredTodoSteps().map((t) => (\r\n <Todo\r\n key={t.id}\r\n todo={t}\r\n request={t.id === actionRequest.key ? actionRequest : {}}\r\n {...this.props}\r\n />\r\n ))}\r\n </>\r\n ) : (\r\n <StyledHeader4>You don't have anything to do.</StyledHeader4>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n todos: Object.values(state.todos.cache),\r\n actionRequest: state.todos.requests.updateResource,\r\n loadAllRequest: state.todos.requests.loadCollection,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TodoList);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('todos');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('todos', types);\r\n","import actions from './actions';\r\nimport { todoMap } from './mapper';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst responseHandler = (data) => {\r\n return data.map((resource) => {\r\n const { id, itemDescription } = resource;\r\n let todo = todoMap[id];\r\n todo.fullText = itemDescription;\r\n todo.original = resource;\r\n return todo;\r\n });\r\n};\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: responseHandler,\r\n endpoint: '/action-item',\r\n resourceType: 'action-item',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'todos',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst { todosDisableValidation } = actions;\r\nconst { todosLoadCollection, todosUpdateResource } = operations;\r\n\r\nconst todosCopyResourceToForm = (id) => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.todosCopyResourceToFormRequest());\r\n const data = getState().todos.cache[id].original;\r\n dispatch(actions.todosHandleFormChange(data));\r\n dispatch(actions.todosCopyResourceToFormResponse());\r\n dispatch(actions.todosCopyResourceToFormSuccess());\r\n } catch (error) {\r\n dispatch(operations.todosHandleError(error));\r\n }\r\n};\r\n\r\nconst todosSendDenied = (id) => async (dispatch, getState) => {\r\n try {\r\n const data = getState().todos.cache[id];\r\n dispatch(todosUpdateResource(id));\r\n } catch (error) {\r\n dispatch(operations.todosHandleError(error));\r\n }\r\n};\r\n\r\nconst todosSendUpdate = (id) => async (dispatch, getState) => {\r\n try {\r\n const data = getState().todos.cache[id];\r\n await dispatch(todosUpdateResource(id));\r\n } catch (error) {\r\n await dispatch(operations.todosHandleError(error));\r\n }\r\n};\r\n\r\nexport {\r\n todosCopyResourceToForm,\r\n todosDisableValidation,\r\n todosLoadCollection,\r\n todosUpdateResource,\r\n todosSendDenied,\r\n todosSendUpdate,\r\n};\r\n\r\nexport default operations;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Header3 } from 'fiducius-ui';\r\n\r\nimport TodoList from '../components/todo-list';\r\nimport { todosDisableValidation, todosLoadCollection } from '../redux/operations';\r\n\r\nconst StyledHeader3 = styled(Header3)`\r\n color: ${(p) => (p.theme.themeName === 'greenlight' ? p.theme.textTertiary : 'inherit')};\r\n`;\r\n\r\nconst Container = styled.div`\r\n padding: 1em;\r\n`;\r\n\r\nclass MyTodos extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n loadTodos: t.func.isRequired,\r\n todos: t.array,\r\n toggleNavigation: t.func.isRequired,\r\n };\r\n\r\n componentDidMount() {\r\n this.props.loadTodos();\r\n }\r\n\r\n render() {\r\n return (\r\n <Container>\r\n <StyledHeader3>My To-do List</StyledHeader3>\r\n <TodoList {...this.props} />\r\n </Container>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n todos: Object.values(state.todos.cache),\r\n actionRequest: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadTodos: async () => {\r\n await dispatch(todosDisableValidation());\r\n await dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyTodos);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardHeader,\r\n CardText,\r\n CardTitle,\r\n Loader,\r\n Modal,\r\n InputCheckbox,\r\n InputWrapper,\r\n InputLabel,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, debounce } from '../../utils';\r\n\r\nimport { todosLoadCollection } from '../redux/operations';\r\n\r\nconst Actions = styled(CardBody)`\r\n align-items: center;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n margin: 1.5rem 0 2rem 0;\r\n & > button {\r\n margin-right: 5rem;\r\n }\r\n & > button:last-child {\r\n margin-right: 0;\r\n }\r\n`;\r\n\r\nconst LoaderWrapper = styled.div`\r\n align-items: center;\r\n align-self: stretch;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst TextLeft = styled(CardText)`\r\n text-align: left;\r\n`;\r\n\r\nclass TodoComplete extends React.Component {\r\n static propTypes = {\r\n action: t.func.isRequired,\r\n id: t.number,\r\n isOpen: t.bool.isRequired,\r\n leftButtonAction: t.func,\r\n leftButtonText: t.string,\r\n onComplete: t.func,\r\n onLoad: t.func,\r\n reloadTodos: t.func.isRequired,\r\n request: t.object,\r\n rightButtonText: t.string,\r\n text: t.node.isRequired,\r\n title: t.string.isRequired,\r\n toggleModal: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showCheckbox: false }; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.onLoad) {\r\n this.props.onLoad();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { id, onComplete, request, reloadTodos, toggleModal } = this.props;\r\n\r\n if (safeAccess(request, 'key') === id) {\r\n if (prevProps.request.isLoading && request.hasFinished && !request.hasFailed) {\r\n toggleModal();\r\n reloadTodos();\r\n onComplete && onComplete();\r\n }\r\n }\r\n }\r\n\r\n handleChange = debounce((formState, id, attributes) => {\r\n this.setState({ ...this.state, showCheckbox: !this.state.showCheckbox });\r\n //this.props.updateForm({ ...this.props.form, ...formState }, [attributes]);\r\n }, 250);\r\n\r\n onConfirm = () => {\r\n this.setState({ ...this.state, showCheckbox: false });\r\n this.props.action();\r\n };\r\n\r\n render() {\r\n const {\r\n isOpen,\r\n leftButtonAction,\r\n leftButtonText,\r\n request,\r\n rightButtonText,\r\n text,\r\n title,\r\n toggleModal,\r\n } = this.props;\r\n\r\n return (\r\n <Modal isOpen={isOpen} fullWidth>\r\n <Card brand={safeAccess(request, 'hasFailed') ? 'danger' : 'primary'}>\r\n {safeAccess(request, 'hasFailed') && <CardHeader>Request Failed</CardHeader>}\r\n <CardBody>\r\n <CardTitle>{title}</CardTitle>\r\n {safeAccess(request, 'isLoading') ? (\r\n <LoaderWrapper>\r\n <Loader />\r\n </LoaderWrapper>\r\n ) : (\r\n <TextLeft>{text}</TextLeft>\r\n )}\r\n </CardBody>\r\n {safeAccess(request, 'isLoading') ? null : (\r\n <Actions>\r\n <Button invert brand=\"textTertiary\" onClick={leftButtonAction || toggleModal}>\r\n {leftButtonText || 'Cancel'}\r\n </Button>\r\n <div>\r\n <InputWrapper>\r\n <InputCheckbox\r\n name=\"allowConfirmation\"\r\n label=\"I am ready to confirm that I have followed all of the above steps and am ready to continue.\"\r\n onChange={(e) =>\r\n this.handleChange(\r\n { allowConfirmation: e.target.value },\r\n 'allowConfirmation',\r\n 'allowConfirmation'\r\n )\r\n }\r\n ></InputCheckbox>\r\n </InputWrapper>\r\n </div>\r\n <br />\r\n <div>\r\n <InputWrapper>\r\n <InputLabel>\r\n <strong>Please Note:</strong> Once you click confirm, you will not be able to\r\n return to this page.\r\n </InputLabel>\r\n <Button\r\n brand=\"primary\"\r\n onClick={this.onConfirm}\r\n disabled={!this.state.showCheckbox}\r\n >\r\n {rightButtonText || 'Confirm'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </Actions>\r\n )}\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n reloadTodos: () => dispatch(todosLoadCollection()),\r\n});\r\n\r\nexport default connect(null, mapDispatchToProps)(TodoComplete);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { Alert, Button } from 'fiducius-ui';\r\n\r\nconst StyledAlert = styled.div`\r\n align-items: center;\r\n align-self: center;\r\n display: flex;\r\n & > button {\r\n margin-left: auto;\r\n }\r\n`;\r\n\r\nconst OutstandingTodos = ({ toggleDrawer }) => (\r\n <Alert brand=\"primary\">\r\n <StyledAlert>\r\n You have items that need your attention.\r\n <Button brand=\"primary\" invert onClick={() => toggleDrawer('todos')}>\r\n See my to-do list\r\n </Button>\r\n </StyledAlert>\r\n </Alert>\r\n);\r\n\r\nOutstandingTodos.propTypes = {\r\n toggleDrawer: t.func.isRequired,\r\n};\r\n\r\nexport default OutstandingTodos;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('todos', types);\r\n","import { safeAccess } from '../../utils';\r\n\r\nexport const hasAnyTodos = (state) => {\r\n const todos = safeAccess(state, 'todos.cache');\r\n if (todos && Object.keys(todos).length > 0) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const hasTodo = (state, ids) => {\r\n let exists = false;\r\n let todos = safeAccess(state, 'todos.cache');\r\n if (todos) {\r\n todos = Object.keys(todos);\r\n } else {\r\n return exists;\r\n }\r\n\r\n for (let i = 0; i < ids.length; i++) {\r\n if (todos.includes(ids[i].toString())) {\r\n exists = true;\r\n break;\r\n }\r\n }\r\n\r\n return exists;\r\n};\r\n","export const benefits = {\r\n ACCOUNT_SERVICERS: -1,\r\n ACCOUNTS: -2,\r\n SHARED_DATA: -3,\r\n REFINANCE: 1,\r\n CONTRIBUTION: 2,\r\n FORGIVENESS: 3,\r\n SIMPLIFI_CONSOLIDATION: 4,\r\n SIMPLIFI_IDR: 5,\r\n IDENTITY: 6,\r\n STUDENT_LOAN_DISABILITY_INSURANCE: 7,\r\n TUITION: 8,\r\n //company paid renews = 9\r\n LWO: 10,\r\n EMPCERT: 11,\r\n TWELVEKORLESS: 12,\r\n BANKINGASABENEFIT: 13,\r\n EDUCATIONALREENGAGEMENT: 14,\r\n FRESHSTART: 15,\r\n REDUCEDIDR: 16,\r\n RETIREMENT: -999, // TODO: Not implemented in the API yet.\r\n};\r\n\r\nexport const benefitStatuses = {\r\n QUALIFIED: 'QUAL',\r\n ENROLLING: 'ENRLG',\r\n ENROLLED: 'ENRLD',\r\n INELIGIBLE: 'INEL',\r\n DECLINED: 'DECL',\r\n READONLY: 'READ',\r\n};\r\n","const clientStatuses = {\r\n // non-profit\r\n NFP_CONTRIBUTION: ['NPCTB', 'VERFY'],\r\n NFP_PRESALE: ['OPEN', 'LEAD', 'WAIT', 'INQ', 'DCLT', 'PLAN'],\r\n NFP_POSTSALE: ['AGREE', 'PROC', 'CCONS', 'CSERV', 'CRET', 'COMP', 'SMPFI', 'NFPSS'],\r\n NFP_RENEWAL: ['CRET'],\r\n NFP_SSRENEWAL: ['NSSRW'],\r\n\r\n // for profit\r\n FP_CONTRIBUTION: ['FPCTB', 'VERFY'],\r\n FP_PRESALE: ['OPEN', 'WAIT', 'LEAD', 'PROSP', 'INQ', 'FPMOD'],\r\n FP_POSTSALE: ['FPAGR', 'PROC', 'FCONS', 'FPCSR', 'FPRWL', 'COMP', 'FPSS'],\r\n FP_RENEWAL: ['FPRWL'],\r\n FP_SSRENEWAL: ['FSSRW'],\r\n\r\n // combined\r\n CONTRIBUTION: ['NPCTB', 'FPCTB', 'VERFY'],\r\n PRESALE: ['OPEN', 'WAIT', 'LEAD', 'PROSP', 'INQ', 'DCLT', 'PLAN', 'FPMOD'],\r\n POSTSALE: [\r\n 'AGREE',\r\n 'PROC',\r\n 'CCONS',\r\n 'CSERV',\r\n 'CRET',\r\n 'COMP',\r\n 'SMPFI',\r\n 'FPAGR',\r\n 'FPRWL',\r\n 'FCONS',\r\n 'FPCSR',\r\n 'NFPSS',\r\n 'NSSRW',\r\n 'FSSRW',\r\n ],\r\n RENEWAL: ['CRET', 'FPRWL', 'NSSRW', 'FSSRW'],\r\n\r\n // specials\r\n CLOSED: ['CLOSE'],\r\n OHPAY: ['OHPAY'],\r\n REFI: ['REFI'],\r\n SIMPLIFI: ['SMPFI'],\r\n UPSELL: ['FUPHB'],\r\n};\r\n\r\nexport default clientStatuses;\r\n","import jwtDecode from 'jsonwebtoken/decode';\r\n\r\nimport { hasAnyTodos, hasTodo } from '../../todos';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport { benefits, benefitStatuses } from './benefits';\r\nimport clientStatuses from './statuses';\r\n\r\nexport const isAuthenticated = (state) => {\r\n const test =\r\n state.auth.cache !== null &&\r\n getToken(state) &&\r\n !isTokenExpired(getToken(state)) &&\r\n hasPermissions(state);\r\n return !!test;\r\n};\r\n\r\nexport const passwordNeedsReset = (state) => {\r\n return safeAccess(state, 'auth.cache.permissions.passwordNeedsReset', false);\r\n};\r\n\r\nexport const getThemeData = (state) => {\r\n return safeAccess(state, 'auth.cache.permissions.theme', false);\r\n};\r\n\r\nexport const getPasswordResetTokenFromPermissions = (state) => {\r\n return safeAccess(state, 'auth.cache.permissions.passwordResetToken', '');\r\n};\r\n\r\nexport const authGetRedirectPath = (\r\n state,\r\n isAuthenticated = false,\r\n passedSecurityCheck = false\r\n) => {\r\n if (isAuthenticated) {\r\n const auth = state.auth.cache;\r\n if (\r\n auth &&\r\n auth.permissions &&\r\n auth.permissions.passwordNeedsReset &&\r\n auth.permissions.passwordNeedsReset === true\r\n ) {\r\n return '/password-out-of-date';\r\n } else if (\r\n !passedSecurityCheck &&\r\n auth &&\r\n auth.permissions &&\r\n auth.permissions.useMfa > 0 &&\r\n auth.permissions.securityQuestionsSetup === true\r\n ) {\r\n return '/security-question-check';\r\n } else if (\r\n !passedSecurityCheck &&\r\n auth &&\r\n auth.permissions &&\r\n auth.permissions.securityQuestionsSetup === false\r\n ) {\r\n return '/security-questions';\r\n } else if (\r\n auth &&\r\n auth.permissions &&\r\n auth.permissions.needsScreening &&\r\n auth.permissions.needsScreening === true &&\r\n !!auth.permissions.showSkipScreening &&\r\n auth.permissions.showSkipScreening === true\r\n ) {\r\n return '/prescreening';\r\n } else if (\r\n auth &&\r\n auth.permissions &&\r\n auth.permissions.needsScreening &&\r\n auth.permissions.needsScreening === true\r\n ) {\r\n return '/screening';\r\n } else {\r\n return 'referrer';\r\n }\r\n } else {\r\n return '/login';\r\n }\r\n};\r\n\r\nexport const shouldSilentRenew = (state) => {\r\n const test =\r\n state.auth.cache !== null &&\r\n getToken(state) &&\r\n getRefreshToken(state) &&\r\n isTokenExpiring(getToken(state)) &&\r\n !renewInProgress(state);\r\n return !!test;\r\n};\r\n\r\nexport const getToken = (state) => safeAccess(state, 'auth.cache.accessToken');\r\nexport const getRefreshToken = (state) => safeAccess(state, 'auth.cache.refreshToken');\r\n\r\nconst isTokenExpiring = (token) => {\r\n const decodedToken = jwtDecode(token, { complete: true });\r\n const now = new Date();\r\n const soon = new Date(now.setMinutes(now.getMinutes() + 10));\r\n return decodedToken.payload.exp < soon.getTime() / 1000;\r\n};\r\n\r\nconst isTokenExpired = (token) => {\r\n const decodedToken = jwtDecode(token, { complete: true });\r\n const now = new Date();\r\n return decodedToken.payload.exp < now.getTime() / 1000;\r\n};\r\n\r\nconst renewInProgress = (state) => state.auth.requests.silentRenew.isLoading;\r\n\r\n/*export const getUserId = createSelector(\r\n [getToken],\r\n (token) => jwtDecode(token, { complete: true }).payload.sub\r\n);*/\r\n\r\nexport const getUserId = (state) => {\r\n return getTokenId(state, 'C');\r\n};\r\n\r\nexport const getCRMUserId = (state) => {\r\n return getTokenId(state, 'A');\r\n};\r\n\r\nexport const getSecurityId = (state) => {\r\n return getTokenId(state, 'S');\r\n};\r\n\r\nconst getTokenId = (state, idType) => {\r\n const token = getToken(state);\r\n if (token !== undefined && token !== null && token.length > 0) {\r\n const subject = jwtDecode(token, { complete: true }).payload.sub;\r\n if (subject !== undefined) {\r\n let startCharacter = subject.indexOf(idType);\r\n if (startCharacter >= 0) {\r\n startCharacter += 1;\r\n let userIdText = '';\r\n do {\r\n userIdText += subject[startCharacter];\r\n startCharacter++;\r\n } while (\r\n startCharacter < subject.length &&\r\n (subject[startCharacter] === '0' ||\r\n subject[startCharacter] === '1' ||\r\n subject[startCharacter] === '2' ||\r\n subject[startCharacter] === '3' ||\r\n subject[startCharacter] === '4' ||\r\n subject[startCharacter] === '5' ||\r\n subject[startCharacter] === '6' ||\r\n subject[startCharacter] === '7' ||\r\n subject[startCharacter] === '8' ||\r\n subject[startCharacter] === '9')\r\n );\r\n return userIdText;\r\n }\r\n }\r\n }\r\n return 'Error';\r\n};\r\n\r\nconst hasPermissions = (state) => state.auth.cache.permissions != null;\r\n\r\nexport const isHomeAddressMissing = (state) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n\r\n if (permissions) {\r\n return !permissions.hasHomeAddress;\r\n }\r\n};\r\n\r\nexport const hasBenefit = (state, id) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n const benefit = safeAccess(permissions, `benefits[${id}]`);\r\n\r\n if (permissions && benefit) {\r\n switch (benefit.benefitEnrollmentStatus) {\r\n case benefitStatuses.ENROLLED:\r\n case benefitStatuses.ENROLLING:\r\n case benefitStatuses.QUALIFIED:\r\n return true;\r\n case benefitStatuses.DECLINED:\r\n case benefitStatuses.INELIGIBLE:\r\n default:\r\n return false;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nconst hasStatusInGroup = (statusGroup, status) => statusGroup.includes(status);\r\n\r\n/*const hasToDo = (passedToDo) => {\r\n let todos = safeAccess(state, 'todos.cache', {});\r\n if (passedToDo in todos){\r\n return true;\r\n } else {\r\n return false\r\n }\r\n}*/\r\n\r\nexport const isReadOnly = (state, id) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n const benefit = safeAccess(permissions, `benefits[${id}]`);\r\n\r\n if (permissions && benefit) {\r\n switch (benefit.benefitEnrollmentStatus) {\r\n case benefitStatuses.READONLY:\r\n return true;\r\n case benefitStatuses.ENROLLING:\r\n case benefitStatuses.QUALIFIED:\r\n case benefitStatuses.DECLINED:\r\n case benefitStatuses.INELIGIBLE:\r\n default:\r\n return false;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const isDeclined = (state, id) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n const benefit = safeAccess(permissions, `benefits[${id}]`);\r\n\r\n if (permissions && benefit) {\r\n switch (benefit.benefitEnrollmentStatus) {\r\n case benefitStatuses.DECLINED:\r\n return true;\r\n case benefitStatuses.ENROLLING:\r\n case benefitStatuses.QUALIFIED:\r\n case benefitStatuses.READONLY:\r\n case benefitStatuses.INELIGIBLE:\r\n default:\r\n return false;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const isEnrollingOrEnrolled = (state, id) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n const benefit = safeAccess(permissions, `benefits[${id}]`);\r\n\r\n if (permissions && benefit) {\r\n switch (benefit.benefitEnrollmentStatus) {\r\n case benefitStatuses.ENROLLED:\r\n case benefitStatuses.ENROLLING:\r\n return true;\r\n case benefitStatuses.QUALIFIED:\r\n case benefitStatuses.DECLINED:\r\n case benefitStatuses.INELIGIBLE:\r\n default:\r\n return false;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const isEnrolled = (state, id) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n const benefit = safeAccess(permissions, `benefits[${id}]`);\r\n\r\n if (permissions && benefit) {\r\n switch (benefit.benefitEnrollmentStatus) {\r\n case benefitStatuses.ENROLLED:\r\n return true;\r\n case benefitStatuses.ENROLLING:\r\n case benefitStatuses.QUALIFIED:\r\n case benefitStatuses.DECLINED:\r\n case benefitStatuses.INELIGIBLE:\r\n default:\r\n return false;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const isEnrolling = (state, id) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n const benefit = safeAccess(permissions, `benefits[${id}]`);\r\n\r\n if (permissions && benefit) {\r\n switch (benefit.benefitEnrollmentStatus) {\r\n case benefitStatuses.ENROLLING:\r\n return true;\r\n case benefitStatuses.ENROLLED:\r\n case benefitStatuses.QUALIFIED:\r\n case benefitStatuses.DECLINED:\r\n case benefitStatuses.INELIGIBLE:\r\n default:\r\n return false;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const isInAuth = (status) => {\r\n if (status) {\r\n if (\r\n status === 'AGREE' ||\r\n status === 'PROC' ||\r\n status === 'CCONS' ||\r\n status === 'CSERV' ||\r\n status === 'VERFY' ||\r\n status === 'FPAGR' ||\r\n status === 'FCONS' ||\r\n status === 'FPCSR'\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const hasBtsQuestionnaireCompleted = (state) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n\r\n if (permissions) {\r\n if (permissions.forgivenessSteps) {\r\n let findReview = permissions.forgivenessSteps.find((a) => a.id === 'BtsReview');\r\n let findQuestionnaire = permissions.forgivenessSteps.find((a) => a.id === 'BtsQuestionnaire');\r\n let findWelcome = permissions.forgivenessSteps.find((a) => a.id === 'Welcome');\r\n\r\n if (findReview && !findQuestionnaire && !findWelcome) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const isFullService = (state, id) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n const benefit = safeAccess(permissions, `benefits[${id}]`);\r\n\r\n if (permissions && benefit && benefit.planType === 'FS') {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const getShowPolaris = (state) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n let CRMUserId = getCRMUserId(state);\r\n\r\n if (permissions && CRMUserId !== 'Error') {\r\n if (permissions.polarisUser) {\r\n let isPolarisUser = permissions.polarisUser.find((a) => a.id === parseInt(CRMUserId));\r\n if (isPolarisUser) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const getOptimalSituation = (state) => {\r\n let retVal = false;\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n if (permissions && permissions.enterpriseOptimalSituation) {\r\n retVal = true;\r\n }\r\n return retVal;\r\n};\r\n\r\nexport const calculateCustomerPermissions = (state) => {\r\n const hasAccountServicers = hasBenefit(state, benefits.ACCOUNT_SERVICERS);\r\n const hasAccounts = hasBenefit(state, benefits.ACCOUNTS);\r\n const hasContribution = hasBenefit(state, benefits.CONTRIBUTION);\r\n const readOnlyContribution = isReadOnly(state, benefits.CONTRIBUTION);\r\n const hasIdentity = false; //hasBenefit(state, benefits.IDENTITY);\r\n const hasStudentLoanDisabilityInsurance = hasBenefit(\r\n state,\r\n benefits.STUDENT_LOAN_DISABILITY_INSURANCE\r\n );\r\n const hasScheduleMeeting = hasTodo(state, [1, 14, 203, 208]);\r\n const hasSharedData = hasBenefit(state, benefits.SHARED_DATA);\r\n\r\n const hasForgiveness = hasBenefit(state, benefits.FORGIVENESS);\r\n const inForgiveness = isEnrollingOrEnrolled(state, benefits.FORGIVENESS);\r\n const enrolledForgiveness = isEnrolled(state, benefits.FORGIVENESS);\r\n\r\n const hasLwo = hasBenefit(state, benefits.LWO);\r\n const inLwo = isEnrollingOrEnrolled(state, benefits.LWO);\r\n const enrolledLwo = isEnrolled(state, benefits.LWO);\r\n\r\n const btsQuestionnaireCompleted = hasBtsQuestionnaireCompleted(state);\r\n\r\n const hasRefinance = hasBenefit(state, benefits.REFINANCE);\r\n const inRefinance = isEnrollingOrEnrolled(state, benefits.REFINANCE);\r\n\r\n const hasSimplifiConsolidation = hasBenefit(state, benefits.SIMPLIFI_CONSOLIDATION);\r\n const hasSimplifiIdr = hasBenefit(state, benefits.SIMPLIFI_IDR);\r\n const hasSimplifi = hasSimplifiConsolidation || hasSimplifiIdr;\r\n const inSimplifiConsolidation = isEnrollingOrEnrolled(state, benefits.SIMPLIFI_CONSOLIDATION);\r\n const inSimplifiIdr = isEnrollingOrEnrolled(state, benefits.SIMPLIFI_IDR);\r\n const inSimplifi = inSimplifiConsolidation || inSimplifiIdr;\r\n\r\n const hasEnterpriseEmpCert = hasBenefit(state, benefits.EMPCERT);\r\n const hasFreshStart =\r\n hasBenefit(state, benefits.FRESHSTART) || isReadOnly(state, benefits.FRESHSTART);\r\n const hasReducedIDR = hasBenefit(state, benefits.REDUCEDIDR);\r\n const hasEducationalReengagement = hasBenefit(state, benefits.EDUCATIONALREENGAGEMENT);\r\n const hasOptimalSituation = getOptimalSituation(state);\r\n const enrolledFreshStart = isEnrolled(state, benefits.FRESHSTART);\r\n const enrolledEducationalReengagement = isEnrolled(state, benefits.EDUCATIONALREENGAGEMENT);\r\n const enrollingReducedIDR = isEnrolling(state, benefits.REDUCEDIDR);\r\n\r\n const showForgiveness =\r\n !hasEnterpriseEmpCert && ((hasForgiveness && !inSimplifi && !inRefinance) || inForgiveness);\r\n const showLwo = enrolledLwo; //hasLwo || inLwo || isDeclined(state, benefits.LWO);\r\n const showSimplifi =\r\n (hasSimplifiConsolidation || hasSimplifiIdr) &&\r\n !hasForgiveness &&\r\n !hasFreshStart &&\r\n !inRefinance;\r\n const showSimplifiConsolidation = hasSimplifiConsolidation && !hasForgiveness && !inRefinance;\r\n const showSimplifiIdr = hasSimplifiIdr && !hasForgiveness && !inRefinance;\r\n const showRefinance = hasRefinance && !inForgiveness && !inSimplifi;\r\n const showPolaris = getShowPolaris(state);\r\n\r\n const hasTuition = hasBenefit(state, benefits.TUITION);\r\n const inTuition = isEnrollingOrEnrolled(state, benefits.TUITION);\r\n const enrolledTuition = isEnrolled(state, benefits.TUITION);\r\n const readOnlyTuition = isReadOnly(state, benefits.TUITION);\r\n const qualifiedTuition = hasTuition && !inTuition;\r\n\r\n const homeAddressMissing = isHomeAddressMissing(state);\r\n const covidFurlough = safeAccess(state, 'auth.cache.permissions.covidFurlough', 0);\r\n\r\n const hasRetirement = hasBenefit(state, benefits.RETIREMENT);\r\n\r\n const clientStatus = safeAccess(state, 'auth.cache.permissions.status', {});\r\n const partnerId = safeAccess(state, 'auth.cache.permissions.strategicPartnerId', 0);\r\n\r\n const hasPayNow = clientStatus === 'OHPAY' || hasTodo(state, [5, 605, 700, 701, 702, 703, 704]);\r\n\r\n const hasRenewalPayNow = hasTodo(state, [204, 250]);\r\n\r\n const isLwoDeclined = isDeclined(state, benefits.LWO);\r\n\r\n const hasAnyBenefits =\r\n hasContribution ||\r\n hasForgiveness ||\r\n hasIdentity ||\r\n hasStudentLoanDisabilityInsurance ||\r\n hasRefinance ||\r\n hasRetirement ||\r\n hasSimplifi ||\r\n hasTuition ||\r\n hasLwo ||\r\n hasEnterpriseEmpCert ||\r\n hasFreshStart ||\r\n hasEducationalReengagement ||\r\n hasOptimalSituation ||\r\n hasReducedIDR;\r\n\r\n const isMarried = safeAccess(state, 'auth.cache.permissions.married', false);\r\n\r\n const consentFormCode = safeAccess(state, 'auth.cache.permissions.consentFormCode', {});\r\n\r\n const hasConsentToShareData = hasTodo(state, [6]);\r\n\r\n const electronicEmpcertEnabled = safeAccess(\r\n state,\r\n 'auth.cache.permissions.electronicEmpcertEnabled',\r\n false\r\n );\r\n\r\n const enterpriseEnabled = safeAccess(state, 'auth.cache.permissions.enterpriseEnabled', false);\r\n const subscriptionAvailable = safeAccess(\r\n state,\r\n 'auth.cache.permissions.subscriptionAvailable',\r\n false\r\n );\r\n const subscriptionActive = safeAccess(state, 'auth.cache.permissions.subscriptionActive', false);\r\n const hasBenefitTools = safeAccess(state, 'auth.cache.permissions.hasBenefitTools');\r\n const disableScheduling = safeAccess(state, 'auth.cache.permissions.disableScheduling', false);\r\n const hasMichiganProgram = safeAccess(state, 'auth.cache.permissions.hasMichiganProgram');\r\n const skipScreeningMessage = safeAccess(state, 'auth.cache.permissions.skipScreeningMessage', '');\r\n const showSkipScreening = safeAccess(state, 'auth.cache.permissions.showSkipScreening', false);\r\n const hasPlaid = safeAccess(state, 'auth.cache.permissions.hasPlaid', false);\r\n const hasLoanRepayment = safeAccess(state, 'auth.cache.permissions.hasLoanRepayment', false);\r\n const isConsolidationSubmitGeneratePaused = safeAccess(\r\n state,\r\n 'auth.cache.permissions.isConsolidationSubmitgeneratePaused',\r\n false\r\n );\r\n const isConsolidationCheckPaused = safeAccess(\r\n state,\r\n 'auth.cache.permissions.isConsolidationCheckPaused',\r\n false\r\n );\r\n\r\n const isEmpcertCheckPaused = safeAccess(\r\n state,\r\n 'auth.cache.permissions.isEmpcertCheckPaused',\r\n false\r\n );\r\n\r\n const annualRecertDate = safeAccess(state, 'auth.cache.permissions.annualRecertDate', null);\r\n const planChangeIndicator = safeAccess(state, 'auth.cache.permissions.planChangeIndicator', null);\r\n const doeIdrCalculation = safeAccess(state, 'auth.cache.permissions.doeIdrCalculation', null);\r\n const hasEmployerPaidRenewal = safeAccess(\r\n state,\r\n 'auth.cache.permissions.hasEmployerPaidRenewal',\r\n false\r\n );\r\n\r\n return {\r\n permissions: {\r\n btsQuestionnaireCompleted: btsQuestionnaireCompleted,\r\n clientStatus: clientStatus,\r\n contributionReadOnly: readOnlyContribution,\r\n forgivenessSteps: safeAccess(state, 'auth.cache.permissions.forgivenessSteps', null),\r\n hasAnyBenefits: hasAnyBenefits,\r\n hasAnyTodos: hasAnyTodos(state),\r\n hasTuition: hasTuition,\r\n hasForgiveness: hasForgiveness,\r\n inPreSale: hasStatusInGroup(clientStatuses.PRESALE, clientStatus),\r\n inAuth: isInAuth(clientStatus),\r\n isFullService: isFullService(state, benefits.FORGIVENESS),\r\n isMarried: isMarried,\r\n lwoSteps: safeAccess(state, 'auth.cache.permissions.lwoSteps', null),\r\n showAccounts: hasAccounts,\r\n showAccountServicers: hasAccountServicers,\r\n showContribution: hasContribution,\r\n showForgiveness: showForgiveness,\r\n showLwo: showLwo,\r\n isLwoDeclined: isLwoDeclined,\r\n inForgiveness: inForgiveness,\r\n inSimplifi: inSimplifi,\r\n enrolledForgiveness: enrolledForgiveness,\r\n enrolledLwo: enrolledLwo,\r\n hasLwo: hasLwo,\r\n strategicPartnerId: partnerId,\r\n showIdentity: hasIdentity,\r\n showPayNow: hasPayNow,\r\n showRenewalPayNow: hasRenewalPayNow,\r\n showRefinance: showRefinance,\r\n showRetirement: hasRetirement,\r\n showScheduleMeeting: hasScheduleMeeting,\r\n showSharedData: hasSharedData,\r\n showSimplifi: showSimplifi,\r\n showSimplifiConsolidation: showSimplifiConsolidation,\r\n showSimplifiIdr: showSimplifiIdr,\r\n showStudentLoanDisabilityInsurance: hasStudentLoanDisabilityInsurance,\r\n homeAddressIsMissing: homeAddressMissing,\r\n showTuition: hasTuition,\r\n showPolaris: showPolaris,\r\n tuitionReadOnly: readOnlyTuition,\r\n inTuition: inTuition,\r\n enrolledTuition: enrolledTuition,\r\n qualifiedTuition: qualifiedTuition,\r\n covidFurlough: covidFurlough,\r\n useMFA: safeAccess(state, 'auth.cache.permissions.useMfa', 0),\r\n securityQuestionsSetup: safeAccess(\r\n state,\r\n 'auth.cache.permissions.securityQuestionsSetup',\r\n false\r\n ),\r\n forceSetup: safeAccess(state, 'auth.cache.permissions.forceSetup', false),\r\n consentFormCode: consentFormCode,\r\n hasConsentToShareData: hasConsentToShareData,\r\n electronicEmpcertEnabled: electronicEmpcertEnabled,\r\n hasEnterpriseEmpCert: hasEnterpriseEmpCert,\r\n hasFreshStart: hasFreshStart,\r\n hasReducedIDR: hasReducedIDR,\r\n hasEducationalReengagement: hasEducationalReengagement,\r\n hasOptimalSituation: hasOptimalSituation,\r\n enterpriseEmpcertSteps: safeAccess(\r\n state,\r\n 'auth.cache.permissions.enterpriseEmpcertSteps',\r\n null\r\n ),\r\n enterpriseEnabled: enterpriseEnabled,\r\n freshStartSteps: safeAccess(state, 'auth.cache.permissions.freshStartSteps', null),\r\n reducedIdrSteps: safeAccess(state, 'auth.cache.permissions.reducedIdrSteps', null),\r\n enrolledFreshStart: enrolledFreshStart,\r\n enrolledEducationalReengagement: enrolledEducationalReengagement,\r\n enrollingReducedIDR: enrollingReducedIDR,\r\n subscriptionAvailable: subscriptionAvailable,\r\n subscriptionActive: subscriptionActive,\r\n hasBenefitTools: hasBenefitTools,\r\n disableScheduling: disableScheduling,\r\n hasMichiganProgram: hasMichiganProgram,\r\n showSkipScreening: showSkipScreening,\r\n skipScreeningMessage: skipScreeningMessage,\r\n isConsolidationSubmitGeneratePaused: isConsolidationSubmitGeneratePaused,\r\n isConsolidationCheckPaused: isConsolidationCheckPaused,\r\n isEmpcertCheckPaused: isEmpcertCheckPaused,\r\n annualRecertDate: annualRecertDate,\r\n plaidSteps: safeAccess(state, 'auth.cache.permissions.plaidSteps', null),\r\n loanRepaymentSteps: safeAccess(state, 'auth.cache.permissions.loanRepaymentSteps', null),\r\n hasPlaid: hasPlaid,\r\n hasLoanRepayment: hasLoanRepayment,\r\n doeIdrCalculation: doeIdrCalculation,\r\n planChangeIndicator: planChangeIndicator,\r\n hasEmployerPaidRenewal: hasEmployerPaidRenewal,\r\n },\r\n };\r\n};\r\n\r\nexport const getBenefitStatus = (state, id) => {\r\n const permissions = safeAccess(state, 'auth.cache.permissions');\r\n const benefit = safeAccess(permissions, `benefits[${id}]`);\r\n\r\n if (permissions && benefit) {\r\n return benefit.benefitEnrollmentStatus;\r\n }\r\n return benefitStatuses.INELIGIBLE;\r\n};\r\n\r\nexport const getCustomWelcomeMessageData = (state) => safeAccess(state, 'login.cache[0]', {});\r\n","import React, { useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faLock } from '@fortawesome/pro-light-svg-icons/faLock';\r\nimport { faLockOpen } from '@fortawesome/pro-light-svg-icons/faLockOpen';\r\nimport {\r\n Button,\r\n InputAddon,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nconst StyledInputError = styled(InputError)`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst NewPassword = ({ data, error, label, required, fieldName }) => {\r\n const [show, setShow] = useState(false);\r\n return (\r\n <InputWrapper error={!!error}>\r\n <InputLabel required={required}>{label || 'Password'}</InputLabel>\r\n <StyledInputError dangerouslySetInnerHTML={{ __html: error }} />\r\n <InputGroup>\r\n <InputAddon>\r\n {show ? (\r\n <FontAwesomeIcon icon={faLockOpen} fixedWidth />\r\n ) : (\r\n <FontAwesomeIcon icon={faLock} fixedWidth />\r\n )}\r\n </InputAddon>\r\n <InputText\r\n name={fieldName || 'password'}\r\n type={show ? 'text' : 'password'}\r\n autoComplete=\"new-password\"\r\n placeholder={label || 'Password'}\r\n defaultValue={data}\r\n />\r\n <InputAddon button={true}>\r\n <Button\r\n brand=\"primary\"\r\n onPointerDown={() => setShow(true)}\r\n onPointerUp={() => setShow(false)}\r\n >\r\n show\r\n </Button>\r\n </InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n );\r\n};\r\n\r\nNewPassword.propTypes = {\r\n data: t.object,\r\n error: t.object,\r\n label: t.string,\r\n required: t.bool,\r\n fieldName: t.string,\r\n};\r\n\r\nexport default NewPassword;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\n\r\nimport styled /*, { css } */ from 'styled-components';\r\n/*import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCalendarDay } from '@fortawesome/pro-light-svg-icons/faCalendarDay';\r\nimport { faDesktop } from '@fortawesome/pro-light-svg-icons/faDesktop';\r\nimport { faFileInvoiceDollar } from '@fortawesome/pro-light-svg-icons/faFileInvoiceDollar';\r\nimport { faUserTie } from '@fortawesome/pro-light-svg-icons/faUserTie';*/\r\nimport { Header4 } from 'fiducius-ui';\r\nimport { safeAccess } from '../../utils';\r\nimport { connect } from 'react-redux';\r\n\r\n//import { ContrastSubtitle } from '../../routing';\r\n\r\n/*const center = css`\r\n align-self: stretch;\r\n align-items: center;\r\n display: flex;\r\n justify-content: center;\r\n`;*/\r\n\r\nconst Wrapper = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n\r\n/*const CenteredIcons = styled.div`\r\n ${center}\r\n justify-content: space-evenly;\r\n margin: 2rem 0;\r\n color: ${(p) => p.theme.white};\r\n & > div:not(:last-child)::after {\r\n border-bottom: 7rem solid transparent;\r\n border-left: 8px solid #f8f9fa;\r\n border-right: 7rem solid transparent;\r\n border-top: 7rem solid transparent;\r\n content: '';\r\n height: 100%;\r\n position: absolute;\r\n right: -7rem;\r\n top: 0;\r\n width: 0;\r\n }\r\n`;\r\n\r\nconst OnboardIcon = styled(FontAwesomeIcon)`\r\n margin-bottom: 1rem;\r\n`;\r\n\r\nconst OnboardIconSet = styled.div`\r\n ${center}\r\n flex-direction: column;\r\n justify-content: flex-start;\r\n padding: 0.25em;\r\n padding-right: 1em;\r\n position: relative;\r\n text-align: center;\r\n width: 100%;\r\n word-wrap: break-word;\r\n`;\r\n\r\nconst StyledLede = styled(Lede)`\r\n color: ${(p) => p.theme.white};\r\n text-align: center;\r\n width: 100%;\r\n word-wrap: break-word;\r\n`;\r\n\r\nconst StyledHeader3 = styled(Header3)`\r\n //color: ${(p) => p.theme.white};\r\n`;*/\r\n\r\nconst StyledHeader4 = styled(Header4)`\r\n //color: ${(p) => p.theme.white};\r\n`;\r\n\r\nconst StandardOnboardingGraphic = ({ employerName, extraOnboard, ...props }) => (\r\n <Wrapper>\r\n {employerName && (\r\n <StyledHeader4>\r\n This is MyFiducius, your personal student loan and education assistance benefits manager,\r\n brought to you by {employerName}.\r\n </StyledHeader4>\r\n )}\r\n {!employerName && (\r\n <StyledHeader4>\r\n This is MyFiducius, your personal student loan and education assistance benefits manager,\r\n brought to you by your employer.\r\n </StyledHeader4>\r\n )}\r\n {extraOnboard && (\r\n <StyledHeader4>\r\n We've already created an account for you, so simply enter your email address from the\r\n message you received for this benefit and create your password.\r\n </StyledHeader4>\r\n )}\r\n </Wrapper>\r\n);\r\n\r\nStandardOnboardingGraphic.propTypes = {\r\n employerName: t.string,\r\n extraOnboard: t.bool,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n employerName:\r\n safeAccess(state, 'auth.cache.permissions.displayName', undefined) ||\r\n safeAccess(state, 'auth.cache.partnerLocations.displayName', undefined),\r\n});\r\nexport default connect(mapStateToProps)(StandardOnboardingGraphic);\r\n","import styled from 'styled-components';\r\n\r\nconst LoaderWrapper = styled.div`\r\n height: calc(${(p) => p.height}px - 2em);\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n padding: 5em 0;\r\n`;\r\n\r\nexport default LoaderWrapper;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\n\r\nimport styled from 'styled-components';\r\nimport { getApiSingle } from '../../utils';\r\nimport OnboardingGraphic from '../components/onboarding-graphic';\r\nimport LoaderWrapper from '../styles/loader-wrapper';\r\n\r\nimport { Loader, Header4, Card, CardBody, CardText } from 'fiducius-ui';\r\n\r\nconst CardNoBorder = styled(Card)`\r\n box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);\r\n`;\r\n\r\nclass CustomWelcomeMessage extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n copyRequest: t.object.isRequired,\r\n data: t.object,\r\n auth: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n hasData: t.bool,\r\n handleForm: t.func.isRequired,\r\n id: t.string,\r\n request: t.object,\r\n reload: t.func.isRequired,\r\n updateFormState: t.func.isRequired,\r\n CustomWelcomeMessage: t.object,\r\n extraOnboard: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n title: undefined,\r\n body: undefined,\r\n isLoading: true,\r\n }; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const pathName = window.location.pathname;\r\n let Header = null;\r\n let Body = null;\r\n getApiSingle(null, '/message/' + pathName).then((data) => {\r\n if (data.messages !== null) {\r\n const header = data.messages.find((a) => a.messageType === 'Login_Header');\r\n const message = data.messages.find((a) => a.messageType === 'Login_Message');\r\n if (header !== null) {\r\n Header = header.messageContent;\r\n }\r\n if (message !== null) {\r\n Body = message.messageContent;\r\n }\r\n }\r\n this.setState({\r\n title: Header,\r\n body: Body,\r\n isLoading: false,\r\n });\r\n });\r\n }\r\n\r\n render() {\r\n const { extraOnboard = false } = this.props;\r\n\r\n if (this.state.isLoading) {\r\n return (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={5} />\r\n </LoaderWrapper>\r\n );\r\n } else if (this.state.title !== null && this.state.body !== null) {\r\n return (\r\n <CardNoBorder>\r\n <CardBody>\r\n <OnboardingGraphic extraOnboard={extraOnboard} />\r\n <Header4>{this.state.title}</Header4>\r\n <CardText dangerouslySetInnerHTML={{ __html: this.state.body }} />\r\n </CardBody>\r\n </CardNoBorder>\r\n );\r\n } else {\r\n return (\r\n <CardNoBorder>\r\n <CardBody>\r\n <OnboardingGraphic extraOnboard={extraOnboard} />\r\n </CardBody>\r\n </CardNoBorder>\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default CustomWelcomeMessage;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\n\r\nimport { AuthContainer, FullscreenSpacer } from '../../routing';\r\nimport { Card, CardBody, CardText, Header1 } from 'fiducius-ui';\r\n\r\nimport CustomWelcomeMessage from '../components/custom-welcome-message.jsx';\r\n\r\nconst StyledCard = styled(Card)`\r\n height: 100%;\r\n`;\r\n\r\nconst StyledRow = styled.div``;\r\n//<div className=\"col-6 col-sm-10 col-md-8 col-lg-6 col-xl-6\">\r\n\r\nconst AuthPage = ({ children, domain, greeting, onboarding, extraOnboard = false }) => (\r\n <AuthContainer className=\"container\">\r\n {onboarding ? (\r\n <>\r\n <StyledCard>\r\n <CardBody>\r\n <CardText>\r\n <StyledRow className=\"row\">\r\n <div className=\"col-6 col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\">\r\n <Header1>\r\n {domain.includes('trinityhealth') ? 'Welcome colleagues!' : 'Welcome!'}\r\n </Header1>\r\n <CustomWelcomeMessage extraOnboard={extraOnboard} />\r\n </div>\r\n <div className=\"col-6 col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\">\r\n {children}\r\n </div>\r\n </StyledRow>\r\n </CardText>\r\n </CardBody>\r\n </StyledCard>\r\n\r\n <FullscreenSpacer />\r\n </>\r\n ) : (\r\n <>\r\n <StyledCard>\r\n <CardBody>\r\n <CardText>\r\n <StyledRow className=\"row\">\r\n <div className=\"col-6 col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\">\r\n {children}\r\n </div>\r\n </StyledRow>\r\n </CardText>\r\n </CardBody>\r\n </StyledCard>\r\n <FullscreenSpacer />\r\n </>\r\n )}\r\n </AuthContainer>\r\n);\r\n\r\nAuthPage.propTypes = {\r\n children: t.node.isRequired,\r\n domain: t.string.isRequired,\r\n greeting: t.string,\r\n onboarding: t.bool,\r\n extraOnboard: t.bool,\r\n};\r\n\r\nexport default AuthPage;\r\n","import styled from 'styled-components';\r\nimport { InputWrapper } from 'fiducius-ui';\r\n\r\nconst RememberMe = styled(InputWrapper)`\r\n color: ${(p) => (p.invert ? p.theme.white : p.theme.textPrimary)};\r\n align-items: center;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n margin-bottom: 1.5em;\r\n margin-top: -0.75em;\r\n`;\r\n\r\nexport default RememberMe;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faUser } from '@fortawesome/pro-light-svg-icons/faUser';\r\nimport { faLock } from '@fortawesome/pro-light-svg-icons/faLock';\r\nimport {\r\n Button,\r\n Form,\r\n InputAddon,\r\n InputCheckbox,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n Link,\r\n} from 'fiducius-ui';\r\n\r\nimport { useFocusOnMount } from '../../utils';\r\nimport RememberMe from '../styles/remember-me';\r\n\r\nconst SignInForm = ({ handleChange, onSubmit, rememberMe = false, ...props }) => {\r\n const firstInput = useFocusOnMount();\r\n return (\r\n <Form id=\"signInForm\" handleChange={handleChange} onSubmit={onSubmit} {...props}>\r\n <InputWrapper>\r\n <InputLabel>Email</InputLabel>\r\n <InputGroup>\r\n <InputAddon>\r\n <FontAwesomeIcon icon={faUser} fixedWidth />\r\n </InputAddon>\r\n <InputText\r\n inputRef={firstInput}\r\n name=\"username\"\r\n autoComplete=\"email\"\r\n placeholder=\"Email\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <InputLabel>Password</InputLabel>\r\n <InputGroup>\r\n <InputAddon>\r\n <FontAwesomeIcon icon={faLock} fixedWidth />\r\n </InputAddon>\r\n <InputText\r\n name=\"password\"\r\n type=\"password\"\r\n autoComplete=\"current-password\"\r\n placeholder=\"Password\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <RememberMe>\r\n <InputCheckbox name=\"rememberMe\" label=\"Remember me\" defaultChecked={rememberMe} />\r\n <Link to=\"/password-reset\">Forgot password?</Link>\r\n </RememberMe>\r\n <Button brand=\"primary\" type=\"submit\" onClick={onSubmit}>\r\n Login\r\n </Button>\r\n </Form>\r\n );\r\n};\r\n\r\nSignInForm.propTypes = {\r\n handleChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n rememberMe: t.bool,\r\n};\r\n\r\nexport default SignInForm;\r\n","import styled from 'styled-components';\r\n\r\nconst FormSwitcher = styled.div`\r\n width: 100%;\r\n text-align: center;\r\n height: 1em;\r\n margin-top: 0.5em;\r\n margin-bottom: 1em;\r\n`;\r\n\r\nexport default FormSwitcher;\r\n","// Auth cache\r\nconst AUTH_CLEAR = 'app/auth/CLEAR';\r\nconst AUTH_EXPIRING = 'app/auth/EXPIRING';\r\n// const AUTH_EXPIRED = 'app/auth/AUTH_EXPIRED';\r\nconst AUTH_HANDLE_ERROR = 'app/auth/HANDLE_ERROR';\r\nconst AUTH_POPULATE = 'app/auth/POPULATE';\r\n// const AUTH_SESSION_TERMINATED = 'app/auth/AUTH_SESSION_TERMINATED';\r\nconst AUTH_HANDLE_FORM_CHANGE = 'app/auth/HANDLE_FORM_CHANGE';\r\nconst AUTH_INVALIDATE_ATTRIBUTES = 'app/auth/INVALIDATE_ATTRIBUTES';\r\nconst AUTH_INVALIDATE_CACHE = 'app/auth/INVALIDATE_CACHE';\r\nconst AUTH_VALIDATE_ATTRIBUTES = 'app/auth/VALIDATE_ATTRIBUTES';\r\nconst AUTH_VALIDATE_CACHE = 'app/auth/VALIDATE_CACHE';\r\n\r\n// Login\r\nconst AUTH_LOAD_PERMISSIONS_REQUEST = 'app/auth/LOAD_PERMISSIONS_REQUEST';\r\nconst AUTH_LOAD_PERMISSIONS_RESPONSE = 'app/auth/LOAD_PERMISSIONS_RESPONSE';\r\nconst AUTH_LOAD_PERMISSIONS_FAILURE = 'app/auth/LOAD_PERMISSIONS_FAILURE';\r\nconst AUTH_LOAD_PERMISSIONS_SUCCESS = 'app/auth/LOAD_PERMISSIONS_SUCCESS';\r\n\r\n// Login\r\nconst AUTH_LOGIN_REQUEST = 'app/auth/LOGIN_REQUEST';\r\nconst AUTH_LOGIN_RESPONSE = 'app/auth/LOGIN_RESPONSE';\r\nconst AUTH_LOGIN_FAILURE = 'app/auth/LOGIN_FAILURE';\r\nconst AUTH_LOGIN_SUCCESS = 'app/auth/LOGIN_SUCCESS';\r\n\r\n// Logout\r\nconst AUTH_LOGOUT_REQUEST = 'app/auth/LOGOUT_REQUEST';\r\nconst AUTH_LOGOUT_RESPONSE = 'app/auth/LOGOUT_RESPONSE';\r\nconst AUTH_LOGOUT_FAILURE = 'app/auth/LOGOUT_FAILURE';\r\nconst AUTH_LOGOUT_SUCCESS = 'app/auth/LOGOUT_SUCCESS';\r\n\r\n// Password reset\r\nconst AUTH_PASSWORD_RESET_REQUEST = 'app/auth/PASSWORD_RESET_REQUEST';\r\nconst AUTH_PASSWORD_RESET_RESPONSE = 'app/auth/PASSWORD_RESET_RESPONSE';\r\nconst AUTH_PASSWORD_RESET_FAILURE = 'app/auth/PASSWORD_RESET_FAILURE';\r\nconst AUTH_PASSWORD_RESET_SUCCESS = 'app/auth/PASSWORD_RESET_SUCCESS';\r\n\r\n// Password update\r\nconst AUTH_PASSWORD_UPDATE_REQUEST = 'app/auth/PASSWORD_UPDATE_REQUEST';\r\nconst AUTH_PASSWORD_UPDATE_RESPONSE = 'app/auth/PASSWORD_UPDATE_RESPONSE';\r\nconst AUTH_PASSWORD_UPDATE_FAILURE = 'app/auth/PASSWORD_UPDATE_FAILURE';\r\nconst AUTH_PASSWORD_UPDATE_SUCCESS = 'app/auth/PASSWORD_UPDATE_SUCCESS';\r\n\r\n// Signup\r\nconst AUTH_SIGNUP_REQUEST = 'app/auth/SIGNUP_REQUEST';\r\nconst AUTH_SIGNUP_RESPONSE = 'app/auth/SIGNUP_RESPONSE';\r\nconst AUTH_SIGNUP_FAILURE = 'app/auth/SIGNUP_FAILURE';\r\nconst AUTH_SIGNUP_SUCCESS = 'app/auth/SIGNUP_SUCCESS';\r\n\r\n// Silent renew\r\nconst AUTH_SILENT_RENEW_REQUEST = 'app/auth/SILENT_RENEW_REQUEST';\r\nconst AUTH_SILENT_RENEW_RESPONSE = 'app/auth/SILENT_RENEW_RESPONSE';\r\nconst AUTH_SILENT_RENEW_FAILURE = 'app/auth/SILENT_RENEW_FAILURE';\r\nconst AUTH_SILENT_RENEW_SUCCESS = 'app/auth/SILENT_RENEW_SUCCESS';\r\n\r\n// Get Partner Locations\r\nconst AUTH_PARTNER_LOCATION_REQUEST = 'app/auth/PARTNER_LOCATIONS_REQUEST';\r\nconst AUTH_PARTNER_LOCATION_RESPONSE = 'app/auth/PARTNER_LOCATIONS_RESPONSE';\r\nconst AUTH_PARTNER_LOCATION_FAILURE = 'app/auth/PARTNER_LOCATIONS_FAILURE';\r\nconst AUTH_PARTNER_LOCATION_SUCCESS = 'app/auth/PARTNER_LOCATIONS_SUCCESS';\r\n\r\n// Theme\r\nconst AUTH_LOAD_THEME_REQUEST = 'app/auth/LOAD_THEME_REQUEST';\r\nconst AUTH_LOAD_THEME_RESPONSE = 'app/auth/LOAD_THEME_RESPONSE';\r\nconst AUTH_LOAD_THEME_FAILURE = 'app/auth/LOAD_THEME_FAILURE';\r\nconst AUTH_LOAD_THEME_SUCCESS = 'app/auth/LOAD_THEME_SUCCESS';\r\n\r\nexport default {\r\n AUTH_HANDLE_FORM_CHANGE,\r\n AUTH_INVALIDATE_ATTRIBUTES,\r\n AUTH_INVALIDATE_CACHE,\r\n AUTH_VALIDATE_ATTRIBUTES,\r\n AUTH_VALIDATE_CACHE,\r\n\r\n AUTH_LOAD_PERMISSIONS_REQUEST,\r\n AUTH_LOAD_PERMISSIONS_RESPONSE,\r\n AUTH_LOAD_PERMISSIONS_FAILURE,\r\n AUTH_LOAD_PERMISSIONS_SUCCESS,\r\n\r\n AUTH_LOGIN_REQUEST,\r\n AUTH_LOGIN_RESPONSE,\r\n AUTH_LOGIN_FAILURE,\r\n AUTH_LOGIN_SUCCESS,\r\n\r\n AUTH_LOGOUT_REQUEST,\r\n AUTH_LOGOUT_RESPONSE,\r\n AUTH_LOGOUT_FAILURE,\r\n AUTH_LOGOUT_SUCCESS,\r\n\r\n AUTH_PASSWORD_RESET_REQUEST,\r\n AUTH_PASSWORD_RESET_RESPONSE,\r\n AUTH_PASSWORD_RESET_FAILURE,\r\n AUTH_PASSWORD_RESET_SUCCESS,\r\n\r\n AUTH_PASSWORD_UPDATE_REQUEST,\r\n AUTH_PASSWORD_UPDATE_RESPONSE,\r\n AUTH_PASSWORD_UPDATE_FAILURE,\r\n AUTH_PASSWORD_UPDATE_SUCCESS,\r\n\r\n AUTH_SIGNUP_REQUEST,\r\n AUTH_SIGNUP_RESPONSE,\r\n AUTH_SIGNUP_FAILURE,\r\n AUTH_SIGNUP_SUCCESS,\r\n\r\n AUTH_SILENT_RENEW_REQUEST,\r\n AUTH_SILENT_RENEW_RESPONSE,\r\n AUTH_SILENT_RENEW_FAILURE,\r\n AUTH_SILENT_RENEW_SUCCESS,\r\n\r\n AUTH_PARTNER_LOCATION_REQUEST,\r\n AUTH_PARTNER_LOCATION_RESPONSE,\r\n AUTH_PARTNER_LOCATION_FAILURE,\r\n AUTH_PARTNER_LOCATION_SUCCESS,\r\n\r\n AUTH_LOAD_THEME_REQUEST,\r\n AUTH_LOAD_THEME_RESPONSE,\r\n AUTH_LOAD_THEME_FAILURE,\r\n AUTH_LOAD_THEME_SUCCESS,\r\n\r\n AUTH_CLEAR,\r\n // AUTH_EXPIRED,\r\n AUTH_EXPIRING,\r\n AUTH_HANDLE_ERROR,\r\n AUTH_POPULATE,\r\n // AUTH_SESSION_TERMINATED,\r\n // AUTH_SILENT_RENEW_ERROR,\r\n};\r\n","import types from './types';\r\n\r\n// Auth cache actions\r\nconst authClear = () => ({\r\n type: types.AUTH_CLEAR,\r\n});\r\nconst authExpiring = () => ({\r\n type: types.AUTH_EXPIRING,\r\n});\r\nconst authExpired = () => ({\r\n type: types.AUTH_EXPIRED,\r\n});\r\nconst authHandleError = (errors) => ({\r\n type: types.AUTH_HANDLE_ERROR,\r\n errors,\r\n});\r\nconst authPopulate = (data) => ({\r\n type: types.AUTH_POPULATE,\r\n data,\r\n});\r\nconst authSessionTerminated = () => ({\r\n type: types.AUTH_SESSION_TERMINATED,\r\n});\r\nconst authSilentRenewError = (error) => ({\r\n type: types.AUTH_SILENT_RENEW_ERROR,\r\n error,\r\n});\r\nconst authHandleFormChange = (data) => ({\r\n type: types.AUTH_HANDLE_FORM_CHANGE,\r\n data,\r\n});\r\nconst authInvalidateAttributes = (attributes, errorState) => ({\r\n type: types.AUTH_INVALIDATE_ATTRIBUTES,\r\n attributes,\r\n errorState,\r\n});\r\nconst authInvalidateCache = () => ({\r\n type: types.AUTH_INVALIDATE_CACHE,\r\n});\r\nconst authValidateAttributes = (attributes, errorState) => ({\r\n type: types.AUTH_VALIDATE_ATTRIBUTES,\r\n attributes,\r\n errorState,\r\n});\r\nconst authValidateCache = () => ({\r\n type: types.AUTH_VALIDATE_CACHE,\r\n});\r\n\r\n// Login\r\nconst authLoginRequest = () => ({\r\n type: types.AUTH_LOGIN_REQUEST,\r\n});\r\nconst authLoginResponse = (data) => ({\r\n type: types.AUTH_LOGIN_RESPONSE,\r\n data,\r\n});\r\nconst authLoginFailure = () => ({\r\n type: types.AUTH_LOGIN_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst authLoginSuccess = () => ({\r\n type: types.AUTH_LOGIN_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\n// Load permissions\r\nconst authLoadPermissionsRequest = () => ({\r\n type: types.AUTH_LOAD_PERMISSIONS_REQUEST,\r\n});\r\nconst authLoadPermissionsResponse = (data) => ({\r\n type: types.AUTH_LOAD_PERMISSIONS_RESPONSE,\r\n data,\r\n});\r\nconst authLoadPermissionsFailure = () => ({\r\n type: types.AUTH_LOAD_PERMISSIONS_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst authLoadPermissionsSuccess = () => ({\r\n type: types.AUTH_LOAD_PERMISSIONS_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\n// Logout\r\nconst authLogoutRequest = () => ({\r\n type: types.AUTH_LOGOUT_REQUEST,\r\n});\r\nconst authLogoutResponse = () => ({\r\n type: types.AUTH_LOGOUT_RESPONSE,\r\n});\r\nconst authLogoutFailure = () => ({\r\n type: types.AUTH_LOGOUT_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst authLogoutSuccess = () => ({\r\n type: types.AUTH_LOGOUT_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\n// Forgot password\r\nconst authPasswordResetRequest = () => ({\r\n type: types.AUTH_PASSWORD_RESET_REQUEST,\r\n});\r\nconst authPasswordResetResponse = () => ({\r\n type: types.AUTH_PASSWORD_RESET_RESPONSE,\r\n});\r\nconst authPasswordResetFailure = () => ({\r\n type: types.AUTH_PASSWORD_RESET_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst authPasswordResetSuccess = () => ({\r\n type: types.AUTH_PASSWORD_RESET_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\nconst authPasswordUpdateRequest = () => ({\r\n type: types.AUTH_PASSWORD_UPDATE_REQUEST,\r\n});\r\nconst authPasswordUpdateResponse = () => ({\r\n type: types.AUTH_PASSWORD_UPDATE_RESPONSE,\r\n});\r\nconst authPasswordUpdateFailure = () => ({\r\n type: types.AUTH_PASSWORD_UPDATE_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst authPasswordUpdateSuccess = () => ({\r\n type: types.AUTH_PASSWORD_UPDATE_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\n// Signup\r\nconst authSignupRequest = () => ({\r\n type: types.AUTH_SIGNUP_REQUEST,\r\n});\r\nconst authSignupResponse = (data) => ({\r\n type: types.AUTH_SIGNUP_RESPONSE,\r\n data,\r\n});\r\nconst authSignupFailure = () => ({\r\n type: types.AUTH_SIGNUP_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst authSignupSuccess = () => ({\r\n type: types.AUTH_SIGNUP_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\n// Silent renew\r\nconst authSilentRenewRequest = () => ({\r\n type: types.AUTH_SILENT_RENEW_REQUEST,\r\n});\r\nconst authSilentRenewResponse = (data) => ({\r\n type: types.AUTH_SILENT_RENEW_RESPONSE,\r\n data,\r\n});\r\nconst authSilentRenewFailure = () => ({\r\n type: types.AUTH_SILENT_RENEW_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst authSilentRenewSuccess = () => ({\r\n type: types.AUTH_SILENT_RENEW_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\nconst authPartnerLocationRequest = () => ({\r\n type: types.AUTH_PARTNER_LOCATION_REQUEST,\r\n});\r\nconst authPartnerLocationResponse = (data) => ({\r\n type: types.AUTH_PARTNER_LOCATION_RESPONSE,\r\n data,\r\n});\r\nconst authPartnerLocationFailure = () => ({\r\n type: types.AUTH_PARTNER_LOCATION_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst authPartnerLocationSuccess = () => ({\r\n type: types.AUTH_PARTNER_LOCATION_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\n// Load theme preference\r\nconst authLoadThemeRequest = () => ({\r\n type: types.AUTH_LOAD_THEME_REQUEST,\r\n});\r\nconst authLoadThemeResponse = (data) => ({\r\n type: types.AUTH_LOAD_THEME_RESPONSE,\r\n data,\r\n});\r\nconst authLoadThemeFailure = () => ({\r\n type: types.AUTH_LOAD_THEME_FAILURE,\r\n lastUpdated: Date.now(),\r\n});\r\nconst authLoadThemeSuccess = () => ({\r\n type: types.AUTH_LOAD_THEME_SUCCESS,\r\n lastUpdated: Date.now(),\r\n});\r\n\r\nexport default {\r\n authHandleFormChange,\r\n authInvalidateAttributes,\r\n authInvalidateCache,\r\n authValidateAttributes,\r\n authValidateCache,\r\n\r\n authLoadPermissionsRequest,\r\n authLoadPermissionsResponse,\r\n authLoadPermissionsFailure,\r\n authLoadPermissionsSuccess,\r\n\r\n authLoginRequest,\r\n authLoginResponse,\r\n authLoginFailure,\r\n authLoginSuccess,\r\n\r\n authLogoutRequest,\r\n authLogoutResponse,\r\n authLogoutFailure,\r\n authLogoutSuccess,\r\n\r\n authPasswordResetRequest,\r\n authPasswordResetResponse,\r\n authPasswordResetFailure,\r\n authPasswordResetSuccess,\r\n\r\n authPasswordUpdateRequest,\r\n authPasswordUpdateResponse,\r\n authPasswordUpdateFailure,\r\n authPasswordUpdateSuccess,\r\n\r\n authSignupRequest,\r\n authSignupResponse,\r\n authSignupFailure,\r\n authSignupSuccess,\r\n\r\n authSilentRenewRequest,\r\n authSilentRenewResponse,\r\n authSilentRenewFailure,\r\n authSilentRenewSuccess,\r\n\r\n authPartnerLocationRequest,\r\n authPartnerLocationResponse,\r\n authPartnerLocationFailure,\r\n authPartnerLocationSuccess,\r\n\r\n authClear,\r\n authExpiring,\r\n authExpired,\r\n authHandleError,\r\n authPopulate,\r\n authSessionTerminated,\r\n authSilentRenewError,\r\n\r\n authLoadThemeRequest,\r\n authLoadThemeResponse,\r\n authLoadThemeFailure,\r\n authLoadThemeSuccess,\r\n};\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class RegisterValidator extends FormValidator {\r\n // Register tab validators\r\n email(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n validator.isValidSingleEmail();\r\n }\r\n\r\n password(validator) {\r\n validator.isRequired();\r\n validator.hasMinLength(8);\r\n validator.isValidPassword();\r\n }\r\n\r\n oldPassword(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n newPassword(validator, state) {\r\n validator.isRequired();\r\n if (validator.value !== state.password) {\r\n validator.handleFailure('does not match.');\r\n }\r\n }\r\n\r\n confirmPassword(validator, state) {\r\n validator.isRequired();\r\n if (validator.value !== state.password) {\r\n validator.handleFailure('does not match.');\r\n }\r\n }\r\n\r\n // Info tab validators\r\n daylightSavings(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n firstName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n\r\n lastName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n middleInitial(validator) {\r\n validator.hasMaxLength(1);\r\n }\r\n\r\n phoneNumber(validator) {\r\n validator.isRequired();\r\n validator.isValidPhoneNumber();\r\n }\r\n\r\n partnerMemeberId(validator, state) {\r\n // validator.isRequired();\r\n }\r\n\r\n registrationCode(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n suffix(validator) {\r\n validator.hasMaxLength(15);\r\n }\r\n\r\n textNotifications(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n timeZone(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n /*clientNonProfit(validator, state) {\r\n if (false) {\r\n validator.isRequired();\r\n }\r\n }*/\r\n}\r\n\r\nexport default RegisterValidator;\r\n","import actions from './actions';\r\nimport RegisterValidator from './validators';\r\nimport { persistClearState, persistSaveState } from '../../persist';\r\nimport { getRefreshToken, getToken, getUserId } from './selectors';\r\nimport { todosLoadCollection } from '../../todos';\r\nimport {\r\n baseFetch,\r\n createErrorState,\r\n getApiSingle,\r\n keyById,\r\n normalize,\r\n patchApi,\r\n postApi,\r\n resourceOperationsGenerator,\r\n safeAccess,\r\n} from '../../utils';\r\n\r\nexport const anonAuthLogin = () => async (dispatch) => {\r\n const data = {\r\n client_id: process.env.REACT_APP_AUTH_CLIENT_ID,\r\n client_secret: process.env.REACT_APP_AUTH_CLIENT_SECRET,\r\n grant_type: 'client_credentials',\r\n scope: 'user.create',\r\n };\r\n\r\n const formData = Object.keys(data).reduce((form, k) => {\r\n form.append(k, data[k]);\r\n return form;\r\n }, new FormData());\r\n\r\n const opts = {\r\n body: formData,\r\n headers: {\r\n 'Cache-Control': 'no-cache',\r\n Pragma: 'no-cache',\r\n },\r\n method: 'POST',\r\n };\r\n\r\n try {\r\n dispatch(actions.authLoginRequest());\r\n const data = await baseFetch(`${process.env.REACT_APP_AUTH_BASE_URL}/connect/token`, opts);\r\n // Normalize the token data to camelCase and to conform to the API\r\n if (data) {\r\n data['accessToken'] = data.access_token ? data.access_token : null;\r\n delete data.access_token;\r\n data['refreshToken'] = data.refresh_token ? data.refresh_token : null;\r\n delete data.refresh_token;\r\n data['tokenExpiresIn'] = data.expires_in ? data.expires_in : null;\r\n delete data.expires_in;\r\n data['tokenType'] = data.token_type ? data.token_type : null;\r\n delete data.token_type;\r\n }\r\n dispatch(actions.authLoginResponse());\r\n await Promise.all(dispatch(authPopulate(data)));\r\n dispatch(actions.authLoginSuccess());\r\n } catch (error) {\r\n dispatch(actions.authLoginFailure());\r\n }\r\n};\r\n\r\nexport const authCRMLogin = (username, password) => async (dispatch) => {\r\n await dispatch(\r\n authLogin(\r\n username,\r\n password,\r\n process.env.REACT_APP_AUTH_CRM_CLIENT_ID,\r\n process.env.REACT_APP_AUTH_CRM_CLIENT_SECRET,\r\n 'openid fiducius.read'\r\n )\r\n );\r\n};\r\n\r\nexport const authClientLogin = (username, password) => async (dispatch) => {\r\n await dispatch(\r\n authLogin(\r\n username,\r\n password,\r\n process.env.REACT_APP_AUTH_CLIENT_ID,\r\n process.env.REACT_APP_AUTH_CLIENT_SECRET,\r\n 'offline_access openid profile fiducius.read fiducius.write'\r\n )\r\n );\r\n};\r\n\r\nexport const authLogin = (username, password, id, secret, scope) => async (dispatch) => {\r\n const data = {\r\n client_id: id,\r\n client_secret: secret,\r\n grant_type: 'password',\r\n scope: scope,\r\n password,\r\n username,\r\n };\r\n\r\n const formData = Object.keys(data).reduce((form, k) => {\r\n form.append(k, data[k]);\r\n return form;\r\n }, new FormData());\r\n\r\n const opts = {\r\n body: formData,\r\n headers: {\r\n 'Cache-Control': 'no-cache',\r\n Pragma: 'no-cache',\r\n },\r\n method: 'POST',\r\n };\r\n try {\r\n dispatch(actions.authLoginRequest());\r\n const data = await baseFetch(`${process.env.REACT_APP_AUTH_BASE_URL}/connect/token`, opts);\r\n // Normalize the token data to camelCase and to conform to the API\r\n if (data) {\r\n data['accessToken'] = data.access_token ? data.access_token : null;\r\n delete data.access_token;\r\n data['refreshToken'] = data.refresh_token ? data.refresh_token : null;\r\n delete data.refresh_token;\r\n data['tokenExpiresIn'] = data.expires_in ? data.expires_in : null;\r\n delete data.expires_in;\r\n data['tokenType'] = data.token_type ? data.token_type : null;\r\n delete data.token_type;\r\n }\r\n dispatch(actions.authLoginResponse());\r\n await dispatch(authPopulate(data));\r\n await Promise.all([dispatch(authLoadPermissions()), dispatch(todosLoadCollection())]);\r\n dispatch(actions.authLoginSuccess());\r\n } catch (error) {\r\n dispatch(actions.authLoginFailure());\r\n }\r\n};\r\n\r\nexport const authSilentRenew = () => async (dispatch, getState) => {\r\n const data = {\r\n client_id: process.env.REACT_APP_AUTH_CLIENT_ID,\r\n client_secret: process.env.REACT_APP_AUTH_CLIENT_SECRET,\r\n grant_type: 'refresh_token',\r\n scope: 'offline_access openid profile fiducius.read fiducius.write',\r\n refresh_token: getRefreshToken(getState()),\r\n };\r\n\r\n const formData = Object.keys(data).reduce((form, k) => {\r\n form.append(k, data[k]);\r\n return form;\r\n }, new FormData());\r\n\r\n const opts = {\r\n method: 'POST',\r\n body: formData,\r\n };\r\n\r\n try {\r\n dispatch(actions.authSilentRenewRequest());\r\n const data = await baseFetch(`${process.env.REACT_APP_AUTH_BASE_URL}/connect/token`, opts);\r\n // Normalize the token data to camelCase and to conform to the API\r\n if (data) {\r\n data['accessToken'] = data.access_token ? data.access_token : null;\r\n delete data.access_token;\r\n data['refreshToken'] = data.refresh_token ? data.refresh_token : null;\r\n delete data.refresh_token;\r\n data['tokenExpiresIn'] = data.expires_in ? data.expires_in : null;\r\n delete data.expires_in;\r\n data['tokenType'] = data.token_type ? data.token_type : null;\r\n delete data.token_type;\r\n }\r\n dispatch(actions.authSilentRenewResponse());\r\n await dispatch(authPopulate(data));\r\n await Promise.all([dispatch(authLoadPermissions()), dispatch(todosLoadCollection())]);\r\n dispatch(actions.authSilentRenewSuccess());\r\n } catch (error) {\r\n dispatch(actions.authSilentRenewFailure());\r\n }\r\n};\r\n\r\nexport const authLoadPermissions = () => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n const state = getState();\r\n try {\r\n dispatch(actions.authLoadPermissionsRequest());\r\n let data = await getApiSingle(getToken(state), `/customer-status/${getUserId(state)}`);\r\n\r\n dispatch(actions.authLoadPermissionsResponse());\r\n\r\n const cache = {\r\n ...getState().auth.cache,\r\n permissions: { ...data, benefits: { ...keyById(data.benefits) } },\r\n };\r\n\r\n await dispatch(authPopulate(cache));\r\n dispatch(actions.authLoadPermissionsSuccess());\r\n } catch (error) {\r\n await dispatch(actions.authHandleError(error));\r\n dispatch(actions.authLoadPermissionsFailure(error));\r\n }\r\n};\r\n\r\nexport const authLogout = () => async (dispatch, getState) => {\r\n // TODO: Don't really need a request here...\r\n try {\r\n dispatch(actions.authLogoutRequest());\r\n dispatch(actions.authLogoutResponse());\r\n await dispatch(persistClearState());\r\n dispatch(actions.authLogoutSuccess());\r\n } catch (error) {\r\n dispatch(actions.authLogoutFailure());\r\n }\r\n};\r\n\r\n// Password reset\r\nexport const authPasswordReset = (email) => async (dispatch) => {\r\n try {\r\n dispatch(actions.authPasswordResetRequest());\r\n await getApiSingle(null, '/password-reset/' + email);\r\n dispatch(actions.authPasswordResetResponse());\r\n await dispatch(persistClearState());\r\n dispatch(actions.authPasswordResetSuccess());\r\n } catch (error) {\r\n dispatch(actions.authPasswordResetFailure());\r\n }\r\n};\r\n\r\nexport const authThemePreference = (domain) => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.authLoadThemeRequest());\r\n const data = await getApiSingle(null, '/settings/' + domain);\r\n dispatch(actions.authLoadThemeResponse());\r\n dispatch(actions.authLoadThemeSuccess());\r\n\r\n return data;\r\n } catch (error) {\r\n dispatch(actions.authLoadThemeFailure());\r\n }\r\n};\r\n\r\nexport const authPasswordOutOfDateReset = (\r\n token,\r\n email,\r\n oldPassword,\r\n newPassword,\r\n password\r\n) => async (dispatch, getState) => {\r\n const state = getState();\r\n const patchData = normalize(\r\n 'password-reset',\r\n {\r\n token: token,\r\n oldPassword: oldPassword,\r\n password: password,\r\n confirmPassword: newPassword,\r\n },\r\n email\r\n );\r\n\r\n try {\r\n dispatch(actions.authPasswordUpdateRequest());\r\n await patchApi(getToken(state), '/password-reset/' + email, patchData);\r\n dispatch(actions.authPasswordUpdateResponse());\r\n await dispatch(persistClearState());\r\n await dispatch(authClientLogin(email, password));\r\n dispatch(actions.authPasswordUpdateSuccess());\r\n } catch (error) {\r\n dispatch(authHandleError(error));\r\n dispatch(actions.authPasswordUpdateFailure());\r\n }\r\n};\r\n\r\nexport const authPasswordUpdate = (token, email, password, confirmPassword) => async (\r\n dispatch,\r\n getState\r\n) => {\r\n const patchData = normalize(\r\n 'password-reset',\r\n {\r\n token: token,\r\n password: password,\r\n confirmPassword: confirmPassword,\r\n },\r\n email\r\n );\r\n\r\n try {\r\n dispatch(actions.authPasswordUpdateRequest());\r\n await patchApi(null, '/password-reset/' + email, patchData);\r\n dispatch(actions.authPasswordUpdateResponse());\r\n await dispatch(persistClearState());\r\n dispatch(actions.authPasswordUpdateSuccess());\r\n } catch (error) {\r\n dispatch(authHandleError(error));\r\n dispatch(actions.authPasswordUpdateFailure());\r\n }\r\n};\r\n\r\nexport const authGetPartnerLocations = (domain) => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.authPartnerLocationRequest());\r\n const data = await getApiSingle(null, '/strategic-partner-ext/' + domain);\r\n const authData = { ...getState().auth.cache, partnerLocations: data };\r\n dispatch(actions.authPartnerLocationResponse());\r\n await dispatch(authPopulate(authData));\r\n dispatch(actions.authPartnerLocationSuccess());\r\n } catch (error) {\r\n dispatch(authHandleError(error));\r\n dispatch(actions.authPartnerLocationFailure(error));\r\n }\r\n};\r\n\r\nexport const authPopulate = (data) => async (dispatch) => {\r\n dispatch(actions.authPopulate(data));\r\n await dispatch(persistSaveState());\r\n};\r\n\r\nexport const authHandleError = (error, attributes = null) => async (dispatch, getState) => {\r\n const prevErrors = getState().auth.errors;\r\n const errorState = createErrorState(error, prevErrors, attributes);\r\n dispatch(actions.authHandleError(errorState));\r\n};\r\n\r\nconst authHandleRegistrationError = (error, attributes = null) => async (dispatch, getState) => {\r\n const prevErrors = getState().auth.errors;\r\n const errorState = createErrorState(error, prevErrors, attributes);\r\n dispatch(actions.authHandleError(errorState));\r\n\r\n const domains = window.location.hostname.split('.');\r\n const domain = domains.length > 2 ? domains[domains.length - 3] : 'islsoffice';\r\n await dispatch(authGetPartnerLocations(domain));\r\n};\r\n\r\nconst getUrlParams = () => {\r\n var match,\r\n pl = /\\+/g, // Regex for replacing addition symbol with a space\r\n search = /([^&=]+)=?([^&]*)/g,\r\n decode = function(s) {\r\n return decodeURIComponent(s.replace(pl, ' '));\r\n },\r\n query = window.location.search.substring(1);\r\n let urlParams = [];\r\n while ((match = search.exec(query))) {\r\n const data = { 'field-name': decode(match[1]), 'field-value': decode(match[2]) };\r\n urlParams.push(data);\r\n }\r\n\r\n return urlParams;\r\n};\r\n\r\nexport const authSignup = (formData) => async (dispatch, getState) => {\r\n try {\r\n await dispatch(anonAuthLogin());\r\n dispatch(actions.authSignupRequest());\r\n const state = getState();\r\n formData.partnerDefinedFields = getUrlParams();\r\n const data = await postApi(\r\n getToken(state),\r\n '/register-ext',\r\n normalize('register-ext', formData)\r\n );\r\n dispatch(actions.authSignupResponse());\r\n await dispatch(authPopulate(data[0]));\r\n await Promise.all([dispatch(authLoadPermissions()), dispatch(todosLoadCollection())]);\r\n dispatch(actions.authSignupSuccess());\r\n } catch (error) {\r\n dispatch(authHandleRegistrationError(error));\r\n dispatch(actions.authSignupFailure(error));\r\n }\r\n};\r\n\r\nconst authValidateAttributes = (attributes) => async (dispatch, getState) => {\r\n const formState = getState().auth.form;\r\n try {\r\n dispatch(actions.authInvalidateAttributes(attributes, getState().auth.errors));\r\n const validator = new RegisterValidator();\r\n validator.validateAttributes(attributes, formState);\r\n } catch (error) {\r\n dispatch(authHandleError(error, attributes));\r\n } finally {\r\n dispatch(actions.authValidateAttributes(attributes, getState().auth.errors));\r\n }\r\n};\r\n\r\nexport const authHandleFormChange = (data, attributes = null) => async (dispatch, getState) => {\r\n dispatch(actions.authHandleFormChange(data));\r\n dispatch(actions.authInvalidateCache());\r\n dispatch(authValidateAttributes(attributes));\r\n};\r\n\r\nconst endpointHandler = {\r\n endpoint: '/login',\r\n customResponseHandler: null,\r\n resourceType: 'login',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'login',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n loginLoadResource,\r\n loginClearForm,\r\n loginUpdateResource,\r\n loginHandleFormChange,\r\n loginCopyResourceToForm,\r\n loginCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n loginCopyResourceToForm,\r\n loginLoadResource,\r\n loginHandleFormChange,\r\n loginClearForm,\r\n loginUpdateResource,\r\n loginCreateResource,\r\n};\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { CardBody, CardHeader, Loader, Header1 } from 'fiducius-ui';\r\nimport { Link, Redirect, withRouter } from 'react-router-dom';\r\n\r\nimport { ShadowAddCard } from '../../routing';\r\nimport { persistRememberMe } from '../../persist';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport SignInForm from '../components/sign-in-form';\r\nimport FormSwitcher from '../styles/form-switcher';\r\n\r\nimport LoaderWrapper from '../styles/loader-wrapper';\r\nimport { isAuthenticated, passwordNeedsReset, authGetRedirectPath } from '../redux/selectors';\r\nimport { authClientLogin, authThemePreference } from '../redux/operations';\r\n\r\nconst FinePrint = styled.div`\r\n font-size: calc(1rem);\r\n && > a {\r\n font-weight: ${(p) => p.theme.fontWeightNormal};\r\n color: ${(p) => p.theme.textPrimary};\r\n }\r\n`;\r\n\r\nclass Login extends React.Component {\r\n static propTypes = {\r\n domain: t.string.isRequired,\r\n hasFailed: t.bool.isRequired,\r\n isAuthenticated: t.bool.isRequired,\r\n permissions: t.object,\r\n isLoading: t.bool.isRequired,\r\n location: t.object.isRequired,\r\n rememberMe: t.bool.isRequired,\r\n signIn: t.func.isRequired,\r\n clientStatus: t.string,\r\n updateRememberMe: t.func.isRequired,\r\n passwordNeedsReset: t.bool,\r\n theme: t.object.isRequired,\r\n getThemePreference: t.func.isRequired,\r\n changeTheme: t.func.isRequired,\r\n getRedirectPath: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n referrer: this.wasReferred(props.location),\r\n rememberMe: props.rememberMe,\r\n username: null,\r\n password: null,\r\n };\r\n }\r\n\r\n componentWillMount() {}\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.state.rememberMe !== prevState.rememberMe) {\r\n this.props.updateRememberMe(this.state.rememberMe);\r\n }\r\n }\r\n\r\n getForm() {\r\n const { isLoading, rememberMe } = this.props;\r\n if (isLoading) {\r\n return (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n );\r\n } else {\r\n return (\r\n <SignInForm\r\n rememberMe={rememberMe}\r\n onSubmit={this.login}\r\n handleChange={this.handleChange}\r\n />\r\n );\r\n }\r\n }\r\n\r\n handleChange = (formState) => {\r\n this.setState({ ...this.state, ...formState });\r\n };\r\n\r\n login = (e) => {\r\n e.preventDefault();\r\n const { username, password, rememberMe } = this.state;\r\n this.props.signIn(username, password, rememberMe);\r\n };\r\n\r\n wasReferred = (location) => safeAccess(location, 'state.from.pathname', '');\r\n\r\n render() {\r\n // Just redirect if we're logged in\r\n if (this.props.isAuthenticated) {\r\n return (\r\n <Redirect\r\n to={\r\n this.props.getRedirectPath === 'referrer'\r\n ? this.state.referrer || '/dashboard'\r\n : this.props.getRedirectPath\r\n }\r\n />\r\n );\r\n /*if (this.props.passwordNeedsReset) {\r\n return <Redirect to={'/password-out-of-date'} />;\r\n } else {\r\n return <Redirect to={this.state.referrer || '/dashboard'} />;\r\n }*/\r\n }\r\n\r\n return (\r\n <>\r\n <Header1>Sign In</Header1>\r\n <ShadowAddCard brand={(this.props.hasFailed && 'danger') || 'secondary'}>\r\n {(this.props.hasFailed || this.props.domain.includes('trinityhealth')) && (\r\n <CardHeader>\r\n {this.props.hasFailed ? (\r\n <>Login Failed</>\r\n ) : this.props.domain.includes('trinityhealth') ? (\r\n <FinePrint>\r\n NOTE: Our new website is optimized for modern browsers, including Chrome, Firefox\r\n and Safari. We strongly encourage you to use one of these browsers for the best\r\n experience and security. If you're using IE and have issues, contact your Fiducius\r\n support team at{' '}\r\n <a href=\"mailto:customer.service@getfiducius.com\">\r\n customer.service@getfiducius.com\r\n </a>\r\n .{/*or{' '}\r\n <a href=\"tel:15136455400\">+1 (513) 645-5400</a>.*/}\r\n </FinePrint>\r\n ) : (\r\n <></>\r\n )}\r\n </CardHeader>\r\n )}\r\n\r\n <CardBody>{this.getForm()}</CardBody>\r\n <FormSwitcher>\r\n New here? <Link to=\"/register\">Create account</Link>\r\n </FormSwitcher>\r\n </ShadowAddCard>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.auth;\r\n return {\r\n hasFailed: requests.login.hasFailed,\r\n isAuthenticated: isAuthenticated(state),\r\n isLoading: requests.login.isLoading || requests.loadPermissions.isLoading,\r\n rememberMe: state.persist.cache.rememberMe,\r\n passwordNeedsReset: passwordNeedsReset(state),\r\n theme: safeAccess(state, 'auth.cache.theme'),\r\n getRedirectPath: authGetRedirectPath(state, true),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n signIn: (username, password, remember) => dispatch(authClientLogin(username, password, remember)),\r\n updateRememberMe: (rememberMe) => dispatch(persistRememberMe(rememberMe)),\r\n getThemePreference: (domain) => dispatch(authThemePreference(domain)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(Login));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faUser } from '@fortawesome/pro-light-svg-icons/faUser';\r\nimport { faLock } from '@fortawesome/pro-light-svg-icons/faLock';\r\nimport {\r\n Button,\r\n Form,\r\n InputAddon,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { useFocusOnMount } from '../../utils';\r\n\r\nconst SignInCRMForm = ({ handleChange, onSubmit, ...props }) => {\r\n const firstInput = useFocusOnMount();\r\n return (\r\n <Form id=\"signInForm\" handleChange={handleChange} onSubmit={onSubmit} {...props}>\r\n <InputWrapper>\r\n <InputLabel>Username</InputLabel>\r\n <InputGroup>\r\n <InputAddon>\r\n <FontAwesomeIcon icon={faUser} fixedWidth />\r\n </InputAddon>\r\n <InputText\r\n inputRef={firstInput}\r\n name=\"username\"\r\n autoComplete=\"username\"\r\n placeholder=\"Username\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <InputLabel>Password</InputLabel>\r\n <InputGroup>\r\n <InputAddon>\r\n <FontAwesomeIcon icon={faLock} fixedWidth />\r\n </InputAddon>\r\n <InputText\r\n name=\"password\"\r\n type=\"password\"\r\n autoComplete=\"current-password\"\r\n placeholder=\"Password\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <Button brand=\"primary\" type=\"submit\" onClick={onSubmit}>\r\n Login\r\n </Button>\r\n </Form>\r\n );\r\n};\r\n\r\nSignInCRMForm.propTypes = {\r\n handleChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n};\r\n\r\nexport default SignInCRMForm;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { CardBody, CardHeader, Loader } from 'fiducius-ui';\r\nimport { Redirect, withRouter } from 'react-router-dom';\r\n\r\nimport { ShadowAddCard } from '../../routing';\r\n\r\nimport SignInCRMForm from '../components/sign-in-crm';\r\nimport LoaderWrapper from '../styles/loader-wrapper';\r\nimport { isAuthenticated } from '../redux/selectors';\r\nimport { authCRMLogin, authLogout } from '../redux/operations';\r\n\r\nclass CRMLogin extends React.Component {\r\n static propTypes = {\r\n domain: t.string.isRequired,\r\n hasFailed: t.bool.isRequired,\r\n isAuthenticated: t.bool.isRequired,\r\n permissions: t.object,\r\n isLoading: t.bool.isRequired,\r\n location: t.object.isRequired,\r\n signIn: t.func.isRequired,\r\n clientStatus: t.string,\r\n auth: t.object,\r\n signOut: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n username: null,\r\n password: null,\r\n loaded: false,\r\n fromCRM: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { isAuthenticated, signOut, auth } = this.props;\r\n const referrer = document.referrer;\r\n let { loaded, fromCRM } = this.state;\r\n\r\n if (referrer.includes(process.env.REACT_APP_CRM_URL)) {\r\n fromCRM = true;\r\n }\r\n\r\n if (isAuthenticated) {\r\n signOut(auth.username).then((a) => {\r\n loaded = true;\r\n this.setState({ ...this.state, loaded: loaded, fromCRM: fromCRM });\r\n });\r\n } else {\r\n loaded = true;\r\n this.setState({ ...this.state, loaded: loaded, fromCRM: fromCRM });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {}\r\n\r\n getForm() {\r\n const { isLoading } = this.props;\r\n if (isLoading) {\r\n return (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n );\r\n } else {\r\n return <SignInCRMForm onSubmit={this.login} handleChange={this.handleChange} />;\r\n }\r\n }\r\n\r\n handleChange = (formState) => {\r\n this.setState({ ...this.state, ...formState });\r\n };\r\n\r\n login = (e) => {\r\n e.preventDefault();\r\n const { username, password } = this.state;\r\n this.props.signIn(username, password);\r\n };\r\n\r\n render() {\r\n // Just redirect if we're logged in\r\n if (this.state.loaded && this.props.isAuthenticated) {\r\n return <Redirect to={'/dashboard'} />;\r\n } else if (this.state.loaded && !this.state.fromCRM) {\r\n return <Redirect to={'/error/404'} />;\r\n }\r\n\r\n return (\r\n <>\r\n <ShadowAddCard brand={(this.props.hasFailed && 'danger') || 'secondary'}>\r\n {this.props.hasFailed && (\r\n <CardHeader>{this.props.hasFailed && <>Login Failed</>}</CardHeader>\r\n )}\r\n\r\n <CardBody>{this.getForm()}</CardBody>\r\n </ShadowAddCard>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.auth;\r\n return {\r\n hasFailed: requests.login.hasFailed,\r\n isAuthenticated: isAuthenticated(state),\r\n isLoading: requests.login.isLoading || requests.loadPermissions.isLoading,\r\n auth: state.auth.cache,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n signIn: (username, password) => dispatch(authCRMLogin(username, password)),\r\n signOut: (username) => dispatch(authLogout(username)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(CRMLogin));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { CardBody, Loader } from 'fiducius-ui';\r\n\r\nimport { ShadowAddCard } from '../../routing';\r\n\r\nimport LoaderWrapper from '../styles/loader-wrapper';\r\nimport { isAuthenticated } from '../redux/selectors';\r\nimport { authLogout } from '../redux/operations';\r\n\r\nclass Logout extends React.Component {\r\n static propTypes = {\r\n isAuthenticated: t.bool.isRequired,\r\n isLoading: t.bool.isRequired,\r\n signOut: t.func.isRequired,\r\n auth: t.object,\r\n };\r\n\r\n componentDidMount() {\r\n // On mount we log out the user\r\n const { isAuthenticated, signOut, auth } = this.props;\r\n if (isAuthenticated) {\r\n window.hideChat();\r\n signOut(auth.username);\r\n }\r\n }\r\n\r\n render() {\r\n const { isAuthenticated, isLoading } = this.props;\r\n\r\n // User has been logged out, redirect them to login\r\n if (!isAuthenticated && !isLoading) {\r\n return <Redirect to=\"/login\" />;\r\n }\r\n\r\n // Render loading while we wait for the logout\r\n return (\r\n <ShadowAddCard>\r\n <CardBody>\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n </CardBody>\r\n </ShadowAddCard>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isAuthenticated: isAuthenticated(state),\r\n isLoading: state.auth.requests.logout.isLoading,\r\n auth: state.auth.cache,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n signOut: (username) => dispatch(authLogout(username)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Logout);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport t from 'prop-types';\r\nimport { Button, Form, InputGroup, InputLabel, InputText, InputWrapper, Alert } from 'fiducius-ui';\r\n\r\nimport { safeAccess, useFocusOnMount } from '../../utils';\r\n\r\nimport NewPassword from './new-password';\r\nconst FinePrint = styled.div`\r\n font-size: calc(1rem);\r\n`;\r\n\r\nconst StyledLink = styled.a`\r\n color: rgb(24, 188, 112);\r\n`;\r\nconst PasswordUpdateForm = ({ data, errors = {}, handleChange, onSubmit }) => {\r\n const firstInput = useFocusOnMount();\r\n return (\r\n <Form id=\"passwordUpdateForm\" handleChange={handleChange} onSubmit={onSubmit} defaults={data}>\r\n {safeAccess(errors, 'errorMessage') && (\r\n <Alert>{safeAccess(errors, 'errorMessage.detail')}</Alert>\r\n )}\r\n <InputWrapper>\r\n <InputLabel>Email</InputLabel>\r\n <InputGroup>\r\n <InputText inputRef={firstInput} name=\"email\" defaultValue=\"\" autoComplete=\"username\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <NewPassword\r\n error={safeAccess(errors, 'password.detail')}\r\n label={'New Password'}\r\n fieldName={'password'}\r\n />\r\n <NewPassword\r\n error={safeAccess(errors, 'newPassword.detail')}\r\n label={'Confirm New Password'}\r\n fieldName={'newPassword'}\r\n />\r\n <InputWrapper>\r\n <Button brand=\"primary\" type=\"submit\" onClick={onSubmit}>\r\n Update password\r\n </Button>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <FinePrint>Having trouble setting your password?</FinePrint>\r\n <FinePrint>\r\n Contact us at{' '}\r\n <StyledLink href=\"mailto:LoginAssistance@getfiducius.com\">\r\n LoginAssistance@getfiducius.com\r\n </StyledLink>{' '}\r\n for assistance.\r\n </FinePrint>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n};\r\n\r\nPasswordUpdateForm.propTypes = {\r\n data: t.object.isRequired,\r\n errors: t.object,\r\n handleChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n};\r\n\r\nexport default PasswordUpdateForm;\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport queryString from 'query-string';\r\nimport { Redirect, withRouter } from 'react-router-dom';\r\nimport { CardBody, CardHeader, Loader, Header1 } from 'fiducius-ui';\r\n\r\nimport { ShadowAddCard } from '../../routing';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport PasswordUpdateForm from '../components/password-update-form';\r\nimport { authHandleFormChange, authPasswordUpdate } from '../redux/operations';\r\nimport { isAuthenticated, authGetRedirectPath } from '../redux/selectors';\r\nimport LoaderWrapper from '../styles/loader-wrapper';\r\n\r\nconst PasswordUpdate = ({\r\n errors,\r\n isAuthenticated,\r\n location,\r\n request,\r\n submitChange,\r\n validatePassword,\r\n getRedirectPathAuthenticated,\r\n getRedirectPathPublic,\r\n}) => {\r\n const params = queryString.parse(location.search);\r\n const [formState, updateFormState] = useState({ token: params.token, email: '', password: '' });\r\n if (isAuthenticated) {\r\n return (\r\n <Redirect\r\n to={\r\n getRedirectPathAuthenticated === 'referrer' ? '/dashboard' : getRedirectPathAuthenticated\r\n }\r\n />\r\n );\r\n } else if (request.hasFinished && !request.hasFailed) {\r\n return (\r\n <Redirect to={getRedirectPathPublic === 'referrer' ? '/dashboard' : getRedirectPathPublic} />\r\n );\r\n } else {\r\n return (\r\n <>\r\n <Header1>Update Password</Header1>\r\n <ShadowAddCard brand={(request.hasFailed && 'danger') || 'primary'}>\r\n {request.hasFailed && <CardHeader>Password Update Failed</CardHeader>}\r\n <CardBody>\r\n {request.isLoading ? (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n ) : (\r\n <PasswordUpdateForm\r\n data={formState}\r\n errors={errors}\r\n handleChange={(state) => {\r\n updateFormState(state);\r\n validatePassword(state.password, state.newPassword);\r\n }}\r\n onSubmit={(e) => {\r\n e.preventDefault();\r\n submitChange(formState);\r\n }}\r\n />\r\n )}\r\n </CardBody>\r\n </ShadowAddCard>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nPasswordUpdate.propTypes = {\r\n errors: t.object,\r\n isAuthenticated: t.bool.isRequired,\r\n location: t.shape({\r\n search: t.string,\r\n }),\r\n request: t.object,\r\n submitChange: t.func.isRequired,\r\n validatePassword: t.func.isRequired,\r\n getRedirectPathAuthenticated: t.string,\r\n getRedirectPathPublic: t.string,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n errors: (state.auth && state.auth.errors) || {},\r\n isAuthenticated: isAuthenticated(state),\r\n request: safeAccess(state, 'auth.requests.passwordUpdate', {}),\r\n getRedirectPathAuthenticated: authGetRedirectPath(state, true),\r\n getRedirectPathPublic: authGetRedirectPath(state, false),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n submitChange: ({ email, token, password, newPassword }) =>\r\n dispatch(authPasswordUpdate(token, email, password, newPassword)),\r\n validatePassword: (newPassword, password) =>\r\n dispatch(\r\n authHandleFormChange({ newPassword: newPassword, password: password }, [\r\n 'newPassword',\r\n 'password',\r\n ])\r\n ),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(PasswordUpdate));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport t from 'prop-types';\r\nimport {\r\n Button,\r\n Form,\r\n InputGroup,\r\n InputLabel,\r\n InputHelp,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\nimport { useFocusOnMount } from '../../utils';\r\n\r\nconst FinePrint = styled.div`\r\n font-size: calc(1rem);\r\n`;\r\n\r\nconst StyledLink = styled.a`\r\n color: rgb(24, 188, 112);\r\n`;\r\n\r\nconst PasswordResetForm = ({ email, handleChange, onSubmit }) => {\r\n const firstInput = useFocusOnMount();\r\n return (\r\n <Form id=\"passwordResetForm\" onSubmit={onSubmit}>\r\n <InputWrapper>\r\n <InputLabel>Email</InputLabel>\r\n <InputGroup>\r\n <InputText inputRef={firstInput} name=\"email\" value={email} onChange={handleChange} />\r\n </InputGroup>\r\n <InputHelp>This is the email you use to login to your MyFiducius account.</InputHelp>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <Button brand=\"primary\" type=\"submit\" onClick={onSubmit}>\r\n Reset password\r\n </Button>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <FinePrint>Having trouble with your password reset?</FinePrint>\r\n <FinePrint>\r\n Contact us at{' '}\r\n <StyledLink href=\"mailto:LoginAssistance@getfiducius.com\">\r\n LoginAssistance@getfiducius.com\r\n </StyledLink>{' '}\r\n for assistance.\r\n </FinePrint>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n};\r\n\r\nPasswordResetForm.propTypes = {\r\n email: t.string.isRequired,\r\n handleChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n};\r\n\r\nexport default PasswordResetForm;\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { CardBody, CardHeader, CardText, Loader, Header1 } from 'fiducius-ui';\r\n\r\nimport { ShadowAddCard } from '../../routing';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport LoaderWrapper from '../styles/loader-wrapper';\r\nimport { authPasswordReset } from '../redux/operations';\r\nimport PasswordResetForm from '../components/password-reset-form';\r\n\r\nconst PasswordReset = ({ request, requestPasswordReset }) => {\r\n const [email, setEmail] = useState('');\r\n return (\r\n <>\r\n <Header1>Request Password Reset</Header1>\r\n <ShadowAddCard\r\n brand={(request.hasFailed && 'danger') || (request.hasFinished && 'success') || 'primary'}\r\n >\r\n {request.hasFailed && <CardHeader>Password Change Failed</CardHeader>}\r\n {!request.hasFailed && request.hasFinished && (\r\n <CardHeader>Password Request Sent</CardHeader>\r\n )}\r\n <CardBody>\r\n {request.notStarted ? (\r\n <PasswordResetForm\r\n email={email}\r\n onSubmit={(e) => {\r\n e.preventDefault();\r\n requestPasswordReset(email);\r\n }}\r\n handleChange={(e) => setEmail(e.target.value)}\r\n />\r\n ) : request.isLoading ? (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n ) : (\r\n <CardText>\r\n <p>\r\n Check your email to finish changing your password. The email could take up to a few\r\n minutes to arrive and is active for 45 minutes. This e-mail could appear in your\r\n spam folder.\r\n </p>\r\n </CardText>\r\n )}\r\n </CardBody>\r\n </ShadowAddCard>\r\n </>\r\n );\r\n};\r\n\r\nPasswordReset.propTypes = {\r\n request: t.object,\r\n requestPasswordReset: t.func.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: safeAccess(state, 'auth.requests.passwordReset', {}),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n requestPasswordReset: (email) => dispatch(authPasswordReset(email)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PasswordReset);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n Alert,\r\n Button,\r\n Form,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n InputError,\r\n Header2,\r\n} from 'fiducius-ui';\r\nimport { safeAccess, useFocusOnMount } from '../../utils';\r\n\r\nimport NewPassword from './new-password';\r\n\r\nconst StyledInputError = styled(InputError)`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst FinePrint = styled.div`\r\n font-size: calc(1rem);\r\n`;\r\n\r\nconst StyledLink = styled.a`\r\n color: rgb(24, 188, 112);\r\n`;\r\n\r\nconst PasswordOutOfDateForm = ({ data, errors = {}, handleChange, onSubmit }) => {\r\n const firstInput = useFocusOnMount();\r\n return (\r\n <Form id=\"passwordUpdateForm\" handleChange={handleChange} onSubmit={onSubmit} defaults={data}>\r\n <Header2>Your current password has expired. Please use the form below to update it.</Header2>\r\n {safeAccess(errors, 'errorMessage') && (\r\n <Alert>{safeAccess(errors, 'errorMessage.detail')}</Alert>\r\n )}\r\n <InputWrapper error={!!safeAccess(errors, 'email')}>\r\n <InputLabel>Email</InputLabel>\r\n <StyledInputError\r\n dangerouslySetInnerHTML={{ __html: safeAccess(errors, 'email.detail') }}\r\n />\r\n <InputGroup>\r\n <InputText inputRef={firstInput} name=\"email\" defaultValue=\"\" autoComplete=\"username\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <NewPassword\r\n error={safeAccess(errors, 'oldPassword.detail')}\r\n label={'Current Password'}\r\n fieldName={'oldPassword'}\r\n />\r\n <NewPassword\r\n error={safeAccess(errors, 'password.detail')}\r\n label={'New Password'}\r\n fieldName={'password'}\r\n />\r\n <NewPassword\r\n error={safeAccess(errors, 'newPassword.detail')}\r\n label={'Confirm New Password'}\r\n fieldName={'newPassword'}\r\n />\r\n <InputWrapper>\r\n <Button brand=\"primary\" type=\"submit\" onClick={onSubmit}>\r\n Update password\r\n </Button>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <FinePrint>Having trouble setting your password?</FinePrint>\r\n <FinePrint>\r\n Contact us at{' '}\r\n <StyledLink href=\"mailto:LoginAssistance@getfiducius.com\">\r\n LoginAssistance@getfiducius.com\r\n </StyledLink>{' '}\r\n for assistance.\r\n </FinePrint>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n};\r\n\r\nPasswordOutOfDateForm.propTypes = {\r\n data: t.object.isRequired,\r\n errors: t.object,\r\n handleChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n};\r\n\r\nexport default PasswordOutOfDateForm;\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, withRouter } from 'react-router-dom';\r\nimport { CardBody, CardHeader, Loader, Header1 } from 'fiducius-ui';\r\n\r\nimport { ShadowAddCard } from '../../routing';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport PasswordOutOfDateForm from '../components/password-out-of-date-form';\r\nimport { authHandleFormChange, authPasswordOutOfDateReset } from '../redux/operations';\r\nimport {\r\n passwordNeedsReset,\r\n getPasswordResetTokenFromPermissions,\r\n authGetRedirectPath,\r\n} from '../redux/selectors';\r\nimport LoaderWrapper from '../styles/loader-wrapper';\r\n\r\nconst PasswordOutOfDate = ({\r\n errors = {},\r\n getPasswordResetTokenFromPermissions,\r\n passwordNeedsReset,\r\n request,\r\n submitChange,\r\n validatePassword,\r\n getRedirectPath,\r\n}) => {\r\n const token = getPasswordResetTokenFromPermissions;\r\n\r\n const [formState, updateFormState] = useState({\r\n token: token,\r\n email: '',\r\n oldPassword: '',\r\n newPassword: '',\r\n password: '',\r\n });\r\n if (!passwordNeedsReset) {\r\n return <Redirect to={getRedirectPath === 'referrer' ? '/dashboard' : getRedirectPath} />;\r\n //} else if (request.hasFinished && !request.hasFailed) {\r\n // return <Redirect to=\"/dashboard\" />;\r\n } else {\r\n return (\r\n <>\r\n <Header1>Password Expired</Header1>\r\n <ShadowAddCard brand={(request.hasFailed && 'danger') || 'primary'}>\r\n {request.hasFailed && <CardHeader>Password Change Failed</CardHeader>}\r\n <CardBody>\r\n {request.isLoading ? (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n ) : (\r\n <>\r\n <PasswordOutOfDateForm\r\n data={formState}\r\n errors={errors}\r\n handleChange={(state) => {\r\n updateFormState(state);\r\n validatePassword(state.oldPassword, state.newPassword, state.password);\r\n }}\r\n onSubmit={(e) => {\r\n e.preventDefault();\r\n submitChange(formState);\r\n }}\r\n />\r\n </>\r\n )}\r\n </CardBody>\r\n </ShadowAddCard>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nPasswordOutOfDate.propTypes = {\r\n errors: t.object,\r\n passwordNeedsReset: t.bool.isRequired,\r\n getPasswordResetTokenFromPermissions: t.string.isRequired,\r\n request: t.object,\r\n submitChange: t.func.isRequired,\r\n validatePassword: t.func.isRequired,\r\n getRedirectPath: t.string,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n errors: (state.auth && state.auth.errors) || {},\r\n passwordNeedsReset: passwordNeedsReset(state),\r\n getPasswordResetTokenFromPermissions: getPasswordResetTokenFromPermissions(state),\r\n request: safeAccess(state, 'auth.requests.passwordUpdate', {}),\r\n getRedirectPath: authGetRedirectPath(state, true),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n submitChange: ({ email, token, oldPassword, newPassword, password }) =>\r\n dispatch(authPasswordOutOfDateReset(token, email, oldPassword, newPassword, password)),\r\n validatePassword: (oldPassword, newPassword, password) =>\r\n dispatch(\r\n authHandleFormChange(\r\n { oldPassword: oldPassword, newPassword: newPassword, password: password },\r\n ['oldPassword', 'newPassword', 'password']\r\n )\r\n ),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(PasswordOutOfDate));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { InputWrapper } from 'fiducius-ui';\r\n\r\nconst Styling = styled.div`\r\n padding-left: ${(p) => (p.first ? '0' : '0.5rem')};\r\n padding-right: ${(p) => (p.last ? '0' : '0.5rem')};\r\n`;\r\n\r\nconst InputWrapperSpaced = ({ first, last, children, ...props }) => (\r\n <Styling first={first} last={last}>\r\n <InputWrapper {...props}>{children}</InputWrapper>\r\n </Styling>\r\n);\r\n\r\nInputWrapperSpaced.propTypes = {\r\n children: t.oneOfType([t.node, t.arrayOf(t.node)]),\r\n};\r\n\r\nexport default InputWrapperSpaced;\r\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\nimport {\n Button,\n Card,\n CardBody,\n CardFooter,\n CardText,\n CardTitle,\n Form,\n Header2,\n InputCheckbox,\n InputError,\n InputGroup,\n InputHidden,\n InputLabel,\n InputMask,\n InputRadio,\n InputSelect,\n InputText,\n InputWrapper,\n Modal,\n} from 'fiducius-ui';\n\nimport { safeAccess } from '../../utils';\nimport InputWrapperSpaced from '../styles/input-wrapper-spaced';\n\nconst timeZones = {\n '': '',\n 'America/New_York': '(UTC-05:00) Eastern Time',\n 'America/Chicago': '(UTC-06:00) Central Time',\n 'America/Denver': '(UTC-07:00) Mountain Time',\n 'America/Los_Angeles': '(UTC-08:00) Pacific Time',\n 'America/Anchorage': '(UTC-09:00) Alaska Time',\n 'America/Adak': '(UTC-10:00) Hawaii–Aleutian Time',\n};\n\nconst StyledCheckbox = styled.div`\n & > label.input-checkbox {\n margin-bottom: 0;\n color: ${(p) => p.theme.textPrimary};\n }\n`;\n\nconst TextMessageText = styled.div`\n margin-left: 2rem;\n`;\n\nconst ButtonWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n margin-top: 1rem;\n`;\n\nconst StyledCardText = styled(CardText)`\n text-align: left;\n`;\n\nclass SignUpInfoForm extends React.Component {\n static propTypes = {\n data: t.object,\n domain: t.string.isRequired,\n errors: t.object,\n handleChange: t.func.isRequired,\n locations: t.object,\n onSubmit: t.func.isRequired,\n onBack: t.func.isRequired,\n rememberMe: t.bool,\n showLocations: t.bool,\n showNFPQuestion: t.bool,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n showInstructions: false,\n };\n this.handleInstructionsButton = this.handleInstructionsButton.bind(this);\n }\n\n handleInstructionsButton() {\n if (!this.state.showInstructions) {\n window.scrollTo(0, 0);\n }\n this.setState({ showInstructions: !this.state.showInstructions });\n }\n\n render() {\n const {\n data = {},\n domain,\n errors = {},\n handleChange,\n locations,\n onSubmit,\n showLocations,\n onBack,\n showNFPQuestion,\n } = this.props;\n\n return (\n <>\n <Form\n {...this.props}\n handleChange={handleChange}\n id=\"signUpInfoForm\"\n onSubmit={onSubmit}\n defaults={{\n daylightSavings: true,\n partnerMemberId: '',\n phoneNumber: '',\n textNotifications: true,\n }}\n >\n <Header2>Tell us about yourself</Header2>\n <div className=\"row no-gutters\">\n <div className=\"col-4\">\n <InputWrapperSpaced error={!!errors.firstName} first>\n <InputLabel htmlFor=\"firstName\" required>\n First Name\n </InputLabel>\n <InputError>{safeAccess(errors, 'firstName.detail')}</InputError>\n <InputGroup>\n <InputText name=\"firstName\" defaultValue={data.firstName} />\n </InputGroup>\n </InputWrapperSpaced>\n </div>\n <div className=\"col-2\">\n <InputWrapperSpaced error={!!errors.middleInitial}>\n <InputLabel htmlFor=\"middleInitial\">M.I.</InputLabel>\n <InputError>{safeAccess(errors, 'middleInitial.detail')}</InputError>\n <InputGroup>\n <InputText name=\"middleInitial\" maxLength=\"1\" defaultValue={data.middleInitial} />\n </InputGroup>\n </InputWrapperSpaced>\n </div>\n <div className=\"col-4\">\n <InputWrapperSpaced error={!!errors.lastName}>\n <InputLabel htmlFor=\"lastName\" required>\n Last Name\n </InputLabel>\n <InputError>{safeAccess(errors, 'lastName.detail')}</InputError>\n <InputGroup>\n <InputText name=\"lastName\" defaultValue={data.lastName} />\n </InputGroup>\n </InputWrapperSpaced>\n </div>\n <div className=\"col-2\">\n <InputWrapperSpaced error={!!errors.suffix}>\n <InputLabel htmlFor=\"suffix\">Suffix</InputLabel>\n <InputError>{safeAccess(errors, 'suffix.detail')}</InputError>\n <InputGroup>\n <InputText name=\"suffix\" defaultValue={data.suffix} />\n </InputGroup>\n </InputWrapperSpaced>\n </div>\n </div>\n <InputWrapper error={!!errors.dob}>\n <InputLabel htmlFor=\"dob\" required>\n Birth Date\n </InputLabel>\n <InputError>{safeAccess(errors, 'dob.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputMask\n defaultValue={data.dob}\n mask=\"##/##/####\"\n name=\"dob\"\n placeholder=\"MM/DD/YYYY\"\n />\n </InputGroup>\n </InputWrapper>\n {showLocations && (\n <InputWrapper error={!!errors.partnerMemberId}>\n <InputLabel htmlFor=\"partnerMemberId\" required>\n Location\n </InputLabel>\n <InputError>{safeAccess(errors, 'partnerMemberId.detail')}</InputError>\n <InputGroup affordance=\"large\">\n <InputSelect name=\"partnerMemberId\" options={locations} defaultValue={''} />\n </InputGroup>\n </InputWrapper>\n )}\n <InputWrapper error={!!errors.timeZone}>\n <InputLabel htmlFor=\"timeZone\" required>\n Time Zone\n </InputLabel>\n <InputError>{safeAccess(errors, 'timeZone.detail')}</InputError>\n <InputGroup affordance=\"large\">\n <InputSelect name=\"timeZone\" options={timeZones} defaultValue={data.timeZone} />\n </InputGroup>\n <StyledCheckbox>\n <InputCheckbox\n name=\"daylightSavings\"\n label=\"Observe daylight savings\"\n defaultChecked\n />\n </StyledCheckbox>\n </InputWrapper>\n <InputWrapper error={!!errors.phoneNumber}>\n <InputLabel htmlFor=\"phoneNumber\" required>\n Phone Number\n </InputLabel>\n <InputError>{safeAccess(errors, 'phoneNumber.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputMask\n defaultValue={data.phoneNumber}\n mask=\"(###) ###-####\"\n name=\"phoneNumber\"\n placeholder=\"(___) ___-____\"\n type=\"tel\"\n />\n </InputGroup>\n <StyledCheckbox>\n <InputCheckbox\n name=\"textNotifications\"\n defaultChecked={true}\n label=\"I agree to receive text messages from Fiducius.\"\n />\n </StyledCheckbox>\n <TextMessageText>\n Message and data rates may apply. Message frequency varies. Reply HELP for help and\n STOP to cancel. View our <a href=\"/terms-of-use\">Terms of Use</a> and{' '}\n <a href=\"/privacy\">Privacy Policy</a>.\n </TextMessageText>\n </InputWrapper>\n <InputHidden name=\"domain\" value={domain} />\n {showNFPQuestion && (\n <InputWrapper error={!!errors.clientNonProfit}>\n <InputLabel htmlFor=\"clientNonProfit\" required>\n Which of the following describes the organization you work for?\n </InputLabel>\n <InputError>{safeAccess(errors, 'clientNonProfit.detail')}</InputError>\n <div className=\"row\">\n <div className=\"col-6\">\n <InputRadio\n name=\"clientNonProfit\"\n value=\"true\"\n label=\"Not-for-profit organization\"\n defaultChecked={data.clientNonProfit === 'true'}\n />\n <InputRadio\n name=\"clientNonProfit\"\n value=\"false\"\n label=\"For-profit organization\"\n defaultChecked={data.clientNonProfit === 'false'}\n />\n </div>\n <div className=\"col-6\">\n <Button brand=\"primary\" onClick={this.handleInstructionsButton}>\n <FontAwesomeIcon icon={faQuestionCircle} fixedWidth /> Kinds of Organizations\n </Button>\n </div>\n </div>\n </InputWrapper>\n )}\n <ButtonWrapper>\n <Button brand=\"lowContrast\" onClick={onBack}>\n Back\n </Button>\n <Button brand=\"primary\" type=\"submit\" onClick={onSubmit}>\n Sign up\n </Button>\n </ButtonWrapper>\n </Form>\n <Modal isOpen={this.state.showInstructions}>\n <Card>\n <CardBody>\n <CardTitle>Kinds of Organizations</CardTitle>\n <StyledCardText>\n <p>\n <strong>Not-for-profit organizations</strong> operate to provide a community,\n public or social benefit, and are driven by mission rather than profit or\n shareholder returns. They are typically registered as a 501(c)3 organization and\n are exempt from paying income tax. Funding sources may include grants and\n donations in addition to revenue. Examples include non-profit hospitals; public\n schools and universities; government agencies; charities; etc.\n </p>\n <p>\n <strong>For-profit organizations</strong> operate with the goal of maximizing\n revenue and profitability for owners and investors. They pay taxes based on their\n net income. Examples include retailers; banks; restaurants; technology providers;\n most media companies; private practice healthcare providers and some hospitals;\n etc.\n </p>\n <p>\n If you are still unsure which type of organization you work for, please select\n \"Not-for-profit organization\" for the purposes of this application.\n </p>\n </StyledCardText>\n </CardBody>\n <CardFooter>\n <Button brand=\"lowContrast\" onClick={this.handleInstructionsButton}>\n Close\n </Button>\n </CardFooter>\n </Card>\n </Modal>\n </>\n );\n }\n}\n\nexport default SignUpInfoForm;\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faUser } from '@fortawesome/pro-light-svg-icons/faUser';\r\nimport {\r\n Button,\r\n Form,\r\n InputAddon,\r\n InputCheckbox,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n InputError,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, useFocusOnMount } from '../../utils';\r\nimport NewPassword from '../components/new-password';\r\nimport RememberMe from '../styles/remember-me';\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n justify-content: right;\r\n margin-top: 1rem;\r\n`;\r\n\r\nconst FORM_ID = 'signUpRegisterForm';\r\n\r\nconst canContinue = (errors, data, registrationCode) => {\r\n const hasData = !!(data.email && data.password && (data.registrationCode || registrationCode));\r\n const existingErrors = Object.keys(errors).filter(\r\n (k) =>\r\n ['email', 'password', 'confirmPassword', 'registrationCode'].includes(k) &&\r\n errors[k] !== false\r\n );\r\n //console.log(data, hasData, existingErrors);\r\n return hasData && existingErrors.length === 0;\r\n};\r\n\r\nconst SignUpRegisterForm = ({\r\n data = {},\r\n errors = {},\r\n handleChange,\r\n onSubmit,\r\n registrationCode,\r\n rememberMe = false,\r\n toggleFormError,\r\n}) => {\r\n const firstInput = useFocusOnMount();\r\n const [touchedCode, setTouchedCode] = useState(false);\r\n return (\r\n <Form\r\n handleChange={handleChange}\r\n id={FORM_ID}\r\n onSubmit={(e) => {\r\n !touchedCode && handleChange({ registrationCode }, FORM_ID, 'registrationCode');\r\n onSubmit(e);\r\n }}\r\n >\r\n <InputWrapper error={!!errors.email} required>\r\n <InputLabel required>Email</InputLabel>\r\n <InputError>{safeAccess(errors, 'email.detail')}</InputError>\r\n <InputGroup>\r\n <InputAddon>\r\n <FontAwesomeIcon icon={faUser} fixedWidth />\r\n </InputAddon>\r\n <InputText\r\n inputRef={firstInput}\r\n name=\"email\"\r\n autoComplete=\"email\"\r\n placeholder=\"Email\"\r\n defaultValue={data.email}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <NewPassword\r\n error={safeAccess(errors, 'password.detail')}\r\n required\r\n label={'Password'}\r\n fieldName={'password'}\r\n data={data.password}\r\n />\r\n <NewPassword\r\n error={safeAccess(errors, 'confirmPassword.detail')}\r\n required\r\n label={'Confirm Password'}\r\n fieldName={'confirmPassword'}\r\n data={data.confirmPassword}\r\n />\r\n <RememberMe>\r\n <InputCheckbox name=\"rememberMe\" label=\"Remember me\" defaultChecked={rememberMe} />\r\n </RememberMe>\r\n <InputWrapper error={!!errors.registrationCode} required>\r\n <InputLabel htmlFor=\"registrationCode\" required>\r\n Registration Code\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'registrationCode.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputText\r\n name=\"registrationCode\"\r\n defaultValue={registrationCode}\r\n onChange={() => setTouchedCode(true)}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <ButtonWrapper>\r\n <Button\r\n brand=\"primary\"\r\n type=\"submit\"\r\n onClick={(e) => {\r\n if (canContinue(errors, data, registrationCode)) {\r\n !touchedCode &&\r\n handleChange(\r\n { registrationCode: data.registrationCode || registrationCode },\r\n FORM_ID,\r\n 'registrationCode'\r\n );\r\n onSubmit(e);\r\n } else {\r\n toggleFormError(e, true);\r\n }\r\n }}\r\n >\r\n Sign up\r\n </Button>\r\n </ButtonWrapper>\r\n </Form>\r\n );\r\n};\r\n\r\nSignUpRegisterForm.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n registrationCode: t.string,\r\n rememberMe: t.bool,\r\n toggleFormError: t.func.isRequired,\r\n};\r\n\r\nexport default SignUpRegisterForm;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { BrandColor, CardBody, CardHeader, Lede, Loader, Header1 } from 'fiducius-ui';\r\nimport { Link, Redirect, withRouter } from 'react-router-dom';\r\n\r\nimport { ShadowAddCard } from '../../routing';\r\nimport { persistRememberMe } from '../../persist';\r\nimport { debounce, safeAccess } from '../../utils';\r\n\r\nimport SignUpInfoForm from '../components/sign-up-info-form';\r\nimport SignUpRegisterForm from '../components/sign-up-register-form';\r\nimport FormSwitcher from '../styles/form-switcher';\r\nimport LoaderWrapper from '../styles/loader-wrapper';\r\nimport { isAuthenticated, authGetRedirectPath } from '../redux/selectors';\r\nimport { authHandleFormChange, authSignup } from '../redux/operations';\r\n\r\nclass Register extends React.Component {\r\n static propTypes = {\r\n auth: t.object,\r\n form: t.object,\r\n domain: t.string.isRequired,\r\n errors: t.object,\r\n hasFailed: t.bool.isRequired,\r\n isAuthenticated: t.bool.isRequired,\r\n isLoading: t.bool.isRequired,\r\n loadingPartnerData: t.bool.isRequired,\r\n location: t.object.isRequired,\r\n rememberMe: t.bool.isRequired,\r\n saveRequest: t.object,\r\n signUp: t.func.isRequired,\r\n updateFormState: t.func.isRequired,\r\n updateRememberMe: t.func.isRequired,\r\n getRedirectPath: t.string,\r\n showNFPQuestion: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n rememberMe: props.rememberMe,\r\n showFormError: false,\r\n stepTwo: false,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.state.rememberMe !== prevState.rememberMe) {\r\n this.props.updateRememberMe(this.state.rememberMe);\r\n }\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { form, updateFormState } = this.props;\r\n const newData = { ...form, ...formState, partnerDomain: this.props.domain };\r\n updateFormState(newData, [attribute]);\r\n }, 200);\r\n\r\n step = (e) => {\r\n e.preventDefault();\r\n this.setState({ ...this.state, stepTwo: true, showFormError: false });\r\n };\r\n\r\n back = (e) => {\r\n e.preventDefault();\r\n this.setState({ ...this.state, stepTwo: false });\r\n const { auth } = this.props;\r\n let generalErrors = safeAccess(auth, 'errors.generalErrors', []);\r\n delete generalErrors[0];\r\n };\r\n\r\n createUser = (e) => {\r\n e.preventDefault();\r\n // Don't include meta info in signUp action\r\n if (!this.props.saveRequest.isLoading) {\r\n let formState = this.props.form;\r\n formState['altPhoneNumber'] = formState.phoneNumber;\r\n if (!formState.partnerMemberId) {\r\n formState['partnerMemberId'] = '0';\r\n }\r\n this.props.signUp(formState);\r\n }\r\n };\r\n\r\n toggleFormError = (e, newState) => {\r\n e.preventDefault();\r\n this.setState({ ...this.state, showFormError: newState });\r\n };\r\n\r\n getLoader() {\r\n return (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n );\r\n }\r\n\r\n getRegistrationCode() {\r\n const { auth, domain, form } = this.props;\r\n if (domain === 'islsoffice') {\r\n return safeAccess(form, 'registrationCode') || 'loan4give';\r\n } else {\r\n return (\r\n safeAccess(form, 'registrationCode') ||\r\n safeAccess(auth, 'partnerLocations.registrationCode')\r\n );\r\n }\r\n }\r\n\r\n getForm() {\r\n const { auth, errors, domain, form, loadingPartnerData, showNFPQuestion } = this.props;\r\n if (loadingPartnerData) {\r\n return this.getLoader();\r\n }\r\n\r\n if (this.state.stepTwo) {\r\n let showLocations = false;\r\n let locations = { '0': '', '999': 'Other' };\r\n let cacheLocations = safeAccess(auth, 'partnerLocations.partnerMembers', []);\r\n if (cacheLocations.length > 0) {\r\n showLocations = true;\r\n locations = cacheLocations.reduce((acc, l) => ({ [l.id]: l.name, ...acc }), locations);\r\n }\r\n\r\n return (\r\n <SignUpInfoForm\r\n data={form}\r\n domain={domain}\r\n errors={errors}\r\n handleChange={this.handleChange}\r\n locations={locations}\r\n onSubmit={this.createUser}\r\n onBack={this.back}\r\n showLocations={showLocations}\r\n showNFPQuestion={showNFPQuestion}\r\n />\r\n );\r\n } else {\r\n return (\r\n <SignUpRegisterForm\r\n data={form}\r\n errors={errors}\r\n handleChange={this.handleChange}\r\n onSubmit={this.step}\r\n registrationCode={this.getRegistrationCode()}\r\n rememberMe={this.props.rememberMe}\r\n toggleFormError={this.toggleFormError}\r\n />\r\n );\r\n }\r\n }\r\n\r\n render() {\r\n const { hasFailed, isAuthenticated, isLoading, loadingPartnerData, errors } = this.props;\r\n\r\n // Redirect after creating user and receiving token\r\n if (isAuthenticated) {\r\n return (\r\n <Redirect\r\n to={\r\n this.props.getRedirectPath === 'referrer'\r\n ? this.state.referrer || '/dashboard'\r\n : this.props.getRedirectPath\r\n }\r\n />\r\n );\r\n //return <Redirect to=\"/screening\" />;\r\n }\r\n\r\n return (\r\n <>\r\n <Header1>Create Account</Header1>\r\n <ShadowAddCard brand={(hasFailed && 'danger') || 'secondary'}>\r\n {hasFailed && <CardHeader>User Registration Failed</CardHeader>}\r\n <CardBody>\r\n {hasFailed && (\r\n <div>\r\n <Lede>\r\n <BrandColor brand=\"danger\">\r\n {!!errors.email && <p>Error: {errors.email.detail}</p>}\r\n {!!errors.password && <p>Error: {errors.password.detail}</p>}\r\n {errors.generalErrors &&\r\n errors.generalErrors.map((e) => <p>Error: {e.detail}</p>)}\r\n Please fill in all required fields and fix any errors in the form. If your\r\n information looks correct, you may already have an account with us, try{' '}\r\n <Link to=\"/login\">logging in here</Link> or contact us at{' '}\r\n <a href=\"mailto:customer.service@getfiducius.com\">\r\n customer.service@getfiducius.com\r\n </a>\r\n {/*<a href=\"tel:+15136455400\">(513) 645-5400</a>.*/}\r\n </BrandColor>\r\n </Lede>\r\n </div>\r\n )}\r\n {this.state.showFormError && (\r\n <div>\r\n <Lede>\r\n <BrandColor brand=\"danger\">\r\n Please fill in all required fields and fix any errors before continuing.\r\n </BrandColor>\r\n </Lede>\r\n </div>\r\n )}\r\n {isLoading || loadingPartnerData ? this.getLoader() : this.getForm()}\r\n </CardBody>\r\n\r\n <FormSwitcher>\r\n Have an account?{' '}\r\n <Link to=\"/login\" onClick={this.switchForm}>\r\n Sign in\r\n </Link>\r\n </FormSwitcher>\r\n </ShadowAddCard>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cache, errors, form, requests } = state.auth;\r\n return {\r\n auth: cache,\r\n errors: errors,\r\n form: form,\r\n hasFailed: requests.signup.hasFailed,\r\n isAuthenticated: isAuthenticated(state),\r\n isLoading:\r\n requests.signup.isLoading ||\r\n requests.loadPermissions.isLoading ||\r\n state.todos.requests.loadCollection.isLoading,\r\n loadingPartnerData: requests.partnerLocation.isLoading,\r\n rememberMe: safeAccess(cache, 'rememberMe', false),\r\n getRedirectPath: authGetRedirectPath(state, true),\r\n showNFPQuestion:\r\n safeAccess(state, 'auth.cache.permissions.showNfpQuestion', undefined) ||\r\n safeAccess(state, 'auth.cache.partnerLocations.showNfpQuestion', undefined) ||\r\n false,\r\n saveRequest: safeAccess(state, 'auth.requests.login', {}),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n signUp: (username, password) => dispatch(authSignup(username, password)),\r\n updateFormState: (data, attributes) => dispatch(authHandleFormChange(data, attributes)),\r\n updateRememberMe: (rememberMe) => dispatch(persistRememberMe(rememberMe)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(Register));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport t from 'prop-types';\r\nimport { Button, Form, InputGroup, InputLabel, InputText, InputWrapper, Alert } from 'fiducius-ui';\r\n\r\nimport { safeAccess, useFocusOnMount } from '../../utils';\r\n\r\nimport NewPassword from './new-password';\r\nconst FinePrint = styled.div`\r\n font-size: calc(1rem);\r\n`;\r\n\r\nconst StyledLink = styled.a`\r\n color: rgb(24, 188, 112);\r\n`;\r\nconst PreRegisteredForm = ({ data, errors = {}, handleChange, onSubmit }) => {\r\n const firstInput = useFocusOnMount();\r\n return (\r\n <Form id=\"passwordUpdateForm\" handleChange={handleChange} onSubmit={onSubmit} defaults={data}>\r\n {safeAccess(errors, 'errorMessage') && (\r\n <Alert>{safeAccess(errors, 'errorMessage.detail')}</Alert>\r\n )}\r\n <InputWrapper>\r\n <InputLabel>Email</InputLabel>\r\n <InputGroup>\r\n <InputText inputRef={firstInput} name=\"email\" defaultValue=\"\" autoComplete=\"username\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <NewPassword\r\n error={safeAccess(errors, 'password.detail')}\r\n label={'New Password'}\r\n fieldName={'password'}\r\n />\r\n <NewPassword\r\n error={safeAccess(errors, 'newPassword.detail')}\r\n label={'Confirm New Password'}\r\n fieldName={'newPassword'}\r\n />\r\n <InputWrapper>\r\n <Button brand=\"primary\" type=\"submit\" onClick={onSubmit}>\r\n Set Password\r\n </Button>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <FinePrint>Having trouble setting your password?</FinePrint>\r\n <FinePrint>\r\n Contact us at{' '}\r\n <StyledLink href=\"mailto:LoginAssistance@getfiducius.com\">\r\n LoginAssistance@getfiducius.com\r\n </StyledLink>{' '}\r\n for assistance.\r\n </FinePrint>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n};\r\n\r\nPreRegisteredForm.propTypes = {\r\n data: t.object.isRequired,\r\n errors: t.object,\r\n handleChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n};\r\n\r\nexport default PreRegisteredForm;\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport queryString from 'query-string';\r\nimport { Redirect, withRouter, Link } from 'react-router-dom';\r\nimport { CardBody, CardHeader, Loader, Header1 } from 'fiducius-ui';\r\n\r\nimport { ShadowAddCard } from '../../routing';\r\nimport { safeAccess } from '../../utils';\r\nimport FormSwitcher from '../styles/form-switcher';\r\n\r\nimport PreRegisteredForm from '../components/pre-registered-form';\r\nimport { authHandleFormChange, authPasswordUpdate } from '../redux/operations';\r\nimport { isAuthenticated, authGetRedirectPath } from '../redux/selectors';\r\nimport LoaderWrapper from '../styles/loader-wrapper';\r\n\r\nconst PreRegistered = ({\r\n errors,\r\n isAuthenticated,\r\n location,\r\n request,\r\n submitChange,\r\n validatePassword,\r\n getRedirectPathAuthenticated,\r\n getRedirectPathPublic,\r\n}) => {\r\n const params = queryString.parse(location.search);\r\n const [formState, updateFormState] = useState({ token: params.token, email: '', password: '' });\r\n if (isAuthenticated) {\r\n return (\r\n <Redirect\r\n to={\r\n getRedirectPathAuthenticated === 'referrer' ? '/dashboard' : getRedirectPathAuthenticated\r\n }\r\n />\r\n );\r\n } else if (request.hasFinished && !request.hasFailed) {\r\n return (\r\n <Redirect to={getRedirectPathPublic === 'referrer' ? '/dashboard' : getRedirectPathPublic} />\r\n );\r\n } else {\r\n return (\r\n <>\r\n <Header1>Create Account</Header1>\r\n <ShadowAddCard brand={(request.hasFailed && 'danger') || 'primary'}>\r\n {request.hasFailed && <CardHeader>Password Change Failed</CardHeader>}\r\n <CardBody>\r\n {request.isLoading ? (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n ) : (\r\n <PreRegisteredForm\r\n data={formState}\r\n errors={errors}\r\n handleChange={(state) => {\r\n updateFormState(state);\r\n validatePassword(state.password, state.newPassword);\r\n }}\r\n onSubmit={(e) => {\r\n e.preventDefault();\r\n submitChange(formState);\r\n }}\r\n />\r\n )}\r\n </CardBody>\r\n\r\n <FormSwitcher>\r\n Have an account? <Link to=\"/login\">Sign in</Link>\r\n </FormSwitcher>\r\n </ShadowAddCard>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nPreRegistered.propTypes = {\r\n errors: t.object,\r\n isAuthenticated: t.bool.isRequired,\r\n location: t.shape({\r\n search: t.string,\r\n }),\r\n request: t.object,\r\n submitChange: t.func.isRequired,\r\n validatePassword: t.func.isRequired,\r\n getRedirectPathAuthenticated: t.string,\r\n getRedirectPathPublic: t.string,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n errors: (state.auth && state.auth.errors) || {},\r\n isAuthenticated: isAuthenticated(state),\r\n request: safeAccess(state, 'auth.requests.passwordUpdate', {}),\r\n getRedirectPathAuthenticated: authGetRedirectPath(state, true),\r\n getRedirectPathPublic: authGetRedirectPath(state, false),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n submitChange: ({ email, token, password, newPassword }) =>\r\n dispatch(authPasswordUpdate(token, email, password, newPassword)),\r\n validatePassword: (newPassword, password) =>\r\n dispatch(\r\n authHandleFormChange({ newPassword: newPassword, password: password }, [\r\n 'newPassword',\r\n 'password',\r\n ])\r\n ),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(PreRegistered));\r\n","import types from './types';\r\nimport { combineReducers } from 'redux';\r\nimport { invalidateAttributes, requestReducerGenerator, validateAttributes } from '../../utils';\r\n\r\nconst loadPermissions = requestReducerGenerator('auth', 'loadPermissions', types);\r\nconst login = requestReducerGenerator('auth', 'login', types);\r\nconst logout = requestReducerGenerator('auth', 'logout', types);\r\nconst partnerLocation = requestReducerGenerator('auth', 'partnerLocation', types);\r\nconst passwordReset = requestReducerGenerator('auth', 'passwordReset', types);\r\nconst passwordUpdate = requestReducerGenerator('auth', 'passwordUpdate', types);\r\nconst signup = requestReducerGenerator('auth', 'signup', types);\r\nconst silentRenew = requestReducerGenerator('auth', 'silentRenew', types);\r\nconst themePreference = requestReducerGenerator('auth', 'themePreference', types);\r\n\r\nconst cache = (state = null, action) => {\r\n switch (action.type) {\r\n case types.AUTH_HANDLE_ERROR:\r\n return { ...state, errors: action.errors };\r\n case types.AUTH_POPULATE:\r\n return { ...action.data };\r\n case types.AUTH_CLEAR:\r\n case types.AUTH_EXPIRED:\r\n case types.AUTH_SESSION_TERMINATED:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst errors = (state = {}, action) => {\r\n switch (action.type) {\r\n case types.AUTH_CLEAR_ERRORS: {\r\n return {};\r\n }\r\n case types.AUTH_HANDLE_ERROR: {\r\n return { ...action.errors };\r\n }\r\n case types.AUTH_VALIDATE_ATTRIBUTES: {\r\n let newErrors = validateAttributes(action.attributes, action.errorState).errors;\r\n return { ...state, ...newErrors };\r\n }\r\n case types.AUTH_INVALIDATE_ATTRIBUTES: {\r\n let newErrors = invalidateAttributes(action.attributes, action.errorState).errors;\r\n return { ...state, ...newErrors };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst form = (state = {}, action) => {\r\n switch (action.type) {\r\n case types.AUTH_CLEAR_FORM: {\r\n return {};\r\n }\r\n case types.AUTH_HANDLE_FORM_CHANGE: {\r\n return { ...action.data };\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\nconst auth = combineReducers({\r\n cache,\r\n errors,\r\n form,\r\n requests: combineReducers({\r\n loadPermissions,\r\n login,\r\n logout,\r\n partnerLocation,\r\n passwordReset,\r\n passwordUpdate,\r\n signup,\r\n silentRenew,\r\n themePreference,\r\n }),\r\n});\r\n\r\nexport default auth;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { calculateCustomerPermissions } from '../../auth';\r\n\r\nexport const PermissionContext = React.createContext({\r\n permissions: {\r\n clientStatus: null,\r\n forgivenessSteps: null,\r\n hasAnyBenefits: false,\r\n inPreSale: false,\r\n isFullService: false,\r\n isMarried: false,\r\n inForgiveness: false,\r\n showAccounts: false,\r\n showAccountServicers: false,\r\n showContribution: false,\r\n showForgiveness: false,\r\n showIdentity: false,\r\n showPayNow: false,\r\n showRefinance: false,\r\n showRetirement: false,\r\n showScheduleMeeting: false,\r\n showSharedData: false,\r\n showSimplifi: false,\r\n showSimplifiConsolidation: false,\r\n showSimplifiIDR: false,\r\n showStudentLoanDisabilityInsurance: false,\r\n showTuition: false,\r\n covidFurlough: 0,\r\n useMFA: 0,\r\n securityQuestionsSetup: false,\r\n consentFormCode: null,\r\n hasConsentToShareData: false,\r\n hasPayNow: false,\r\n electronicEmpcertEnabled: false,\r\n hasFreshStart: false,\r\n hasReducedIDR: false,\r\n repaymentPlan: null,\r\n enterpriseEnabled: false,\r\n hasEducationalReengagement: false,\r\n hasOptimalSituation: false,\r\n subscriptionAvailable: false,\r\n subscriptionActive: false,\r\n hasBenefitTools: false,\r\n disableScheduling: false,\r\n hasMichiganProgram: false,\r\n showSkipScreening: false,\r\n skipScreeningMessage: null,\r\n isConsolidationSubmitGeneratePaused: false,\r\n hasPlaid: false,\r\n hasLoanRepayment: false,\r\n hasEmployerPaidRenewal: false,\r\n },\r\n});\r\n\r\nconst mapStateToProps = (state) => calculateCustomerPermissions(state);\r\n\r\nexport const PermissionProvider = connect(mapStateToProps)(({ children, ...props }) => (\r\n <PermissionContext.Provider value={props}>{children}</PermissionContext.Provider>\r\n));\r\n\r\nPermissionProvider.propTypes = {\r\n children: t.node,\r\n permissions: t.shape({\r\n clientStatus: t.string,\r\n forgivenessSteps: t.array,\r\n hasAnyBenefits: t.bool,\r\n inPreSale: t.bool,\r\n isFullService: t.bool,\r\n isMarried: t.bool,\r\n inForgiveness: t.bool,\r\n showAccounts: t.bool,\r\n showAccountServicers: t.bool,\r\n showContribution: t.bool,\r\n showForgiveness: t.bool,\r\n showIdentity: t.bool,\r\n showPayNow: t.bool,\r\n showRefinance: t.bool,\r\n showRetirement: t.bool,\r\n showScheduleMeeting: t.bool,\r\n showSharedData: t.bool,\r\n showSimplifi: t.bool,\r\n showSimplifiConsolidation: t.bool,\r\n showSimplifiIDR: t.bool,\r\n showStudentLoanDisabilityInsurance: t.bool,\r\n showTuition: t.bool,\r\n covidFurlough: t.number,\r\n useMFA: t.number,\r\n securityQuestionsSetup: t.bool,\r\n consentFormCode: t.string,\r\n hasConsentToShareData: t.bool,\r\n hasPayNow: t.bool,\r\n electronicEmpcertEnabled: t.bool,\r\n hasFreshStart: t.bool,\r\n repaymentPlan: t.string,\r\n enterpriseEnabled: t.bool,\r\n hasEducationalReengagement: t.bool,\r\n hasOptimalSituation: t.bool,\r\n subscriptionAvailable: t.bool,\r\n subscriptionActive: t.bool,\r\n hasBenefitTools: t.bool,\r\n disableScheduling: t.bool,\r\n hasMichiganProgram: t.bool,\r\n showSkipScreening: t.bool,\r\n skipScreeningMessage: t.string,\r\n isConsolidationSubmitGeneratePaused: t.bool,\r\n isConsolidationCheckPaused: t.bool,\r\n isEmpcertCheckPaused: t.bool,\r\n annualRecertDate: t.string,\r\n hasPlaid: t.bool,\r\n }),\r\n};\r\n\r\nexport const withPermissions = (Component) => (props) => (\r\n <PermissionContext.Consumer>\r\n {(context) => <Component {...props} {...context} />}\r\n </PermissionContext.Consumer>\r\n);\r\n\r\nexport default withPermissions;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { isAuthenticated } from '../../auth';\r\n\r\nconst AuthGate = ({ children, isAuthenticated = false }) => (\r\n <React.Fragment>{isAuthenticated ? children : null}</React.Fragment>\r\n);\r\n\r\nAuthGate.propTypes = {\r\n children: t.node,\r\n isAuthenticated: t.bool,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n isAuthenticated: isAuthenticated(state),\r\n});\r\n\r\nexport default connect(mapStateToProps)(AuthGate);\r\n","import React, { useRef, useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { Button } from 'fiducius-ui';\r\nimport styled from 'styled-components';\r\nimport { pdfjs, Document, Page } from 'react-pdf';\r\n\r\nimport { useResize } from '../../utils';\r\n\r\n// See https://github.com/wojtekmaj/react-pdf#browserify-and-others for the purpose of this global\r\n// namespace shim.\r\n// It's related to this bug: https://github.com/wojtekmaj/react-pdf/issues/280 and should be\r\n// removed when that's fixed to properly support create-react-app etc.\r\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\r\n\r\nconst DocumentPane = styled.div`\r\n border: ${(p) => p.theme.borderWidth} solid ${(p) => p.theme.level2};\r\n border-radius: ${(p) => p.theme.borderRadius};\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin-bottom: 2rem;\r\n overflow: auto;\r\n padding-left: 1rem;\r\n`;\r\n\r\nconst DocumentPageControls = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n padding: 2rem 1rem;\r\n & > button {\r\n margin-right: 2rem;\r\n }\r\n`;\r\n\r\nconst PdfViewer = ({ base64, isFulfillment }) => {\r\n const paneRef = useRef(null);\r\n const [width, setWidth] = useState(0);\r\n const [state, setState] = useState({ numPages: null, pageNumber: 1 });\r\n useResize(paneRef, setWidth);\r\n\r\n const onLoadSuccess = ({ numPages }) => {\r\n setState({ ...state, numPages });\r\n };\r\n\r\n //using variables to set the color does not work, so we need 2 functions.\r\n const textLayerOffsetBlack = () => {\r\n const textLayers = document.querySelectorAll('.react-pdf__Page__textContent');\r\n textLayers.forEach((layer) => {\r\n const { style } = layer;\r\n style.color = 'black';\r\n style.opacity = '0.5';\r\n style.lineHeight = '1';\r\n style.top = '0';\r\n style.left = '0';\r\n style.transform = '';\r\n });\r\n };\r\n\r\n const textLayerOffsetTransparent = () => {\r\n const textLayers = document.querySelectorAll('.react-pdf__Page__textContent');\r\n textLayers.forEach((layer) => {\r\n const { style } = layer;\r\n style.color = 'transparent';\r\n style.opacity = '0.5';\r\n style.lineHeight = '1';\r\n style.top = '0';\r\n style.left = '0';\r\n style.transform = '';\r\n });\r\n };\r\n\r\n return (\r\n <DocumentPane ref={paneRef}>\r\n {base64 && (\r\n <Document file={'data:application/pdf;base64,' + base64} onLoadSuccess={onLoadSuccess}>\r\n <Page\r\n pageNumber={state.pageNumber}\r\n width={width - 16}\r\n // onLoadSuccess={isFulfillment ? textLayerOffsetTransparent : textLayerOffsetBlack}\r\n />\r\n </Document>\r\n )}\r\n <DocumentPageControls>\r\n <Button\r\n brand={state.pageNumber <= 1 ? 'quaternary' : 'primary'}\r\n onClick={() => setState({ ...state, pageNumber: state.pageNumber - 1 })}\r\n disabled={state.pageNumber <= 1}\r\n >\r\n Previous\r\n </Button>\r\n <Button\r\n brand={state.pageNumber >= state.numPages ? 'quaternary' : 'primary'}\r\n onClick={() => setState({ ...state, pageNumber: state.pageNumber + 1 })}\r\n disabled={state.pageNumber >= state.numPages}\r\n >\r\n Next\r\n </Button>\r\n </DocumentPageControls>\r\n </DocumentPane>\r\n );\r\n};\r\n\r\nPdfViewer.propTypes = {\r\n base64: t.string,\r\n isFulfillment: t.bool,\r\n};\r\n\r\nexport default PdfViewer;\r\n","import React, { useRef, useState } from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport SignatureCanvas from 'react-signature-canvas';\r\nimport { Button, InputLabel, InputWrapper } from 'fiducius-ui';\r\n\r\nimport { safeAccess, useResize } from '../../utils';\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n margin-bottom: 1.5rem;\r\n`;\r\n\r\nconst InputLabel2 = styled(InputLabel)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst CanvasWrapper = styled.div`\r\n align-items: stretch;\r\n display: flex;\r\n flex-direction: column;\r\n border: ${(p) => p.theme.borderWidth} solid ${(p) => p.theme.level2};\r\n border-radius: ${(p) => p.theme.borderRadius};\r\n`;\r\n\r\nconst Signature = ({ handleChange, label }) => {\r\n const wrapper = useRef(null);\r\n const canvas = useRef(null);\r\n const [width, setWidth] = useState(0);\r\n useResize(wrapper, setWidth);\r\n\r\n const clearSignature = () => {\r\n if (canvas && canvas.current) {\r\n canvas.current.clear();\r\n }\r\n };\r\n\r\n const handleMouseEvents = () => {\r\n const current = safeAccess(canvas, 'current');\r\n const curves = current ? current.toData() : [];\r\n const data =\r\n curves.length > 0 ? current.toDataURL().replace('data:image/png;base64,', '') : null;\r\n // console.log(current, curves, data);\r\n handleChange(data);\r\n };\r\n\r\n return (\r\n <>\r\n <InputWrapper\r\n onMouseUp={handleMouseEvents}\r\n onMouseLeave={handleMouseEvents}\r\n onTouchEnd={handleMouseEvents}\r\n >\r\n <InputLabel2>{label}</InputLabel2>\r\n <CanvasWrapper ref={wrapper}>\r\n <SignatureCanvas\r\n ref={canvas}\r\n canvasProps={{ width: width, height: '200px' }}\r\n maxWidth={5}\r\n />\r\n </CanvasWrapper>\r\n </InputWrapper>\r\n <ButtonWrapper>\r\n <Button invert brand=\"primary\" onClick={clearSignature}>\r\n Clear signature\r\n </Button>\r\n </ButtonWrapper>\r\n </>\r\n );\r\n};\r\n\r\nSignature.propTypes = {\r\n handleChange: t.func.isRequired,\r\n label: t.string.isRequired,\r\n};\r\n\r\nexport default Signature;\r\n","// Fulfillment redux types\r\nimport { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('fulfillment');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('fulfillment', types);\r\n","import actions from './actions';\r\nimport { FulfillmentValidator } from './validators';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst fulfillmentValidator = new FulfillmentValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/fulfillment',\r\n resourceType: 'fulfillment',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'fulfillment',\r\n actions,\r\n null,\r\n fulfillmentValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst { fulfillmentDisableValidation } = actions;\r\n\r\nconst {\r\n fulfillmentCopyResourceToForm,\r\n fulfillmentHandleFormChange,\r\n fulfillmentInvalidateCache,\r\n fulfillmentLoadCollection,\r\n fulfillmentLoadResource,\r\n fulfillmentUpdateResource,\r\n fulfillmentValidateAttributes,\r\n} = operations;\r\n\r\nexport {\r\n fulfillmentCopyResourceToForm,\r\n fulfillmentDisableValidation,\r\n fulfillmentHandleFormChange,\r\n fulfillmentInvalidateCache,\r\n fulfillmentLoadCollection,\r\n fulfillmentLoadResource,\r\n fulfillmentUpdateResource,\r\n fulfillmentValidateAttributes,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class FulfillmentValidator extends FormValidator {\r\n firstName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n\r\n lastName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n email(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n validator.isValidEmail();\r\n }\r\n\r\n password(validator) {\r\n validator.isRequired();\r\n validator.hasMinLength(8);\r\n validator.hasMaxLength(50);\r\n }\r\n\r\n signaturePadClient(validator) {\r\n validator.isRequired();\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { debounce } from '../../utils';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Form,\r\n Header4,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n Alert,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\nimport styled from 'styled-components';\r\n\r\nimport PdfViewer from '../components/pdf-viewer';\r\nimport Signature from '../components/signature';\r\nimport {\r\n fulfillmentCopyResourceToForm,\r\n fulfillmentHandleFormChange,\r\n fulfillmentLoadResource,\r\n fulfillmentUpdateResource,\r\n} from '../redux/operations';\r\n\r\nexport const AGREEMENT_DOC_ID = 8;\r\n\r\nconst InputLabel2 = styled(InputLabel)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nclass SignFulfillment extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n id: t.number.isRequired,\r\n errors: t.object,\r\n form: t.object,\r\n loadHtml: t.func.isRequired,\r\n request: t.object,\r\n signContract: t.func.isRequired,\r\n signRequest: t.object,\r\n updateForm: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.scrollRef = React.createRef();\r\n this.state = { hasHtml: false, redirect: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ hasHtml: true }, () => this.props.loadHtml());\r\n if (this.scrollRef.current) {\r\n this.scrollRef.current.focus();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { signRequest } = this.props;\r\n\r\n if (prevProps.signRequest.isLoading && signRequest.hasFinished && !signRequest.hasFailed) {\r\n this.setState({\r\n redirect: true,\r\n });\r\n }\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { form, updateForm } = this.props;\r\n formState.docId = this.props.id;\r\n const newData = { ...form, ...formState };\r\n updateForm(newData, [attribute]);\r\n }, 250);\r\n\r\n handleClientSignature = (data) => {\r\n this.props.updateForm({ ...this.props.form, signaturePadClient: data }, ['signaturePadClient']);\r\n };\r\n\r\n handleSpouseSignature = (data) => {\r\n this.props.updateForm({ ...this.props.form, signaturePadSpouse: data }, ['signaturePadSpouse']);\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (!this.props.signRequest.isLoading) {\r\n this.props.signContract();\r\n }\r\n };\r\n\r\n render() {\r\n const { data = {}, errors = {}, form = {}, request, signRequest } = this.props;\r\n\r\n if (this.state.redirect) {\r\n return <Redirect to=\"/documents\" />;\r\n }\r\n //alert(request.isLoading);\r\n return (\r\n <AsyncLoader request={request}>\r\n <>\r\n <PdfViewer base64={safeAccess(data, 'fileData', '')} isFulfillment={true} />\r\n <Form id=\"signatureForm\" handleChange={this.handleChange} defaults={form}>\r\n {safeAccess(errors, 'na') && (\r\n <Alert key={'invalid-info'} brand=\"danger\">\r\n {errors.na.detail}\r\n </Alert>\r\n )}\r\n <Header4>\r\n For your security, please input the correct information below to sign the application.\r\n </Header4>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.firstName}>\r\n <InputLabel2>First Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'firstName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"firstName\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.lastName}>\r\n <InputLabel2>Last Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'lastName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"lastName\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel2>Email</InputLabel2>\r\n <InputError>{safeAccess(errors, 'email.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"email\" type=\"email\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.password}>\r\n <InputLabel2>Password</InputLabel2>\r\n <InputError>{safeAccess(errors, 'password.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"password\" type=\"password\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <Signature handleChange={this.handleClientSignature} label=\"Your signature\" />\r\n {data.needSpouseSignature && (\r\n <Signature handleChange={this.handleSpouseSignature} label=\"Spouse's Signature\" />\r\n )}\r\n </Form>\r\n <Button brand=\"primary\" onClick={(e) => this.submit(e)}>\r\n {signRequest.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Sign contract'}\r\n </Button>\r\n </>\r\n </AsyncLoader>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => ({\r\n data: state.fulfillment.cache[ownProps.id],\r\n form: state.fulfillment.form,\r\n errors: state.fulfillment.errors,\r\n request: state.fulfillment.requests.loadResource,\r\n signRequest: state.fulfillment.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n loadHtml: async () => {\r\n await dispatch(fulfillmentLoadResource(ownProps.id));\r\n await dispatch(fulfillmentCopyResourceToForm(ownProps.id));\r\n },\r\n signContract: () => dispatch(fulfillmentUpdateResource(ownProps.id)),\r\n updateForm: (data, attributes) => dispatch(fulfillmentHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SignFulfillment);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <strong>Step 1 – Complete and send Employment Certification form</strong>\r\n <ul>\r\n <li>\r\n Print the Employment Certification form found in the My Documents section of your MyFiducius\r\n portal and hand-sign page one.\r\n </li>\r\n <li>Your employer must complete and sign the second page.</li>\r\n <li>\r\n Please verify your Social Security Number is present on the first three pages of your\r\n employment certification(s) prior to submitting it.\r\n </li>\r\n <li>\r\n Questions 1 through 9 <strong>must</strong> be completed. Please read the answer to question\r\n 9 to determine if succeeding questions require an answer.\r\n </li>\r\n </ul>\r\n <strong>Step 2 – Submit the form to Federal Student Aid</strong>\r\n <ul>\r\n <li>\r\n Upload the signed form to{' '}\r\n <a href=\"https://studentaid.gov\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n Federal Student Aid\r\n </a>{' '}\r\n if you have an account.\r\n <ul>\r\n <li>Select \"File Upload\" on the top right.</li>\r\n <li>Select \"Public Service Loan Forgiveness\".</li>\r\n <li>Select \"Employment Certification Form (PSLF)\".</li>\r\n </ul>\r\n </li>\r\n Or\r\n <li>\r\n Fax your application to Federal Student Aid at 540.212.2415 if you do not have an account.\r\n </li>\r\n </ul>\r\n </>\r\n);\r\n\r\nconst EmpCertComplete = withRouter((props) => (\r\n <TodoComplete\r\n {...props}\r\n onComplete={() => props.history.push('/documents')}\r\n text={<TodoText />}\r\n title=\"Submit your Employer Certification Form\"\r\n />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EmpCertComplete);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <strong>Step 1 – Wait for Employment Certification approval letter</strong>\r\n <ul>\r\n <li>This letter states your form was accepted.</li>\r\n <li>This typically arrives three to four weeks after the form is submitted.</li>\r\n </ul>\r\n <strong>Step 2 – Check on the status of the form</strong>\r\n <ul>\r\n <li>\r\n Create or Login to your account at{' '}\r\n <a href=\"https://studentaid.gov\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n Federal Student Aid.\r\n </a>\r\n </li>\r\n <li>\r\n You should be able to complete this step <strong>six to seven weeks</strong> from your\r\n submission.\r\n </li>\r\n </ul>\r\n <strong>\r\n Step 3 – Loan(s) will transfer to Federal Student Aid (check every two to three weeks once you\r\n receive the approval letter)\r\n </strong>\r\n <ul>\r\n <li>\r\n The transfer typically completes <strong>three to four months</strong> after the submission.\r\n </li>\r\n <li>The full federal loan balance, and repayment plan will be transferred.</li>\r\n <li>Confirm the total loan balance is $0 at your previous loan servicer(s).</li>\r\n <li>\r\n Go to your{' '}\r\n <a href=\"https://studentaid.gov\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n Federal Student Aid account\r\n </a>{' '}\r\n to confirm your loans are now showing.\r\n </li>\r\n </ul>\r\n <strong>Step 4 – Confirm completion</strong>\r\n <ul>\r\n <li>\r\n Confirm the entire loan balance shown at your previous loan servicer(s) has been transferred\r\n to Federal Student Aid.\r\n </li>\r\n <li>\r\n Please remember your employment certification form can take up to three months to process.\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have verified the transfer is complete.\r\n </strong>\r\n <br />\r\n <br />\r\n <strong>\r\n If you submitted your employment certification form more than three months ago and your loan\r\n balance has not transferred, please visit the Contact Us button on the left of your portal to\r\n reach out to us.\r\n {/*If you submitted your employment certification form more than three months ago and your loan\r\n balance has not transferred, contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a>{' '}\r\n option: 2.*/}\r\n </strong>\r\n </>\r\n);\r\n\r\nconst EmpCertCheck = withRouter((props) => (\r\n <TodoComplete\r\n {...props}\r\n onComplete={() => props.history.push('/documents')}\r\n text={<TodoText />}\r\n title=\"Check on your Employer Certification\"\r\n />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EmpCertCheck);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <strong>Step 1 – Login to your current loan servicer(s) account(s)</strong>\r\n <ul>\r\n <li>\r\n Request <strong>general</strong> forbearance on any loan(s) that have a payment due.{' '}\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> You will want to remove any direct debit that is currently\r\n placed on these loans. If a payment is due within the next week, you may want to contact\r\n your bank to ensure the payment is not drawn from your account.\r\n </li>\r\n </ul>\r\n\r\n <strong>Step 2 – Confirm you have requested forbearance.</strong>\r\n <ul>\r\n <li>\r\n I confirm I have submitted a forbearance request at my current loan servicer(s) to place my\r\n current loan payment(s) on hold. We recommend you request general forbearance for\r\n approximately <strong>four</strong> months to allow enough time to complete the remaining\r\n steps.\r\n </li>\r\n <li>\r\n Forbearance requests typically take up to two weeks to process and any payment made while in\r\n forbearance may not qualify.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> If you have used more than 36 months of general forbearance,\r\n your request may be denied by the loan servicer.\r\n </li>\r\n </ul>\r\n </>\r\n);\r\n\r\nconst ForbearancePhaseOneComplete = withRouter((props) => (\r\n <TodoComplete\r\n {...props}\r\n onComplete={() => props.history.push('/dashboard')}\r\n text={<TodoText />}\r\n title=\"Request General Forbearance - Phase 1\"\r\n />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ForbearancePhaseOneComplete);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <strong>Step 1 – Login to your account at Federal Student Aid.</strong>\r\n <ul>\r\n <li>\r\n Request general forbearance for <strong>twelve months</strong>.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> It is possible that you do not use the full length of your\r\n request. Your forbearance request will end once the correct income-driven repayment is\r\n established in a future step.\r\n </li>\r\n </ul>\r\n <strong>Step 2 – Confirm you have requested forbearance.</strong>\r\n <ul>\r\n <li>\r\n I confirm I have submitted a forbearance request at Federal Student Aid to place my current\r\n loan payments on hold.\r\n </li>\r\n <li>\r\n Forbearance requests typically take up to two weeks to process and any payment made while in\r\n forbearance may not qualify.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> If you have used more than 36 months of general forbearance,\r\n your request may be denied by the loan servicer.\r\n </li>\r\n </ul>\r\n <br />\r\n <br />\r\n Questions? Please visit the Contact Us button on the left of your portal to reach out to us.\r\n {/*Contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> Option: 2*/}\r\n </>\r\n);\r\n\r\nconst ForbearancePhaseTwoComplete = withRouter((props) => (\r\n <TodoComplete\r\n {...props}\r\n onComplete={() => props.history.push('/dashboard')}\r\n text={<TodoText />}\r\n title=\"Request Forbearance - Phase 2\"\r\n />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ForbearancePhaseTwoComplete);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Card, CardBody, CardFooter, CardText, Header1, Link } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer } from '../../routing';\r\n\r\nimport SignFulfillment from '../components/sign-fulfillment';\r\n\r\nconst Fulfillment = ({ match }) => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <Header1>Electronic Document Signature</Header1>\r\n <CardText>\r\n <SignFulfillment id={match.params.fileId} />\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Link to=\"/dashboard\">Return home</Link>\r\n </CardFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nFulfillment.propTypes = {\r\n match: t.shape({\r\n params: t.object,\r\n }),\r\n};\r\n\r\nexport default withRouter(Fulfillment);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nconst DOCUMENTS_REMOVE_FROM_CACHE = 'app/documents/REMOVE_FROM_CACHE';\r\n\r\nexport default {\r\n ...resourceTypesGenerator('documents'),\r\n DOCUMENTS_REMOVE_FROM_CACHE,\r\n};\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nconst documentsRemoveFromCache = (id) => ({\r\n type: types.DOCUMENTS_REMOVE_FROM_CACHE,\r\n id,\r\n});\r\n\r\nexport default {\r\n ...resourceActionsGenerator('documents', types),\r\n documentsRemoveFromCache,\r\n};\r\n","import actions from './actions';\r\n\r\nimport { getToken } from '../../auth';\r\nimport { getApiSingle, resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/documents',\r\n resourceType: 'document',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'documents',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n null\r\n);\r\n\r\nconst documentsLoadContbFaq = () => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n const state = getState();\r\n let data = null;\r\n try {\r\n dispatch(actions.documentsLoadResourceRequest(1));\r\n data = await getApiSingle(getToken(state), '/documents/1/CONTBFAQ');\r\n\r\n dispatch(actions.documentsLoadResourceResponse(1));\r\n\r\n dispatch(actions.documentsLoadResourceSuccess(false, 1));\r\n } catch (error) {\r\n dispatch(operations.documentsHandleError(error));\r\n dispatch(actions.documentsLoadResourceFailure(error, 1));\r\n }\r\n return data;\r\n};\r\n\r\nconst documentsLoadTrFaq = () => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n const state = getState();\r\n let data = null;\r\n try {\r\n dispatch(actions.documentsLoadResourceRequest(1));\r\n data = await getApiSingle(getToken(state), '/documents/1/TRFAQ');\r\n\r\n dispatch(actions.documentsLoadResourceResponse(1));\r\n\r\n dispatch(actions.documentsLoadResourceSuccess(false, 1));\r\n } catch (error) {\r\n dispatch(operations.documentsHandleError(error));\r\n dispatch(actions.documentsLoadResourceFailure(error, 1));\r\n }\r\n return data;\r\n};\r\n\r\nconst documentsRemoveFromCache = (id) => (dispatch, getState) => {\r\n let cache = getState().documents.cache;\r\n dispatch(actions.documentsRemoveFromCache(id));\r\n delete cache[id];\r\n dispatch(actions.documentsHandleCacheChange(cache));\r\n};\r\n\r\nconst documentClearUploadedFile = (id) => (dispatch, getState) => {\r\n let cache = getState().documents.cache;\r\n dispatch(actions.documentsRemoveFromCache(id));\r\n if (cache[id]) {\r\n cache[id].name = undefined;\r\n dispatch(actions.documentsHandleCacheChange(cache));\r\n dispatch(actions.documentsHandleFormChange(cache[id]));\r\n }\r\n};\r\n\r\nconst documentsLoadExampleFile = (code, hostFileId) => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n const state = getState();\r\n try {\r\n dispatch(actions.documentsLoadResourceRequest(hostFileId));\r\n let data = await getApiSingle(getToken(state), `/documents/1/${code}`);\r\n\r\n dispatch(actions.documentsLoadResourceResponse(hostFileId));\r\n\r\n let { cache } = state.documents;\r\n data.id = 'example';\r\n cache[hostFileId]['exampleFile'] = data;\r\n\r\n await dispatch(operations.documentsHandleCacheChange(cache));\r\n dispatch(actions.documentsLoadResourceSuccess(false, hostFileId));\r\n } catch (error) {\r\n dispatch(operations.documentsHandleError(error));\r\n dispatch(actions.documentsLoadResourceFailure(error, hostFileId));\r\n }\r\n};\r\n\r\nconst documentsLoadScreeningNSLDS = () => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n const state = getState();\r\n let data = null;\r\n try {\r\n dispatch(actions.documentsLoadResourceRequest(-1));\r\n data = await getApiSingle(getToken(state), '/documents/1/SCRNNSLDS');\r\n\r\n dispatch(actions.documentsLoadResourceResponse(-1));\r\n\r\n let { cache } = state.documents;\r\n cache['-1'] = data;\r\n\r\n await dispatch(operations.documentsHandleCacheChange(cache));\r\n\r\n dispatch(actions.documentsLoadResourceSuccess(false, -1));\r\n } catch (error) {\r\n dispatch(operations.documentsHandleError(error));\r\n dispatch(actions.documentsLoadResourceFailure(error, -1));\r\n }\r\n};\r\n\r\nconst { documentsDisableValidation } = actions;\r\nconst {\r\n documentsHandleFormChange,\r\n documentsLoadCollection,\r\n documentsLoadResource,\r\n documentsCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n documentsCreateResource,\r\n documentsDisableValidation,\r\n documentsHandleFormChange,\r\n documentsLoadCollection,\r\n documentsLoadExampleFile,\r\n documentsLoadResource,\r\n documentsRemoveFromCache,\r\n documentsLoadContbFaq,\r\n documentsLoadTrFaq,\r\n documentClearUploadedFile,\r\n documentsLoadScreeningNSLDS,\r\n};\r\n\r\nexport default operations;\r\n","import styled from 'styled-components';\r\n\r\nconst ApiFileWrapper = styled.div`\r\n position: relative;\r\n`;\r\n\r\nexport default ApiFileWrapper;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Button } from 'fiducius-ui';\r\n\r\nconst ExampleFileButton = styled(({ show, ...props }) => <Button {...props} />)`\r\n border-radius: ${(p) => p.theme.borderRadiusBadge};\r\n left: -0.1rem;\r\n padding: 0 0.65rem;\r\n position: absolute;\r\n top: 0.2rem;\r\n visibility: ${(p) => (p.show ? 'visible' : 'hidden')};\r\n z-index: 1;\r\n`;\r\n\r\nexport default ExampleFileButton;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport b64toBlob from 'b64-to-blob';\r\nimport { connect } from 'react-redux';\r\nimport { FileUpload } from 'fiducius-ui';\r\n\r\nimport { todosLoadCollection } from '../../todos';\r\nimport { authLoadPermissions } from '../../auth';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport {\r\n documentsHandleFormChange,\r\n documentsLoadExampleFile,\r\n documentsLoadResource,\r\n documentsCreateResource,\r\n documentsRemoveFromCache,\r\n documentClearUploadedFile,\r\n documentsLoadCollection,\r\n} from '../redux/operations';\r\n\r\nimport { fulfillmentLoadCollection } from '../../fulfillment/redux/operations';\r\n\r\nimport ApiFileWrapper from '../styles/api-file-wrapper';\r\nimport ExampleFileButton from '../styles/example-file-button';\r\n\r\nconst NSLDSFileTypeList = ['.txt'];\r\nconst OthersFileTypeList = ['.pdf', '.gif', '.bmp', '.jpg', '.jpeg', '.tif', '.tiff', '.png'];\r\n\r\nclass ApiFile extends React.Component {\r\n static propTypes = {\r\n file: t.object,\r\n exampleFile: t.object,\r\n getDocData: t.func.isRequired,\r\n getExampleDocData: t.func.isRequired,\r\n hasFailed: t.bool.isRequired,\r\n isDownloading: t.bool.isRequired,\r\n isUploading: t.bool.isRequired,\r\n reloadTodos: t.func.isRequired,\r\n removeFromCache: t.func.isRequired,\r\n requiredUpload: t.bool,\r\n uploadDoc: t.func.isRequired,\r\n uploadCompleted: t.func,\r\n clearUploadedFile: t.func,\r\n addError: t.func.isRequired,\r\n loadDocs: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n shouldDownload: false,\r\n shouldDownloadExampleFile: false,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const {\r\n exampleFile,\r\n file,\r\n hasFailed,\r\n isUploading,\r\n reloadTodos,\r\n removeFromCache,\r\n clearUploadedFile,\r\n isDownloading,\r\n } = this.props;\r\n const { shouldDownload, shouldDownloadExampleFile } = this.state;\r\n\r\n if (shouldDownload && file.fileData) {\r\n this.getFileFromData(file.fileData, file.name);\r\n this.setState({ shouldDownload: false });\r\n }\r\n\r\n if (shouldDownloadExampleFile && safeAccess(exampleFile, 'fileData')) {\r\n this.getFileFromData(exampleFile.fileData, `Example ${file.description}${exampleFile.name}`);\r\n this.setState({ shouldDownloadExampleFile: false });\r\n }\r\n\r\n if (prevProps.isDownloading && !isDownloading) {\r\n //this.props.loadDocs();\r\n }\r\n\r\n if (prevProps.isUploading && !isUploading) {\r\n reloadTodos();\r\n this.docUploaded(file, hasFailed);\r\n if (hasFailed) {\r\n clearUploadedFile(file.id);\r\n } else {\r\n removeFromCache(file.id);\r\n }\r\n this.setState({ ...this.state });\r\n }\r\n }\r\n\r\n docUploaded = (file, hasFailed) => {\r\n let trDoc = false;\r\n let refreshPage = false;\r\n if (!hasFailed) {\r\n for (let [key, value] of Object.entries(file)) {\r\n if (key === 'fileTypeCd' && (value === 'RPTCD' || value === 'PRFPY')) {\r\n trDoc = true;\r\n }\r\n if (key === 'fileTypeCd' && value === 'PACCT') {\r\n refreshPage = true;\r\n }\r\n }\r\n }\r\n if (!Object.keys(file).includes('signaturePadClient')) {\r\n //the if excludes fulfillment files.\r\n this.props.uploadCompleted(trDoc, refreshPage);\r\n }\r\n };\r\n\r\n onUpload = async (file) => {\r\n const data = await this.extractFileData(file);\r\n const rest = this.props.file;\r\n this.props.uploadDoc({ ...rest, ...data });\r\n };\r\n\r\n onUploadFailure = async (file) => {\r\n //const data = await this.extractFileData(file);\r\n const rest = this.props.file;\r\n\r\n if (rest.fileTypeCd === 'LNDT' || rest.fileTypeCd === 'SNLDS') {\r\n this.props.addError({\r\n title: 'Invalid file extension',\r\n detail: 'NSLDS files must be uploaded as a text file. (*.txt)',\r\n });\r\n } else {\r\n this.props.addError({\r\n title: 'Invalid file extension',\r\n detail:\r\n 'File must be uploaded in one of the following file formats. (*.pdf, *.gif, *.bmp, *.jpg, *.jpeg, *.tif, *.tiff, *.png)',\r\n });\r\n }\r\n\r\n this.props.uploadCompleted(this.props.file, true);\r\n };\r\n\r\n extractFileData = async (file) => {\r\n const fileString = await this.fileToBase64(file);\r\n return {\r\n fileData: fileString,\r\n lastModified: file.lastModified,\r\n lastModifiedDate: file.lastModifiedDate,\r\n name: file.name,\r\n size: file.size,\r\n contentType: file.type,\r\n };\r\n };\r\n\r\n fileToBase64 = (file) => {\r\n let base64string;\r\n const reader = new FileReader();\r\n\r\n return new Promise((resolve, reject) => {\r\n reader.onerror = () => {\r\n reader.abort();\r\n reject(new Error('Error parsing input file'));\r\n };\r\n\r\n reader.onload = () => {\r\n const dataUrl = reader.result;\r\n base64string = dataUrl.split(',')[1];\r\n resolve(base64string);\r\n };\r\n\r\n try {\r\n reader.readAsDataURL(file);\r\n } catch (ex) {\r\n reader.abort();\r\n }\r\n });\r\n };\r\n\r\n onDownload = () => {\r\n const { id, fileData, name } = this.props.file;\r\n if (fileData) {\r\n this.getFileFromData(fileData, name);\r\n } else {\r\n this.setState({ shouldDownload: true }, () => this.props.getDocData(id));\r\n }\r\n };\r\n\r\n onDownloadExample = () => {\r\n const { exampleFile, file } = this.props;\r\n if (safeAccess(exampleFile, 'fileData', false)) {\r\n this.getFileFromData(exampleFile.fileData, `Example ${file.description}${exampleFile.name}`);\r\n } else {\r\n this.setState({ shouldDownloadExampleFile: true }, () =>\r\n this.props.getExampleDocData(file.fileTypeCd, file.id)\r\n );\r\n }\r\n };\r\n\r\n getExampleFileBadge = () => {\r\n const { hasExampleFile } = this.props.file;\r\n return (\r\n <ExampleFileButton brand=\"secondary\" show={hasExampleFile} onClick={this.onDownloadExample}>\r\n Example\r\n </ExampleFileButton>\r\n );\r\n };\r\n\r\n getFileFromData = (data, name) => {\r\n const blob = b64toBlob(data);\r\n\r\n // IE10+ : (has Blob, but not a[download] or URL)\r\n if (navigator.msSaveBlob) {\r\n return navigator.msSaveBlob(blob, name);\r\n } else {\r\n let link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = name;\r\n // Firefox and Edge require actual appended element for click()\r\n document.body.appendChild(link);\r\n link.click();\r\n window.URL.revokeObjectURL(link.href);\r\n link.remove();\r\n }\r\n };\r\n\r\n getUploaderProps() {\r\n const { allowedDownload, description, fileTypeCd, name, type } = this.props.file;\r\n let props = {\r\n accept: [],\r\n allowDelete: false,\r\n allowDownload: false,\r\n allowUpload: false,\r\n disabled: true,\r\n fileName: name,\r\n fileType: type,\r\n isDownloading: this.props.isDownloading,\r\n isUploading: this.props.isUploading,\r\n requiredUpload: this.props.requiredUpload,\r\n title: description,\r\n };\r\n\r\n // Some file types in the database should be validated for type\r\n if (fileTypeCd === 'LNDT' || fileTypeCd === 'SNLDS') {\r\n props.accept = NSLDSFileTypeList;\r\n } else {\r\n props.accept = OthersFileTypeList;\r\n }\r\n\r\n // only enable actions that should be enabled\r\n if (allowedDownload) {\r\n props.allowDownload = true;\r\n props.disabled = false;\r\n props.onDownloadFile = this.onDownload;\r\n } else if (!name) {\r\n props.allowUpload = true;\r\n props.disabled = false;\r\n props.onAddFile = this.onUpload;\r\n props.onAddFileFailure = this.onUploadFailure;\r\n }\r\n\r\n return props;\r\n }\r\n\r\n render() {\r\n return (\r\n <ApiFileWrapper>\r\n {this.getExampleFileBadge()}\r\n <FileUpload {...this.getUploaderProps()} />\r\n </ApiFileWrapper>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n const { createResource, loadResource } = state.documents.requests;\r\n let hasFailed = true;\r\n let isUploading = false;\r\n let isDownloading = false;\r\n if (createResource.key === ownProps.file.id || loadResource.key === ownProps.file.id) {\r\n hasFailed = createResource.hasFailed || loadResource.hasFailed;\r\n isUploading = createResource.isLoading;\r\n isDownloading = loadResource.isLoading;\r\n }\r\n\r\n return { hasFailed, isUploading, isDownloading };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n getDocData: async (id) => {\r\n await dispatch(documentsLoadResource(id, id));\r\n await dispatch(documentsRemoveFromCache(id));\r\n },\r\n getExampleDocData: (code, hostFileId) => dispatch(documentsLoadExampleFile(code, hostFileId)),\r\n\r\n reloadTodos: () => dispatch(todosLoadCollection()),\r\n removeFromCache: (id) => dispatch(documentsRemoveFromCache(id)),\r\n uploadDoc: async (file) => {\r\n await dispatch(documentsHandleFormChange(file));\r\n await dispatch(documentsCreateResource(file.id));\r\n await dispatch(authLoadPermissions());\r\n },\r\n clearUploadedFile: (id) => {\r\n dispatch(documentClearUploadedFile(id));\r\n },\r\n loadDocs: async () => {\r\n await dispatch(authLoadPermissions());\r\n dispatch(documentsLoadCollection());\r\n dispatch(fulfillmentLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ApiFile);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Button, Card, CardBody, CardFooter, CardHeader, CardText, Modal } from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../root';\r\n\r\nclass UploadSuccess extends React.Component {\r\n static propTypes = {\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n trFileUpload: t.bool.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.modalRef = React.createRef();\r\n this.firstInput = React.createRef();\r\n }\r\n\r\n componentDidUpdate(prevProps) {}\r\n\r\n getMessage = () => {\r\n const { errors } = this.props;\r\n let message;\r\n\r\n if (errors && errors.detail) {\r\n message = errors.detail;\r\n } else {\r\n message = 'Your file has been successfully uploaded!';\r\n }\r\n\r\n return message;\r\n };\r\n\r\n render() {\r\n const { closeForm, errors, isOpen, trFileUpload } = this.props;\r\n\r\n //alert(errors.length)\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen}>\r\n <Card brand={errors === undefined ? 'success' : 'danger'}>\r\n <CardHeader>{errors === undefined ? 'Upload Confirmation' : 'Upload Error'}</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n {this.getMessage()}\r\n <p></p>\r\n {trFileUpload && (\r\n <p>\r\n <b>Please Note:</b> Transcripts and proofs of payment can be uploaded multiple\r\n times. If an additional document of this type is needed, it will be requested.\r\n </p>\r\n )}\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Continue\r\n </Button>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nexport default UploadSuccess;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport styled, { css } from 'styled-components';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSquare } from '@fortawesome/pro-solid-svg-icons/faSquare';\r\nimport { faExternalLink } from '@fortawesome/pro-regular-svg-icons/faExternalLink';\r\nimport { Card, Header5, Header6, Undraw } from 'fiducius-ui';\r\n\r\nconst hoverCss = (disabled, hasFile) => {\r\n if (!disabled) {\r\n return css`\r\n &.active {\r\n cursor: copy;\r\n }\r\n\r\n &:hover,\r\n &:focus,\r\n &:active,\r\n &.active {\r\n cursor: pointer;\r\n ${hasFile\r\n ? css`\r\n box-shadow: ${(p) => p.theme.boxShadowLarge};\r\n transition: box-shadow 250ms ease-in-out;\r\n `\r\n : css`\r\n box-shadow: inset 0 0 0.75rem 0.25rem ${(p) => p.theme.primary};\r\n transition: box-shadow 100ms ease-in-out;\r\n `}\r\n outline: 0;\r\n & > .file-overlay {\r\n opacity: 1;\r\n }\r\n }\r\n `;\r\n } else {\r\n return css`\r\n cursor: not-allowed;\r\n `;\r\n }\r\n};\r\n\r\nconst fileCss = (disabled, hasFile) => css`\r\n align-items: center;\r\n border-radius: ${(p) => p.theme.borderRadius};\r\n display: flex;\r\n flex-shrink: 1;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n margin: 1em;\r\n min-height: 13rem;\r\n max-height: 17rem;\r\n min-width: 9rem;\r\n max-width: 12rem;\r\n padding: 1em;\r\n position: relative;\r\n ${hasFile\r\n ? css`\r\n box-shadow: ${(p) => p.theme.boxShadow};\r\n transition: box-shadow 250ms ease-in-out;\r\n `\r\n : css`\r\n border: ${(p) => p.theme.borderWidth} dashed ${(p) => p.theme.highContrast};\r\n transition: box-shadow 100ms ease-in-out;\r\n `}\r\n ${hoverCss(disabled, hasFile)}\r\n`;\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nconst UploadZone = styled(({ hasFile, zoneRef, ...rest }) => <div ref={zoneRef} {...rest} />)`\r\n ${(p) => fileCss(p.disabled, p.hasFile)}\r\n`;\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nconst FileItem = styled(({ hasFile, ...rest }) => <Card {...rest} />)`\r\n ${(p) => fileCss(p.disabled, p.hasFile)}\r\n`;\r\n\r\nconst ActionOverlay = styled.div`\r\n align-items: center;\r\n color: ${(p) => p.theme.highContrast};\r\n display: flex;\r\n flex-shrink: 1;\r\n height: 100%;\r\n justify-content: center;\r\n left: 0;\r\n opacity: 0;\r\n position: absolute;\r\n top: 0;\r\n width: 100%;\r\n\r\n &:hover,\r\n &:focus {\r\n opacity: 1;\r\n }\r\n`;\r\n\r\nconst OverlayBackground = styled.div`\r\n background-color: ${(p) => p.theme.level4};\r\n color: ${(p) => p.theme.danger};\r\n height: 100%;\r\n left: 0;\r\n opacity: 0.5;\r\n position: absolute;\r\n top: 0;\r\n width: 100%;\r\n`;\r\n\r\nconst OverlayIconLayers = styled.span`\r\n z-index: 1;\r\n .overlay-icon-front {\r\n color: ${(p) => p.theme.highContrast};\r\n }\r\n\r\n .overlay-icon-back {\r\n color: ${(p) => p.theme.lowContrast};\r\n }\r\n`;\r\n\r\nconst FileName = styled(Header5)`\r\n text-align: center;\r\n word-wrap: break-word;\r\n width: 100%;\r\n`;\r\n\r\nconst NsldsFileLink = ({ history, link, name, title, type }) => {\r\n const image = type === 'img' ? 'photo' : 'document';\r\n return (\r\n <FileItem className=\"file-item\" hasFile>\r\n <FileName>{title}</FileName>\r\n <>\r\n <Undraw image={image} size={1 / 4} />\r\n <Header6>{name}</Header6>\r\n <ActionOverlay className=\"file-overlay\" onClick={() => history.push(link)}>\r\n <OverlayBackground />\r\n <OverlayIconLayers className=\"fa-layers fa-7x fa-fw\">\r\n <FontAwesomeIcon className=\"overlay-icon-back\" icon={faSquare} fixedWidth />\r\n <FontAwesomeIcon\r\n className=\"overlay-icon-front\"\r\n icon={faExternalLink}\r\n fixedWidth\r\n transform=\"up-1 right-2\"\r\n />\r\n </OverlayIconLayers>\r\n </ActionOverlay>\r\n </>\r\n </FileItem>\r\n );\r\n};\r\n\r\nNsldsFileLink.propTypes = {\r\n history: t.object,\r\n link: t.string.isRequired,\r\n name: t.node,\r\n title: t.string.isRequired,\r\n type: t.string.isRequired,\r\n};\r\n\r\nexport default withRouter(NsldsFileLink);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { AsyncLoader, Header2, Badge } from 'fiducius-ui';\r\n\r\nimport { documentsDisableValidation, documentsLoadCollection } from '../redux/operations';\r\nimport ApiFile from './api-file';\r\nimport UploadSuccess from '../components/upload-success';\r\nimport NsldsFileLink from '../components/nslds-file-link';\r\n\r\nconst FlexWrap = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nclass DocumentLibrary extends React.Component {\r\n static propTypes = {\r\n files: t.object,\r\n loadDocs: t.func.isRequired,\r\n request: t.object,\r\n errors: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.scrollRef = React.createRef();\r\n this.state = {\r\n errorCount: 0,\r\n openModal: false,\r\n isTrUpload: false,\r\n errors: [],\r\n keyCount: 0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadDocs();\r\n }\r\n\r\n closeForm = () => {\r\n if (this.props.errors && this.props.errors.generalErrors) {\r\n this.props.errors.generalErrors = [];\r\n }\r\n this.setState({ ...this.state, openModal: false, errors: [] });\r\n };\r\n\r\n openModal = () => {\r\n this.setState({ ...this.state, openModal: true });\r\n };\r\n\r\n handleUpload = (isTrDoc, refreshPage) => {\r\n //isTrDoc is a boolean that determines if uploaded doc is for TR.\r\n this.setState({\r\n isTrUpload: isTrDoc,\r\n openModal: true,\r\n });\r\n if (refreshPage) {\r\n this.props.loadDocs();\r\n }\r\n };\r\n\r\n getOtherProps = () => {\r\n const { files } = this.props;\r\n const id = Object.keys(files).length * -1 - 1;\r\n return {\r\n addError: this.addError,\r\n key: id,\r\n uploadCompleted: () => this.handleUpload(false),\r\n file: {\r\n description: 'Other',\r\n exampleFile: null,\r\n fileTypeCd: 'OTH', // depends on database file type\r\n id: id,\r\n name: null,\r\n type: 'doc',\r\n },\r\n };\r\n };\r\n\r\n needsNSLDS = () => {\r\n const { files } = this.props;\r\n const matches = Object.keys(files).filter((k) => files[k].fileTypeCd === 'LNDT');\r\n return matches.length > 0;\r\n };\r\n\r\n addError = (error) => {\r\n const { errors } = this.state;\r\n errors.push(error);\r\n this.setState({ ...this.state, errors: errors });\r\n };\r\n\r\n getErrors = () => {\r\n if (this.state.errors.length > 0) {\r\n return this.state.errors[0];\r\n } else if (\r\n this.props.errors &&\r\n this.props.errors.generalErrors &&\r\n this.props.errors.generalErrors.length > 0\r\n ) {\r\n return this.props.errors.generalErrors[0];\r\n }\r\n return undefined;\r\n };\r\n\r\n render() {\r\n const { files, request } = this.props;\r\n //283907, 285483\r\n\r\n return (\r\n <>\r\n <Header2>Manage your important benefit documents here</Header2>\r\n <AsyncLoader request={request}>\r\n <FlexWrap>\r\n {files &&\r\n Object.keys(files)\r\n .sort((a, b) => {\r\n if (files[a].description < files[b].description) {\r\n return -1;\r\n }\r\n if (files[a].description > files[b].description) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n .map((key) => {\r\n if (\r\n files[key].fileTypeCd === 'LNDT' /*|| files[key].fileTypeCd === 'SNLDS'*/ &&\r\n (files[key].name === undefined ||\r\n files[key].name === null ||\r\n files[key].name === '')\r\n ) {\r\n return (\r\n <NsldsFileLink\r\n key={key}\r\n link={'/nslds'}\r\n name={<Badge brand=\"danger\">Go To Upload</Badge>}\r\n title={files[key].description}\r\n type=\"document\"\r\n />\r\n );\r\n } else {\r\n return (\r\n <ApiFile\r\n key={key}\r\n file={files[key]}\r\n exampleFile={files[key].exampleFile}\r\n uploadCompleted={this.handleUpload}\r\n requiredUpload\r\n addError={this.addError}\r\n />\r\n );\r\n }\r\n })}\r\n <ApiFile {...this.getOtherProps()} />\r\n </FlexWrap>\r\n <div id=\"uploadError\" />\r\n <UploadSuccess\r\n isOpen={this.state.openModal}\r\n errors={this.getErrors()}\r\n closeForm={this.closeForm}\r\n trFileUpload={this.state.isTrUpload}\r\n />\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n files: state.documents.cache,\r\n errors: state.documents.errors,\r\n request: state.documents.requests.loadCollection,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadDocs: () => {\r\n dispatch(documentsDisableValidation());\r\n dispatch(documentsLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DocumentLibrary);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { DashboardSection } from 'fiducius-ui';\r\n\r\nimport { FulfillmentLibrary } from '../../fulfillment';\r\n\r\nimport DocumentLibrary from './document-library';\r\n\r\nexport const Spacer = styled.div`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nconst MyDocuments = () => (\r\n <DashboardSection title=\"My Documents\">\r\n <FulfillmentLibrary />\r\n <Spacer />\r\n <DocumentLibrary />\r\n </DashboardSection>\r\n);\r\n\r\nexport default MyDocuments;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('documents', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport styled, { css } from 'styled-components';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSquare } from '@fortawesome/pro-solid-svg-icons/faSquare';\r\nimport { faExternalLink } from '@fortawesome/pro-regular-svg-icons/faExternalLink';\r\nimport { Card, Header5, Header6, Undraw } from 'fiducius-ui';\r\n\r\nconst hoverCss = (disabled, hasFile) => {\r\n if (!disabled) {\r\n return css`\r\n &.active {\r\n cursor: copy;\r\n }\r\n\r\n &:hover,\r\n &:focus,\r\n &:active,\r\n &.active {\r\n cursor: pointer;\r\n ${hasFile\r\n ? css`\r\n box-shadow: ${(p) => p.theme.boxShadowLarge};\r\n transition: box-shadow 250ms ease-in-out;\r\n `\r\n : css`\r\n box-shadow: inset 0 0 0.75rem 0.25rem ${(p) => p.theme.primary};\r\n transition: box-shadow 100ms ease-in-out;\r\n `}\r\n outline: 0;\r\n & > .file-overlay {\r\n opacity: 1;\r\n }\r\n }\r\n `;\r\n } else {\r\n return css`\r\n cursor: not-allowed;\r\n `;\r\n }\r\n};\r\n\r\nconst fileCss = (disabled, hasFile) => css`\r\n align-items: center;\r\n border-radius: ${(p) => p.theme.borderRadius};\r\n display: flex;\r\n flex-shrink: 1;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n margin: 1em;\r\n min-height: 13rem;\r\n max-height: 17rem;\r\n min-width: 9rem;\r\n max-width: 12rem;\r\n padding: 1em;\r\n position: relative;\r\n ${hasFile\r\n ? css`\r\n box-shadow: ${(p) => p.theme.boxShadow};\r\n transition: box-shadow 250ms ease-in-out;\r\n `\r\n : css`\r\n border: ${(p) => p.theme.borderWidth} dashed ${(p) => p.theme.highContrast};\r\n transition: box-shadow 100ms ease-in-out;\r\n `}\r\n ${hoverCss(disabled, hasFile)}\r\n`;\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nconst UploadZone = styled(({ hasFile, zoneRef, ...rest }) => <div ref={zoneRef} {...rest} />)`\r\n ${(p) => fileCss(p.disabled, p.hasFile)}\r\n`;\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nconst FileItem = styled(({ hasFile, ...rest }) => <Card {...rest} />)`\r\n ${(p) => fileCss(p.disabled, p.hasFile)}\r\n`;\r\n\r\nconst ActionOverlay = styled.div`\r\n align-items: center;\r\n color: ${(p) => p.theme.highContrast};\r\n display: flex;\r\n flex-shrink: 1;\r\n height: 100%;\r\n justify-content: center;\r\n left: 0;\r\n opacity: 0;\r\n position: absolute;\r\n top: 0;\r\n width: 100%;\r\n\r\n &:hover,\r\n &:focus {\r\n opacity: 1;\r\n }\r\n`;\r\n\r\nconst OverlayBackground = styled.div`\r\n background-color: ${(p) => p.theme.level4};\r\n color: ${(p) => p.theme.danger};\r\n height: 100%;\r\n left: 0;\r\n opacity: 0.5;\r\n position: absolute;\r\n top: 0;\r\n width: 100%;\r\n`;\r\n\r\nconst OverlayIconLayers = styled.span`\r\n z-index: 1;\r\n .overlay-icon-front {\r\n color: ${(p) => p.theme.highContrast};\r\n }\r\n\r\n .overlay-icon-back {\r\n color: ${(p) => p.theme.lowContrast};\r\n }\r\n`;\r\n\r\nconst FileName = styled(Header5)`\r\n text-align: center;\r\n word-wrap: break-word;\r\n width: 100%;\r\n`;\r\n\r\nconst FulfillmentFileLink = ({ history, link, name, title, type }) => {\r\n const image = type === 'img' ? 'photo' : 'document';\r\n return (\r\n <FileItem className=\"file-item\" hasFile>\r\n <FileName>{title}</FileName>\r\n <>\r\n <Undraw image={image} size={1 / 4} />\r\n <Header6>{name}</Header6>\r\n <ActionOverlay className=\"file-overlay\" onClick={() => history.push(link)}>\r\n <OverlayBackground />\r\n <OverlayIconLayers className=\"fa-layers fa-7x fa-fw\">\r\n <FontAwesomeIcon className=\"overlay-icon-back\" icon={faSquare} fixedWidth />\r\n <FontAwesomeIcon\r\n className=\"overlay-icon-front\"\r\n icon={faExternalLink}\r\n fixedWidth\r\n transform=\"up-1 right-2\"\r\n />\r\n </OverlayIconLayers>\r\n </ActionOverlay>\r\n </>\r\n </FileItem>\r\n );\r\n};\r\n\r\nFulfillmentFileLink.propTypes = {\r\n history: t.object,\r\n link: t.string.isRequired,\r\n name: t.node,\r\n title: t.string.isRequired,\r\n type: t.string.isRequired,\r\n};\r\n\r\nexport default withRouter(FulfillmentFileLink);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { AsyncLoader, Badge, Header2 } from 'fiducius-ui';\r\n\r\nimport { ApiFile } from '../../documents';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport FulfillmentFileLink from '../components/fulfillment-file-link';\r\nimport { fulfillmentDisableValidation, fulfillmentLoadCollection } from '../redux/operations';\r\n\r\nconst FlexWrap = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nconst fileLinks = {\r\n 8: '/agreement',\r\n // 9: '/fulfillment/9', // Tax Prep\r\n // 10: '/fulfillment/10', // Forbearance\r\n 11: '/idr',\r\n // 12: '/fulfillment/12', // Emp Cert\r\n // 13: '/fulfillment/13', // Consolidation\r\n // 14: '/fulfillment/14', // Fed Loan Release Info\r\n // 15: '/fulfillment/15', // Fedloan Request End Defer Forbear\r\n // 16: '/fulfillment/16', // Fed Loan School Defer Waiver\r\n // 17: '/fulfillment/17', // Pretax Letterhead\r\n // 18: '/fulfillment/18', // Emp Cert Ft Not Employed\r\n // 19: '/fulfillment/19', // Emp Cert Pt Employed\r\n // 20: '/fulfillment/20', // Emp Cert Pt Not Employed\r\n};\r\n\r\nclass FulfillmentLibrary extends React.Component {\r\n static propTypes = {\r\n docs: t.object,\r\n files: t.object,\r\n loadDocs: t.func.isRequired,\r\n request: t.object,\r\n };\r\n\r\n componentDidMount() {\r\n this.props.loadDocs();\r\n }\r\n\r\n render() {\r\n const { docs, files, request } = this.props;\r\n const keys = Object.keys(files);\r\n\r\n if (keys.length > 0) {\r\n keys.forEach((key) => {\r\n files[key].allowedDownload = true;\r\n files[key].name = safeAccess(docs, `[${key}].name`, 'Download');\r\n files[key].fileName = safeAccess(docs, `[${key}].name`, 'Download');\r\n files[key].hasExampleFile = false;\r\n if (safeAccess(docs, `[${key}].fileData`)) {\r\n files[key].fileData = docs[key].fileData;\r\n }\r\n });\r\n }\r\n\r\n return (\r\n <AsyncLoader request={request} loading={null} empty={null}>\r\n {keys.length > 0 && (\r\n <>\r\n <Header2>Documents that need your attention</Header2>\r\n <FlexWrap>\r\n {files &&\r\n keys\r\n .sort((a, b) => {\r\n if (files[a].description < files[b].description) {\r\n return -1;\r\n }\r\n if (files[a].description > files[b].description) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n .map((key) => {\r\n const file = files[key];\r\n if (file.viewOnly) {\r\n return <ApiFile key={key} file={file} exampleFile={file.exampleFile} />;\r\n } else if (!file.signed) {\r\n return (\r\n <FulfillmentFileLink\r\n key={key}\r\n link={fileLinks[file.docId] || `/fulfillment/${file.docId}`}\r\n name={<Badge brand=\"danger\">Sign Document</Badge>}\r\n title={file.description}\r\n type=\"document\"\r\n />\r\n );\r\n } else {\r\n return null;\r\n }\r\n })}\r\n </FlexWrap>\r\n </>\r\n )}\r\n </AsyncLoader>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n docs: state.documents.cache,\r\n files: state.fulfillment.cache,\r\n request: state.fulfillment.requests.loadCollection,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadDocs: () => {\r\n dispatch(fulfillmentDisableValidation());\r\n dispatch(fulfillmentLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(FulfillmentLibrary);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <ul>\r\n <li>\r\n Confirm that you have filed your most recent tax return as outlined in your Financial\r\n Wellness Plan to maximize the benefit of this program.\r\n </li>\r\n <li>\r\n If your marital status has changed since speaking with your advisor, please visit the\r\n Contact Us button on the left of your portal to reach out to us.\r\n {/*contact us at{' '}\r\n <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2.*/}\r\n </li>\r\n <li>\r\n Haven't filed your taxes yet? Another benefit of being a client of ours is you (and your\r\n spouse) can utilize our national partner, TurboTax and receive a discounted rate to file.\r\n Visit <a href=\"http://www.jdoqocy.com/click-8973232-13149824\">TurboTax</a> to start filing.\r\n </li>\r\n </ul>\r\n\r\n <strong>\r\n Do not confirm this step is finished until you have filed your taxes in accordance with your\r\n Financial Wellness Plan\r\n </strong>\r\n </>\r\n);\r\n\r\nconst TaxesComplete = withRouter((props) => (\r\n <TodoComplete {...props} text={<TodoText />} title=\"Tax filing confirmation\" />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TaxesComplete);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <strong>\r\n Wait for Employment Certification approval and Qualifying Payment update letters from Federal\r\n Student Aid.\r\n </strong>\r\n <ul>\r\n <li>\r\n The Employment Certification approval states your form was accepted, while the Qualifying\r\n Payment update letter states your number of qualifying payments towards the Public Service\r\n Loan Forgiveness program{' '}\r\n <strong> as of the date your employer signed your employment certification form.</strong>{' '}\r\n </li>\r\n <li>\r\n These typically arrive <strong>one to two months</strong> after the form is submitted.\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have received both the Employment Certification\r\n approval and Qualifying Payment update letters.\r\n </strong>\r\n <br />\r\n <br />\r\n Questions? Please visit the Contact Us button on the left of your portal to reach out to us.\r\n {/*Contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> Option: 2*/}\r\n </>\r\n);\r\n\r\nconst RenewalEmpCertCheck = withRouter((props) => (\r\n <TodoComplete {...props} text={<TodoText />} title=\"Check on your Employment Certification(s)\" />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RenewalEmpCertCheck);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <strong>Step 1 - Complete your employment certification(s)</strong>\r\n <ul>\r\n <li>\r\n Complete the first page of the employment certification(s) with a hand-written signature.\r\n </li>\r\n <li>Ensure your employer(s) complete the second page of the employment certification(s).</li>\r\n <ul>\r\n <li>\r\n Questions 1 through 9 <strong>must</strong> be completed. Please read the answer to\r\n question 9 to determine if succeeding questions require an answer.\r\n </li>\r\n </ul>\r\n <li>\r\n Please verify your Social Security Number is present on the first three pages of your\r\n employment certification(s) prior to submitting it.\r\n </li>\r\n </ul>\r\n\r\n <strong>Step 2 – Submit your employment certification(s) to Federal Student Aid</strong>\r\n <ul>\r\n <li>\r\n Upload the signed form to{' '}\r\n <a href=\"https://studentaid.gov\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n Federal Student Aid\r\n </a>{' '}\r\n if you have an account.\r\n <ul>\r\n <li>Select \"File Upload\" on the top right</li>\r\n <li>Select \"Public Service Loan Forgiveness\"</li>\r\n <li>Select \"Employment Certification Form (PSLF)\"</li>\r\n </ul>\r\n </li>\r\n Or\r\n <li>\r\n Fax your application to Federal Student Aid at 540.212.2415 if you do not have an account.\r\n </li>\r\n </ul>\r\n </>\r\n);\r\n\r\nconst RenewalEmpCertComplete = withRouter((props) => (\r\n <TodoComplete\r\n {...props}\r\n onComplete={() => props.history.push('/dashboard')}\r\n text={<TodoText />}\r\n title=\"Complete and submit your Employment Certification(s)\"\r\n />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RenewalEmpCertComplete);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <strong>Login to your current loan servicer(s) account(s)</strong>\r\n <ul>\r\n <li>Request general forbearance on any federal loan(s) that have a payment due.</li>\r\n <li>\r\n <strong>Please note:</strong> If you have any Income-Driven Repayments showing due for your\r\n previous year, you will want to make those payments, if qualifying, prior to submitting a\r\n forbearance request.\r\n </li>\r\n </ul>\r\n <strong>Step 2 – Confirm you have requested general forbearance</strong>\r\n <ul>\r\n <li>\r\n I confirm I have submitted a forbearance request at my current loan servicer(s) to place my\r\n current loan payment(s) on hold. We recommend you request general forbearance for{' '}\r\n <strong> at least one month </strong>to allow enough time to complete the remaining steps.\r\n </li>\r\n <li>\r\n Forbearance requests typically take up to two weeks to process and any payment made while in\r\n forbearance may not qualify.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> If you have used more than 36 months of general forbearance,\r\n your request may be denied by the loan servicer.\r\n </li>\r\n </ul>\r\n <br />\r\n <br />\r\n Questions? please visit the Contact Us button on the left of your portal to reach out to us.\r\n {/* Contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> Option: 2 */}\r\n </>\r\n);\r\n\r\nconst PdForbearance = withRouter((props) => (\r\n <TodoComplete\r\n {...props}\r\n onComplete={() => props.history.push('/dashboard')}\r\n text={<TodoText />}\r\n title=\"Request General Forbearance\"\r\n />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PdForbearance);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('idr');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('idr', types);\r\n","import { FormValidator } from '../../../utils';\n\nexport class IdrValidator extends FormValidator {\n item(validator) {\n // validator.isRequired();\n }\n\n agi(validator, state) {\n //10m is the highest default value.\n let highestAgiValue = 10000000;\n validator.isGreaterThan(0);\n validator.validNumber();\n\n if (state.selfService) {\n //if IDR is greater than $3000 then we need to create an error message.\n //(AGI - POV Guidelines) * (IDR Modifier) /12 = IDR\n //(X - POVG) * (IDRM) / 12 = 3000\n // X = (((3000) * 12) / (IDRM)) + POVG\n let IDRM = 0.15;\n switch (state.existingRepaymentPlan) {\n case 'PAYE':\n case 'REPAYE':\n IDRM = 0.1;\n break;\n case 'ICR':\n IDRM = 0.2;\n break;\n default:\n IDRM = 0.15;\n }\n\n let POVG =\n IDRM <= 0.15\n ? state.custPovertyGuidelines.guidelineForClientIDR\n : state.custPovertyGuidelines.idrGuideline100; //state.custPovertyGuideline.guidelineForClientIDR\n highestAgiValue = (3000 * 12) / IDRM + POVG;\n }\n\n validator.isLessThanOrEqualTo(\n highestAgiValue,\n 'If your income is greater than ' +\n highestAgiValue +\n ' please submit a contact us through your account, and we will assist you as soon as possible.'\n );\n }\n\n actualIdr(validator) {\n validator.isLessThanOrEqualTo(\n 3000,\n 'Please submit a contact us if your IDR amount is greater than $3,000.'\n );\n }\n\n repaymentPlan(validator, state) {\n if (!(state.customerStatus === 'CRET' || !!state.isReducedIdr)) {\n validator.isRequired();\n }\n }\n\n repaymentBegan(validator, state) {\n if (!(state.customerStatus === 'CRET' && !!state.isReducedIdr)) {\n validator.isRequired();\n }\n }\n\n inDeferOrForbearance(validator) {\n validator.isRequired();\n }\n\n question5Response(validator) {\n validator.isRequired();\n }\n question6Response(validator) {\n validator.isRequired();\n }\n question7Response(validator) {\n validator.isRequired();\n }\n question8Response(validator) {\n validator.isRequired();\n }\n question9BResponse(validator) {\n validator.isRequired();\n }\n question9CResponse(validator) {\n validator.isRequired();\n }\n question10Response(validator) {\n validator.isRequired();\n }\n question11Response(validator) {\n validator.isRequired();\n }\n question12Response(validator) {\n validator.isRequired();\n }\n question13Response(validator) {\n validator.isRequired();\n }\n question14Response(validator) {\n validator.isRequired();\n }\n question15Response(validator) {\n validator.isRequired();\n }\n question16Response(validator) {\n validator.isRequired();\n }\n question17Response(validator) {\n validator.isRequired();\n }\n question18Response(validator) {\n validator.isRequired();\n }\n question19Response(validator) {\n validator.isRequired();\n }\n question20Response(validator) {\n validator.isRequired();\n }\n}\n\nexport default IdrValidator;\n","import actions from './actions';\r\nimport { IdrValidator } from './validators';\r\nimport { getToken, getUserId } from '../../../auth';\r\nimport {\r\n getApi,\r\n keyById,\r\n normalize,\r\n patchApi,\r\n resourceOperationsGenerator,\r\n safeAccess,\r\n} from '../../../utils';\r\n\r\nconst idrValidator = new IdrValidator();\r\n\r\nconst fixData = (data) =>\r\n data.map((resource) => {\r\n const { question8Response } = resource;\r\n resource.question8Response =\r\n question8Response === null ? null : question8Response === true ? 'A' : 'B';\r\n return resource;\r\n });\r\n\r\nconst endpointHandler = {\r\n endpoint: '/idr-questions',\r\n customResponseHandler: fixData,\r\n resourceType: 'idr-questions',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'idr',\r\n actions,\r\n null,\r\n idrValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst idrFixUpdateData = () => async (dispatch, getState) => {\r\n const state = getState();\r\n let form = safeAccess(state, 'idr.form', {});\r\n form.question8Response = form.question8Response === null ? null : form.question8Response === 'A';\r\n await dispatch(actions.idrHandleFormChange(form));\r\n};\r\n\r\nconst idrLoadComplete = (key = null) => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n const state = getState();\r\n try {\r\n dispatch(actions.idrLoadResourceRequest(key));\r\n let data = await getApi(getToken(state), `/idr-complete/${getUserId(state)}`);\r\n\r\n dispatch(actions.idrLoadResourceResponse(key));\r\n\r\n const cache = {\r\n ...state.idr.cache,\r\n ...keyById(data),\r\n };\r\n\r\n await dispatch(operations.idrHandleCacheChange(cache));\r\n\r\n dispatch(actions.idrLoadResourceSuccess());\r\n } catch (error) {\r\n dispatch(operations.idrHandleError(error));\r\n dispatch(actions.idrLoadResourceFailure(error, key));\r\n }\r\n};\r\n\r\nconst idrCopyCompleteToForm = () => async (dispatch, getState) => {\r\n try {\r\n const state = getState();\r\n dispatch(actions.idrCopyResourceToFormRequest());\r\n const accessor = `idr.cache[${getUserId(state)}]`;\r\n const data = safeAccess(state, accessor, {});\r\n dispatch(actions.idrHandleFormChange(data));\r\n dispatch(actions.idrCopyResourceToFormResponse());\r\n\r\n dispatch(actions.idrCopyResourceToFormSuccess());\r\n } catch (error) {\r\n dispatch(operations.idrHandleError(error));\r\n }\r\n};\r\n\r\nconst idrSaveComplete = (key = null) => async (dispatch, getState) => {\r\n const state = getState();\r\n let segment = state.idr;\r\n try {\r\n if (safeAccess(segment, 'errors.length') > 0) {\r\n throw new Error('The form contains errors and cannot be saved until they are fixed.');\r\n }\r\n\r\n if (segment.meta.isReadOnly) {\r\n throw new Error('The form is readonly. Any changes will not be saved.');\r\n }\r\n\r\n dispatch(actions.idrUpdateResourceRequest(key));\r\n const patchData = normalize('idr-complete', segment.form, getUserId(state));\r\n let data = await patchApi(getToken(state), `/idr-complete/${getUserId(state)}`, patchData);\r\n\r\n dispatch(actions.idrUpdateResourceResponse(key));\r\n\r\n const cache = { ...segment.cache, ...keyById(data) };\r\n await dispatch(operations.idrHandleCacheChange(cache));\r\n\r\n dispatch(actions.idrUpdateResourceSuccess(null, key));\r\n } catch (error) {\r\n dispatch(operations.idrHandleError(error));\r\n dispatch(actions.idrUpdateResourceFailure(error, key));\r\n }\r\n};\r\n\r\nconst {\r\n idrClearForm,\r\n idrHandleCacheChange,\r\n idrCopyResourceToForm,\r\n idrHandleFormChange,\r\n idrInvalidateCache,\r\n idrLoadResource,\r\n idrUpdateResource,\r\n idrValidateAttributes,\r\n idrValidateState,\r\n} = operations;\r\n\r\nexport {\r\n idrClearForm,\r\n idrHandleCacheChange,\r\n idrCopyCompleteToForm,\r\n idrCopyResourceToForm,\r\n idrFixUpdateData,\r\n idrHandleFormChange,\r\n idrInvalidateCache,\r\n idrLoadComplete,\r\n idrLoadResource,\r\n idrSaveComplete,\r\n idrUpdateResource,\r\n idrValidateAttributes,\r\n idrValidateState,\r\n};\r\n\r\nexport default operations;\r\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { safeAccess } from '../../utils';\nimport { getUserId } from '../../auth';\nimport { Alert } from 'fiducius-ui';\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\n\nimport {\n idrCopyCompleteToForm,\n idrLoadComplete,\n idrHandleFormChange,\n} from '../../workflows/idr/redux/operations';\n\nconst RenewalRepaymentComplete = withRouter((props) => {\n return (\n <TodoComplete\n {...props}\n onComplete={() => props.history.push('/documents')}\n text={\n <>\n <strong>Step 1 – Sign your application</strong>\n <ul>\n <li>\n Click on “Income-Driven Repayment Application†in the My Documents section of your\n portal.\n </li>\n <li>Complete the short questionnaire.</li>\n <li>Electronically sign the application.</li>\n <li>\n Please verify your Social Security Number is present on the first six pages of your\n application prior to submitting it.\n </li>\n {props.isMarried && (\n <li>\n Please verify your spouse's Social Security Number is present on Question 9 (page\n 2).\n </li>\n )}\n </ul>\n <strong>Step 2 – Submit your application to MOHELA</strong>\n <ul>\n <li>\n Click on “Income-Driven Repayment Application†in the My Documents section of your\n portal to download your completed Income-Driven Repayment (IDR) application.\n </li>\n <li>\n Upload the signed form to{' '}\n <a href=\"https://www.mohela.com\" target=\"_blank\" rel=\"noopener noreferrer\">\n MOHELA\n </a>{' '}\n if you have an account.\n <ul>\n <li>Select \"File Upload\" on the top right</li>\n <li>Select \"Repayment\"</li>\n <li>Select \"Income-Driven Repayment\"</li>\n </ul>\n </li>\n Or\n <li>Fax your application to MOHELA at 866.222.7060 if you do not have an account.</li>\n <li>\n <strong>Please Note:</strong>You do not want to submit the annual recertification\n request until your main/account summary page at MOHELA or any communications you have\n received to state that it is time to recertify your Income-Driven Repayment (IDR)\n plan. This notification is normally received three months before your last payment for\n your current year.\n </li>\n <li>\n <strong>Please Note:</strong>MOHELA will not process the annual recertification\n request until the last bill for the current year is generated. We recommend you check\n on the status of the application every 7 days after that date.\n </li>\n </ul>\n {props.form.incomeDocToInclude != null && (\n <Alert brand=\"warning\">{props.form.incomeDocToInclude}</Alert>\n )}\n </>\n }\n title=\"Submit your Repayment Application\"\n />\n );\n});\n\nconst mapStateToProps = (state) => {\n const userId = getUserId(state);\n let form = safeAccess(state, `idr.cache[${userId}]`, {});\n return {\n form: form,\n request: state.todos.requests.updateResource,\n isMarried: safeAccess(state, 'auth.cache.permissions.married', false),\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n updateForm: (state, attributes) => dispatch(idrHandleFormChange(state, attributes)),\n onLoad: async () => {\n await dispatch(idrLoadComplete(ownProps.id));\n dispatch(idrCopyCompleteToForm());\n },\n action: async () => {\n await dispatch(todosCopyResourceToForm(ownProps.id));\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RenewalRepaymentComplete);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { safeAccess } from '../../utils';\nimport { getUserId } from '../../auth';\nimport { Alert } from 'fiducius-ui';\n\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../todos';\n\nimport {\n idrCopyCompleteToForm,\n idrLoadComplete,\n idrHandleFormChange,\n} from '../../workflows/idr/redux/operations';\n\nconst RepaymentComplete = withRouter((props) => {\n return (\n <TodoComplete\n {...props}\n onComplete={() => props.history.push('/documents')}\n text={\n <>\n <strong>Step 1 – Sign your application</strong>\n <ul>\n <li>\n Click on “Income-Driven Repayment Application†in the My Documents section of your\n portal.\n </li>\n <li>Complete the short questionnaire.</li>\n <li>Electronically sign the application.</li>\n <li>\n Please verify your Social Security Number is present on the six four pages of your\n application prior to submitting it.\n </li>\n {props.isMarried && (\n <li>\n Please verify your spouse's Social Security Number is present on Question 9 (page\n 2).\n </li>\n )}\n </ul>\n <strong>Step 2 – Submit your application to MOHELA</strong>\n <ul>\n <li>\n Upload the signed form to{' '}\n <a href=\"https://www.mohela.com\" target=\"_blank\" rel=\"noopener noreferrer\">\n MOHELA\n </a>{' '}\n if you have an account.\n <ul>\n <li>Select \"File Upload\" on the top right</li>\n <li>Select \"Repayment\"</li>\n <li>Select \"Income-Driven Repayment\"</li>\n </ul>\n </li>\n Or\n <li>Fax your application to MOHELA at 866.222.7060 if you do not have an account.</li>\n </ul>\n {props.form.incomeDocToInclude != null && (\n <Alert brand=\"warning\">{props.form.incomeDocToInclude}</Alert>\n )}\n </>\n }\n title=\"Submit your Repayment Application\"\n />\n );\n});\n\nconst mapStateToProps = (state) => {\n const userId = getUserId(state);\n let form = safeAccess(state, `idr.cache[${userId}]`, {});\n return {\n form: form,\n request: state.todos.requests.updateResource,\n isMarried: safeAccess(state, 'auth.cache.permissions.married', false),\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n updateForm: (state, attributes) => dispatch(idrHandleFormChange(state, attributes)),\n onLoad: async () => {\n await dispatch(idrLoadComplete(ownProps.id));\n dispatch(idrCopyCompleteToForm());\n },\n action: async () => {\n await dispatch(todosCopyResourceToForm(ownProps.id));\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RepaymentComplete);\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('fulfillment', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\nimport styled from 'styled-components';\r\n\r\nconst InputLabel2 = styled(InputLabel)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst BillingForm = ({ data = {}, errors = {}, handleChange }) => (\r\n <Form id=\"billingForm\" handleChange={handleChange} defaults={data}>\r\n <div className=\"row\">\r\n <div className=\"col-6\">\r\n <InputWrapper error={!!errors.firstName}>\r\n <InputLabel2>First Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'firstName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"firstName\" defaultValue={data.firstName} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6\">\r\n <InputWrapper error={!!errors.lastName}>\r\n <InputLabel2>Last Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'lastName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"lastName\" defaultValue={data.lastName} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <InputWrapper error={!!errors.phone}>\r\n <InputLabel2 htmlFor=\"phone\">Phone Number</InputLabel2>\r\n <InputError>{safeAccess(errors, 'phone.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputMask\r\n defaultValue={data.phone}\r\n mask=\"(###) ###-####\"\r\n name=\"phone\"\r\n placeholder=\"(___) ___-____\"\r\n type=\"tel\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel2>Email</InputLabel2>\r\n <InputError>{safeAccess(errors, 'email.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name=\"email\" defaultValue={data.email} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.address1}>\r\n <InputLabel2>Address Line 1</InputLabel2>\r\n <InputError>{safeAccess(errors, 'address1.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"address1\" defaultValue={data.address1} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.address2}>\r\n <InputLabel2>Address Line 2</InputLabel2>\r\n <InputError>{safeAccess(errors, 'address2.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"address2\" defaultValue={data.address2} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.city}>\r\n <InputLabel2>City</InputLabel2>\r\n <InputError>{safeAccess(errors, 'city.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"city\" defaultValue={data.city} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col-6\">\r\n <InputWrapper error={!!errors.state}>\r\n <InputLabel2>State</InputLabel2>\r\n <InputError>{safeAccess(errors, 'state.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"state\" defaultValue={data.state} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6\">\r\n <InputWrapper error={!!errors.zipCode}>\r\n <InputLabel2>Zip Code</InputLabel2>\r\n <InputError>{safeAccess(errors, 'zipCode.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"zipCode\" defaultValue={data.zipCode} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n);\r\n\r\nBillingForm.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func.isRequired,\r\n};\r\n\r\nexport default BillingForm;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { BrandColor, Card, CardBody, CardText, Header3, Header5, Header6 } from 'fiducius-ui';\r\n\r\nimport { formatAsMoney } from '../../utils';\r\n\r\nconst InstallmentCard = styled(Card)`\r\n box-shadow: ${(p) => p.theme.boxShadow};\r\n`;\r\n\r\nconst Installment = ({ amount, title = null, dueDate, index, onlyPayment }) => (\r\n <InstallmentCard>\r\n <CardBody>\r\n <CardText>\r\n <Header5>{title ? <>{title}</> : <>Payment{onlyPayment ? '' : ` ${index + 1}`}</>}</Header5>\r\n <Header3>\r\n <BrandColor brand=\"success\">{` ${formatAsMoney(amount)}`}</BrandColor>\r\n </Header3>\r\n <Header6>\r\n Due:{' '}\r\n {format(parseISO(dueDate), 'MM/dd/yyyy') === format(new Date(), 'MM/dd/yyyy') ? (\r\n <BrandColor brand=\"danger\">Today</BrandColor>\r\n ) : (\r\n format(parseISO(dueDate), 'MM/dd/yyyy')\r\n )}\r\n </Header6>\r\n </CardText>\r\n </CardBody>\r\n </InstallmentCard>\r\n);\r\n\r\nInstallment.propTypes = {\r\n amount: t.number.isRequired,\r\n dueDate: t.string.isRequired,\r\n index: t.number.isRequired,\r\n onlyPayment: t.bool.isRequired,\r\n title: t.string,\r\n};\r\n\r\nexport default Installment;\r\n","const getCurrentPaymentType = (state) => state.payment.cache.paymentType;\r\nconst getPaymentCache = (state) => state.payment.cache;\r\n\r\nexport const getPaymentInfo = (state) => {\r\n const cache = getPaymentCache(state);\r\n const type = getCurrentPaymentType(state);\r\n if (cache && type) {\r\n return cache[type];\r\n } else {\r\n return undefined;\r\n }\r\n};\r\n","import { createSelector } from 'reselect';\r\nimport { getUserId } from '../../../auth';\r\nimport { getBenefitStatus } from '../../../auth/redux/selectors';\r\nimport { benefits, benefitStatuses } from '../../../auth/redux/benefits';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nconst yearlyResults = (data) => safeAccess(data, 'planYearlyResults[0]', {});\r\n\r\nexport const getForgivenessData = (state) =>\r\n safeAccess(state, `forgiveness.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getMonthlyPayment = createSelector([getForgivenessData], (data = {}) => {\r\n let payment = data.monthlyPayment;\r\n if (payment === undefined || payment === null || isNaN(data.monthlyPayment)) {\r\n payment = yearlyResults(data).incomeBasedRepayment || data.estimatedMonthlyPayment || 0;\r\n }\r\n return payment;\r\n});\r\n\r\nexport const getMonthlySavings = createSelector([getForgivenessData], (data = {}) => {\r\n const planResults = yearlyResults(data).standardRepayment || 0;\r\n let payment = data.monthlyPayment;\r\n\r\n if (payment === undefined || payment === null || isNaN(data.monthlyPayment)) {\r\n payment = yearlyResults(data).incomeBasedRepayment || data.estimatedMonthlyPayment || 0;\r\n }\r\n return planResults - payment;\r\n});\r\n\r\nexport const getNewPayment = createSelector([getForgivenessData], (data = {}) => {\r\n let payment = data.monthlyPayment;\r\n\r\n if (payment === undefined || payment === null || isNaN(data.monthlyPayment)) {\r\n payment = yearlyResults(data).incomeBasedRepayment || data.estimatedMonthlyPayment || 0;\r\n }\r\n return payment;\r\n});\r\n\r\nexport const getOldPayment = createSelector(\r\n [getForgivenessData],\r\n (data = {}) => yearlyResults(data).standardRepayment\r\n);\r\n\r\nexport const getStandardPayment = createSelector(\r\n [getForgivenessData],\r\n (data = {}) => yearlyResults(data).standardRepayment || 0\r\n);\r\n\r\nexport const getTotalForgiveness = createSelector([getForgivenessData], (data = {}) =>\r\n data.estimatedLoanForgiveness ? data.estimatedLoanForgiveness : 0\r\n);\r\n\r\nexport const getTotalStandardRepayment = createSelector([getForgivenessData], (data = {}) => {\r\n const stdPayment = yearlyResults(data).standardRepayment || 0;\r\n const planYears = data.planYearlyResults ? data.planYearlyResults.length - 1 : 1;\r\n return stdPayment * planYears * 12;\r\n});\r\n\r\nexport const getTotalIdrRepayment = createSelector([getForgivenessData], (data = {}) => {\r\n const totalForgiveness = data.estimatedLoanForgiveness ? data.estimatedLoanForgiveness : 0;\r\n const stdPayment = yearlyResults(data).standardRepayment || 0;\r\n const planYears = data.planYearlyResults ? data.planYearlyResults.length - 1 : 1;\r\n const totalSTD = stdPayment * planYears * 12;\r\n return data.estimatedBalanceToBePaid || totalSTD - totalForgiveness || 0;\r\n});\r\n\r\nexport const getRepaymentTerm = createSelector([getForgivenessData], (data = {}) =>\r\n data.planYearlyResults ? data.planYearlyResults.length - 1 : 10\r\n);\r\n\r\nexport const getShowTaxCompare = (state) => {\r\n //return getBenefitStatus(state, benefits.FORGIVENESS) == benefitStatuses.QUALIFIED || false;\r\n return getBenefitStatus(state, benefits.FORGIVENESS) === benefitStatuses.QUALIFIED || false;\r\n};\r\n\r\nexport const getPastYearSavings = createSelector([getForgivenessData], (data = {}) => {\r\n const stdPayment = yearlyResults(data).standardRepayment || 0;\r\n const DOEIDRCalculation = data.doeIdrPayment;\r\n return (stdPayment - DOEIDRCalculation) * 12;\r\n});\r\n\r\nexport const getCurrentYearSavings = createSelector([getForgivenessData], (data = {}) => {\r\n const stdPayment = yearlyResults(data).standardRepayment || 0;\r\n const ISLSIDRCalculation = data.islsIdrPayment;\r\n return (stdPayment - ISLSIDRCalculation) * 12;\r\n});\r\n\r\nexport const getSAVEPlanSavings = createSelector([getForgivenessData], (data = {}) => {\r\n const stdPayment = yearlyResults(data).standardRepayment || 0;\r\n let saveCalculation = data.saveCalculation;\r\n\r\n if (data.saveCalculation === null) {\r\n saveCalculation = stdPayment;\r\n } else if (data.saveCalculation <= 0) {\r\n saveCalculation = 0;\r\n }\r\n\r\n return (stdPayment - saveCalculation) * 12;\r\n});\r\n\r\nexport const getISLSIDRPayment = createSelector([getForgivenessData], (data = {}) => {\r\n return data.islsIdrPayment;\r\n});\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('forgiveness');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/forgiveness',\r\n resourceType: 'forgiveness',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'forgiveness',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst { forgivenessLoadResource } = operations;\r\n\r\nexport { forgivenessLoadResource };\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('forgiveness', types);\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport {\n Alert,\n AsyncLoader,\n Button,\n Card,\n CardFooter,\n Header4,\n Header5,\n Header6,\n InputRadio,\n InputWrapper,\n Modal,\n} from 'fiducius-ui';\n\nimport { withPermissions } from '../../routing';\nimport { debounce, isEqual, mergeRequestStatuses, safeAccess, formatAsMoney } from '../../utils';\n\nimport BillingForm from './billing-form';\nimport Installment from './installment';\nimport {\n paymentCopyResourceToForm,\n paymentHandleFormChange,\n paymentLoadInfo,\n paymentTypes,\n} from '../redux/operations';\nimport { getPaymentInfo } from '../redux/selectors';\nimport {\n getForgivenessData,\n getPastYearSavings,\n getCurrentYearSavings,\n getSAVEPlanSavings,\n} from '../../benefits/forgiveness/redux/selectors';\nimport { forgivenessLoadResource } from '../../benefits/forgiveness/redux/operations';\nimport { getUserId } from '../../auth';\n\n// TODO: after working with this class a lot, I think the real solution to all of the payment\n// checking, moving, adding amount payments, renewal credits, etc. would be to just have all of the\n// payments that need to be done or even shown (credits/everything) come back in the payments list\n// from the API.\n\nconst InstallmentWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin-bottom: 2rem;\n & > * {\n margin-right: 1rem;\n }\n`;\n\nconst SubscriptionWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin-bottom: 0.5rem;\n & > * {\n margin-right: 1rem;\n }\n`;\n\nconst SubscriptionContentWrapper = styled.div`\n padding-bottom: 0.5rem;\n`;\n\nconst StyledDivLeft = styled.div`\n text-align: left;\n`;\n\nconst MessagePaddedDiv = styled.div`\n padding: 5px;\n margin: 5px;\n color: ${(p) => p.theme.textPrimary};\n`;\n\nclass Billing extends React.Component {\n static propTypes = {\n id: t.string.isRequired,\n loadForgiveness: t.func.isRequired,\n pastYearSavings: t.object,\n currentYearSavings: t.object,\n saveProgramSavings: t.object,\n forgivenessData: t.object,\n data: t.object,\n errors: t.object,\n form: t.object,\n getInfo: t.func.isRequired,\n paymentType: t.string,\n permissions: t.object,\n request: t.object,\n updateForm: t.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n paymentOption: 'full',\n showSubscriptionModal: false,\n };\n }\n\n componentDidMount() {\n this.props.getInfo().then(() => {\n this.props.data\n ? this.setState({ paymentOption: this.props.data.paymentOption })\n : this.setState({ paymentOption: this.state.paymentOption });\n\n this.props.data\n ? this.props.data.paymentMode === 'both' || this.props.data.paymentMode === 'subscription'\n ? this.setState({ showSubscriptionModal: true })\n : this.setState({ showSubscriptionModal: false })\n : this.setState({ showSubscriptionModal: false });\n window.scrollTo(0, 0);\n });\n const { id, loadForgiveness, forgivenessData, permissions } = this.props;\n if (permissions.hasForgiveness && Object.keys(forgivenessData).length === 0) {\n loadForgiveness(id);\n }\n }\n\n handleChange = debounce((formState, id, attributes) => {\n this.props.updateForm({ ...this.props.form, ...formState }, [attributes]);\n }, 250);\n\n handleChangePaymentOption = (e) => {\n this.setState({ paymentOption: e.target.value });\n this.props.updateForm({ ...this.props.form, paymentOption: e.target.value }, ['paymentOption']);\n };\n\n nth = (n) => {\n return ['st', 'nd', 'rd'][((((n + 90) % 100) - 10) % 10) - 1] || 'th';\n };\n\n getCurrentDayNumber = () => {\n const d = new Date().getDate();\n return d + this.nth(d);\n };\n\n render() {\n const {\n data = {},\n form = {},\n errors = {},\n pastYearSavings = {},\n currentYearSavings = {},\n saveProgramSavings = {},\n forgivenessData = {},\n permissions,\n request,\n paymentType,\n } = this.props;\n const info = safeAccess(data, 'paymentInfo');\n const payments = safeAccess(info, 'payments', []);\n const payInFull = safeAccess(info, 'paymentTerm') === 'FULL';\n\n this.state.showSubscriptionModal\n ? (document.body.style.overflow = 'hidden')\n : (document.body.style.overflow = '');\n\n // Add amount field as today's payment if not PayNow\n if (!payInFull) {\n // Required because of multiple render passes\n if (!isEqual(payments, {}) && safeAccess(payments, '[0].index', null) !== -1) {\n let title = null;\n switch (paymentType) {\n case paymentTypes.DEPOSIT:\n title = 'Enrollment Fee';\n break;\n case paymentTypes.RENEWAL:\n title = 'Renewal Fee';\n break;\n case paymentTypes.LWO:\n title = <p>Assure℠ Fee</p>;\n break;\n default:\n title = null;\n break;\n }\n\n payments.unshift({\n amount: safeAccess(info, 'amount', 0),\n dueDate: new Date().toISOString(),\n index: -1,\n onlyPayment: false,\n title: title,\n });\n }\n }\n\n const showSavingsText = pastYearSavings > 0 && currentYearSavings > 0;\n const showSAVESavingsText = saveProgramSavings > 0;\n const showIncreaseText = forgivenessData.islsIdrPayment > 0;\n let savingsAmountText =\n 'We anticipate you could save approximately ' +\n formatAsMoney(saveProgramSavings) +\n ' under the new plan.';\n\n return (\n <>\n {safeAccess(errors, 'generalErrors') && (\n <Alert brand=\"warning\">{errors.generalErrors[0].detail}</Alert>\n )}\n <AsyncLoader request={request}>\n {paymentType === paymentTypes.RENEWAL &&\n permissions.hasForgiveness &&\n showSavingsText &&\n !showSAVESavingsText && (\n <Header5>\n <table>\n <tr>\n <td>Past Year Estimated Savings:</td>\n <td> {formatAsMoney(pastYearSavings)}</td>\n </tr>\n <tr>\n <td>Current Year Estimated Savings:</td>\n <td> {formatAsMoney(currentYearSavings)}</td>\n </tr>\n </table>\n </Header5>\n )}\n {paymentType === paymentTypes.RENEWAL &&\n permissions.hasForgiveness &&\n showSavingsText &&\n showSAVESavingsText && (\n <>\n <Header5>\n <table>\n <tr>\n <td>Past Year Estimated Savings:</td>\n <td> {formatAsMoney(pastYearSavings)}</td>\n </tr>\n <tr>\n <td>Current Year Estimated Savings:</td>\n <td> {formatAsMoney(currentYearSavings)}</td>\n </tr>\n </table>\n </Header5>\n <Header5>\n <table>\n <tr>\n <td colspan=\"2\">\n With the recent announcement of the SAVE Repayment plan, your savings could\n increase! {showIncreaseText && savingsAmountText}\n </td>\n </tr>\n </table>\n </Header5>\n </>\n )}\n {paymentType === paymentTypes.DEPOSIT && <Header4>Installments</Header4>}\n <Header5>{safeAccess(info, 'paymentMessage', null)}</Header5>\n <Header6>\n <div dangerouslySetInnerHTML={{ __html: safeAccess(info, 'extraMessage', null) }}></div>\n </Header6>\n {data.paymentMode === 'both' &&\n paymentType === paymentTypes.RENEWAL &&\n payments &&\n payments.length > 1 && (\n <>\n <br />\n <Header4>Payment Option</Header4>\n <InputWrapper error={!!errors.paymentInstalls}>\n <InputRadio\n name=\"paymentOption\"\n value=\"full\"\n checked={this.state.paymentOption === 'full'}\n onChange={this.handleChangePaymentOption}\n label=\"Pay in Full\"\n />\n <InputRadio\n name=\"paymentOption\"\n value=\"subscription\"\n checked={this.state.paymentOption === 'subscription'}\n onChange={this.handleChangePaymentOption}\n label=\"Recurring Payment\"\n />\n </InputWrapper>\n </>\n )}\n {!isEqual(payments, {}) &&\n payments &&\n paymentType !== paymentTypes.NOW &&\n paymentType !== paymentTypes.RENEWAL && (\n <>\n <InstallmentWrapper>\n {payments.map((p, i) => (\n <Installment\n {...p}\n index={!payInFull ? i - 1 : i}\n key={`installment-${i}`}\n onlyPayment={payments.length === 1}\n />\n ))}\n </InstallmentWrapper>\n </>\n )}\n {!isEqual(payments, {}) &&\n payments &&\n paymentType === paymentTypes.RENEWAL &&\n this.state.paymentOption === 'subscription' && (\n <>\n <SubscriptionWrapper>\n {payments.slice(1, 2).map((p, i) => (\n <Installment {...p} index={i} key={`installment-${i}`} onlyPayment={true} />\n ))}\n </SubscriptionWrapper>\n <SubscriptionContentWrapper>\n <Header6>\n This payment will be set to recurring on the {this.getCurrentDayNumber()} of the\n month for the next 12 months.\n </Header6>\n <Header6>\n Fiducius reserves the right to automatically increase monthly fee at any time.\n </Header6>\n </SubscriptionContentWrapper>\n </>\n )}\n {!isEqual(payments, {}) &&\n payments &&\n paymentType === paymentTypes.RENEWAL &&\n !(this.state.paymentOption === 'subscription') && (\n <>\n <InstallmentWrapper>\n {payments.slice(0, 1).map((p, i) => (\n <Installment\n {...p}\n index={!payInFull ? i - 1 : i}\n key={`installment-${i}`}\n onlyPayment={payments.length === 1}\n />\n ))}\n </InstallmentWrapper>\n </>\n )}\n {paymentType === paymentTypes.NOW && (\n <>\n <Alert brand=\"info\">\n Reminder: Payments made through this service are for Fiducius fees only. If you need\n to make a loan payment please follow the directions provided by your loan servicer.\n </Alert>\n {!isEqual(payments, {}) && payments && (\n <>\n <InstallmentWrapper>\n {payments.map((p, i) => (\n <Installment\n {...p}\n index={!payInFull ? i - 1 : i}\n key={`installment-${i}`}\n onlyPayment={payments.length === 1}\n />\n ))}\n </InstallmentWrapper>\n </>\n )}\n </>\n )}\n\n <Header4>Method of Payment</Header4>\n <InputRadio\n name=\"payMethod\"\n value=\"credit\"\n label={'Credit Card'}\n defaultChecked={true}\n disabled={true}\n />\n <br />\n <br />\n <Header4>Billing Information</Header4>\n <BillingForm data={form} errors={errors} handleChange={this.handleChange} />\n </AsyncLoader>\n <Modal isOpen={this.state.showSubscriptionModal} theme={'position:fixed;'} fullWidth={true}>\n <Card>\n <MessagePaddedDiv id=\"messageSection\">\n <StyledDivLeft>\n <p>\n Welcome to Fiducius PSLF Renewal software application We're thrilled to have you\n on board. Please review the following subscription fee terms carefully:\n </p>\n <ol>\n <li>\n <b>Subscription Plan:</b> This software subscription is for one year, paid in 12\n monthly installments. On the thirteenth month, this becomes a month-to-month\n subscription.\n </li>\n <li>\n <b>Billing Cycle:</b> Your subscription will be billed on a monthly basis.\n Billing will occur when you accept the terms and will continue each month\n thereafter for 12 months on the same day each month. Thereafter, it becomes a\n month-to-month subscription.\n </li>\n <li>\n <b>Payment Methods:</b> We accept credit card payment for your convenience.\n Please ensure your payment method is valid and up to date to avoid any\n disruptions in service.\n </li>\n <li>\n <b>Price Changes:</b> We reserve the right to adjust subscription fees at any\n time after your first twelve month installment. However, we will notify you in\n advance of any changes to your subscription pricing. Your continued use of the\n service after such notification constitutes acceptance of the new pricing terms.\n </li>\n <li>\n <b>Trial Periods and Promotions:</b> From time to time, we may offer trial\n periods or promotional discounts on subscription plans. These offers are subject\n to specific terms and conditions, and may automatically convert to a paid\n subscription at the end of the trial period unless cancelled.\n </li>\n <li>\n <b>Renewals and Cancellations:</b> Your subscription will automatically renew at\n the end of the twelve-month billing cycle unless cancelled after twelve months.\n You may cancel your subscription at any time after twelve months, and\n cancellation will be effective at the end of the then current billing cycle.\n Refunds are not provided for partial subscription periods.\n </li>\n <li>\n <b>Taxes:</b> Subscription fees are exclusive of any applicable taxes, which\n will be added to your invoice as required by law in any state.\n </li>\n <li>\n <b>Support and Assistance:</b> Our customer support team is here to assist you\n with any questions or issues you may encounter regarding your subscription or\n the software application itself. Please don't hesitate to reach out to us for\n assistance.\n </li>\n </ol>\n <p>\n By subscribing to Fiducius PSLF Renewal software, you acknowledge that you have\n read, understood, and agree to abide by these subscription fee terms. Thank you\n for choosing us as your software solution provider. We look forward to serving\n you!\n </p>\n </StyledDivLeft>\n </MessagePaddedDiv>\n <CardFooter>\n <Button\n brand=\"lowContrast\"\n onClick={() => {\n this.setState({ showSubscriptionModal: false });\n }}\n >\n Close\n </Button>\n </CardFooter>\n </Card>\n </Modal>\n </>\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n id: getUserId(state),\n forgivenessData: getForgivenessData(state),\n pastYearSavings: getPastYearSavings(state),\n currentYearSavings: getCurrentYearSavings(state),\n saveProgramSavings: getSAVEPlanSavings(state),\n data: getPaymentInfo(state),\n errors: state.payment.errors,\n form: state.payment.form,\n request: mergeRequestStatuses([\n state.payment.requests.loadResource,\n state.payment.requests.updateResource,\n state.payment.requests.createResource,\n ]),\n});\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n loadForgiveness: (id) => dispatch(forgivenessLoadResource(id)),\n updateForm: (data, attributes) => dispatch(paymentHandleFormChange(data, attributes)),\n getInfo: async () => {\n await dispatch(paymentLoadInfo());\n dispatch(paymentCopyResourceToForm(ownProps.paymentType));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Billing));\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Alert, AsyncLoader } from 'fiducius-ui';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport { paymentGetPaymentStatus, paymentResetStatus } from '../redux/operations';\r\n\r\nclass PaymentResult extends React.Component {\r\n static propTypes = {\r\n getPaymentStatus: t.func.isRequired,\r\n resetPaymentStatus: t.func.isRequired,\r\n request: t.object,\r\n status: t.string,\r\n token: t.string,\r\n serviceId: t.number,\r\n };\r\n\r\n componentDidMount() {\r\n if (this.props.serviceId && this.props.serviceId > 0) {\r\n this.props.getPaymentStatus(this.props.token, this.props.serviceId);\r\n } else {\r\n this.props.getPaymentStatus(this.props.token, null);\r\n }\r\n this.props.resetPaymentStatus();\r\n }\r\n\r\n getMessage = () => {\r\n switch (this.props.status) {\r\n case 'success':\r\n return 'Your payment has succeeded';\r\n default:\r\n return 'There was an error processing your payment';\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <AsyncLoader request={this.props.request}>\r\n <Alert brand={this.props.status === 'success' ? 'success' : 'danger'}>\r\n {this.getMessage()}\r\n </Alert>\r\n </AsyncLoader>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n status: safeAccess(state, 'payment.cache.paymentStatus', ''),\r\n request: safeAccess(state, 'payment.requests.loadResource'),\r\n serviceId: safeAccess(state, 'payment.cache.paymentServiceId', 0),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n getPaymentStatus: (token, serviceId) => dispatch(paymentGetPaymentStatus(token, serviceId)),\r\n resetPaymentStatus: () => dispatch(paymentResetStatus()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PaymentResult);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport {\r\n Form,\r\n Header4,\r\n Header6,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputSelect,\r\n InputWrapper,\r\n Loader,\r\n} from 'fiducius-ui';\r\n\r\nimport { mergeRequestStatuses, safeAccess } from '../../utils';\r\n\r\nconst LoaderWrapper = styled.div`\r\n align-items: center;\r\n align-self: stretch;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst getYears = () => {\r\n const now = new Date();\r\n const thisYear = now.getFullYear();\r\n let years = [''];\r\n for (let i = 0; i < 10; i++) {\r\n years.push(thisYear + i);\r\n }\r\n return years;\r\n};\r\n\r\nclass Pci extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func.isRequired,\r\n request: t.object,\r\n };\r\n\r\n render() {\r\n const { data, errors, handleChange, request } = this.props;\r\n\r\n if (request.isLoading) {\r\n return (\r\n <LoaderWrapper>\r\n <Loader />\r\n </LoaderWrapper>\r\n );\r\n } else {\r\n return (\r\n <>\r\n <Header4>Credit Card Information</Header4>\r\n <Header6>\r\n Please provide your credit card information to pay your deposit and recurring payments\r\n (if elected).\r\n <br />\r\n <br />\r\n </Header6>\r\n <Form id=\"pciForm\" defaults={data} handleChange={handleChange}>\r\n <InputWrapper error={!!errors.cardNumber}>\r\n <InputLabel>Credit Card Number</InputLabel>\r\n <InputError>{safeAccess(errors, 'cardNumber.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputMask\r\n defaultValue={data.cardNumber}\r\n mask=\"#### #### #### ####\"\r\n name=\"cardNumber\"\r\n placeholder=\"____ ____ ____ ____\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col-4 col-md-2\">\r\n <InputWrapper error={!!errors.month}>\r\n <InputLabel>Month</InputLabel>\r\n <InputError>{safeAccess(errors, 'month.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"month\"\r\n options={['', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]}\r\n defaultValue={data.month || ''}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-4 col-md-2\">\r\n <InputWrapper error={!!errors.year}>\r\n <InputLabel>Year</InputLabel>\r\n <InputError>{safeAccess(errors, 'year.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect name=\"year\" options={getYears()} defaultValue={data.year || ''} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-4 col-md-2\">\r\n <InputWrapper error={!!errors.cvv}>\r\n <InputLabel>CVV</InputLabel>\r\n <InputError>{safeAccess(errors, 'cvv.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask defaultValue={data.cvv} mask=\"####\" name=\"cvv\" placeholder=\" \" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.payment.requests.loadResource,\r\n state.payment.requests.updateResource,\r\n state.payment.requests.createResource,\r\n ]),\r\n});\r\n\r\nexport default connect(mapStateToProps)(Pci);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { debounce } from '../../utils';\r\nimport { Button, Card, CardBody, CardFooter, CardText, Header1, Link } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer, withPermissions } from '../../routing';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport {\r\n paymentSaveBillingInfo,\r\n paymentPostPayment,\r\n paymentDefaultPaymentType,\r\n paymentLoadInfo,\r\n paymentResetUpdateRequest,\r\n paymentCopyResourceToForm,\r\n paymentTypes,\r\n paymentClearErrors,\r\n} from '../redux/operations';\r\nimport Billing from '../components/billing';\r\nimport PaymentResult from '../components/payment-result';\r\nimport Pci from '../components/pci';\r\n\r\nimport { todosLoadCollection } from '../../todos';\r\nimport { authLoadPermissions } from '../../auth';\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n justify-content: ${(p) => (p.double ? 'space-between' : 'flex-end')};\r\n`;\r\n\r\nclass Payment extends React.Component {\r\n static propTypes = {\r\n leavePage: t.func.isRequired,\r\n paymentType: t.string,\r\n permissions: t.object.isRequired,\r\n postPayment: t.func.isRequired,\r\n postRequest: t.object,\r\n postUrl: t.string,\r\n reloadPage: t.func.isRequired,\r\n saveBillingInfo: t.func.isRequired,\r\n saveRequest: t.object,\r\n setUpPaymentType: t.func.isRequired,\r\n status: t.string,\r\n token: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n step: 1,\r\n data: {},\r\n errors: {},\r\n redirectUrl: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.props.paymentType) {\r\n this.props.setUpPaymentType();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const prevSave = prevProps.saveRequest;\r\n const currentSave = this.props.saveRequest;\r\n if (prevSave.isLoading && currentSave.hasFinished && !currentSave.hasFailed) {\r\n this.setState({ step: 2 });\r\n }\r\n\r\n const prevPost = prevProps.postRequest;\r\n const currentPost = this.props.postRequest;\r\n if (prevPost.isLoading && currentPost.hasFinished) {\r\n this.setState({ step: 3 });\r\n }\r\n }\r\n\r\n resetTransaction = () => {\r\n this.props.reloadPage();\r\n this.setState({ step: 1 });\r\n };\r\n nextStep = () => this.props.saveBillingInfo();\r\n prevStep = () => this.setState({ step: 1 });\r\n submit = () => this.props.postPayment(this.state.data, this.props.postUrl);\r\n continueToBenefit = () => {\r\n const { permissions, paymentType, leavePage } = this.props;\r\n let redirectUrl = '/dashboard';\r\n if (\r\n paymentType !== paymentTypes.NOW &&\r\n paymentType !== paymentTypes.LWO &&\r\n paymentType !== paymentTypes.SERVICE\r\n ) {\r\n if (permissions.inForgiveness) {\r\n redirectUrl = '/benefits/forgiveness/overview';\r\n }\r\n } else if (paymentType === paymentTypes.LWO) {\r\n redirectUrl = '/benefits/limited-waiver-opportunity/employment-certification/step-1';\r\n }\r\n leavePage().then(this.setState({ ...this.state, redirectUrl: redirectUrl }));\r\n };\r\n\r\n handlePciChange = debounce((formState, id, attributes) => {\r\n Object.keys(formState).forEach((k) => (formState[k] = formState[k].replace(/(_| )/g, '')));\r\n this.setState({ ...this.state, data: { ...this.state.data, ...formState } });\r\n }, 250);\r\n\r\n render() {\r\n const { saveRequest } = this.props;\r\n if (this.state.redirectUrl !== null) {\r\n return <Redirect to={this.state.redirectUrl} />;\r\n }\r\n\r\n return (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-10 col-lg-8\">\r\n <Card>\r\n <CardBody>\r\n <Header1>Make a Payment to Fiducius</Header1>\r\n <CardText>\r\n {/*\r\n TODO: Should we keep the payment plan tiles on the page when they're entering\r\n PCI or create a \"confirm\" page?\r\n */}\r\n {this.state.step === 1 && <Billing paymentType={this.props.paymentType} />}\r\n {this.state.step === 2 && (\r\n <Pci\r\n data={this.state.data}\r\n errors={this.state.errors}\r\n handleChange={this.handlePciChange}\r\n />\r\n )}\r\n {this.state.step === 3 && <PaymentResult token={this.props.token} />}\r\n </CardText>\r\n </CardBody>\r\n <CardBody>\r\n <ButtonWrapper double={this.state.step === 2}>\r\n {saveRequest.hasFailed && (\r\n <Button brand=\"primary\" onClick={this.resetTransaction}>\r\n Retry Transaction\r\n </Button>\r\n )}\r\n {!saveRequest.hasFailed && this.state.step === 1 && (\r\n <Button brand=\"primary\" onClick={this.nextStep}>\r\n Continue\r\n </Button>\r\n )}\r\n {!saveRequest.hasFailed && this.state.step === 2 && (\r\n <>\r\n <Button brand=\"lowContrast\" onClick={this.prevStep}>\r\n Back\r\n </Button>\r\n <Button brand=\"primary\" onClick={this.submit}>\r\n Submit\r\n </Button>\r\n </>\r\n )}\r\n {!saveRequest.hasFailed &&\r\n this.state.step === 3 &&\r\n this.props.status === 'success' && (\r\n <>\r\n <Button brand=\"primary\" onClick={this.continueToBenefit}>\r\n Continue\r\n </Button>\r\n </>\r\n )}\r\n </ButtonWrapper>\r\n </CardBody>\r\n <CardFooter>\r\n <Link to=\"/dashboard\">Return home</Link>\r\n </CardFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const paymentType = safeAccess(state, 'payment.cache.paymentType', '');\r\n const postUrl = safeAccess(state, `payment.cache[${paymentType}].pageTwoPostUrl`, '');\r\n const matches = postUrl && postUrl.split('/');\r\n const token = matches && matches[matches.length - 1];\r\n\r\n return {\r\n paymentType: paymentType,\r\n postUrl: postUrl,\r\n postRequest: state.payment.requests.createResource,\r\n saveRequest: state.payment.requests.updateResource,\r\n status: safeAccess(state, 'payment.cache.paymentStatus', ''),\r\n token: token,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n setUpPaymentType: () => dispatch(paymentDefaultPaymentType()),\r\n postPayment: (data, url) => {\r\n dispatch(paymentPostPayment(data, url));\r\n },\r\n reloadPage: async () => {\r\n await dispatch(paymentResetUpdateRequest());\r\n await dispatch(paymentClearErrors());\r\n },\r\n leavePage: async () => {\r\n await dispatch(authLoadPermissions());\r\n await dispatch(todosLoadCollection());\r\n },\r\n saveBillingInfo: () => dispatch(paymentSaveBillingInfo()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Payment));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Badge, Button, Card, CardBody, CardText, CardTitle } from 'fiducius-ui';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faExclamation as faExclamationDark } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\nimport {\r\n getPastYearSavings,\r\n getCurrentYearSavings,\r\n getSAVEPlanSavings,\r\n getISLSIDRPayment,\r\n} from '../../benefits/forgiveness/redux/selectors';\r\nimport { formatAsMoney } from '../../utils';\r\n\r\nimport { paymentSetPaymentType } from '../redux/operations';\r\n\r\nconst PayNow = ({\r\n history,\r\n setPaymentType,\r\n payNowType,\r\n pastYearSavings,\r\n currentYearSavings,\r\n saveProgramSavings,\r\n ISLSIDRPayment,\r\n}) => {\r\n const handleClick = async () => {\r\n await setPaymentType();\r\n history.push('/payment');\r\n };\r\n\r\n const PaddedBadge = styled(Badge)`\r\n margin-left: 0.45em;\r\n font-size: 0.45em;\r\n vertical-align: middle;\r\n `;\r\n\r\n const showSavingsText = pastYearSavings > 0 && currentYearSavings > 0;\r\n const showSAVESavingsText = saveProgramSavings > 0;\r\n const showIncreaseText = ISLSIDRPayment > 0;\r\n let savingsAmountText =\r\n 'We anticipate you could save approximately ' +\r\n formatAsMoney(saveProgramSavings) +\r\n ' under the new plan.';\r\n\r\n return (\r\n <Card brand=\"success\">\r\n <CardBody>\r\n <CardTitle>\r\n Make a Payment\r\n {payNowType === 'renewal' && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </CardTitle>\r\n <CardText>\r\n <p>\r\n This is for Fiducius fees only. Loan payments must be made directly to your loan\r\n servicer.\r\n </p>\r\n {payNowType === 'renewal' && showSavingsText && !showSAVESavingsText && (\r\n <p>\r\n Fiducius assistance helped you with an estimated savings of approximately{' '}\r\n {formatAsMoney(pastYearSavings)} this past year and we anticipate you'll save{' '}\r\n {formatAsMoney(currentYearSavings)} this year. To continue saving on your student\r\n loans with Fiducius, you need to complete your yearly renewal.\r\n </p>\r\n )}\r\n {payNowType === 'renewal' && showSavingsText && showSAVESavingsText && (\r\n <p>\r\n Fiducius assistance helped you with an estimated savings of approximately{' '}\r\n {formatAsMoney(pastYearSavings)} this past year and we anticipate you'll save{' '}\r\n {formatAsMoney(currentYearSavings)} this year. And with the recent announcement of the\r\n SAVE Repayment plan, your savings could increase!{' '}\r\n {showIncreaseText && savingsAmountText} To continue saving on your student loans with\r\n Fiducius, you need to complete your yearly renewal.\r\n </p>\r\n )}\r\n <Button brand=\"primary\" onClick={handleClick}>\r\n Pay now\r\n </Button>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n};\r\n\r\nPayNow.propTypes = {\r\n history: t.object,\r\n setPaymentType: t.func.isRequired,\r\n payNowType: t.string,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n pastYearSavings: getPastYearSavings(state),\r\n currentYearSavings: getCurrentYearSavings(state),\r\n saveProgramSavings: getSAVEPlanSavings(state),\r\n ISLSIDRPayment: getISLSIDRPayment(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setPaymentType: async () => await dispatch(paymentSetPaymentType()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(PayNow));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('payment', types);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('agreement');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('agreement', types);\r\n","import { FormValidator } from '../../../utils';\r\n\r\nexport class AgreementValidator extends FormValidator {\r\n item(validator) {\r\n // validator.isRequired();\r\n }\r\n}\r\n\r\nexport default AgreementValidator;\r\n","import actions from './actions';\r\nimport { AgreementValidator } from './validators';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst agreementValidator = new AgreementValidator();\r\n\r\nconst endpointHandler = {\r\n endpoint: '/sign-contract-questions',\r\n customResponseHandler: null,\r\n resourceType: 'sign-contract-questions',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'agreement',\r\n actions,\r\n null,\r\n agreementValidator,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n agreementCopyResourceToForm,\r\n agreementHandleFormChange,\r\n agreementInvalidateCache,\r\n agreementLoadResource,\r\n agreementUpdateResource,\r\n agreementValidateAttributes,\r\n agreementValidateState,\r\n} = operations;\r\n\r\nexport {\r\n agreementCopyResourceToForm,\r\n agreementHandleFormChange,\r\n agreementInvalidateCache,\r\n agreementLoadResource,\r\n agreementUpdateResource,\r\n agreementValidateAttributes,\r\n agreementValidateState,\r\n};\r\n\r\nexport default operations;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport {\r\n AsyncLoader,\r\n Form,\r\n Header4,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n Alert,\r\n} from 'fiducius-ui';\r\n\r\nimport { paymentSetTypeDeposit, paymentTypes } from '../../../payment';\r\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../../utils';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n fulfillmentCopyResourceToForm,\r\n fulfillmentHandleFormChange,\r\n fulfillmentLoadResource,\r\n PdfViewer,\r\n Signature,\r\n} from '../../../fulfillment';\r\nimport { agreementUpdateResource } from '../redux/operations';\r\n\r\nexport const AGREEMENT_DOC_ID = 8;\r\n\r\nconst InputLabel2 = styled(InputLabel)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nclass TabAgreement extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n loadHtml: t.func.isRequired,\r\n request: t.object,\r\n saveContract: t.func.isRequired,\r\n signRequest: t.object,\r\n skipSave: t.bool,\r\n updateForm: t.func.isRequired,\r\n setPaymentType: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.scrollRef = React.createRef();\r\n this.state = { hasHtml: false, redirect: false };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.skipSave) {\r\n this.setState({ hasHtml: true }, () => this.props.loadHtml());\r\n } else {\r\n this.props.saveContract();\r\n }\r\n\r\n if (this.scrollRef.current) {\r\n this.scrollRef.current.focus();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { request, signRequest } = this.props;\r\n if (prevProps.request.isLoading && request.hasFinished && !request.hasFailed) {\r\n if (!this.state.hasHtml) {\r\n this.setState({ hasHtml: true }, () => this.props.loadHtml());\r\n }\r\n }\r\n\r\n if (prevProps.signRequest.isLoading && signRequest.hasFinished && !signRequest.hasFailed) {\r\n this.setState({ redirect: true });\r\n }\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { form, updateForm } = this.props;\r\n formState.docId = AGREEMENT_DOC_ID;\r\n const newData = { ...form, ...formState };\r\n updateForm(newData, [attribute]);\r\n }, 250);\r\n\r\n handleClientSignature = (data) => {\r\n this.props.updateForm({ ...this.props.form, signaturePadClient: data }, ['signaturePadClient']);\r\n };\r\n\r\n handleSpouseSignature = (data) => {\r\n this.props.updateForm({ ...this.props.form, signaturePadSpouse: data }, ['signaturePadSpouse']);\r\n };\r\n\r\n render() {\r\n const { data = {}, errors = {}, form, request } = this.props;\r\n if (this.state.redirect) {\r\n if (data.paymentType === paymentTypes.DEPOSIT) {\r\n return <Redirect to=\"/payment\" />;\r\n } else {\r\n return <Redirect to=\"/dashboard\" />;\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <PdfViewer base64={safeAccess(data, 'fileData', '')} isFulfillment={true} />\r\n </AsyncLoader>\r\n <Form id=\"signatureForm\" handleChange={this.handleChange} defaults={form}>\r\n {safeAccess(errors, 'na') && (\r\n <Alert key={'invalid-info'} brand=\"danger\">\r\n {errors.na.detail}\r\n </Alert>\r\n )}\r\n <Header4>\r\n For your security, please input the correct information below to sign the application.\r\n </Header4>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.firstName}>\r\n <InputLabel2>First Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'firstName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"firstName\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.lastName}>\r\n <InputLabel2>Last Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'lastName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"lastName\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel2>Email</InputLabel2>\r\n <InputError>{safeAccess(errors, 'email.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"email\" type=\"email\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.password}>\r\n <InputLabel2>Password</InputLabel2>\r\n <InputError>{safeAccess(errors, 'password.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"password\" type=\"password\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <Signature handleChange={this.handleClientSignature} label=\"Your signature\" />\r\n {data.needSpouseSignature && (\r\n <Signature handleChange={this.handleSpouseSignature} label=\"Spouse's Signature\" />\r\n )}\r\n </Form>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: state.fulfillment.cache[AGREEMENT_DOC_ID],\r\n form: state.fulfillment.form,\r\n errors: state.fulfillment.errors,\r\n request: mergeRequestStatuses([\r\n state.fulfillment.requests.loadResource,\r\n state.agreement.requests.updateResource,\r\n ]), // separate and then componentdidupdate stuff\r\n signRequest: state.fulfillment.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadHtml: async () => {\r\n await dispatch(fulfillmentLoadResource(AGREEMENT_DOC_ID));\r\n await dispatch(fulfillmentCopyResourceToForm(AGREEMENT_DOC_ID));\r\n },\r\n saveContract: () => dispatch(agreementUpdateResource(AGREEMENT_DOC_ID)),\r\n updateForm: (data, attributes) => dispatch(fulfillmentHandleFormChange(data, attributes)),\r\n setPaymentType: async () => await dispatch(paymentSetTypeDeposit()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TabAgreement);\r\n","import { Header2 } from 'fiducius-ui';\r\nimport styled from 'styled-components';\r\n\r\nconst AdjustedHeader = styled(Header2)`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nexport default AdjustedHeader;\r\n","import { Card } from 'fiducius-ui';\r\nimport styled from 'styled-components';\r\n\r\nconst PlanCard = styled(Card)`\r\n box-shadow: ${(p) => p.theme.boxShadow};\r\n margin: -1.5rem 0 1.5rem -2.5rem;\r\n padding-left: 1.5rem;\r\n transition: box-shadow 200ms ease-in-out;\r\n width: 100%;\r\n word-wrap: break-word;\r\n\r\n &:hover {\r\n box-shadow: ${(p) => p.theme.boxShadowLarge};\r\n transition: box-shadow 200ms ease-in-out;\r\n }\r\n`;\r\n\r\nexport default PlanCard;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { CardBody, CardTitle, CardText, Form, InputRadio } from 'fiducius-ui';\r\n\r\nimport { useScrollToTopOnMount } from '../../../utils';\r\n\r\nimport AdjustedHeader from '../styles/adjusted-header';\r\nimport PlanCard from '../styles/plan-card';\r\n\r\nconst getOption = (option, disabled, currentPayInFull) => {\r\n const optionLabel = (\r\n <PlanCard>\r\n <CardBody>\r\n <CardTitle>{option.payInFull ? 'Pay in Full' : 'Payment Plan'}</CardTitle>\r\n <CardText>\r\n <p dangerouslySetInnerHTML={option.message} />\r\n </CardText>\r\n </CardBody>\r\n </PlanCard>\r\n );\r\n\r\n return (\r\n <InputRadio\r\n name=\"payInFull\"\r\n value={option.payInFull ? 'Y' : 'N'}\r\n label={optionLabel}\r\n defaultChecked={option.payInFull === currentPayInFull}\r\n disabled={disabled}\r\n />\r\n );\r\n};\r\n\r\nconst TabPlan = ({ data = {}, errors = {}, handleChange, id }) => {\r\n useScrollToTopOnMount();\r\n const fullMessage =\r\n data.planType === 'FS' ? data.fullServicePayInFullMessage : data.selfServicePayInFullMessage;\r\n const planMessage =\r\n data.planType === 'FS'\r\n ? data.fullServicePaymentPlanMessage\r\n : data.selfServicePaymentPlanMessage;\r\n return (\r\n <Form id={id} handleChange={handleChange} defaults={data}>\r\n <AdjustedHeader>Select a payment option</AdjustedHeader>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n {getOption(\r\n {\r\n payInFull: true,\r\n message: { __html: fullMessage },\r\n },\r\n false,\r\n data.payInFull\r\n )}\r\n </div>\r\n {\r\n /*data.planType === 'FS' &&*/ <div className=\"col-12 col-md-6\">\r\n {getOption(\r\n {\r\n payInFull: false,\r\n message: { __html: planMessage },\r\n },\r\n false,\r\n data.payInFull\r\n )}\r\n </div>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n};\r\n\r\nTabPlan.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n};\r\n\r\nexport default TabPlan;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { Card, CardBody, CardText, CardTitle, InputCheckbox } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nconst PlanBody = styled(CardBody)`\r\n background-color: ${(p) => (p.disabled ? p.theme.level2 : p.theme.level0)};\r\n`;\r\n\r\nconst stripTitle = (text) => {\r\n const matches = text.split(/(-|–|—)/g); // this is why we can't have nice things.\r\n if (safeAccess(matches, 'length', 0) > 1) {\r\n return matches[2];\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst stripCheck = (text) => {\r\n const matches = text.split('Check');\r\n if (safeAccess(matches, 'length', 0) > 0) {\r\n return matches[0];\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst PlanService = ({ handleChange, service }) => (\r\n <Card brand={service.planSelected ? 'secondary' : 'primary'}>\r\n <PlanBody disabled={!service.allowedChangeChoice}>\r\n <CardTitle>{service.planServiceName || 'Plan Service'}</CardTitle>\r\n <CardText>\r\n <InputCheckbox\r\n name=\"planSelected\"\r\n label={\r\n (service.allowedChangeChoice\r\n ? stripTitle(service.planServiceText)\r\n : stripCheck(stripTitle(service.planServiceText))) || 'Elect plan service'\r\n }\r\n disabled={!service.allowedChangeChoice}\r\n defaultChecked={service.planSelected}\r\n onChange={(e) => handleChange(e.target.checked, service.planServiceId, 'services')}\r\n />\r\n </CardText>\r\n </PlanBody>\r\n </Card>\r\n);\r\n\r\nPlanService.propTypes = {\r\n handleChange: t.func.isRequired,\r\n service: t.shape({\r\n allowedChangeChoice: t.bool.isRequired,\r\n planSelected: t.bool.isRequired,\r\n planServiceId: t.number.isRequired,\r\n planServiceText: t.string,\r\n planServiceName: t.string,\r\n }).isRequired,\r\n};\r\n\r\nexport default PlanService;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { BrandColor, CardBody, CardText, CardTitle, Form, Header2, InputRadio } from 'fiducius-ui';\r\n\r\nimport { useScrollToTopOnMount } from '../../../utils';\r\n\r\nimport PlanCard from '../styles/plan-card';\r\nimport AdjustedHeader from '../styles/adjusted-header';\r\nimport PlanService from './plan-service';\r\n\r\nconst FlexTitle = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst fullServicePlan = {\r\n //message:\r\n // 'Our Full Service Enterprise Platform is recommended for those that understand how their student loans will be affected, but feel more confident having the professionals handle everything on their behalf. This platform includes the following:',\r\n message: 'Your Plan Implementation Toolkit includes the following:',\r\n points: [\r\n 'A dedicated team responsible for completing all necessary documentation and steps for the implementation process.',\r\n 'Defined timeline driven by team to complete set up of initial repayment amount and remaining payment schedule.',\r\n 'Ensured continuous compliance within the forgiveness program.',\r\n 'All responsibility is shouldered by Fiducius, individuals are simply responsible for returning signed forms promptly and making student loan payments on time.',\r\n ],\r\n //title: 'Full Service Enterprise Platform',\r\n title: 'Plan Implementation Toolkit',\r\n type: 'FS',\r\n};\r\n\r\nconst selfServicePlan = {\r\n //message:\r\n // 'Our Do It Yourself Toolkit is recommended for those that are comfortable and confident taking the wheel into their own hands. This toolkit includes the following:',\r\n message: 'Your Plan Implementation Toolkit includes the following:',\r\n points: [\r\n 'Step by step instructions guiding you through the implementation process.',\r\n 'All the necessary documentation for you to complete on your behalf.',\r\n 'You are responsible for completing everything in a timely manner, but you are able to go at your own pace.',\r\n 'A support team available should you have questions as you go through the process.',\r\n ],\r\n //title: 'Do It Yourself Toolkit',\r\n title: 'Plan Implementation Toolkit',\r\n type: 'SS',\r\n};\r\n\r\nconst getServices = (services, handleChange) =>\r\n services.map((service) => (\r\n <PlanService key={service.planServiceId} service={service} handleChange={handleChange} />\r\n ));\r\n\r\nconst getPlan = (type, plan, disabled, cost) => {\r\n const planLabel = (\r\n <PlanCard>\r\n <CardBody>\r\n <CardTitle>\r\n <FlexTitle>\r\n <span>{plan.title}</span>\r\n <BrandColor brand=\"success\">${cost}</BrandColor>\r\n </FlexTitle>\r\n </CardTitle>\r\n <CardText>\r\n <p>{plan.message}</p>\r\n <ul>\r\n {plan.points.map((p, i) => (\r\n <li key={plan.title + i.toString()}>{p}</li>\r\n ))}\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </PlanCard>\r\n );\r\n\r\n return (\r\n <InputRadio\r\n name=\"planType\"\r\n value={plan.type}\r\n label={planLabel}\r\n defaultChecked={type === plan.type}\r\n disabled={disabled}\r\n />\r\n );\r\n};\r\n\r\nconst TabPlan = ({ data = {}, handleChange, id }) => {\r\n useScrollToTopOnMount();\r\n return (\r\n <>\r\n <AdjustedHeader>\r\n {data.allowPlanTypeChoice ? 'Pick a plan that works best for you' : 'Your Plan'}\r\n </AdjustedHeader>\r\n <Form id={id} handleChange={handleChange}>\r\n {data.allowPlanTypeChoice ? (\r\n <>\r\n {getPlan(data.planType, selfServicePlan, true, data.selfServiceCost)}\r\n {/*getPlan(data.planType, fullServicePlan, false, data.fullServiceCost)*/}\r\n </>\r\n ) : data.planType === 'SS' ? (\r\n getPlan(data.planType, selfServicePlan, true, data.selfServiceCost)\r\n ) : (\r\n getPlan(data.planType, fullServicePlan, true, data.fullServiceCost)\r\n )}\r\n </Form>\r\n {data.services && (\r\n <>\r\n <Header2>Elect additional plan services</Header2>\r\n {getServices(data.services, handleChange)}\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nTabPlan.propTypes = {\r\n data: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n};\r\n\r\nexport default TabPlan;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Alert, AsyncLoader, Button, Loader, Workflow } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { fulfillmentUpdateResource } from '../../../fulfillment';\r\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../../utils';\r\n\r\nimport TabAgreement, { AGREEMENT_DOC_ID } from './tab-agreement';\r\nimport TabPayment from './tab-payment';\r\nimport TabPlan from './tab-plan';\r\nimport {\r\n agreementCopyResourceToForm,\r\n agreementHandleFormChange,\r\n agreementLoadResource,\r\n agreementValidateAttributes,\r\n} from '../redux/operations';\r\n\r\nimport { paymentSetTypeDeposit } from '../../../payment';\r\n\r\nclass AgreementWorkflow extends React.Component {\r\n static propTypes = {\r\n current: t.number,\r\n data: t.object,\r\n errors: t.object,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n request: t.object.isRequired,\r\n signContract: t.func.isRequired,\r\n signRequest: t.object.isRequired,\r\n updateForm: t.func.isRequired,\r\n validateTab: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { current: props.current || 0 };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { data, updateForm } = this.props;\r\n\r\n if (attribute === 'services') {\r\n let services = data.services;\r\n let matches = Object.keys(services).filter((k) => services[k].planServiceId === id);\r\n if (safeAccess(matches, 'length', 0) === 1) {\r\n data.services[matches[0]].planSelected = formState;\r\n }\r\n }\r\n\r\n if (attribute === 'payInFull') {\r\n formState.payInFull = formState.payInFull === 'Y';\r\n }\r\n\r\n const newData = { ...data, ...formState };\r\n updateForm(newData, [attribute]);\r\n }, 250);\r\n\r\n handleTabChange = (index) => {\r\n this.props.validateTab(Object.keys(tabs)[this.state.current]);\r\n this.setState({ current: index });\r\n };\r\n\r\n sectionValidationStatus(section) {\r\n const { errors } = this.props;\r\n let exists = false;\r\n for (let i = 0; i < tabs[section].length; i++) {\r\n let attribute = tabs[section][i];\r\n if (safeAccess(errors, `[${attribute}]`)) {\r\n return 'danger';\r\n } else if (safeAccess(errors, `[${attribute}]`) === false) {\r\n exists = true;\r\n }\r\n }\r\n return exists ? 'success' : null;\r\n }\r\n\r\n getTabs = (data, errors, agreementStatus) => {\r\n let tabs = [\r\n <TabAgreement\r\n key=\"2\"\r\n id=\"agreement\"\r\n data={data}\r\n errors={errors}\r\n brand={agreementStatus}\r\n name=\"Sign Agreement\"\r\n skipSave={data.skipToAgreement}\r\n />,\r\n ];\r\n\r\n if (!data.skipToAgreement) {\r\n tabs.unshift(\r\n <TabPlan\r\n key=\"2\"\r\n id=\"plan\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('plan')}\r\n name=\"Your Plan\"\r\n handleChange={this.handleChange}\r\n />,\r\n <TabPayment\r\n key=\"2\"\r\n id=\"payment\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('payment')}\r\n name=\"Payment Options\"\r\n handleChange={this.handleChange}\r\n />\r\n );\r\n }\r\n\r\n return tabs;\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (!this.props.signRequest.isLoading) {\r\n this.props.signContract();\r\n }\r\n };\r\n\r\n render() {\r\n const { data, errors, request, signRequest } = this.props;\r\n let agreementStatus = this.sectionValidationStatus('agreement');\r\n if (agreementStatus !== 'danger' && signRequest.hasFinished) {\r\n agreementStatus = signRequest.hasFailed ? 'danger' : 'success';\r\n }\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <>\r\n {safeAccess(errors, 'generalErrors')\r\n ? errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))\r\n : null}\r\n {/* TODO: Fix AsyncLoader so that it doesn't need this check for data */}\r\n {data && (\r\n <Workflow\r\n tabs={this.getTabs(data, errors, agreementStatus)}\r\n finalButton={\r\n <Button brand=\"primary\" onClick={(e) => this.submit(e)}>\r\n {signRequest.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Sign contract'}\r\n </Button>\r\n }\r\n handleTabChange={this.handleTabChange}\r\n next\r\n prev\r\n />\r\n )}\r\n </>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst tabs = {\r\n plan: ['planType', 'services'],\r\n payment: ['payInFull'],\r\n agreement: [],\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.agreement;\r\n return {\r\n id: getUserId(state),\r\n data: form,\r\n errors: errors,\r\n request: mergeRequestStatuses([requests.loadResource, requests.copyResourceToForm]),\r\n signRequest: state.fulfillment.requests.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(agreementLoadResource(id));\r\n await dispatch(agreementCopyResourceToForm(id));\r\n },\r\n updateForm: (data, attributes) => {\r\n dispatch(agreementHandleFormChange(data, attributes));\r\n },\r\n signContract: () => {\r\n dispatch(fulfillmentUpdateResource(AGREEMENT_DOC_ID));\r\n dispatch(paymentSetTypeDeposit());\r\n },\r\n validateTab: async (tab) => {\r\n await dispatch(agreementValidateAttributes(tabs[tab]));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AgreementWorkflow);\r\n","import React from 'react';\r\nimport { Card, CardBody, CardFooter, CardText, Header1, Link } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer } from '../../../routing';\r\n\r\nimport AgreementWorkflow from '../components/agreement-workflow';\r\n\r\nconst Agreement = () => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <Header1>User Agreement</Header1>\r\n <CardText>\r\n <AgreementWorkflow />\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Link to=\"/dashboard\">Return home</Link>\r\n </CardFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nexport default Agreement;\r\n","import types from './types';\r\nimport { isEqual, resourceReducerGenerator } from '../../../utils';\r\n\r\n// This is super brittle...\r\nconst emptyState = {\r\n addressOne: null,\r\n addressTwo: null,\r\n birthDate: '', // TODO: remove from API\r\n city: null,\r\n consolidated: null,\r\n continuedEducation: null,\r\n creditScore: '',\r\n degree: '',\r\n degreeSought: '',\r\n federalPrivateMix: null,\r\n household: null,\r\n income: null,\r\n interestRate: null,\r\n jobTitle: null,\r\n knowSomeoneWithLoans: null,\r\n loanBalance: null,\r\n married: null,\r\n monthlyPayment: null,\r\n parentPlus: null,\r\n privateBalance: null,\r\n privateLoans: null,\r\n privatePayment: null,\r\n privateServicer: null,\r\n readOnly: false,\r\n referrerName: null,\r\n results: {},\r\n school: null,\r\n spouseIncome: null,\r\n startDate: '',\r\n taxFiling: '',\r\n usState: null,\r\n zipCode: null,\r\n};\r\n\r\nconst emptyDecider = (state) => isEqual(state.cache, emptyState);\r\n\r\nexport default resourceReducerGenerator('agreement', types, undefined, emptyDecider);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n AsyncLoader,\r\n Form,\r\n Header4,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n Alert,\r\n} from 'fiducius-ui';\r\nimport { Fade } from '../../../routing';\r\n\r\nimport {\r\n fulfillmentCopyResourceToForm,\r\n fulfillmentHandleFormChange,\r\n fulfillmentLoadResource,\r\n PdfViewer,\r\n Signature,\r\n} from '../../../fulfillment';\r\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../../utils';\r\n\r\nimport { idrFixUpdateData, idrUpdateResource } from '../redux/operations';\r\n\r\nexport const IDR_DOC_ID = 11;\r\n\r\nconst InputLabel2 = styled(InputLabel)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nclass TabIdr extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n html: t.string,\r\n loadHtml: t.func.isRequired,\r\n request: t.object,\r\n saveContract: t.func.isRequired,\r\n signRequest: t.object,\r\n updateForm: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.scrollRef = React.createRef();\r\n this.state = { hasHtml: false, redirect: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.saveContract();\r\n\r\n if (this.scrollRef.current) {\r\n this.scrollRef.current.focus();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { request, signRequest } = this.props;\r\n if (prevProps.request.isLoading && request.hasFinished && !request.hasFailed) {\r\n if (!this.state.hasHtml) {\r\n this.setState({ hasHtml: true }, () => this.props.loadHtml());\r\n }\r\n }\r\n\r\n if (prevProps.signRequest.isLoading && signRequest.hasFinished && !signRequest.hasFailed) {\r\n this.setState({ redirect: true });\r\n }\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { form, updateForm } = this.props;\r\n formState.docId = IDR_DOC_ID;\r\n const newData = { ...form, ...formState };\r\n updateForm(newData, [attribute]);\r\n }, 250);\r\n\r\n handleClientSignature = (data) => {\r\n this.props.updateForm({ ...this.props.form, signaturePadClient: data }, ['signaturePadClient']);\r\n };\r\n\r\n handleSpouseSignature = (data) => {\r\n this.props.updateForm({ ...this.props.form, signaturePadSpouse: data }, ['signaturePadSpouse']);\r\n };\r\n\r\n handleNumericChange = (e) => {\r\n const re = /^[0-9\\b]+$/;\r\n switch (e.target.name) {\r\n case 'ssn1':\r\n if (e.target.value === '' || re.test(e.target.value)) {\r\n this.setState({ ssn1State: e.target.value });\r\n }\r\n break;\r\n case 'ssn2':\r\n if (e.target.value === '' || re.test(e.target.value)) {\r\n this.setState({ ssn2State: e.target.value });\r\n }\r\n break;\r\n case 'ssn3':\r\n if (e.target.value === '' || re.test(e.target.value)) {\r\n this.setState({ ssn3State: e.target.value });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n render() {\r\n const { data = {}, errors = {}, form, request } = this.props;\r\n let ssnOnFile = safeAccess(data, 'haveSsn', false);\r\n\r\n if (this.state.redirect) {\r\n return <Redirect to=\"/documents\" />;\r\n }\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <PdfViewer base64={safeAccess(data, 'fileData', '')} isFulfillment={true} />\r\n </AsyncLoader>\r\n <Form id=\"signatureForm\" handleChange={this.handleChange} defaults={form}>\r\n {safeAccess(errors, 'na') && (\r\n <Alert key={'invalid-info'} brand=\"danger\">\r\n {errors.na.detail}\r\n </Alert>\r\n )}\r\n <Fade show={request.isLoading}>\r\n <p></p>\r\n <Header4>\r\n <p>Please wait for the document preview to load before you sign your application.</p>{' '}\r\n <p>This may take up to a minute or two.</p>\r\n </Header4>\r\n </Fade>\r\n <Fade show={!request.isLoading}>\r\n <Header4>\r\n For your security, please input the correct information below to sign the application.\r\n </Header4>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.firstName}>\r\n <InputLabel2>First Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'firstName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"firstName\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.lastName}>\r\n <InputLabel2>Last Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'lastName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"lastName\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel2>Email</InputLabel2>\r\n <InputError>{safeAccess(errors, 'email.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"email\" type=\"email\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.password}>\r\n <InputLabel2>Password</InputLabel2>\r\n <InputError>{safeAccess(errors, 'password.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"password\" type=\"password\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n {!ssnOnFile && (\r\n <>\r\n <TextLeft>\r\n <p>\r\n One requirement of this form is your Social Security Number (SSN), please\r\n provide it and we will populate it to the form\r\n </p>\r\n </TextLeft>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <TextLeft>\r\n <InputWrapper error={!!errors.idrSSN}>\r\n <InputLabel required>Social Security Number</InputLabel>\r\n <InputError>{safeAccess(errors, 'idrSSN.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name=\"ssn1\"\r\n type=\"password\"\r\n autoComplete=\"off\"\r\n placeholder=\"XXX\"\r\n maxLength=\"3\"\r\n onChange={this.handleNumericChange}\r\n value={this.state.ssn1State}\r\n />\r\n \r\n <InputText\r\n name=\"ssn2\"\r\n type=\"password\"\r\n autoComplete=\"off\"\r\n placeholder=\"XX\"\r\n maxLength=\"2\"\r\n onChange={this.handleNumericChange}\r\n value={this.state.ssn2State}\r\n />\r\n \r\n <InputText\r\n name=\"ssn3\"\r\n type=\"password\"\r\n autoComplete=\"off\"\r\n placeholder=\"XXXX\"\r\n maxLength=\"4\"\r\n onChange={this.handleNumericChange}\r\n value={this.state.ssn3State}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </TextLeft>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n <Signature handleChange={this.handleClientSignature} label=\"Your signature\" />\r\n {/* {data.needSpouseSignature && (\r\n <Signature handleChange={this.handleSpouseSignature} label=\"Spouse's Signature\" />\r\n )} */}\r\n </Fade>\r\n </Form>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: state.fulfillment.cache[IDR_DOC_ID],\r\n form: state.fulfillment.form,\r\n errors: state.fulfillment.errors,\r\n request: mergeRequestStatuses([\r\n state.fulfillment.requests.loadResource,\r\n state.idr.requests.updateResource,\r\n ]), // separate and then componentdidupdate stuff\r\n signRequest: state.fulfillment.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadHtml: async () => {\r\n await dispatch(fulfillmentLoadResource(IDR_DOC_ID));\r\n await dispatch(fulfillmentCopyResourceToForm(IDR_DOC_ID));\r\n },\r\n saveContract: async () => {\r\n await dispatch(idrFixUpdateData());\r\n dispatch(idrUpdateResource(IDR_DOC_ID));\r\n },\r\n updateForm: (data, attributes) => dispatch(fulfillmentHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TabIdr);\r\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Alert,\n Form,\n Header2,\n InputError,\n InputGroup,\n InputHelp,\n InputLabel,\n InputMask,\n InputNumeric,\n InputRadio,\n InputSelect,\n InputText,\n InputWrapper,\n InputAddon,\n} from 'fiducius-ui';\nimport { idrHandleFormChange, idrValidateAttributes } from '../redux/operations';\nimport { Fade } from '../../../routing';\nimport { convertIsoToSlash, safeAccess, stringIsNullOrEmpty } from '../../../utils';\nconst WorkflowAlert = styled.div`\n & > .alert {\n margin-left: 0;\n }\n`;\n\nconst InputLabel2 = styled(InputLabel)`\n color: ${(p) => p.theme.textPrimary};\n`;\n\nconst InputHelp2 = styled(InputHelp)`\n color: ${(p) => p.theme.textPrimary};\n`;\n\nconst ContactMessage = () => (\n <WorkflowAlert>\n <Alert brand=\"danger\">\n Please visit the Contact Us button on the left of your portal to reach out to us to continue\n your application process.\n {/*\n Please contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> and select Option 2 in our\n phone menu to continue your application process. */}\n </Alert>\n </WorkflowAlert>\n);\n\nclass TabHousehold extends React.Component {\n static propTypes = {\n data: t.object,\n errors: t.object,\n handleChange: t.func,\n id: t.string.isRequired,\n validateForm: t.func,\n validateSpecificAttributes: t.func,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n componentDidUpdate() {\n //const attributes\n //this.props.validateForm(this.props.data, Object.keys(this.props.data));\n }\n componentDidMount() {\n const { data } = this.props;\n let validateAttributes = [];\n if (data.agi === 0) {\n data.agi = '';\n }\n if (data) {\n for (let [key, value] of Object.entries(data)) {\n if (!stringIsNullOrEmpty(value)) {\n validateAttributes.push(key);\n }\n }\n }\n\n this.props.validateSpecificAttributes(validateAttributes);\n }\n\n render() {\n const { data = {}, errors = {}, handleChange, id } = this.props;\n return (\n <Form id={id} defaults={data} handleChange={handleChange}>\n <Header2>Tell us about your family</Header2>\n <InputWrapper error={!!errors.question5Response}>\n <InputLabel2>\n How many children, including unborn children, are in your family and receive more than\n half of their support from you?\n </InputLabel2>\n <InputError>{safeAccess(errors, 'question5Response.detail')}</InputError>\n <InputGroup affordance=\"small\">\n <InputNumeric name=\"question5Response\" min=\"0\" defaultValue={data.question5Response} />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.question6Response}>\n <InputLabel2>\n How many other people, excluding your spouse and children, live with you and receive\n more than half of their support from you?\n </InputLabel2>\n <InputError>{safeAccess(errors, 'question6Response.detail')}</InputError>\n <InputGroup affordance=\"small\">\n <InputNumeric name=\"question6Response\" min=\"0\" defaultValue={data.question6Response} />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.question7Response}>\n <InputLabel2 htmlFor=\"question7Response\">What is your marital status?</InputLabel2>\n <InputError>{safeAccess(errors, 'question7Response.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputSelect\n name=\"question7Response\"\n defaultValue={data.question7Response}\n options={{\n '': '',\n A: 'Single',\n B: 'Married',\n /*C: 'Married, but separated',*/\n C:\n \"Married, but separated or unable to reasonably access my spouse's income information\",\n }}\n />\n </InputGroup>\n </InputWrapper>\n <Fade id=\"isMarried\" show={data.question7Response === 'B'}>\n <InputWrapper error={!!errors.question8Response}>\n <InputLabel2>Does your spouse have federal student loans?</InputLabel2>\n <InputError>{safeAccess(errors, 'question8Response.detail')}</InputError>\n <InputRadio\n name=\"question8Response\"\n value=\"A\"\n label=\"Yes\"\n defaultChecked={data.question8Response === 'A'}\n />\n <InputRadio\n name=\"question8Response\"\n value=\"B\"\n label=\"No\"\n defaultChecked={data.question8Response === 'B'}\n />\n </InputWrapper>\n <InputWrapper error={!!errors.question9BResponse}>\n <InputLabel2>Spouse's Name</InputLabel2>\n <InputError>{safeAccess(errors, 'question9BResponse.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputText name=\"question9BResponse\" defaultValue={data.question9BResponse} />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.question9CResponse}>\n <InputLabel2>Spouse's Date of Birth</InputLabel2>\n <InputError>{safeAccess(errors, 'question9CResponse.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputMask\n defaultValue={convertIsoToSlash(data.question9CResponse)}\n mask=\"##/##/####\"\n name=\"question9CResponse\"\n placeholder=\"MM/DD/YYYY\"\n />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.question10Response}>\n <InputLabel2>\n When you filed your last federal income tax return, did you file jointly with your\n spouse?\n </InputLabel2>\n <InputError>{safeAccess(errors, 'question10Response.detail')}</InputError>\n <InputRadio\n name=\"question10Response\"\n value=\"A\"\n label=\"Yes\"\n defaultChecked={data.question10Response === 'A'}\n />\n <InputRadio\n name=\"question10Response\"\n value=\"B\"\n label=\"No\"\n defaultChecked={data.question10Response === 'B'}\n />\n </InputWrapper>\n <Fade id=\"filedJointly\" show={data.question10Response === 'A'}>\n <InputWrapper error={!!errors.question13Response}>\n <InputLabel2>\n Has your income significantly decreased since you filed your last federal income tax\n return?\n </InputLabel2>\n <InputError>{safeAccess(errors, 'question13Response.detail')}</InputError>\n <InputRadio\n name=\"question13Response\"\n value=\"A\"\n label=\"Yes\"\n defaultChecked={data.question13Response === 'A'}\n />\n <InputRadio\n name=\"question13Response\"\n value=\"B\"\n label=\"No\"\n defaultChecked={data.question13Response === 'B'}\n />\n <InputRadio\n name=\"question13Response\"\n value=\"C\"\n label=\"I haven't filed a federal income tax return in the last two years\"\n defaultChecked={data.question13Response === 'C'}\n />\n <InputHelp2>\n For Example, have you lost your job or experienced a drop in income?\n </InputHelp2>\n </InputWrapper>\n <Fade id=\"jointClientIncomeNotChanged\" show={data.question13Response === 'B'}>\n <InputWrapper error={!!errors.question14Response}>\n <InputLabel2>\n Has your spouse's income significantly decreased since your spouse filed his\n or her last federal income tax return?\n </InputLabel2>\n <InputError>{safeAccess(errors, 'question14Response.detail')}</InputError>\n <InputRadio\n name=\"question14Response\"\n value=\"A\"\n label=\"Yes\"\n defaultChecked={data.question14Response === 'A'}\n />\n <InputRadio\n name=\"question14Response\"\n value=\"B\"\n label=\"No\"\n defaultChecked={data.question14Response === 'B'}\n />\n <InputHelp2>\n For Example, has your spouse lost his or her job or experienced a drop in income?\n </InputHelp2>\n </InputWrapper>\n </Fade>\n <Fade\n id=\"jointClientIncomeChanged\"\n show={\n data.question13Response === 'A' ||\n data.question13Response === 'C' ||\n data.question14Response === 'A'\n }\n >\n <InputWrapper error={!!errors.question15Response}>\n <InputLabel2>Do you currently have taxable income?</InputLabel2>\n <InputError>{safeAccess(errors, 'question15Response.detail')}</InputError>\n <InputRadio\n name=\"question15Response\"\n value=\"A\"\n label=\"Yes\"\n defaultChecked={data.question15Response === 'A'}\n />\n <InputRadio\n name=\"question15Response\"\n value=\"B\"\n label=\"No\"\n defaultChecked={data.question15Response === 'B'}\n />\n <InputHelp2>\n Check <strong>No</strong> if you do not have any income or receive only untaxed\n income.\n </InputHelp2>\n </InputWrapper>\n <Fade id=\"jointClientNoTaxableIncome\" show={data.question15Response === 'B'}>\n <ContactMessage />\n </Fade>\n <Fade id=\"jointClientTaxableIncome\" show={data.question15Response === 'A'}>\n <InputWrapper error={!!errors.question16Response}>\n <InputLabel2>Does your spouse currently have taxable income?</InputLabel2>\n <InputError>{safeAccess(errors, 'question16Response.detail')}</InputError>\n <InputRadio\n name=\"question16Response\"\n value=\"A\"\n label=\"Yes\"\n defaultChecked={data.question16Response === 'A'}\n />\n <InputRadio\n name=\"question16Response\"\n value=\"B\"\n label=\"No\"\n defaultChecked={data.question16Response === 'B'}\n />\n <InputHelp2>\n Check <strong>No</strong> if your spouse does not have any income or receives\n only untaxed income.\n </InputHelp2>\n </InputWrapper>\n </Fade>\n </Fade>\n </Fade>\n </Fade>\n <Fade\n id=\"notMarriedorFilingSeparately\"\n show={\n data.question7Response === 'A' ||\n data.question7Response === 'C' ||\n data.question7Response === 'D' ||\n data.question10Response === 'B'\n }\n >\n <InputWrapper error={!!errors.question11Response}>\n <InputLabel2>\n Has your income significantly decreased, or your marital status changed since you\n filed your last federal income tax return?\n </InputLabel2>\n <InputError>{safeAccess(errors, 'question11Response.detail')}</InputError>\n <InputRadio\n name=\"question11Response\"\n value=\"A\"\n label=\"Yes\"\n defaultChecked={data.question11Response === 'A'}\n />\n <InputRadio\n name=\"question11Response\"\n value=\"B\"\n label=\"No\"\n defaultChecked={data.question11Response === 'B'}\n />\n <InputRadio\n name=\"question11Response\"\n value=\"C\"\n label=\"I haven't filed a federal income tax return in the last two years\"\n defaultChecked={data.question11Response === 'C'}\n />\n <InputHelp2>\n For Example, have you lost your job, experienced a drop in income, become divorced, or\n did you most recently file a joint return with your spouse, but you have since become\n separated or lost the ability to access your spouse's information?\n </InputHelp2>\n </InputWrapper>\n <Fade\n id=\"singleIncomeFiled\"\n show={data.question11Response === 'A' || data.question11Response === 'C'}\n >\n {/* **question11Response === 'B' would go to the IRS Section (now Question 17)** */}\n <InputWrapper error={!!errors.question12Response}>\n <InputLabel>Do you currently have taxable income?</InputLabel>\n <InputError>{safeAccess(errors, 'question12Response.detail')}</InputError>\n <InputRadio\n name=\"question12Response\"\n value=\"A\"\n label=\"Yes\"\n defaultChecked={data.question12Response === 'A'}\n />\n <InputRadio\n name=\"question12Response\"\n value=\"B\"\n label=\"No\"\n defaultChecked={data.question12Response === 'B'}\n />\n <InputHelp2>\n Check <strong>No</strong> if you do not have any income or receive only untaxed\n income.\n </InputHelp2>\n </InputWrapper>\n <Fade id=\"singleNoTaxableIncome\" show={data.question12Response === 'B'}>\n <ContactMessage />\n </Fade>\n </Fade>\n </Fade>\n <InputWrapper error={!!errors.agi}>\n <InputLabel2>Adjusted Gross Income</InputLabel2>\n <InputError>{safeAccess(errors, 'agi.detail')}</InputError>\n <InputGroup affordance=\"small\">\n <InputAddon>$</InputAddon>\n <InputNumeric name=\"agi\" defaultValue={data.agi} />\n <InputAddon>.00</InputAddon>\n <InputHelp2></InputHelp2>\n </InputGroup>\n </InputWrapper>\n </Form>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n validateForm: (data, attributes) => dispatch(idrHandleFormChange(data, attributes)),\n validateSpecificAttributes: (attributes) => dispatch(idrValidateAttributes(attributes)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TabHousehold);\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Form,\r\n Header2,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputMask,\r\n InputNumeric,\r\n InputRadio,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\nimport { idrValidateAttributes } from '../redux/operations';\r\n\r\nimport { convertIsoToSlash, safeAccess, stringIsNullOrEmpty } from '../../../utils';\r\n\r\nconst InputLabel2 = styled(InputLabel)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst InputHelp2 = styled(InputHelp)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nclass TabSimple extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n permissions: t.object,\r\n validateSpecificAttributes: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n const { data } = this.props;\r\n let validateAttributes = [];\r\n if (data) {\r\n for (let [key, value] of Object.entries(data)) {\r\n if (!stringIsNullOrEmpty(value) && key !== 'agi') {\r\n validateAttributes.push(key);\r\n }\r\n }\r\n }\r\n\r\n this.props.validateSpecificAttributes(validateAttributes);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n const { data = {}, errors = {}, handleChange, id } = this.props;\r\n\r\n return (\r\n <Form id={id} defaults={data} handleChange={handleChange}>\r\n <Header2>Tell us about your family</Header2>\r\n <InputWrapper error={!!errors.question5Response}>\r\n <InputLabel2>\r\n How many children, including unborn children, are in your family and receive more than\r\n half of their support from you?\r\n </InputLabel2>\r\n <InputError>{safeAccess(errors, 'question5Response.detail')}</InputError>\r\n <InputGroup affordance=\"small\">\r\n <InputNumeric\r\n name=\"question5Response\"\r\n min=\"0\"\r\n defaultValue={data.question5Response}\r\n disabled={!stringIsNullOrEmpty(data.question5Response)}\r\n />\r\n </InputGroup>\r\n {!stringIsNullOrEmpty(data.question5Response) &&\r\n stringIsNullOrEmpty(data.question6Response) && (\r\n <InputHelp2>\r\n If the information for the above question is incorrect, please visit the Contact Us\r\n button on the left of your portal to reach out to us regarding.\r\n {/*please call us at{' '}\r\n <a href=\"tel:15136455400\">+1 (513) 645-5400</a>.*/}\r\n </InputHelp2>\r\n )}\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.question6Response}>\r\n <InputLabel2>\r\n How many other people, excluding your spouse and children, live with you and receive\r\n more than half of their support from you?\r\n </InputLabel2>\r\n <InputError>{safeAccess(errors, 'question6Response.detail')}</InputError>\r\n <InputGroup affordance=\"small\">\r\n <InputNumeric\r\n name=\"question6Response\"\r\n min=\"0\"\r\n defaultValue={data.question6Response}\r\n disabled={!stringIsNullOrEmpty(data.question6Response)}\r\n />\r\n </InputGroup>\r\n {stringIsNullOrEmpty(data.question5Response) &&\r\n !stringIsNullOrEmpty(data.question6Response) && (\r\n <InputHelp2>\r\n If the information for the above question is incorrect, please visit the Contact Us\r\n button on the left of your portal to reach out to us regarding.\r\n {/*please call us at{' '}\r\n <a href=\"tel:15136455400\">+1 (513) 645-5400</a>.*/}\r\n </InputHelp2>\r\n )}\r\n </InputWrapper>\r\n {!stringIsNullOrEmpty(data.question5Response) &&\r\n !stringIsNullOrEmpty(data.question6Response) && (\r\n <InputLabel2>\r\n If the information for either of the above questions is incorrect, please visit the\r\n Contact Us button on the left of your portal to reach out to us regarding.\r\n {/*please call us at{' '}\r\n <a href=\"tel:15136455400\">+1 (513) 645-5400</a>.*/}\r\n </InputLabel2>\r\n )}\r\n {data.isMarried && (\r\n <>\r\n <InputWrapper error={!!errors.question8Response}>\r\n <InputLabel2>Does your spouse have federal student loans?</InputLabel2>\r\n <InputError>{safeAccess(errors, 'question8Response.detail')}</InputError>\r\n <InputRadio\r\n name=\"question8Response\"\r\n value=\"A\"\r\n label=\"Yes\"\r\n defaultChecked={data.question8Response === 'A'}\r\n />\r\n <InputRadio\r\n name=\"question8Response\"\r\n value=\"B\"\r\n label=\"No\"\r\n defaultChecked={data.question8Response === 'B'}\r\n />\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.question9BResponse}>\r\n <InputLabel2>Spouse's Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'question9BResponse.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputText name=\"question9BResponse\" defaultValue={data.question9BResponse} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.question9CResponse}>\r\n <InputLabel2>Spouse's Date of Birth</InputLabel2>\r\n <InputError>{safeAccess(errors, 'question9CResponse.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.question9CResponse)}\r\n mask=\"##/##/####\"\r\n name=\"question9CResponse\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </>\r\n )}\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n validateSpecificAttributes: (attributes) => dispatch(idrValidateAttributes(attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TabSimple);\r\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Form,\n Header2,\n InputError,\n InputGroup,\n InputHelp,\n InputLabel,\n InputRadio,\n InputSelect,\n InputWrapper,\n} from 'fiducius-ui';\nimport { Fade } from '../../../routing';\n\nimport { safeAccess } from '../../../utils';\nimport { idrHandleFormChange } from '../redux/operations';\n\nconst InputLabel2 = styled(InputLabel)`\n color: ${(p) => p.theme.textPrimary};\n`;\nconst InputHelp2 = styled(InputHelp)`\n color: ${(p) => p.theme.textPrimary};\n`;\nclass TabPlan extends React.Component {\n static propTypes = {\n data: t.object,\n errors: t.object,\n handleChange: t.func,\n id: t.string.isRequired,\n validateForm: t.func,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n componentWillUnmount() {\n //this is good here because tab-plan will never be the last tab\n const attributes = ['repaymentPlan', 'inDeferOrForbearance', 'repaymentBegan'];\n this.props.validateForm(this.props.data, attributes);\n }\n\n render() {\n const { data = {}, errors = {}, handleChange, id } = this.props;\n return (\n <Form id={id} defaults={data} handleChange={handleChange}>\n <Header2>Tell us about your loans</Header2>\n <Fade show={!(data.customerStatus === 'CRET' || !!data.isReducedIdrRenewal)}>\n <InputWrapper error={!!errors.repaymentPlan}>\n <InputLabel2>\n What federal loan repayment plan are you currently enrolled in?\n </InputLabel2>\n <InputError>{safeAccess(errors, 'repaymentPlan.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputSelect\n name=\"repaymentPlan\"\n defaultValue={data.repaymentPlan}\n // TODO: ask micah about these codes\n options={{\n '': '',\n PAYE: 'Pay as you earn',\n /*REPAY: 'Revised pay as you earn',*/\n IBR: 'Income based repayment',\n ICR: 'Income contingent repayment',\n SAVE: 'Saving on a Valuable Education',\n OTHER: 'Other',\n }}\n />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.repaymentBegan}>\n <InputLabel2>When did your repayment plan begin?</InputLabel2>\n <InputError>{safeAccess(errors, 'repaymentBegan.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputSelect\n name=\"repaymentBegan\"\n defaultValue={data.repaymentBegan}\n // TODO: ask micah about these codes\n options={{\n '': '',\n A: 'Less than eight months ago',\n B: 'More than eight months ago',\n }}\n />\n </InputGroup>\n </InputWrapper>\n </Fade>\n\n <InputWrapper error={!!errors.inDeferOrForbearance}>\n <InputLabel2>Are you currently in deferment or forbearance?</InputLabel2>\n <InputError>{safeAccess(errors, 'inDeferOrForbearance.detail')}</InputError>\n <InputRadio\n name=\"inDeferOrForbearance\"\n value=\"A\"\n label=\"No\"\n defaultChecked={data.inDeferOrForbearance === 'A'}\n />\n <InputRadio\n name=\"inDeferOrForbearance\"\n value=\"B\"\n label=\"Yes, but I want to start making payments under my plan immediately.\"\n defaultChecked={data.inDeferOrForbearance === 'B'}\n />\n <InputRadio\n name=\"inDeferOrForbearance\"\n value=\"C\"\n label=\"Yes, and I do not want to start repaying my loans until the deferment or forbearance ends.\"\n defaultChecked={data.inDeferOrForbearance === 'C'}\n />\n <InputHelp2>\n This information can be found through your loan servicer account online or by contacting\n your loan servicer.\n </InputHelp2>\n </InputWrapper>\n </Form>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const { requests, errors } = state.idr;\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n validateForm: (data, attributes) => dispatch(idrHandleFormChange(data, attributes)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TabPlan);\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Alert, AsyncLoader, Button, Loader, Workflow } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { fulfillmentUpdateResource } from '../../../fulfillment';\r\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../../utils';\r\n\r\nimport TabIdr, { IDR_DOC_ID } from './tab-idr';\r\nimport TabHousehold from './tab-household';\r\nimport TabSimple from './tab-simple';\r\nimport TabPlan from './tab-plan';\r\nimport {\r\n idrClearForm,\r\n idrCopyResourceToForm,\r\n idrHandleFormChange,\r\n idrHandleCacheChange,\r\n idrLoadResource,\r\n idrValidateAttributes,\r\n} from '../redux/operations';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nclass IdrWorkflow extends React.Component {\r\n static propTypes = {\r\n clearData: t.func,\r\n current: t.number,\r\n data: t.object,\r\n errors: t.object,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n permissions: t.object,\r\n request: t.object.isRequired,\r\n signApplication: t.func.isRequired,\r\n signRequest: t.object,\r\n updateForm: t.func.isRequired,\r\n validateTab: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { current: props.current || 0 };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.clearData();\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n // componentWillUnmount() {\r\n // this.props.clearData();\r\n // }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { data, updateForm } = this.props;\r\n const newData = { ...data, ...formState };\r\n updateForm(\r\n this.clearDependentAttributes(attribute, newData),\r\n this.getDependentAttributes(attribute)\r\n );\r\n }, 250);\r\n\r\n clearDependentAttributes = (attribute, data) => {\r\n let newData = data;\r\n switch (attribute) {\r\n case 'question7Response': {\r\n if (data[attribute] !== 'B') {\r\n tabs.household.slice(3).forEach((k) => {\r\n newData[k] = null;\r\n });\r\n break;\r\n }\r\n if (data[attribute] !== 'A' && data[attribute] !== 'B' && data[attribute] !== 'C') {\r\n newData.question11Response = null;\r\n newData.question12Response = null;\r\n }\r\n break;\r\n }\r\n case 'question10Response': {\r\n if (data[attribute] !== 'A') {\r\n newData.question13Response = null;\r\n newData.question14Response = null;\r\n break;\r\n }\r\n if (data[attribute] !== 'B') {\r\n newData.question11Response = null;\r\n newData.question12Response = null;\r\n }\r\n break;\r\n }\r\n case 'question11Response': {\r\n if (data.question11Response !== 'A' && data.question11Response !== 'C') {\r\n newData.question12Response = null;\r\n }\r\n break;\r\n }\r\n case 'question13Response': {\r\n if (data[attribute] !== 'B') {\r\n newData.question14Response = null;\r\n }\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n return newData;\r\n };\r\n\r\n getDependentAttributes = (attribute) => {\r\n return [attribute];\r\n };\r\n\r\n getPlanAttributes = () => {\r\n return this.props.permissions.clientStatus === 'CRET'\r\n ? ['inDeferOrForbearance']\r\n : ['repaymentPlan', 'repaymentBegan', 'inDeferOrForbearance'];\r\n };\r\n\r\n getSimpleAttributes = () => {\r\n const { data } = this.props;\r\n let retArray = ['question5Response', 'question6Response'];\r\n if (data.isMarried) {\r\n retArray.push('question8Response', 'question9BResponse', 'question9CResponse');\r\n }\r\n return retArray;\r\n };\r\n\r\n getHouseHoldAttributes = () => {\r\n const { data } = this.props;\r\n let retArray = ['agi', 'question5Response', 'question6Response', 'question7Response'];\r\n if (data.question7Response === 'B') {\r\n retArray.push(\r\n 'question8Response',\r\n 'question9BResponse',\r\n 'question9CResponse',\r\n 'question10Response',\r\n ''\r\n );\r\n }\r\n\r\n if (data.question10Response === 'A') {\r\n retArray.push('question13Response');\r\n if (data.question13Response === 'B') {\r\n retArray.push('question14Response');\r\n }\r\n if (\r\n data.question13Response === 'A' ||\r\n data.question13Response === 'C' ||\r\n data.question14Response === 'A'\r\n ) {\r\n retArray.push('question15Response');\r\n\r\n if (data.question15Response === 'A') {\r\n retArray.push('question16Response');\r\n }\r\n }\r\n }\r\n if (data.question10Response === 'B') {\r\n retArray.push('question11Response');\r\n if (data.question11Response === 'A' || data.question11Response === 'C') {\r\n retArray.push('question12Response');\r\n }\r\n }\r\n\r\n if (data.question7Response === 'A' || data.question7Response === 'C') {\r\n retArray.push('question11Response');\r\n if (data.question11Response === 'A' || data.question11Response === 'C') {\r\n retArray.push('question12Response');\r\n }\r\n }\r\n return retArray;\r\n };\r\n\r\n sectionValidationStatus(section) {\r\n const { data, errors } = this.props;\r\n let exists = false;\r\n\r\n let selectableAttributes = [];\r\n if (data.selfService && section === 'plan') {\r\n selectableAttributes = this.getPlanAttributes();\r\n } else if (data.selfService && section === 'household') {\r\n selectableAttributes = this.getHouseHoldAttributes();\r\n } else if (!data.selfService && section === 'simple') {\r\n selectableAttributes = this.getSimpleAttributes();\r\n }\r\n\r\n for (let i = 0; i < tabs[section].length; i++) {\r\n let attribute = tabs[section][i];\r\n if (selectableAttributes.length > 0 && selectableAttributes.includes(attribute)) {\r\n if (safeAccess(errors, `[${attribute}]`)) {\r\n return 'danger';\r\n } else if (safeAccess(errors, `[${attribute}]`) === null) {\r\n return null;\r\n } else if (safeAccess(errors, `[${attribute}]`) === false) {\r\n exists = true;\r\n }\r\n } else if (selectableAttributes.length === 0) {\r\n exists = true;\r\n }\r\n }\r\n return exists ? 'success' : null;\r\n }\r\n\r\n reviewValidationStatus = () => {\r\n const { data } = this.props;\r\n\r\n const idr = this.sectionValidationStatus('idr');\r\n const plan = data.selfService ? this.sectionValidationStatus('plan') : 'success';\r\n const household = data.selfService ? this.sectionValidationStatus('household') : 'success';\r\n const simple = !data.selfService ? this.sectionValidationStatus('simple') : 'success';\r\n //alert(plan + ' : ' + idr + ' : ' + plan + ' : ' + simple)\r\n if (\r\n (idr === 'success' || idr === null) &&\r\n plan === 'success' &&\r\n household === 'success' &&\r\n simple === 'success'\r\n ) {\r\n return 'success';\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n getTabs = (data, errors) => {\r\n let tabs = [\r\n <TabIdr\r\n key=\"4\"\r\n id=\"idr\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('idr')}\r\n name=\"Application\"\r\n handleChange={this.handleChange}\r\n />,\r\n ];\r\n if (data.selfService) {\r\n tabs.unshift(\r\n <TabPlan\r\n key=\"2\"\r\n id=\"plan\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('plan')}\r\n name=\"Plan\"\r\n handleChange={this.handleChange}\r\n />,\r\n <TabHousehold\r\n key=\"3\"\r\n id=\"household\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('household')}\r\n name=\"Household\"\r\n handleChange={this.handleChange}\r\n />\r\n );\r\n } else {\r\n tabs.unshift(\r\n <TabSimple\r\n key=\"1\"\r\n id=\"simple\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('simple')}\r\n name=\"Household\"\r\n handleChange={this.handleChange}\r\n />\r\n );\r\n }\r\n return tabs;\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (!this.props.signRequest.isLoading) {\r\n this.props.signApplication();\r\n }\r\n };\r\n\r\n render() {\r\n const { data, errors, request, signRequest } = this.props;\r\n let idrStatus = this.sectionValidationStatus('idr');\r\n if (idrStatus !== 'danger' && signRequest.hasFinished) {\r\n idrStatus = signRequest.hasFailed ? 'danger' : 'success';\r\n }\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <>\r\n {safeAccess(errors, 'generalErrors')\r\n ? errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))\r\n : null}\r\n {/* TODO: Fix AsyncLoader so that it doesn't need this check for data */}\r\n {data && (\r\n <Workflow\r\n tabs={this.getTabs(data, errors)}\r\n finalButton={\r\n <Button brand=\"primary\" onClick={(e) => this.submit(e)}>\r\n {signRequest.isLoading ? (\r\n <Loader variant=\"push\" size={1.5} />\r\n ) : (\r\n 'Sign application'\r\n )}\r\n </Button>\r\n }\r\n //handleTabChange={this.handleTabChange}\r\n next\r\n prev\r\n finalPageLocksFlow\r\n finalPageCheck={this.reviewValidationStatus}\r\n penUltimateButton={'Next'}\r\n />\r\n )}\r\n </>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst tabs = {\r\n simple: [\r\n 'question5Response',\r\n 'question6Response',\r\n 'question8Response',\r\n 'question9BResponse',\r\n 'question9CResponse',\r\n ],\r\n plan: ['repaymentPlan', 'repaymentBegan', 'inDeferOrForbearance'],\r\n household: [\r\n 'question5Response',\r\n 'question6Response',\r\n 'question7Response',\r\n 'question8Response',\r\n 'question9BResponse',\r\n 'question9CResponse',\r\n 'question10Response',\r\n 'question11Response',\r\n 'question12Response',\r\n 'question13Response',\r\n 'question14Response',\r\n 'question15Response',\r\n 'question16Response',\r\n 'question17Response',\r\n 'agi',\r\n ],\r\n idr: [],\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.idr;\r\n return {\r\n id: getUserId(state),\r\n data: form,\r\n errors: errors,\r\n request: mergeRequestStatuses([requests.loadResource, requests.copyResourceToForm]),\r\n signRequest: state.fulfillment.requests.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(idrLoadResource(id));\r\n await dispatch(idrCopyResourceToForm(id));\r\n },\r\n clearData: () => {\r\n dispatch(idrClearForm());\r\n dispatch(idrHandleCacheChange({}));\r\n },\r\n updateForm: (data, attributes) => {\r\n dispatch(idrHandleFormChange(data, attributes));\r\n },\r\n signApplication: () => dispatch(fulfillmentUpdateResource(IDR_DOC_ID)),\r\n validateTab: async (tab) => {\r\n await dispatch(idrValidateAttributes(tabs[tab]));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(IdrWorkflow));\r\n","import React from 'react';\r\nimport { Card, CardBody, CardFooter, CardText, Header1, Link } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer } from '../../../routing';\r\n\r\nimport IdrWorkflow from '../components/idr-workflow';\r\n\r\nconst Idr = () => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <Header1>Income Driven Repayment Application</Header1>\r\n <CardText>\r\n <IdrWorkflow />\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Link to=\"/dashboard\">Return home</Link>\r\n </CardFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nexport default Idr;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { debounce, safeAccess } from '../../../utils';\r\nimport { TodoComplete } from '../../../todos';\r\n\r\nimport {\r\n idrCopyCompleteToForm,\r\n idrHandleFormChange,\r\n idrLoadComplete,\r\n idrSaveComplete,\r\n} from '../redux/operations';\r\n\r\nconst TodoText = () => (\r\n <>\r\n\r\n </> /*\r\n <Form id=\"idrComplete\" handleChange={handleChange} defaults={form}>\r\n <Header5>Check on your application</Header5>\r\n <strong>Step 1 – Access FedLoan Servicing account</strong>\r\n <ul>\r\n <li>Login to your account at FedLoan Servicing</li>\r\n </ul>\r\n <strong>Step 2 – Check the status of the income-driven repayment (Every seven days)</strong>\r\n <ul>\r\n <li>Check your Account Summary for the “In Repayment†status.</li>\r\n <li>\r\n <strong>Please note:</strong> It typically takes <strong>three to six weeks</strong> for a\r\n repayment application to process.\r\n </li>\r\n <li>Check your Account Inbox for Repayment Details.</li>\r\n <li>What are you looking for?</li>\r\n <ul>\r\n <li>\r\n {repayTypeName !== undefined && repayTypeName !== null && repayTypeName !== '' ? (\r\n <>\r\n Your repayment plan type should be <strong>{repayTypeName}</strong>.\r\n </>\r\n ) : (\r\n <strong>\r\n <BrandColor brand=\"danger\">\r\n Your repayment plan type isn't set. Please visit the Contact Us button on the\r\n left of your portal to reach out to us regarding.\r\n {/*Contact us at{' '}\r\n <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2./}\r\n </BrandColor>\r\n </strong>\r\n )}\r\n </li>\r\n <li>\r\n {form.projectedIdr !== undefined &&\r\n form.projectedIdr !== null &&\r\n !isNaN(form.projectedIdr) ? (\r\n <>\r\n Your repayment amount should be <strong>{formatAsMoney(form.projectedIdr)}</strong>.\r\n </>\r\n ) : (\r\n <strong>\r\n <BrandColor brand=\"danger\">\r\n Your repayment amount isn't set. Please visit the Contact Us button on the left\r\n of your portal to reach out to us regarding.\r\n {/*\r\n Contact us at{' '}\r\n <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2./}\r\n </BrandColor>\r\n </strong>\r\n )}\r\n </li>\r\n </ul>\r\n </ul>\r\n <strong>Step 3 – Provide repayment details</strong>\r\n <ul>\r\n <li>\r\n <InputWrapper error={!!errors.doeRepayDate}>\r\n <InputLabel htmlFor=\"doeRepayDate\">My repayment plan begins on</InputLabel>\r\n <InputError>{safeAccess(errors, 'doeRepayDate.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputMask\r\n defaultValue={convertIsoToSlash(form.doeRepayDate)}\r\n mask=\"##/##/####\"\r\n name=\"doeRepayDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </li>\r\n <li>\r\n {/* TODO: This needs to be an input field for actual-idr/}\r\n <InputWrapper error={!!errors.actualIdr}>\r\n <InputLabel htmlFor=\"actualIdr\">My repayment amount is</InputLabel>\r\n <InputError>{safeAccess(errors, 'actualIdr.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputAddon>$</InputAddon>\r\n <InputText name=\"actualIdr\" type=\"number\" step=\"0.01\" defaultValue={form.actualIdr} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </li>\r\n </ul>\r\n <ul>\r\n <li>\r\n If your repayment details reflect a higher repayment amount than the one shown on your\r\n Fiducius account, please visit the Contact Us button on the left of your portal to reach out\r\n to us regarding.\r\n {/*contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2./}\r\n </li>\r\n </ul>\r\n <strong>Step 4 – Confirm completion</strong>\r\n <ul>\r\n <li>Confirm your correct income-driven repayment has been set up.</li>\r\n <ul>\r\n <li>\r\n The plan type on your repayment details should match the repayment plan type on your\r\n Fiducius account.\r\n </li>\r\n <li>\r\n Save a copy of your correct repayment details. Store them in your Fiducius account by\r\n uploading a copy on the My Documents tab under Other.\r\n </li>\r\n </ul>\r\n </ul>\r\n <strong>Step 5 – Make payments</strong>\r\n <ul>\r\n <li>\r\n Payments <strong>must</strong> be paid in the exact amount due.\r\n </li>\r\n <li>\r\n Payments <strong>must</strong> be made on time or up to 15 days after the due date.\r\n </li>\r\n <li>\r\n You may set-up automatic payments through your bank (recommended) or your loan servicer.\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have verified the repayment is complete\r\n </strong>\r\n <br />\r\n <br />\r\n Questions? Please visit the Contact Us button on the left of your portal to reach out to us\r\n {/*Contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2/}\r\n </Form>*/\r\n);\r\nTodoText.propTypes = {\r\n form: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n repayTypeName: t.string,\r\n};\r\n\r\nclass IdrComplete extends React.Component {\r\n static propTypes = {\r\n updateForm: t.func.isRequired,\r\n form: t.object,\r\n };\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n this.props.updateForm({ ...this.props.form, ...formState }, [attribute]);\r\n }, 250);\r\n\r\n render() {\r\n return (\r\n <TodoComplete\r\n {...this.props}\r\n text={<TodoText handleChange={this.handleChange} form={this.props.form} {...this.props} />}\r\n title=\"Check on your Repayment Application\"\r\n />\r\n );\r\n }\r\n}\r\n\r\nconst mapRepaymentType = (type) => {\r\n switch (type) {\r\n case 'PAYE':\r\n return 'Pay as you earn';\r\n case 'REPAY':\r\n return 'Revised pay as you earn';\r\n case 'IBR':\r\n return 'Income based repayment';\r\n case 'ICR':\r\n return 'Income contingent repayment';\r\n case 'SAVE':\r\n return 'Saving on a Valuable Education';\r\n default:\r\n return 'Other';\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n const userId = getUserId(state);\r\n let data = safeAccess(state, `idr.cache[${userId}]`, {});\r\n const repayTypeName = mapRepaymentType(data.projectedRepaymentType);\r\n\r\n let form = safeAccess(state, 'idr.form', {});\r\n form.actualRepaymentType = data.projectedRepaymentType;\r\n form.projectedRepaymentType = data.projectedRepaymentType;\r\n\r\n return {\r\n form: form,\r\n errors: safeAccess(state, 'idr.errors', {}),\r\n loadRequest: state.idr.requests.loadResource,\r\n repayTypeName: repayTypeName,\r\n request: state.idr.requests.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n updateForm: (state, attributes) => dispatch(idrHandleFormChange(state, attributes)),\r\n onLoad: async () => {\r\n await dispatch(idrLoadComplete(ownProps.id));\r\n dispatch(idrCopyCompleteToForm());\r\n },\r\n action: async () => {\r\n await dispatch(idrSaveComplete(ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(IdrComplete);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n BrandColor,\r\n Form,\r\n Header5,\r\n InputAddon,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { convertIsoToSlash, debounce, formatAsMoney, safeAccess } from '../../../utils';\r\nimport { TodoComplete } from '../../../todos';\r\n\r\nimport {\r\n idrCopyCompleteToForm,\r\n idrHandleFormChange,\r\n idrLoadComplete,\r\n idrSaveComplete,\r\n} from '../redux/operations';\r\n\r\nconst TodoText = ({ errors = {}, form = {}, handleChange, repayTypeName }) => (\r\n <Form id=\"idrComplete\" handleChange={handleChange} defaults={form}>\r\n <Header5>Check on your application</Header5>\r\n <strong>Step 1 – Access MOHELA account</strong>\r\n <ul>\r\n <li>Login to your account at MOHELA.</li>\r\n </ul>\r\n <strong>Step 2 – Check the status of the income-driven repayment (Every seven days)</strong>\r\n <ul>\r\n <li>Check your Account Summary for the “In Repayment†status.</li>\r\n <li>\r\n <strong>Please note:</strong> MOHELA will not process the annual recertification request\r\n until the last bill for the current year is generated.\r\n </li>\r\n <li>Check your Account Inbox for Repayment Details.</li>\r\n <li>What are you looking for?</li>\r\n <ul>\r\n <li>\r\n {repayTypeName !== undefined && repayTypeName !== null && repayTypeName !== '' ? (\r\n <>\r\n Your repayment plan type should be <strong>{repayTypeName}</strong>.\r\n </>\r\n ) : (\r\n <strong>\r\n <BrandColor brand=\"danger\">\r\n Your repayment plan type isn't set. Please visit the Contact Us button on the\r\n left of your portal to reach out to us regarding this.\r\n {/*\r\n Contact us at{' '}\r\n <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2. */}\r\n </BrandColor>\r\n </strong>\r\n )}\r\n </li>\r\n <li>\r\n {form.projectedIdr !== undefined &&\r\n form.projectedIdr !== null &&\r\n !isNaN(form.projectedIdr) ? (\r\n <>\r\n Your repayment amount should be <strong>{formatAsMoney(form.projectedIdr)}</strong>.\r\n </>\r\n ) : (\r\n <strong>\r\n <BrandColor brand=\"danger\">\r\n Your repayment amount isn't set. Please visit the Contact Us button on the left\r\n of your portal to reach out to us regarding this.\r\n {/*Contact us at{' '}\r\n <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2.*/}\r\n </BrandColor>\r\n </strong>\r\n )}\r\n </li>\r\n </ul>\r\n </ul>\r\n <strong>Step 3 – Provide repayment details</strong>\r\n <ul>\r\n <li>\r\n <InputWrapper error={!!errors.doeRepayDate}>\r\n <InputLabel htmlFor=\"doeRepayDate\">My repayment plan begins on</InputLabel>\r\n <InputError>{safeAccess(errors, 'doeRepayDate.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputMask\r\n defaultValue={convertIsoToSlash(form.doeRepayDate)}\r\n mask=\"##/##/####\"\r\n name=\"doeRepayDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </li>\r\n <li>\r\n <InputWrapper error={!!errors.doeRepayEndDate}>\r\n <InputLabel htmlFor=\"doeRepayEndDate\">My repayment plan ends on</InputLabel>\r\n <InputError>{safeAccess(errors, 'doeRepayEndDate.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputMask\r\n defaultValue={convertIsoToSlash(form.doeRepayEndDate)}\r\n mask=\"##/##/####\"\r\n name=\"doeRepayEndDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </li>\r\n <li>\r\n {/* TODO: This needs to be an input field for actual-idr*/}\r\n <InputWrapper error={!!errors.actualIdr}>\r\n <InputLabel htmlFor=\"actualIdr\">My repayment amount is</InputLabel>\r\n <InputError>{safeAccess(errors, 'actualIdr.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputAddon>$</InputAddon>\r\n <InputText name=\"actualIdr\" type=\"number\" step=\"0.01\" defaultValue={form.actualIdr} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </li>\r\n </ul>\r\n <ul>\r\n <li>\r\n If your repayment details reflect a higher repayment amount than the one shown on your\r\n Fiducius account, please visit the Contact Us button on the left of your portal to reach out\r\n to us regarding this.\r\n {/*contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2.*/}\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> If your repayment from the previous year has not ended,\r\n continue to make the payment until your new repayment begins on the date input above.\r\n </li>\r\n </ul>\r\n <strong>Step 4 – Confirm completion</strong>\r\n <ul>\r\n <li>Confirm your correct income-driven repayment has been set up.</li>\r\n <ul>\r\n <li>\r\n The plan type on your repayment details should match the repayment plan type on your\r\n Fiducius account.\r\n </li>\r\n <li>\r\n Save a copy of your correct repayment details. Store them in your Fiducius account by\r\n uploading a copy on the My Documents tab under Other.\r\n </li>\r\n </ul>\r\n </ul>\r\n <strong>Step 5 – Make payments</strong>\r\n <ul>\r\n <li>\r\n Payments <strong>must</strong> be paid in the exact amount due.\r\n </li>\r\n <li>\r\n Payments <strong>must</strong> be made on time.\r\n </li>\r\n <li>\r\n You may set-up automatic payments through your bank (recommended) or your loan servicer.\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have verified the repayment is complete\r\n </strong>\r\n <br />\r\n <br />\r\n Questions? Please visit the Contact Us button on the left of your portal to reach out to us.\r\n {/*Contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2*/}\r\n </Form>\r\n);\r\nTodoText.propTypes = {\r\n form: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n repayTypeName: t.string,\r\n};\r\n\r\nclass RepaymentCheck extends React.Component {\r\n static propTypes = {\r\n updateForm: t.func.isRequired,\r\n form: t.object,\r\n };\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n this.props.updateForm({ ...this.props.form, ...formState }, [attribute]);\r\n }, 250);\r\n\r\n render() {\r\n return (\r\n <TodoComplete\r\n {...this.props}\r\n text={<TodoText handleChange={this.handleChange} form={this.props.form} {...this.props} />}\r\n title=\"Check on your repayment application\"\r\n />\r\n );\r\n }\r\n}\r\n\r\nconst mapRepaymentType = (type) => {\r\n switch (type) {\r\n case 'PAYE':\r\n return 'Pay as you earn';\r\n case 'REPAY':\r\n return 'Revised pay as you earn';\r\n case 'IBR':\r\n return 'Income based repayment';\r\n case 'ICR':\r\n return 'Income contingent repayment';\r\n case 'SAVE':\r\n return 'Saving on a Valuable Education';\r\n default:\r\n return 'Other';\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n const userId = getUserId(state);\r\n let data = safeAccess(state, `idr.cache[${userId}]`, {});\r\n const repayTypeName = mapRepaymentType(data.projectedRepaymentType);\r\n\r\n let form = safeAccess(state, 'idr.form', {});\r\n form.actualRepaymentType = data.projectedRepaymentType;\r\n form.projectedRepaymentType = data.projectedRepaymentType;\r\n\r\n return {\r\n form: form,\r\n errors: safeAccess(state, 'idr.errors', {}),\r\n loadRequest: state.idr.requests.loadResource,\r\n repayTypeName: repayTypeName,\r\n request: state.idr.requests.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n updateForm: (state, attributes) => dispatch(idrHandleFormChange(state, attributes)),\r\n onLoad: async () => {\r\n await dispatch(idrLoadComplete(ownProps.id));\r\n dispatch(idrCopyCompleteToForm());\r\n },\r\n action: async () => {\r\n await dispatch(idrSaveComplete(ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RepaymentCheck);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('idr', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { InputHelp, InputWrapper, Table } from 'fiducius-ui';\r\n\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nclass LoanDataTableTwo extends React.Component {\r\n static propTypes = {\r\n id: t.string,\r\n isLoading: t.bool.isRequired,\r\n data: t.object,\r\n clearData: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { arraySize: null };\r\n }\r\n\r\n async componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n calculateTableValues = (data) => {\r\n let retArray = [];\r\n let numRows = data.newLoanAmtBorrowed > 0 ? 2 : 1;\r\n\r\n let tuitionPercent =\r\n data.recommendedBorrowingTuition /\r\n (data.recommendedBorrowingTuition + data.recommendedBorrowingLivingExp);\r\n let livingExpPercent =\r\n data.recommendedBorrowingLivingExp /\r\n (data.recommendedBorrowingTuition + data.recommendedBorrowingLivingExp);\r\n\r\n for (let i = 0; i < numRows; i++) {\r\n let tmpArray = [];\r\n if (i === 0) {\r\n tmpArray.push(\r\n 'Presented Plan',\r\n formatAsMoney(data.initialLoanBalance),\r\n formatAsMoney(data.recommendedBorrowingTuition) + '*',\r\n formatAsMoney(data.recommendedBorrowingLivingExp) + '*'\r\n );\r\n } else {\r\n tmpArray.push(\r\n 'Previous Snapshot Totals',\r\n formatAsMoney(data.newLoanAmtBorrowed + data.initialLoanBalance),\r\n formatAsMoney(data.newLoanAmtBorrowed * tuitionPercent),\r\n formatAsMoney(data.newLoanAmtBorrowed * livingExpPercent)\r\n );\r\n }\r\n retArray.push(tmpArray);\r\n }\r\n return retArray;\r\n };\r\n\r\n render() {\r\n const { data } = this.props;\r\n\r\n let body = [];\r\n\r\n if (data.initialLoanBalance !== undefined) {\r\n body = this.calculateTableValues(data);\r\n } else {\r\n body = [];\r\n }\r\n let tableHeaders = [\r\n '',\r\n 'Loan Balance',\r\n 'Borrowing for Tuition',\r\n 'Borrowing for Living Expenses',\r\n ];\r\n\r\n return (\r\n <div>\r\n {body !== undefined && body.length > 0 && (\r\n <InputWrapper>\r\n <Table header={tableHeaders} body={body} />\r\n <InputHelp>* - Recommended Amounts</InputHelp>\r\n </InputWrapper>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { questionnaireBts } = state;\r\n const { requests } = questionnaireBts;\r\n const id = getUserId(state);\r\n\r\n return {\r\n id: id,\r\n isLoading: requests.loadResource,\r\n parentLoaded: requests.loadResource,\r\n saveRequest: questionnaireBts.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LoanDataTableTwo));\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('questionnaireBts');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('questionnaireBts', types);\r\n","import { FormValidator } from '../../../utils';\r\n\r\nexport class QuestionnaireBtsValidator extends FormValidator {\r\n continuedEducation(validator, state) {\r\n validator.isRequired();\r\n }\r\n\r\n borrowedAddFedLoans(validator, state) {\r\n validator.isRequired();\r\n }\r\n\r\n graduateDate(validator, state) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n\r\n graduationIncome(validator, state) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n }\r\n\r\n loanAmtBorrow(validator, state) {\r\n if (state.borrowedAddFedLoans === 'true') {\r\n validator.isRequired();\r\n validator.validNumber();\r\n }\r\n }\r\n}\r\nexport default QuestionnaireBtsValidator;\r\n","import { resourceOperationsGenerator } from '../../../utils';\r\n\r\nimport actions from './actions';\r\nimport { QuestionnaireBtsValidator } from './validators';\r\n\r\nconst questionnaireBtsValidator = new QuestionnaireBtsValidator();\r\n\r\nconst endpointHandler = {\r\n endpoint: '/questionnaire-bts',\r\n customResponseHandler: null,\r\n resourceType: 'questionnaire-bts',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'questionnaireBts',\r\n actions,\r\n null,\r\n questionnaireBtsValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n questionnaireBtsClearForm,\r\n questionnaireBtsCopyResourceToForm,\r\n questionnaireBtsHandleFormChange,\r\n questionnaireBtsCreateResource,\r\n questionnaireBtsValidateAttributes,\r\n questionnaireBtsLoadCollection,\r\n questionnaireBtsLoadResource,\r\n questionnaireBtsUpdateResource,\r\n} = operations;\r\n\r\nexport {\r\n questionnaireBtsClearForm,\r\n questionnaireBtsCopyResourceToForm,\r\n questionnaireBtsHandleFormChange,\r\n questionnaireBtsCreateResource,\r\n questionnaireBtsValidateAttributes,\r\n questionnaireBtsLoadCollection,\r\n questionnaireBtsLoadResource,\r\n questionnaireBtsUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport {\r\n Alert,\r\n CardBody,\r\n Form,\r\n Header2,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputNumeric,\r\n InputRadio,\r\n InputWrapper,\r\n AsyncLoader,\r\n InputAddon,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../../routing';\r\n\r\nimport { convertIsoToSlash, safeAccess, flatten } from '../../../utils';\r\n\r\nimport LoanDataTable from './loan-data-table';\r\n\r\nimport {\r\n questionnaireBtsHandleFormChange,\r\n questionnaireBtsLoadResource,\r\n questionnaireBtsCopyResourceToForm,\r\n} from '../redux/operations';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nclass TabEducation extends React.Component {\r\n static propTypes = {\r\n institutionData: t.object,\r\n data: t.object,\r\n errors: t.object,\r\n educationErrors: t.object,\r\n request: t.object,\r\n getRequest: t.object,\r\n permissions: t.object,\r\n handleChange: t.func,\r\n loadEducation: t.func,\r\n clearInstitutionForm: t.func.isRequired,\r\n handleInstitutionForm: t.func.isRequired,\r\n createInstitution: t.func.isRequired,\r\n updateFormState: t.func,\r\n id: t.string.isRequired,\r\n form: t.object,\r\n isLoading: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showForm: false, allowedDegreeTypes: {}, school: '' };\r\n }\r\n\r\n componentDidMount() {\r\n const { id } = this.props;\r\n this.props.loadEducation(id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { data } = this.props;\r\n\r\n if (data.school !== undefined && data.school !== null && this.state.school === '') {\r\n this.setState({ ...this.state, school: data.school });\r\n }\r\n }\r\n\r\n render() {\r\n const { data, form, errors = {}, getRequest, handleChange, permissions } = this.props;\r\n\r\n let graduationIncomeText = '';\r\n\r\n if (permissions.isMarried) {\r\n graduationIncomeText =\r\n 'What is your expected income, separate from your spouse after graduation?';\r\n } else {\r\n graduationIncomeText = 'What is your expected income after graduation?';\r\n }\r\n\r\n return (\r\n <>\r\n <Header2>Education Information</Header2>\r\n <AsyncLoader request={getRequest}>\r\n <Form handleChange={handleChange} defaults={form}>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <LoanDataTable data={data} />\r\n {/*<LoanDataTableDepreciated />*/}\r\n <br />\r\n <InputWrapper error={!!errors.continuedEducation}>\r\n <InputLabel htmlFor=\"className\">\r\n Are you still enrolled at a college or university?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'continuedEducation.detail')}</InputError>\r\n <InputRadio\r\n name=\"continuedEducation\"\r\n value={true}\r\n defaultChecked={form.continuedEducation === 'true'}\r\n label=\"Yes\"\r\n />\r\n <InputRadio\r\n name=\"continuedEducation\"\r\n value={false}\r\n defaultChecked={form.continuedEducation === 'false'}\r\n label=\"No\"\r\n />\r\n </InputWrapper>\r\n\r\n <InputWrapper error={!!errors.borrowedAddFedLoans}>\r\n <InputLabel htmlFor=\"className\">\r\n Have you borrowed any additional federal loans?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'borrowedAddFedLoans.detail')}</InputError>\r\n <InputRadio\r\n name=\"borrowedAddFedLoans\"\r\n value={true}\r\n defaultChecked={form.borrowedAddFedLoans === 'true'}\r\n label=\"Yes\"\r\n />\r\n <InputRadio\r\n name=\"borrowedAddFedLoans\"\r\n value={false}\r\n defaultChecked={form.borrowedAddFedLoans === 'false'}\r\n label=\"No\"\r\n />\r\n </InputWrapper>\r\n\r\n <Fade show={form.borrowedAddFedLoans === 'true'}>\r\n <InputWrapper error={!!errors.loanAmtBorrow}>\r\n <InputLabel htmlFor=\"loanAmtBorrow\">Loans Amount Borrowed</InputLabel>\r\n <InputError>{safeAccess(errors, 'loanAmtBorrow.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric name=\"loanAmtBorrow\" defaultValue={form.loanAmtBorrow} />\r\n <InputAddon>.00</InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n\r\n <Fade show={form.borrowedAddFedLoans === 'false'}>\r\n <Alert brand=\"info\">\r\n The table above details the recommendations made for borrowing in your\r\n financial wellness plan.\r\n </Alert>\r\n </Fade>\r\n\r\n <InputWrapper error={!!errors.graduateDate}>\r\n <InputLabel htmlFor=\"graduateDate\">When do you expect to graduate?</InputLabel>\r\n <InputError>{safeAccess(errors, 'graduateDate.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputMask\r\n defaultValue={convertIsoToSlash(form.graduateDate || data.graduateDate)}\r\n mask=\"##/##/####\"\r\n name=\"graduateDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n\r\n <InputWrapper error={!!errors.graduationIncome}>\r\n <InputLabel htmlFor=\"graduationIncome\">{graduationIncomeText}</InputLabel>\r\n <InputError>{safeAccess(errors, 'graduationIncome.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric name=\"graduationIncome\" defaultValue={form.graduationIncome} />\r\n <InputAddon>.00</InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Form>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests, errors } = state.questionnaireBts;\r\n const formData = flatten(safeAccess(state.questionnaireBts, 'cache'));\r\n return {\r\n id: getUserId(state),\r\n data: formData,\r\n educationErrors: errors,\r\n getRequest: requests.loadResource,\r\n isLoading: requests.loadResource.isLoading,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadEducation: async (id) => {\r\n await dispatch(questionnaireBtsLoadResource());\r\n await dispatch(questionnaireBtsCopyResourceToForm(id));\r\n },\r\n updateFormState: (data, attributes) =>\r\n dispatch(questionnaireBtsHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TabEducation));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { CardTitle, ChartBar } from 'fiducius-ui';\r\n\r\nimport { safeAccess, formatAsMoney, flatten } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { questionnaireBtsLoadCollection } from '../../../workflows/questionnaire-bts/redux/operations';\r\n\r\nclass BtsBorrowingCompare extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n loadData: t.func,\r\n requestData: t.bool,\r\n request: t.object.isRequired,\r\n showPreviousYears: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n const { requestData } = this.props;\r\n if (requestData) {\r\n this.props.loadData();\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n getChartValues = (initialBalance, newBalance, recommendedBorrowing) => {\r\n const { showPreviousYears } = this.props;\r\n let retArray = [];\r\n\r\n for (let i = 0; i <= newBalance.length; i++) {\r\n if (i === 0) {\r\n retArray.push(initialBalance[i]);\r\n } else if (!showPreviousYears) {\r\n if (i === newBalance.length) {\r\n retArray.push(newBalance[i - 1]);\r\n }\r\n } else {\r\n retArray.push(newBalance[i - 1]);\r\n }\r\n }\r\n retArray.push(initialBalance[0] / 1 + recommendedBorrowing);\r\n\r\n return retArray;\r\n };\r\n\r\n removeEmptyEntries = (array) => {\r\n if (array.length > 0) {\r\n var retArray = [];\r\n for (let i = 0; i <= array.length; i++) {\r\n if (array[i] !== undefined) {\r\n array[i].forEach((a) => {\r\n if (a !== undefined && a !== '') retArray.push(a);\r\n });\r\n }\r\n }\r\n }\r\n return retArray;\r\n };\r\n\r\n getChartLabels = (numRows) => {\r\n const { showPreviousYears } = this.props;\r\n\r\n let labels = [];\r\n for (let i = 0; i <= numRows; i++) {\r\n if (i === 0) {\r\n labels.push('Initial Balance');\r\n } else if (i === numRows) {\r\n labels.push('Current Snapshot');\r\n } else if (showPreviousYears) {\r\n labels.push('Year ' + i);\r\n }\r\n }\r\n labels.push('Presented Plan');\r\n return labels;\r\n };\r\n\r\n getBackColors = (numRows) => {\r\n const { showPreviousYears } = this.props;\r\n let colors = [];\r\n\r\n for (let i = 0; i <= numRows; i++) {\r\n if (i === 0) {\r\n //initial balance - blue\r\n colors.push('#2aa9be');\r\n } else if (!showPreviousYears) {\r\n if (i === numRows - 1) {\r\n //orange\r\n colors.push('#ff774d');\r\n } else if (numRows === i) {\r\n //green\r\n colors.push('#39ae54');\r\n }\r\n } else {\r\n colors.push('#ff774d');\r\n }\r\n }\r\n //presented strategy total\r\n colors.push('#39ae54');\r\n return colors;\r\n };\r\n\r\n render() {\r\n const { data } = this.props;\r\n\r\n const variables = [\r\n 'id',\r\n 'initialLoanBalance',\r\n 'newLoanAmtBorrowed',\r\n 'estimatedLoanBalance',\r\n 'recommendedBorrowing',\r\n 'recommendedBorrowingTuition',\r\n 'recommendedBorrowingLivingExp',\r\n 'estimatedIdr',\r\n 'graduationIncome',\r\n 'monthlyStandardPayment',\r\n ];\r\n let loanLabels = [];\r\n let backgroundArray = [];\r\n let loanBalance = [];\r\n\r\n let initLoanBalance = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'initialLoanBalance' ? a[h] : undefined))\r\n );\r\n\r\n let newLoanBalance = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'estimatedLoanBalance' ? a[h] : undefined))\r\n );\r\n\r\n initLoanBalance = this.removeEmptyEntries(initLoanBalance);\r\n newLoanBalance = this.removeEmptyEntries(newLoanBalance);\r\n\r\n if (\r\n initLoanBalance !== undefined &&\r\n newLoanBalance !== undefined &&\r\n initLoanBalance.length > 0\r\n ) {\r\n loanBalance = this.getChartValues(\r\n initLoanBalance,\r\n newLoanBalance,\r\n flatten(data).recommendedBorrowing\r\n );\r\n loanLabels = this.getChartLabels(newLoanBalance.length);\r\n backgroundArray = this.getBackColors(newLoanBalance.length);\r\n }\r\n\r\n return (\r\n <>\r\n <CardTitle>\r\n <span>Borrowing Comparison</span>\r\n </CardTitle>\r\n <ChartBar\r\n bars={[\r\n {\r\n data: loanBalance,\r\n title: 'Loan Balance',\r\n allSameColor: true,\r\n backgroundColor: backgroundArray,\r\n },\r\n ]}\r\n config={{\r\n labels: loanLabels,\r\n formatter: (value) => formatAsMoney(value),\r\n min: 0,\r\n showXAxisLabel: true,\r\n xAxisLabel: 'Snapshot Review',\r\n showYAxisLabel: true,\r\n yAxisLabel: 'Loan Balance',\r\n axisLabelFontSize: 16,\r\n }}\r\n />\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.questionnaireBts;\r\n const formData = safeAccess(state.questionnaireBts, 'cache');\r\n\r\n return {\r\n data: formData,\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(questionnaireBtsLoadCollection(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(BtsBorrowingCompare));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { Button, Header4, Loader } from 'fiducius-ui';\r\n\r\nimport { getUserId, authLoadPermissions } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { questionnaireBtsUpdateResource } from '../redux/operations';\r\nimport { todosLoadCollection } from '../../../todos/redux/operations';\r\nimport BtsBorrowingCompare from '../../../benefits/forgiveness/components/bts-borrowing-comparison';\r\n\r\nconst Flex = styled.div`\r\n align-items: center;\r\n display: flex;\r\n justify-content: center;\r\n height: 100%;\r\n width: 100%;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nconst ButtonRight = styled(Button)`\r\n float: right;\r\n margin-top: 10px;\r\n margin-right: 5px;\r\n`;\r\n\r\nclass TabResults extends React.Component {\r\n static propTypes = {\r\n getResults: t.func.isRequired,\r\n id: t.string,\r\n isLoading: t.bool.isRequired,\r\n reloadPermissions: t.func.isRequired,\r\n cache: t.object,\r\n questionnaireSave: t.func,\r\n requests: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { RedirectUri: '', BtsYear: 0 };\r\n }\r\n\r\n async componentDidMount() {\r\n const { id } = this.props;\r\n window.scrollTo(0, 0);\r\n await this.props.questionnaireSave(id);\r\n }\r\n\r\n async componentDidUpdate() {\r\n const { cache } = this.props;\r\n if (cache !== undefined && cache.btsYearId && this.state.BtsYear === 0) {\r\n this.setState({ ...this.state, BtsYear: cache.btsYearId });\r\n }\r\n }\r\n\r\n setRedirect = () => {\r\n this.setState({ RedirectUri: '/benefits/forgiveness/bts-review' });\r\n };\r\n\r\n render() {\r\n const { isLoading } = this.props;\r\n\r\n if (isLoading) {\r\n return (\r\n <Flex>\r\n <Loader variant=\"atom\" size={3} />\r\n </Flex>\r\n );\r\n } else if (this.state.RedirectUri && this.state.RedirectUri.length > 0) {\r\n return <Redirect to={this.state.RedirectUri} />;\r\n } else {\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Flex>\r\n <Header4>\r\n <b>Thank you for completing your Snapshot Questionnaire.</b>\r\n </Header4>\r\n <br />\r\n <p>\r\n The graph below is a comparison of your initial loan balance,\r\n {this.state.BtsYear === 1 && ' current Snapshot'}\r\n {this.state.BtsYear > 1 && ' previous and current Snapshots'}, and financial\r\n wellness plan. For an in depth review of your results, our recommendations and\r\n other helpful information, please select \"Go to Full Results.\"\r\n </p>\r\n <BtsBorrowingCompare requestData={true} showPreviousYears={false} />\r\n </Flex>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <ButtonRight brand=\"primary\" onClick={() => this.setRedirect()}>\r\n Go to Full Results\r\n </ButtonRight>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { questionnaireBts } = state;\r\n const { cache } = questionnaireBts;\r\n const id = getUserId(state);\r\n return {\r\n id: id,\r\n cache: cache[id],\r\n isLoading: questionnaireBts.requests.updateResource.isLoading,\r\n requests: questionnaireBts.requests.updateResource,\r\n saveRequest: questionnaireBts.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n questionnaireSave: async (id) => {\r\n await dispatch(questionnaireBtsUpdateResource(id));\r\n dispatch(authLoadPermissions());\r\n await dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TabResults));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { Workflow } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { debounce, safeAccess } from '../../../utils';\r\n\r\nimport TabEducation from './tab-education';\r\nimport TabResults from './tab-results';\r\n\r\nimport {\r\n questionnaireBtsClearForm,\r\n questionnaireBtsHandleFormChange,\r\n questionnaireBtsValidateAttributes,\r\n} from '../redux/operations';\r\n\r\nclass QuestionnaireBTSWorkflow extends React.Component {\r\n static propTypes = {\r\n current: t.number,\r\n data: t.object,\r\n errors: t.object,\r\n hasAdvisorResults: t.bool.isRequired,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n request: t.object.isRequired,\r\n updateForm: t.func.isRequired,\r\n validateTab: t.func.isRequired,\r\n clearForm: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { current: props.current || 0, farthest: props.current || 0, redirectURI: '' };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { data, updateForm } = this.props;\r\n const newData = { ...data, ...formState };\r\n updateForm(newData, [attribute]);\r\n }, 250);\r\n\r\n handleTabChange = (index) => {\r\n this.props.validateTab(Object.keys(tabs)[this.state.current]);\r\n this.setState({\r\n current: index,\r\n farthest: index > this.state.farthest ? index : this.state.farthest,\r\n });\r\n };\r\n\r\n sectionValidationStatus(section, index) {\r\n const { data = {}, errors } = this.props;\r\n let exists = true;\r\n\r\n if (index <= this.state.farthest) {\r\n for (let i = 0; i < tabs[section].length; i++) {\r\n let attribute = tabs[section][i];\r\n if (safeAccess(errors, `[${attribute}]`)) {\r\n return 'danger';\r\n } else if (\r\n attribute === 'loanAmtBorrow' &&\r\n data.borrowedAddFedLoans === 'true' &&\r\n !!safeAccess(data, `[${attribute}]`) === false\r\n ) {\r\n exists = false;\r\n } else if (\r\n attribute !== 'loanAmtBorrow' &&\r\n !!safeAccess(data, `[${attribute}]`) === false\r\n ) {\r\n exists = false;\r\n }\r\n }\r\n }\r\n return exists ? 'success' : null;\r\n }\r\n\r\n reviewValidationStatus = () => {\r\n const education = this.sectionValidationStatus('education', 0);\r\n if (education === 'success' && (this.state.current === 0 || this.state.current === 1)) {\r\n return 'success';\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n resultValidationStatus = () => {\r\n let reviewStatus = this.sectionValidationStatus('education', 0);\r\n\r\n if (reviewStatus === 'success' && this.state.current === 1) {\r\n return 'success';\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n render() {\r\n const { data = {}, errors } = this.props;\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <>\r\n <>\r\n <Workflow\r\n tabs={[\r\n <TabEducation\r\n key=\"1\"\r\n id=\"education\"\r\n form={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('education', 0)}\r\n name=\"Education\"\r\n handleChange={this.handleChange}\r\n />,\r\n <TabResults key=\"2\" name=\"Results\" brand={this.resultValidationStatus()} />,\r\n ]}\r\n handleTabChange={this.handleTabChange}\r\n next\r\n prev\r\n finalPageLocksFlow\r\n finalPageCheck={this.reviewValidationStatus}\r\n penUltimateButton={'Next'}\r\n />\r\n </>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst tabs = {\r\n education: [\r\n 'continuedEducation',\r\n 'borrowedAddFedLoans',\r\n 'graduateDate',\r\n 'graduationIncome',\r\n 'loanAmtBorrow',\r\n ],\r\n results: [],\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form } = state.questionnaireBts;\r\n return {\r\n id: getUserId(state),\r\n data: form,\r\n errors: errors,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n updateForm: (data, attributes) => {\r\n dispatch(questionnaireBtsHandleFormChange(data, attributes));\r\n },\r\n clearForm: () => {\r\n dispatch(questionnaireBtsClearForm(tabs));\r\n },\r\n validateTab: async (tab) => {\r\n await dispatch(questionnaireBtsValidateAttributes(tabs[tab]));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(QuestionnaireBTSWorkflow);\r\n","import React from 'react';\r\nimport { Card, CardBody, CardText, Header1 } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer } from '../../../routing';\r\n\r\nimport QuestionnaireBTSWorkflow from '../components/questionnaire-workflow';\r\n\r\nconst QuestionnaireBTS = () => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <Header1>StudentFORGIVE Snapshot Questionnaire</Header1>\r\n <CardText>\r\n <QuestionnaireBTSWorkflow />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nexport default QuestionnaireBTS;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('questionnaireBts', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Form,\r\n Header2,\r\n InputAddon,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputNumeric,\r\n InputRadio,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../../routing';\r\nimport { convertIsoToSlash, useScrollToTopOnMount, safeAccess } from '../../../utils';\r\n\r\nconst TabEducation = ({ data = {}, errors = {}, handleChange, id }) => {\r\n useScrollToTopOnMount();\r\n return (\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <Header2>Tell us about your education</Header2>\r\n <InputWrapper error={!!errors.returnToSchool}>\r\n <InputLabel>\r\n Have you recently, or are you planning on returning to school in the next 6-12 months?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'returnToSchool.detail')}</InputError>\r\n <InputRadio\r\n name=\"returnToSchool\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.returnToSchool === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"returnToSchool\"\r\n value=\"N\"\r\n label=\"No\"\r\n defaultChecked={data.returnToSchool === 'N'}\r\n />\r\n </InputWrapper>\r\n <Fade id=\"returnToSchoolGate\" show={data.returnToSchool === 'Y'}>\r\n <InputWrapper error={!!errors.returnToSchoolDate}>\r\n <InputLabel htmlFor=\"returnToSchoolDate\">\r\n When are you planning on going back to school?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'returnToSchoolDate.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.returnToSchoolDate)}\r\n mask=\"##/##/####\"\r\n name=\"returnToSchoolDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.degreeType}>\r\n <InputLabel htmlFor=\"degreeType\">What degree will you be pursuing?</InputLabel>\r\n <InputError>{safeAccess(errors, 'degreeType.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputSelect\r\n name=\"degreeType\"\r\n defaultValue={data.degreeType}\r\n options={{\r\n '': '',\r\n ASSOC: 'Associates',\r\n BA: 'Bachelors',\r\n MA: 'Masters',\r\n PHD: 'Doctorate',\r\n CERT: 'Licensures',\r\n }}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.degreeSpecialty}>\r\n <InputLabel htmlFor=\"degreeSpecialty\">What field are you planning to study?</InputLabel>\r\n <InputError>{safeAccess(errors, 'degreeSpecialty.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name=\"degreeSpecialty\" defaultValue={data.degreeSpecialty} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.creditHours}>\r\n <InputLabel htmlFor=\"creditHours\">How many credit hours are you taking?</InputLabel>\r\n <InputError>{safeAccess(errors, 'creditHours.detail')}</InputError>\r\n <InputGroup affordance=\"small\">\r\n <InputNumeric name=\"creditHours\" defaultValue={data.creditHours} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.borrowMore}>\r\n <InputLabel>\r\n Do you plan on borrowing more federal student loans for your new degree?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'borrowMore.detail')}</InputError>\r\n <InputRadio\r\n name=\"borrowMore\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.borrowMore === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"borrowMore\"\r\n value=\"N\"\r\n label=\"No\"\r\n defaultChecked={data.borrowMore === 'N'}\r\n />\r\n </InputWrapper>\r\n <Fade id=\"borrowMoreGate\" show={data.borrowMore === 'Y'}>\r\n <InputWrapper error={!!errors.borrowMoreAmount}>\r\n <InputLabel htmlFor=\"borrowMoreAmount\">How much do you plan on borrowing?</InputLabel>\r\n <InputError>{safeAccess(errors, 'borrowMoreAmount.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric name=\"borrowMoreAmount\" defaultValue={data.borrowMoreAmount} />\r\n <InputAddon>.00</InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.borrowMoreGraduationDate}>\r\n <InputLabel htmlFor=\"borrowMoreGraduationDate\">\r\n When do you expect to graduate?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'borrowMoreGraduationDate.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.borrowMoreGraduationDate)}\r\n mask=\"##/##/####\"\r\n name=\"borrowMoreGraduationDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.borrowMoreExpectedIncome}>\r\n <InputLabel htmlFor=\"borrowMoreExpectedIncome\">\r\n What is your expected income after graduation?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'borrowMoreExpectedIncome.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"borrowMoreExpectedIncome\"\r\n defaultValue={data.borrowMoreExpectedIncome}\r\n />\r\n <InputAddon>.00</InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n </Fade>\r\n </Form>\r\n );\r\n};\r\n\r\nTabEducation.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n};\r\n\r\nexport default TabEducation;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Alert,\r\n Header3,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n InputMask,\r\n InputRadio,\r\n InputHelp,\r\n} from 'fiducius-ui';\r\n\r\nimport { convertIsoToSlash, safeAccess } from '../../../utils';\r\n\r\nconst EmployerForm = ({ data = {}, errors = {}, id }) => (\r\n <>\r\n <Header3>Employer Information {id + 1}</Header3>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <InputWrapper error={!!errors.employmentEmploymentClassification}>\r\n <InputLabel htmlFor={'employmentEmploymentClassification' + id}>\r\n Is this employer not-for-profit?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentEmploymentClassification.detail')}</InputError>\r\n <InputRadio\r\n name={'employmentEmploymentClassification' + id}\r\n value=\"NPROF\"\r\n label=\"Yes\"\r\n defaultChecked={data.employmentEmploymentClassification === 'NPROF'}\r\n />\r\n <InputRadio\r\n name={'employmentEmploymentClassification' + id}\r\n value=\"PROF\"\r\n label=\"No\"\r\n defaultChecked={data.employmentEmploymentClassification === 'PROF'}\r\n />\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <InputWrapper error={!!errors.employmentEmploymentType}>\r\n <InputLabel htmlFor={'employmentEmploymentType' + id}>\r\n Are you working there full-time?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentEmploymentType.detail')}</InputError>\r\n <InputRadio\r\n name={'employmentEmploymentType' + id}\r\n value=\"FULL\"\r\n label=\"Yes\"\r\n defaultChecked={data.employmentEmploymentType === 'FULL'}\r\n />\r\n <InputRadio\r\n name={'employmentEmploymentType' + id}\r\n value=\"PART\"\r\n label=\"No\"\r\n defaultChecked={data.employmentEmploymentType === 'PART'}\r\n />\r\n <InputWrapper>\r\n <InputHelp>\r\n Working full time for the program's requirements means you are currently considered\r\n full time by your employer, and work an average of 30 or more hours per week.\r\n </InputHelp>\r\n </InputWrapper>\r\n\r\n {data.currentStatus === 'CRET' && data.employmentEmploymentClassification === 'NPROF' && (\r\n <Alert brand=\"info\">\r\n Please keep in mind, loan payments made during an employment lapse, between a previous\r\n and current employer, will not count as qualifying payments towards the Public Service\r\n Loan Forgiveness Program. If you know you are going to experience an employment lapse\r\n in the future, please contact us.\r\n </Alert>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employmentEmployerName}>\r\n <InputLabel htmlFor={'employmentEmployerName' + id}>Employer Name</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentEmployerName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name={'employmentEmployerName' + id}\r\n defaultValue={safeAccess(data, 'employmentEmployerName')}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employmentJobTitle}>\r\n <InputLabel htmlFor={'employmentJobTitle' + id}>Job Title</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentJobTitle.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'employmentJobTitle' + id} defaultValue={data.employmentJobTitle} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employmentStartDate}>\r\n <InputLabel htmlFor={'employmentStartDate' + id}>Start Date</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentStartDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.employmentStartDate)}\r\n mask=\"##/##/####\"\r\n name={'employmentStartDate' + id}\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employmentEndDate}>\r\n <InputLabel htmlFor={'employmentEndDate' + id}>End Date</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentEndDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.employmentEndDate)}\r\n mask=\"##/##/####\"\r\n name={'employmentEndDate' + id}\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n <InputHelp>If you are still employed, please leave this field blank.</InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employmentEin}>\r\n <InputLabel htmlFor={'employmentEin' + id}>EIN</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentEin.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name={'employmentEin' + id}\r\n defaultValue={safeAccess(data, 'employmentEin')}\r\n />\r\n </InputGroup>\r\n <InputWrapper>\r\n <InputHelp>\r\n You can find your employer's EIN number in box B of your most recent W-2.\r\n </InputHelp>\r\n </InputWrapper>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-3\">\r\n <InputWrapper error={!!errors.employmentPayPeriods}>\r\n <InputLabel htmlFor={'employmentPayPeriods' + id}>Pay Periods</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentPayPeriods.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name={'employmentPayPeriods' + id}\r\n defaultValue={safeAccess(data, 'employmentPayPeriods')}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-3\">\r\n <InputWrapper error={!!errors.employmentHours}>\r\n <InputLabel htmlFor={'employmentHours' + id}>Hours</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentHours.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name={'employmentHours' + id}\r\n defaultValue={safeAccess(data, 'employmentHours')}\r\n />\r\n </InputGroup>\r\n <InputWrapper>\r\n {' '}\r\n <InputHelp>Average hours per week</InputHelp>\r\n </InputWrapper>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <InputWrapper error={!!errors.employmentAddress1}>\r\n <InputLabel htmlFor={'employmentAddress1' + id}>Address Line 1</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentAddress1.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name={'employmentAddress1' + id}\r\n defaultValue={safeAccess(data, 'employmentAddress1')}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.employmentAddress2}>\r\n <InputLabel htmlFor={'employmentAddress2' + id} optional>\r\n Address Line 2\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentAddress2.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name={'employmentAddress2' + id}\r\n defaultValue={safeAccess(data, 'employmentAddress2')}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.employmentCity}>\r\n <InputLabel htmlFor={'employmentCity' + id}>City</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentCity.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'employmentCity' + id} defaultValue={safeAccess(data, 'employmentCity')} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employmentState}>\r\n <InputLabel htmlFor={'employmentState' + id}>State</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentState.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name={'employmentState' + id}\r\n defaultValue={safeAccess(data, 'employmentState')}\r\n options={[\r\n '',\r\n 'AL',\r\n 'AK',\r\n 'AR',\r\n 'AZ',\r\n 'CA',\r\n 'CO',\r\n 'CT',\r\n 'DC',\r\n 'DE',\r\n 'FL',\r\n 'GA',\r\n 'HI',\r\n 'IA',\r\n 'ID',\r\n 'IL',\r\n 'IN',\r\n 'KS',\r\n 'KY',\r\n 'LA',\r\n 'MA',\r\n 'MD',\r\n 'ME',\r\n 'MI',\r\n 'MN',\r\n 'MO',\r\n 'MS',\r\n 'MT',\r\n 'NC',\r\n 'NE',\r\n 'NH',\r\n 'NJ',\r\n 'NM',\r\n 'NV',\r\n 'NY',\r\n 'ND',\r\n 'OH',\r\n 'OK',\r\n 'OR',\r\n 'PA',\r\n 'PR',\r\n 'RI',\r\n 'SC',\r\n 'SD',\r\n 'TN',\r\n 'TX',\r\n 'UT',\r\n 'VT',\r\n 'VA',\r\n 'WA',\r\n 'WI',\r\n 'WV',\r\n 'WY',\r\n ]}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employmentZip}>\r\n <InputLabel htmlFor={'employmentZip' + id}>Zip Code</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentZip.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name={'employmentZip' + id}\r\n defaultValue={safeAccess(data, 'employmentZip')}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </>\r\n);\r\n\r\nEmployerForm.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.number.isRequired,\r\n};\r\n\r\nexport default EmployerForm;\r\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Alert,\n Form,\n Header2,\n InputError,\n InputGroup,\n InputLabel,\n InputNumeric,\n InputRadio,\n InputWrapper,\n} from 'fiducius-ui';\n\nimport { Fade } from '../../../routing';\nimport { safeAccess, useScrollToTopOnMount } from '../../../utils';\nimport EmployerForm from './employer-form';\n\nconst getEmployers = (initialSize, size, employers = [], errors) => {\n let forms = [];\n const totalSize = initialSize + (isNaN(size) ? 0 : parseInt(size));\n for (let i = 0; i < totalSize; i++) {\n let data = {};\n let employerErrors = {};\n if (i < totalSize) {\n data = employers[i];\n employerErrors['employmentEmployerName'] = safeAccess(errors, 'employmentEmployerName' + i);\n employerErrors['employmentJobTitle'] = safeAccess(errors, 'employmentJobTitle' + i);\n employerErrors['employmentStartDate'] = safeAccess(errors, 'employmentStartDate' + i);\n employerErrors['employmentEndDate'] = safeAccess(errors, 'employmentEndDate' + i);\n employerErrors['employmentEin'] = safeAccess(errors, 'employmentEin' + i);\n employerErrors['employmentPayPeriods'] = safeAccess(errors, 'employmentPayPeriods' + i);\n employerErrors['employmentHours'] = safeAccess(errors, 'employmentHours' + i);\n employerErrors['employmentAddress1'] = safeAccess(errors, 'employmentAddress1' + i);\n employerErrors['employmentAddress2'] = safeAccess(errors, 'employmentAddress2' + i);\n employerErrors['employmentCity'] = safeAccess(errors, 'employmentCity' + i);\n employerErrors['employmentState'] = safeAccess(errors, 'employmentState' + i);\n employerErrors['employmentZip'] = safeAccess(errors, 'employmentZip' + i);\n employerErrors['employmentEmploymentClassification'] = safeAccess(\n errors,\n 'employmentEmploymentClassification' + i\n );\n employerErrors['employmentEmploymentType'] = safeAccess(\n errors,\n 'employmentEmploymentType' + i\n );\n }\n\n forms.push(\n <EmployerForm key={`employer-form-${i}`} data={data} id={i} errors={employerErrors} />\n );\n }\n return forms;\n};\n\nconst WorkflowAlert = styled.div`\n & > .alert {\n margin-left: 0;\n }\n`;\n\nconst TabEmployment = ({ data = {}, errors = {}, handleChange, id, addEmployer }) => {\n useScrollToTopOnMount();\n return (\n <Form handleChange={handleChange} id={id} defaults={data}>\n <Header2>Tell us about your employment</Header2>\n <InputWrapper error={!!errors.employmentSizeCorrect}>\n <Fade id=\"employmentCorrectGate\" show={data.initialEmployerSize > 0}>\n <InputLabel>\n Our records indicate that you are currently working for the {data.initialEmployerSize}{' '}\n employer(s) listed below. Is that correct?\n </InputLabel>\n <InputError>{safeAccess(errors, 'employmentSizeCorrect.detail')}</InputError>\n <InputRadio name=\"employmentSizeCorrect\" value=\"Y\" label=\"Yes\" />\n <InputRadio name=\"employmentSizeCorrect\" value=\"N\" label=\"No\" />\n </Fade>\n </InputWrapper>\n <InputWrapper>\n <Fade id=\"newEmploymentGate\" show={data.employmentSizeCorrect === 'Y'}>\n <InputLabel>Please confirm the information for your employer(s) is accurate.</InputLabel>\n </Fade>\n </InputWrapper>\n <Fade\n id=\"newEmploymentGate\"\n show={data.employmentSizeCorrect === 'N' || data.initialEmployerSize === 0}\n >\n <InputWrapper error={!!errors.employmentNewEmployerAmount}>\n <InputLabel htmlFor=\"employmentNewEmployerAmount\">\n How many new employers did you work for in the last year?\n </InputLabel>\n <InputError>{safeAccess(errors, 'employmentNewEmployerAmount.detail')}</InputError>\n <InputGroup affordance=\"small\">\n <InputNumeric\n name=\"employmentNewEmployerAmount\"\n min={1}\n defaultValue={data.employmentNewEmployerAmount}\n />\n </InputGroup>\n </InputWrapper>\n {data.initialEmployerSize > 0 && (\n <WorkflowAlert>\n <Alert brand=\"warning\">\n Please enter the end date(s) for the employer(s) you are no longer employed with.\n </Alert>\n </WorkflowAlert>\n )}\n <Fade id=\"newEmploymentGate\" show={data.employmentNewEmployerAmount > 0}>\n <WorkflowAlert>\n <Alert brand=\"warning\">\n Please enter the information for your new employer(s) below.\n </Alert>\n </WorkflowAlert>\n </Fade>\n </Fade>\n {getEmployers(\n data.initialEmployerSize,\n data.employmentNewEmployerAmount,\n data.employers,\n errors\n )}\n </Form>\n );\n};\n\nTabEmployment.propTypes = {\n data: t.object,\n errors: t.object,\n handleChange: t.func,\n addEmployer: t.func,\n id: t.string.isRequired,\n};\n\nexport default TabEmployment;\n","import { FormValidator } from '../../utils';\r\n\r\nexport const relationTypes = {\r\n '': '',\r\n ADV: 'Advisor',\r\n CHILD: 'Child',\r\n FIAF: 'Fiancée',\r\n FIAM: 'Fiancé',\r\n FRND: 'Friend',\r\n GRANC: 'Grandchild',\r\n GRANP: 'Grandparent',\r\n PARNT: 'Parent',\r\n REFER: 'Referral',\r\n SBLNG: 'Sibling',\r\n SPOUS: 'Spouse',\r\n 'UN/AN': 'Uncle/Aunt',\r\n OTHER: 'Other',\r\n};\r\n\r\nconst getRelationTypeRegex = () =>\r\n new RegExp(\r\n `(${Object.keys(relationTypes)\r\n .filter((t) => t !== '')\r\n .join('|')})`,\r\n 'g'\r\n );\r\n\r\nexport class ReferenceValidator extends FormValidator {\r\n id(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n firstName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n\r\n lastName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n address1(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n address2(validator) {\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n city(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n\r\n state(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n\r\n zip(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n\r\n phone(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(17);\r\n validator.isValidPhoneNumber();\r\n }\r\n\r\n email(validator) {\r\n // validator.isRequired();\r\n validator.hasMaxLength(250);\r\n validator.isValidEmail();\r\n }\r\n\r\n relationType(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(5);\r\n\r\n // This can be slow, so if it's failed already just skip it.\r\n if (!validator.hasFailed()) {\r\n const regex = getRelationTypeRegex();\r\n validator.matchesRegex(regex, 'must be a valid relationship type.');\r\n }\r\n }\r\n\r\n otherRelationDescription(validator) {\r\n validator.hasMaxLength(250);\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Alert,\r\n Animation,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n CardTitle,\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../root';\r\nimport { safeAccess, stringIsNullOrEmpty } from '../../utils';\r\nimport { Fade } from '../../routing';\r\n\r\nimport { relationTypes } from '../redux/validators';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nclass ReferenceForm extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.modalRef = React.createRef();\r\n this.firstInput = React.createRef();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n // if (!prevProps.isOpen && this.props.isOpen) {\r\n // // TODO: this focuses correctly, but loses focus right afterwards for some reason\r\n // this.firstInput.current.focus();\r\n // }\r\n\r\n if (!prevProps.errors.generalErrors && this.props.errors.generalErrors) {\r\n this.modalRef.current.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n getForm() {\r\n const { data, errors, onChange, onSubmit } = this.props;\r\n return (\r\n <Form defaults={data} handleChange={onChange} id={data.id || 'create'} onSubmit={onSubmit}>\r\n <CardTitle>Reference Information</CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.firstName}>\r\n <InputLabel htmlFor=\"firstName\" required>\r\n First Name\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'firstName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n inputRef={this.firstInput}\r\n name=\"firstName\"\r\n defaultValue={data.firstName}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.lastName}>\r\n <InputLabel htmlFor=\"lastName\" required>\r\n Last Name\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'lastName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"lastName\" defaultValue={data.lastName} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <InputWrapper error={!!errors.relationType}>\r\n <InputLabel htmlFor=\"relationType\" required>\r\n Relationship Type\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'relationType.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"relationType\"\r\n options={relationTypes}\r\n defaultValue={data.relationType}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <Animation\r\n key=\"relationTypeGate\"\r\n animation=\"fade\"\r\n appear={false}\r\n in={data.relationType === 'OTHER'}\r\n unmountOnExit\r\n >\r\n <InputWrapper error={!!errors.otherRelationDescription}>\r\n <InputLabel htmlFor=\"otherRelationDescription\" required>\r\n Relationship Description\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'otherRelationDescription.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name=\"otherRelationDescription\"\r\n defaultValue={data.otherRelationDescription}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Animation>\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel htmlFor=\"email\" required>\r\n Email\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'email.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"email\" defaultValue={data.email} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-6\">\r\n <InputWrapper error={!!errors.phone}>\r\n <InputLabel htmlFor=\"phone\" required>\r\n Phone Number\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'phone.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={data.phone}\r\n mask=\"(###) ###-####\"\r\n name=\"phone\"\r\n placeholder=\"(___) ___-____\"\r\n type=\"tel\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <InputWrapper error={!!errors.address1}>\r\n <InputLabel htmlFor=\"address1\" required>\r\n Address Line 1\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'address1.detail')}</InputError>\r\n <InputGroup>\r\n <InputText defaultValue={data.address1} name=\"address1\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.address2}>\r\n <InputLabel htmlFor=\"address2\">Address Line 2</InputLabel>\r\n <InputError>{safeAccess(errors, 'address2.detail')}</InputError>\r\n <InputGroup>\r\n <InputText defaultValue={data.address2} name=\"address2\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.city}>\r\n <InputLabel htmlFor=\"city\" required>\r\n City\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'city.detail')}</InputError>\r\n <InputGroup>\r\n <InputText defaultValue={data.city} name=\"city\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.state}>\r\n <InputLabel htmlFor=\"state\" required>\r\n State\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'state.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n defaultValue={data.state}\r\n name=\"state\"\r\n options={[\r\n '',\r\n 'AL',\r\n 'AK',\r\n 'AR',\r\n 'AZ',\r\n 'CA',\r\n 'CO',\r\n 'CT',\r\n 'DC',\r\n 'DE',\r\n 'FL',\r\n 'GA',\r\n 'HI',\r\n 'IA',\r\n 'ID',\r\n 'IL',\r\n 'IN',\r\n 'KS',\r\n 'KY',\r\n 'LA',\r\n 'MA',\r\n 'MD',\r\n 'ME',\r\n 'MI',\r\n 'MN',\r\n 'MO',\r\n 'MS',\r\n 'MT',\r\n 'NC',\r\n 'NE',\r\n 'NH',\r\n 'NJ',\r\n 'NM',\r\n 'NV',\r\n 'NY',\r\n 'ND',\r\n 'OH',\r\n 'OK',\r\n 'OR',\r\n 'PA',\r\n 'PR',\r\n 'RI',\r\n 'SC',\r\n 'SD',\r\n 'TN',\r\n 'TX',\r\n 'UT',\r\n 'VT',\r\n 'VA',\r\n 'WA',\r\n 'WI',\r\n 'WV',\r\n 'WY',\r\n ]}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.zip}>\r\n <InputLabel htmlFor=\"zip\" required>\r\n Zip Code\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'zip.detail')}</InputError>\r\n <InputGroup>\r\n <InputText defaultValue={data.zip} name=\"zip\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n }\r\n\r\n enableSubmit = () => {\r\n return this.checkNoMissingData() && this.checkNoErrors();\r\n };\r\n\r\n checkNoMissingData = () => {\r\n const { data = {} } = this.props;\r\n return (\r\n !stringIsNullOrEmpty(data.firstName) &&\r\n !stringIsNullOrEmpty(data.lastName) &&\r\n !stringIsNullOrEmpty(data.address1) &&\r\n !stringIsNullOrEmpty(data.city) &&\r\n !stringIsNullOrEmpty(data.state) &&\r\n !stringIsNullOrEmpty(data.zip) &&\r\n !stringIsNullOrEmpty(data.relationType) &&\r\n !stringIsNullOrEmpty(data.phone)\r\n );\r\n };\r\n\r\n checkNoErrors = () => {\r\n const { data = {}, errors = {} } = this.props;\r\n return (\r\n data.phone.match(/(\\([0-9]{3}\\) [0-9]{3}-[0-9]{4}|[0-9]{10})/g) &&\r\n !errors.firstName &&\r\n !errors.lastName &&\r\n !errors.address1 &&\r\n !errors.address2 &&\r\n !errors.city &&\r\n !errors.state &&\r\n !errors.zip &&\r\n !errors.phone &&\r\n !errors.email &&\r\n !errors.relationType &&\r\n !errors.otherRelationDescription\r\n );\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (!this.props.isLoading) {\r\n this.props.onSubmit();\r\n }\r\n };\r\n\r\n render() {\r\n const { action, closeForm, errors = {}, isLoading, isOpen } = this.props;\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen}>\r\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\r\n <CardHeader>{action} Reference</CardHeader>\r\n <CardBody>\r\n {errors.generalErrors &&\r\n errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n <TextLeft>{this.getForm()}</TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Fade show={this.enableSubmit()}>\r\n <Button brand=\"success\" onClick={(e) => this.submit(e)}>\r\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : action + ' reference'}\r\n </Button>\r\n </Fade>\r\n <Fade show={!isLoading && !this.checkNoMissingData()}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade show={!isLoading && this.checkNoMissingData() && !this.checkNoErrors()}>\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nexport default ReferenceForm;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { startCase } from '../../utils';\r\nimport { Button, Table, Card, CardBody, CardText, Header2 } from 'fiducius-ui';\r\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nimport { relationTypes } from '../redux/validators';\r\nimport styled from 'styled-components';\r\n\r\nconst Empty = styled.div`\r\n align-items: center;\r\n align-self: center;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst EmptyReferences = () => (\r\n <Empty>\r\n <Header2>No saved references</Header2>\r\n </Empty>\r\n);\r\n\r\nconst ReferenceTable = ({ references = {}, onEditReference }) => {\r\n if (Object.keys(references).length === 0) {\r\n return (\r\n <>\r\n <EmptyReferences />\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <ul>\r\n <li>\r\n You must provide two references with name, address, phone number and relationship.\r\n </li>\r\n <li>Your references cannot have the same address or phone number as you.</li>\r\n <li>Your references cannot have the same address or phone number as each other.</li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </>\r\n );\r\n }\r\n\r\n const headers = ['id', 'firstName', 'lastName', 'relationType', 'edit'];\r\n\r\n let body = Object.values(references).map((r) => headers.map((h) => r[h]));\r\n\r\n headers[1] = 'name';\r\n delete headers[2];\r\n delete headers[0];\r\n\r\n body.forEach((row) => {\r\n const id = row[0];\r\n row[1] = row[1] + ' ' + row[2];\r\n row[3] = relationTypes[row[3]];\r\n row[4] = (\r\n <Button invert brand=\"secondary\" onClick={() => onEditReference(id)}>\r\n <FontAwesomeIcon icon={faEdit} fixedWidth />\r\n </Button>\r\n );\r\n delete row[2];\r\n delete row[0];\r\n });\r\n\r\n return (\r\n <Card>\r\n <Table\r\n body={body}\r\n columns={[{}, { sortable: true }, {}, { sortable: true }, { width: '10%' }]}\r\n header={headers.map((h) => startCase(h))}\r\n />\r\n <CardBody>\r\n <CardText>\r\n <ul>\r\n <li>\r\n You must provide two references with name, address, phone number and relationship.\r\n </li>\r\n <li>Your references cannot have the same address or phone number as you.</li>\r\n <li>Your references cannot have the same address or phone number as each other.</li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n};\r\n\r\nReferenceTable.propTypes = {\r\n references: t.object,\r\n onEditReference: t.func.isRequired,\r\n};\r\n\r\nexport default ReferenceTable;\r\n","// References redux types\r\nimport { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('references');\r\n","import actions from './actions';\r\nimport { ReferenceValidator } from './validators';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst referenceValidator = new ReferenceValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/customer-reference',\r\n resourceType: 'customer-reference',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'references',\r\n actions,\r\n null,\r\n referenceValidator,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n referencesClearForm,\r\n referencesCopyResourceToForm,\r\n referencesCreateResource,\r\n referencesHandleFormChange,\r\n referencesLoadCollection,\r\n referencesUpdateResource,\r\n} = operations;\r\n\r\nexport {\r\n referencesClearForm,\r\n referencesCopyResourceToForm,\r\n referencesCreateResource,\r\n referencesHandleFormChange,\r\n referencesLoadCollection,\r\n referencesUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('references', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faPlusCircle } from '@fortawesome/pro-solid-svg-icons/faPlusCircle';\r\nimport { AsyncLoader, Button, Card, CardBody, CardTitle } from 'fiducius-ui';\r\n\r\nimport { todosLoadCollection } from '../../todos';\r\nimport { debounce, mergeRequestStatuses } from '../../utils';\r\n\r\nimport ReferenceForm from '../components/reference-form';\r\nimport ReferenceTable from '../components/reference-table';\r\nimport {\r\n referencesClearForm,\r\n referencesCopyResourceToForm,\r\n referencesCreateResource,\r\n referencesHandleFormChange,\r\n referencesLoadCollection,\r\n referencesUpdateResource,\r\n} from '../redux/operations';\r\n\r\nclass MyReferences extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n clearForm: t.func.isRequired,\r\n createReference: t.func.isRequired,\r\n errors: t.object,\r\n form: t.object,\r\n handleForm: t.func.isRequired,\r\n hydrateForm: t.func.isRequired,\r\n loadReferences: t.func.isRequired,\r\n references: t.object,\r\n request: t.object,\r\n servicers: t.object,\r\n updateReference: t.func.isRequired,\r\n showTitle: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n formId: null,\r\n showForm: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadReferences();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const wasLoading = prevProps.actionRequest.isLoading;\r\n const currently = this.props.actionRequest;\r\n if (wasLoading && !currently.isLoading) {\r\n if (currently.hasFailed) {\r\n window.scrollTo(0, 0);\r\n } else {\r\n this.setState({ ...this.state, showForm: false }, () => {\r\n this.props.clearForm();\r\n this.props.loadReferences();\r\n });\r\n }\r\n }\r\n }\r\n\r\n closeForm = () => {\r\n this.props.clearForm();\r\n this.setState({ ...this.state, showForm: false });\r\n };\r\n\r\n onAddReference = () => this.setState({ formId: null, showForm: true });\r\n\r\n onEditReference = (id) => {\r\n this.props.hydrateForm(id);\r\n this.setState({ formId: id, showForm: true });\r\n };\r\n\r\n onChange = debounce((reference, id, attributes) => {\r\n this.props.handleForm({ ...this.props.form, ...reference }, [attributes]);\r\n }, 250);\r\n\r\n onCreate = () => this.props.createReference();\r\n\r\n onUpdate = () => this.props.updateReference(this.props.form.id);\r\n\r\n render() {\r\n const { references, actionRequest, errors, form, request, showTitle } = this.props;\r\n const { formId, showForm } = this.state;\r\n\r\n return (\r\n <Card>\r\n {showTitle && (\r\n <CardBody>\r\n <CardTitle>References</CardTitle>\r\n </CardBody>\r\n )}\r\n <AsyncLoader\r\n request={request}\r\n empty={\r\n <>\r\n <ReferenceTable references={references} onEditReference={this.onEditReference} />\r\n <CardBody>\r\n <Button brand=\"primary\" onClick={this.onAddReference}>\r\n <FontAwesomeIcon icon={faPlusCircle} fixedWidth /> Add reference\r\n </Button>\r\n </CardBody>\r\n </>\r\n }\r\n >\r\n <>\r\n {references && (\r\n <ReferenceTable references={references} onEditReference={this.onEditReference} />\r\n )}\r\n {Object.keys(references).length < 2 && (\r\n <CardBody>\r\n <Button brand=\"primary\" onClick={this.onAddReference}>\r\n <FontAwesomeIcon icon={faPlusCircle} fixedWidth /> Add reference\r\n </Button>\r\n </CardBody>\r\n )}\r\n </>\r\n </AsyncLoader>\r\n\r\n {showForm && (\r\n <ReferenceForm\r\n action={formId ? 'Update' : 'Create'}\r\n closeForm={this.closeForm}\r\n data={form}\r\n errors={errors}\r\n isLoading={actionRequest.isLoading}\r\n isOpen={showForm}\r\n onChange={this.onChange}\r\n onSubmit={formId ? this.onUpdate : this.onCreate}\r\n />\r\n )}\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cache, errors, form, requests } = state.references;\r\n const servicerCache = state.servicers.cache;\r\n let servicers = { '': '' };\r\n Object.keys(servicerCache).forEach((k) => {\r\n servicers[servicerCache[k].id] = servicerCache[k].servicerName;\r\n });\r\n\r\n return {\r\n references: cache,\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n servicers: servicers,\r\n errors: errors,\r\n form: form,\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n clearForm: () => dispatch(referencesClearForm()),\r\n createReference: async () => {\r\n await dispatch(referencesCreateResource());\r\n await dispatch(todosLoadCollection());\r\n },\r\n handleForm: (reference, attributes) =>\r\n dispatch(referencesHandleFormChange(reference, attributes)),\r\n hydrateForm: async (id) => await dispatch(referencesCopyResourceToForm(id)),\r\n loadReferences: () => dispatch(referencesLoadCollection()),\r\n updateReference: async (id) => {\r\n await dispatch(referencesUpdateResource(id));\r\n await dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyReferences);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('references', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Header3,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n fade,\r\n} from 'fiducius-ui';\r\n\r\nimport { relationTypes } from '../../../references';\r\nimport { convertIsoToSlash, safeAccess } from '../../../utils';\r\n\r\nconst RowFade = styled.div`\r\n ${fade};\r\n`;\r\n\r\nconst getRelations = () => {\r\n const keys = Object.keys(relationTypes).filter((k) => k !== 'ADV' && k !== 'REFER');\r\n return keys.reduce(\r\n (obj, k) => ({\r\n ...obj,\r\n [k]: relationTypes[k],\r\n }),\r\n {}\r\n );\r\n};\r\n\r\nconst DependentForm = ({ data = {}, errors = {}, id }) => (\r\n <>\r\n <Header3>Household Member {id + 1}</Header3>\r\n <InputWrapper error={!!errors.dependentName}>\r\n <InputLabel htmlFor={'dependentName' + id}>First Name</InputLabel>\r\n <InputError>{safeAccess(errors, 'dependentName.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name={'dependentName' + id} defaultValue={data.dependentName} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.dependentLastName}>\r\n <InputLabel htmlFor={'dependentLastName' + id}>Last Name</InputLabel>\r\n <InputError>{safeAccess(errors, 'dependentLastName.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name={'dependentLastName' + id} defaultValue={data.dependentLastName} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <RowFade className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.dependentRelationship}>\r\n <InputLabel htmlFor={'dependentRelationship' + id}>Relationship Type</InputLabel>\r\n <InputError>{safeAccess(errors, 'dependentRelationship.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name={'dependentRelationship' + id}\r\n options={getRelations()}\r\n defaultValue={data.dependentRelationship}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.dependentBirthdate}>\r\n <InputLabel htmlFor={'dependentBirthdate' + id}>Birth Date</InputLabel>\r\n <InputError>{safeAccess(errors, 'dependentBirthdate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.dependentBirthdate)}\r\n mask=\"##/##/####\"\r\n name={'dependentBirthdate' + id}\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </RowFade>\r\n </>\r\n);\r\n\r\nDependentForm.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.number.isRequired,\r\n};\r\n\r\nexport default DependentForm;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Form,\r\n Header2,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputNumeric,\r\n InputRadio,\r\n InputWrapper,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../../routing';\r\nimport { useScrollToTopOnMount, safeAccess } from '../../../utils';\r\n\r\nimport DependentForm from './dependent-form';\r\n\r\nconst StyledLede = styled(Lede)`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nconst getDependents = (size, dependents = [], errors) => {\r\n let forms = [];\r\n const existingSize = dependents != null ? dependents.length : 0;\r\n for (let i = 0; i < size; i++) {\r\n let data = {};\r\n let dependentErrors = {};\r\n if (i < existingSize) {\r\n data = dependents[i];\r\n dependentErrors['dependentName'] = safeAccess(errors, 'dependentName' + i);\r\n dependentErrors['dependentLastName'] = safeAccess(errors, 'dependentLastName' + i);\r\n dependentErrors['dependentRelationship'] = safeAccess(errors, 'dependentRelationship' + i);\r\n dependentErrors['dependentBirthdate'] = safeAccess(errors, 'dependentBirthdate' + i);\r\n }\r\n forms.push(\r\n <DependentForm key={`dependent-form-${i}`} data={data} id={i} errors={dependentErrors} />\r\n );\r\n }\r\n\r\n return forms;\r\n};\r\n\r\nconst TabHousehold = ({ data = {}, errors = {}, handleChange, id }) => {\r\n useScrollToTopOnMount();\r\n return (\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <Header2>Tell us about your household</Header2>\r\n <StyledLede>\r\n Household size always includes you, spouse, and children (including unborn children who will\r\n be born during the year). Household size also includes other people that live with you now\r\n that are assisting at least 50% of the household expenses or that are receiving 50% or more\r\n in support. Your household size may be different from the number of exemptions you claim on\r\n your federal income tax return.\r\n </StyledLede>\r\n <InputWrapper>\r\n <InputLabel>\r\n Our records indicate that you have a household size of {data.currentHouseholdSize}{' '}\r\n <strong>including yourself</strong>. Is that correct?\r\n </InputLabel>\r\n <InputRadio name=\"clientHouseholdSizeCorrect\" value=\"Y\" label=\"Yes\" defaultChecked={true} />\r\n <InputRadio name=\"clientHouseholdSizeCorrect\" value=\"N\" label=\"No\" />\r\n </InputWrapper>\r\n <Fade id=\"householdGate\" show={data.clientHouseholdSizeCorrect === 'N'}>\r\n <InputWrapper error={!!errors.householdSize}>\r\n <InputLabel htmlFor=\"householdSize\">\r\n How many people are there in your household <strong>not including yourself</strong>?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'householdSize.detail')}</InputError>\r\n <InputGroup affordance=\"small\">\r\n <InputNumeric name=\"householdSize\" min={0} defaultValue={data.householdSize} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n {getDependents(data.householdSize, data.dependents, errors)}\r\n </Form>\r\n );\r\n};\r\n\r\nTabHousehold.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n};\r\n\r\nexport default TabHousehold;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Header3,\r\n InputAddon,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputNumeric,\r\n InputText,\r\n InputWrapper,\r\n fade,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../../routing';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nconst RowFade = styled.div`\r\n ${fade};\r\n`;\r\n\r\nconst IncomeSourceForm = ({ data = {}, errors = {}, id, size }) => (\r\n <>\r\n <Fade id={'additionalIncomeSource' + id} show={id < size}>\r\n <Header3>Additional income source {id + 1}</Header3>\r\n <RowFade className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.incomeSource}>\r\n <InputLabel htmlFor={'incomeSource' + id}>Income Source</InputLabel>\r\n <InputError>{safeAccess(errors, 'incomeSource.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'incomeSource' + id} defaultValue={data.incomeSource} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.annualIncome}>\r\n <InputLabel htmlFor={'annualIncome' + id}>Annual Income Amount</InputLabel>\r\n <InputError>{safeAccess(errors, 'annualIncome.detail')}</InputError>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric name={'annualIncome' + id} defaultValue={data.annualIncome} />\r\n <InputAddon>.00</InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </RowFade>\r\n </Fade>\r\n </>\r\n);\r\n\r\nIncomeSourceForm.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n id: t.number.isRequired,\r\n size: t.number.isRequired,\r\n};\r\n\r\nexport default IncomeSourceForm;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\n\r\nimport {\r\n Form,\r\n Header2,\r\n InputAddon,\r\n InputLabel,\r\n InputRadio,\r\n InputWrapper,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputNumeric,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../../routing';\r\nimport { useScrollToTopOnMount, safeAccess } from '../../../utils';\r\n\r\nimport IncomeSourceForm from './income-source-form';\r\n\r\nconst getAdditionalIncomeSources = (size, incomeSources = [], errors = {}) => {\r\n let forms = [];\r\n const existingSize = incomeSources != null ? incomeSources.length : 0;\r\n for (let i = 0; i < size; i++) {\r\n let data = {};\r\n let incomeSourceErrors = {};\r\n if (i < existingSize) {\r\n data = incomeSources[i];\r\n incomeSourceErrors['incomeSource'] = safeAccess(errors, 'incomeSource' + i);\r\n incomeSourceErrors['annualIncome'] = safeAccess(errors, 'annualIncome' + i);\r\n }\r\n forms.push(\r\n <IncomeSourceForm\r\n key={`income-source-form-${i}`}\r\n data={data}\r\n errors={incomeSourceErrors}\r\n id={i}\r\n size={size}\r\n />\r\n );\r\n }\r\n\r\n return forms;\r\n};\r\n\r\nconst TabIncome = ({ data = {}, errors = {}, handleChange, id }) => {\r\n useScrollToTopOnMount();\r\n return (\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <Header2>Tell us about your income</Header2>\r\n\r\n <InputWrapper>\r\n <div className=\"col-12 col-md-6\">\r\n <InputLabel htmlFor=\"agi\">What is your Adjusted Gross Income?</InputLabel>\r\n <InputError>{safeAccess(errors, 'agi.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric name=\"agi\" step=\"0.01\" defaultValue={data.agi} />\r\n <InputAddon>.00</InputAddon>\r\n </InputGroup>\r\n <InputHelp>\r\n Please input your adjusted gross income from your most current Federal 1040 tax form\r\n (Line 8b).\r\n </InputHelp>\r\n </div>\r\n </InputWrapper>\r\n\r\n <InputWrapper>\r\n <InputLabel>Do you have additional jobs or secondary income?</InputLabel>\r\n <InputRadio\r\n name=\"haveAdditionalJobs\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.haveAdditionalJobs === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"haveAdditionalJobs\"\r\n value=\"N\"\r\n label=\"No\"\r\n defaultChecked={data.haveAdditionalJobs === 'N'}\r\n />\r\n </InputWrapper>\r\n <Fade id=\"additionalIncomeGate\" show={data.haveAdditionalJobs === 'Y'}>\r\n <InputWrapper error={!!errors.additionalJobCount}>\r\n <InputLabel htmlFor=\"additionalJobCount\">\r\n How many additional income sources do you have?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'additionalJobCount.detail')}</InputError>\r\n <InputGroup affordance=\"small\">\r\n <InputNumeric\r\n name=\"additionalJobCount\"\r\n min={1}\r\n defaultValue={data.additionalJobCount}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n\r\n {getAdditionalIncomeSources(data.additionalJobCount, data.additionalJobs, errors)}\r\n </Fade>\r\n </Form>\r\n );\r\n};\r\n\r\nTabIncome.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n};\r\n\r\nexport default TabIncome;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Alert,\r\n Form,\r\n Header2,\r\n InputAddon,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputMask,\r\n InputNumeric,\r\n InputRadio,\r\n InputSelect,\r\n InputWrapper,\r\n InputCheckbox,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../../routing';\r\nimport { convertIsoToSlash, useScrollToTopOnMount, safeAccess } from '../../../utils';\r\n\r\nconst WorkflowAlert = styled.div`\r\n & > .alert {\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nconst TabMarriage = ({ data = {}, errors = {}, handleChange, id }) => {\r\n useScrollToTopOnMount();\r\n return (\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <Header2>Tell us about your marital status</Header2>\r\n <InputWrapper error={!!errors.clientMarriageStatusCorrect}>\r\n <InputLabel>\r\n Our records indicate that you're {data.initialMarriageStatus}. Is that correct?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'initialMarriageStatus.detail')}</InputError>\r\n <InputRadio\r\n name=\"clientMarriageStatusCorrect\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n checked={data.clientMarriageStatusCorrect === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"clientMarriageStatusCorrect\"\r\n value=\"N\"\r\n label=\"No\"\r\n checked={data.clientMarriageStatusCorrect === 'N'}\r\n />\r\n </InputWrapper>\r\n <Fade id=\"unmarriedGate\" show={data.clientCurrentlyMarried === 'N'}>\r\n <InputWrapper error={!!errors.currentlyEngaged}>\r\n <InputLabel htmlFor=\"currentlyEngaged\">Are you currently engaged?</InputLabel>\r\n <InputError>{safeAccess(errors, 'currentlyEngaged.detail')}</InputError>\r\n <InputRadio\r\n name=\"currentlyEngaged\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.currentlyEngaged === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"currentlyEngaged\"\r\n value=\"N\"\r\n label=\"No\"\r\n defaultChecked={data.currentlyEngaged === 'N'}\r\n />\r\n </InputWrapper>\r\n <Fade id=\"engagedGate\" show={data.currentlyEngaged === 'Y'}>\r\n <InputWrapper error={!!errors.marriageDate}>\r\n <InputLabel htmlFor=\"marriageDate\">On what date will you be married</InputLabel>\r\n <InputError>{safeAccess(errors, 'marriageDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.marriageDate)}\r\n mask=\"##/##/####\"\r\n name=\"marriageDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n\r\n <InputWrapper error={!!errors.taxFileType}>\r\n <InputLabel htmlFor=\"taxFileType\">How did you file your taxes?</InputLabel>\r\n <InputError>{safeAccess(errors, 'taxFileType.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputSelect\r\n name=\"taxFileType\"\r\n defaultValue={data.taxFileType}\r\n options={{\r\n '': '',\r\n SGL: 'Single',\r\n HOH: 'Head of Household',\r\n MFS: 'Filing separately',\r\n MFJ: 'Filing jointly',\r\n //NFY: 'Not filed yet',\r\n //OTHER: 'Other',\r\n }}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n <Fade id=\"marriedGate\" show={data.clientCurrentlyMarried === 'Y'}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.spouseIncome}>\r\n <InputLabel htmlFor=\"spouseIncome\">Spouse's Annual Income</InputLabel>\r\n <InputError>{safeAccess(errors, 'spouseIncome.detail')}</InputError>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric name=\"spouseIncome\" defaultValue={data.spouseIncome} />\r\n <InputAddon>.00</InputAddon>\r\n </InputGroup>\r\n <InputHelp>\r\n Please input your spouse's adjusted gross income from their most current Federal\r\n 1040 tax form (Line 8b).\r\n </InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.spousePayPeriods}>\r\n <InputLabel htmlFor=\"spousePayPeriods\">Spouse Pay Periods per Year</InputLabel>\r\n <InputError>{safeAccess(errors, 'spousePayPeriods.detail')}</InputError>\r\n <InputGroup>\r\n <InputNumeric name=\"spousePayPeriods\" defaultValue={data.spousePayPeriods} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <InputWrapper error={!!errors.spouseHasStudentLoans}>\r\n <InputLabel htmlFor=\"spouseHasStudentLoans\">\r\n Does your spouse have federal student loans?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'spouseHasStudentLoans.detail')}</InputError>\r\n <InputRadio\r\n name=\"spouseHasStudentLoans\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.spouseHasStudentLoans === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"spouseHasStudentLoans\"\r\n value=\"N\"\r\n label=\"No\"\r\n defaultChecked={data.spouseHasStudentLoans === 'N'}\r\n />\r\n <InputWrapper>\r\n <InputHelp>\r\n We are asking for your spouse's loan information because some joint repayment plans\r\n may result in an overall lower monthly payment for your whole household. We look at\r\n all options when determining your savings.\r\n </InputHelp>\r\n </InputWrapper>\r\n </InputWrapper>\r\n <Fade id=\"spouseHasLoansGate\" show={data.spouseHasStudentLoans === 'Y'}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.spouseLoanBalance}>\r\n <InputLabel htmlFor=\"spouseLoanBalance\">\r\n Spouse's Loan Balance in Repayment Status\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'spouseLoanBalance.detail')}</InputError>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"spouseLoanBalance\"\r\n step=\"0.01\"\r\n defaultValue={data.spouseLoanBalance}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Fade>\r\n <InputWrapper error={!!errors.taxFileType}>\r\n <InputLabel htmlFor=\"taxFileType\">How did you file your taxes?</InputLabel>\r\n <InputError>{safeAccess(errors, 'taxFileType.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputSelect\r\n name=\"taxFileType\"\r\n defaultValue={data.taxFileType}\r\n options={{\r\n '': '',\r\n MFS: 'Filing separately',\r\n MFJ: 'Filing jointly',\r\n SGL: 'Single',\r\n HOH: 'Head of Household',\r\n //NFY: 'Not filed yet',\r\n //OTHER: 'Other',\r\n }}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <Fade\r\n id=\"taxFileTypeGate\"\r\n show={\r\n data.clientCurrentlyMarried === 'Y' &&\r\n data.taxFileType !== 'SGL' &&\r\n data.taxFileType !== 'HOH' &&\r\n data.taxFileType !== 'MFS' &&\r\n data.taxFileType !== '' &&\r\n data.taxFileType != null\r\n }\r\n >\r\n <WorkflowAlert>\r\n <Alert brand=\"info\">\r\n There is typically a higher tax cost associated with filing married-separate versus\r\n married-joint. However the result of filing separately is usually a lower income\r\n driven repayment, which outweighs the tax cost. This means you see more monthly\r\n savings and loan forgiveness!\r\n </Alert>\r\n </WorkflowAlert>\r\n </Fade>\r\n </Fade>\r\n </Form>\r\n );\r\n};\r\n\r\nTabMarriage.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n};\r\n\r\nexport default TabMarriage;\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('renewal');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('renewal', types);\r\n","import { FormValidator } from '../../../utils';\r\n\r\nexport class RenewalValidator extends FormValidator {\r\n //#region Marriage\r\n clientMarriageStatusCorrect(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n currentlyEngaged(validator, state) {\r\n if (state.clientCurrentlyMarried === 'N') {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n marriageDate(validator, state) {\r\n if (state.currentlyEngaged === 'Y') {\r\n validator.validDateRequiredAndAfterToday();\r\n }\r\n }\r\n\r\n spouseHasStudentLoans(validator, state) {\r\n if (state.clientCurrentlyMarried === 'Y') {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n spouseIncome(validator, state) {\r\n if (state.clientCurrentlyMarried === 'Y') {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(0);\r\n }\r\n }\r\n\r\n spouseLoanBalance(validator, state) {\r\n if (state.spouseHasStudentLoans === 'Y') {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n spousePayPeriods(validator, state) {\r\n if (state.clientCurrentlyMarried === 'Y') {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(0);\r\n }\r\n }\r\n\r\n taxFileType(validator, state) {\r\n //if (state.clientCurrentlyMarried === 'Y') {\r\n validator.isRequired();\r\n //}\r\n }\r\n\r\n //#endregion\r\n\r\n //#region HouseholdQuestions\r\n\r\n clientHouseholdSizeCorrect(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n householdSize(validator, state) {\r\n if (state.clientHouseholdSizeCorrect === 'N') {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(0);\r\n }\r\n }\r\n\r\n dependentName0(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 0) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 0)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName0(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 0) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 0)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship0(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 0) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 0)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate0(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 0) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 0)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName1(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 1) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 1)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName1(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 1) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 1)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship1(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 1) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 1)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate1(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 1) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 1)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName2(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 2) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 2)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName2(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 2) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 2)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship2(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 2) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 2)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate2(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 2) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 2)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName3(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 3) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 3)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName3(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 3) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 3)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship3(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 3) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 3)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate3(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 3) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 3)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName4(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 4) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 4)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName4(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 4) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 4)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship4(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 4) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 4)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate4(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 4) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 4)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName5(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 5) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 5)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName5(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 5) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 5)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship5(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 5) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 5)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate5(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 5) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 5)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName6(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 6) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 6)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName6(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 6) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 6)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship6(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 6) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 6)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate6(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 6) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 6)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName7(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 7) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 7)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName7(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 7) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 7)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship7(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 7) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 7)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate7(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 7) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 7)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName8(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 8) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 8)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName8(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 8) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 8)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship8(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 8) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 8)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate8(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 8) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 8)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName9(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 9) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 9)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName9(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 9) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 9)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship9(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 9) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 9)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate9(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 9) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 9)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n dependentName10(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 10) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 10)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n }\r\n\r\n dependentLastName10(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 10) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 10)\r\n ) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n dependentRelationship10(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 10) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 10)\r\n ) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n dependentBirthdate10(validator, state) {\r\n if (\r\n ((state.clientHouseholdSizeCorrect === undefined ||\r\n state.clientHouseholdSizeCorrect === 'Y') &&\r\n state.householdSize > 10) ||\r\n (state.clientHouseholdSizeCorrect === 'N' && state.householdSize > 10)\r\n ) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region EducationQuestions\r\n returnToSchool(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n returnToSchoolDate(validator, state) {\r\n if (state.returnToSchool === 'Y') {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n }\r\n\r\n degreeType(validator, state) {\r\n if (state.returnToSchool === 'Y') {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n degreeSpecialty(validator, state) {\r\n if (state.returnToSchool === 'Y') {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n creditHours(validator, state) {\r\n if (state.returnToSchool === 'Y') {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n borrowMore(validator, state) {\r\n if (state.returnToSchool === 'Y') {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n borrowMoreAmount(validator, state) {\r\n if (state.borrowMore === 'Y') {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(0);\r\n }\r\n }\r\n\r\n borrowMoreGraduationDate(validator, state) {\r\n if (state.borrowMore === 'Y') {\r\n validator.isRequired();\r\n validator.validDate();\r\n const today = new Date();\r\n today.setDate(today.getDate());\r\n validator.value = new Date(validator.value);\r\n validator.isGreaterThanOrEqualTo(today);\r\n }\r\n }\r\n\r\n borrowMoreExpectedIncome(validator, state) {\r\n if (state.borrowMore === 'Y') {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(0);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region EmploymentQuestions\r\n\r\n employmentSizeCorrect(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n employmentNewEmployerAmount(validator, state) {\r\n if (state.employmentSizeCorrect === 'N') {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentEmploymentClassification0(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType0(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName0(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle0(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate0(validator, state) {\r\n if (state.employersCount > 0) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate0(validator, state) {\r\n if (state.employersCount > 0) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin0(validator, state) {\r\n if (state.employersCount > 0) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods0(validator, state) {\r\n if (state.employersCount > 0) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours0(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress10(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress20(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity0(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState0(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip0(validator, state) {\r\n if (state.employersCount > 0) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification1(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType1(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName1(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle1(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate1(validator, state) {\r\n if (state.employersCount > 1) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate1(validator, state) {\r\n if (state.employersCount > 1) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin1(validator, state) {\r\n if (state.employersCount > 1) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods1(validator, state) {\r\n if (state.employersCount > 1) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours1(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress11(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress21(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity1(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState1(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip1(validator, state) {\r\n if (state.employersCount > 1) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification2(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType2(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName2(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle2(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate2(validator, state) {\r\n if (state.employersCount > 2) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate2(validator, state) {\r\n if (state.employersCount > 2) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin2(validator, state) {\r\n if (state.employersCount > 2) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods2(validator, state) {\r\n if (state.employersCount > 2) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours2(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress12(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress22(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity2(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState2(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip2(validator, state) {\r\n if (state.employersCount > 2) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification3(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType3(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName3(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle3(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate3(validator, state) {\r\n if (state.employersCount > 3) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate3(validator, state) {\r\n if (state.employersCount > 3) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin3(validator, state) {\r\n if (state.employersCount > 3) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods3(validator, state) {\r\n if (state.employersCount > 3) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours3(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress13(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress23(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity3(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState3(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip3(validator, state) {\r\n if (state.employersCount > 3) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification4(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType4(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName4(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle4(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate4(validator, state) {\r\n if (state.employersCount > 4) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate4(validator, state) {\r\n if (state.employersCount > 4) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin4(validator, state) {\r\n if (state.employersCount > 4) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods4(validator, state) {\r\n if (state.employersCount > 4) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours4(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress14(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress24(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity4(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState4(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip4(validator, state) {\r\n if (state.employersCount > 4) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification5(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType5(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName5(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle5(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate5(validator, state) {\r\n if (state.employersCount > 5) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate5(validator, state) {\r\n if (state.employersCount > 5) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin5(validator, state) {\r\n if (state.employersCount > 5) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods5(validator, state) {\r\n if (state.employersCount > 5) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours5(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress15(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress25(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity5(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState5(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip5(validator, state) {\r\n if (state.employersCount > 5) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification6(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType6(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName6(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle6(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate6(validator, state) {\r\n if (state.employersCount > 6) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate6(validator, state) {\r\n if (state.employersCount > 6) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin6(validator, state) {\r\n if (state.employersCount > 6) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods6(validator, state) {\r\n if (state.employersCount > 6) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours6(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress16(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress26(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity6(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState6(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip6(validator, state) {\r\n if (state.employersCount > 6) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification7(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType7(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName7(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle7(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate7(validator, state) {\r\n if (state.employersCount > 7) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate7(validator, state) {\r\n if (state.employersCount > 7) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin7(validator, state) {\r\n if (state.employersCount > 7) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods7(validator, state) {\r\n if (state.employersCount > 7) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours7(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress17(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress27(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity7(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState7(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip7(validator, state) {\r\n if (state.employersCount > 7) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification8(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType8(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName8(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle8(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate8(validator, state) {\r\n if (state.employersCount > 8) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate8(validator, state) {\r\n if (state.employersCount > 8) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin8(validator, state) {\r\n if (state.employersCount > 8) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods8(validator, state) {\r\n if (state.employersCount > 8) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours8(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress18(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress28(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity8(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState8(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip8(validator, state) {\r\n if (state.employersCount > 8) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification9(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType9(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName9(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle9(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate9(validator, state) {\r\n if (state.employersCount > 9) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate9(validator, state) {\r\n if (state.employersCount > 9) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin9(validator, state) {\r\n if (state.employersCount > 9) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods9(validator, state) {\r\n if (state.employersCount > 9) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours9(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress19(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress29(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity9(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState9(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip9(validator, state) {\r\n if (state.employersCount > 9) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n employmentEmploymentClassification10(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmploymentType10(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n employmentEmployerName10(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n employmentJobTitle10(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n employmentStartDate10(validator, state) {\r\n if (state.employersCount > 10) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEndDate10(validator, state) {\r\n if (state.employersCount > 10) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n }\r\n\r\n employmentEin10(validator, state) {\r\n if (state.employersCount > 10) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n }\r\n\r\n employmentPayPeriods10(validator, state) {\r\n if (state.employersCount > 10) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n }\r\n\r\n employmentHours10(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n employmentAddress110(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentAddress210(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentCity10(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n employmentState10(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n }\r\n\r\n employmentZip10(validator, state) {\r\n if (state.employersCount > 10) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region IncomeQuestions\r\n\r\n agi(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n haveAdditionalJobs(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n additionalJobCount(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y') {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource0(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 0) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome0(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 0) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource1(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 1) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome1(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 1) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource2(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 2) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome2(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 2) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource3(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 3) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome3(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 3) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource4(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 4) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome4(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 4) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource5(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 5) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome5(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 5) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource6(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 6) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome6(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 6) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource7(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 7) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome7(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 7) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource8(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 8) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome8(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 8) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource9(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 9) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome9(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 9) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n incomeSource10(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 10) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n }\r\n\r\n annualIncome10(validator, state) {\r\n if (state.haveAdditionalJobs === 'Y' && state.additionalJobCount > 10) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n }\r\n\r\n //#endregion\r\n}\r\n\r\nexport default RenewalValidator;\r\n","import actions from './actions';\r\nimport { RenewalValidator } from './validators';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst renewalValidator = new RenewalValidator();\r\n\r\nconst fixData = (data) => {\r\n return data.map((resource) => {\r\n resource.borrowMore = getValueFromNullableBool(resource.borrowMore);\r\n resource.changedJobs = getValueFromNullableBool(resource.changedJobs);\r\n resource.clientCurrentlyMarried = resource.clientCurrentlyMarried ? 'Y' : 'N';\r\n resource.clientMarriageStatusCorrect = 'Y'; // default to Y\r\n resource.currentHouseholdSizeCorrect = getValueFromNullableBool(\r\n resource.currentHouseholdSizeCorrect\r\n );\r\n resource.currentlyEmployed = getValueFromNullableBool(resource.currentlyEmployed);\r\n resource.currentlyEmployedFulltime = getValueFromNullableBool(\r\n resource.currentlyEmployedFulltime\r\n );\r\n resource.currentlyEngaged = getValueFromNullableBool(resource.currentlyEngaged);\r\n resource.haveAdditionalJobs = getValueFromNullableBool(resource.haveAdditionalJobs);\r\n resource.incomeChanged = getValueFromNullableBool(resource.incomeChanged);\r\n resource.newJobNonProfit = getValueFromNullableBool(resource.newJobNonProfit);\r\n resource.returnToSchool = getValueFromNullableBool(resource.returnToSchool);\r\n resource.spouseHasStudentLoans = getValueFromNullableBool(resource.spouseHasStudentLoans);\r\n\r\n resource['initialMarriageStatus'] = 'single';\r\n if (resource.clientCurrentlyMarried === 'Y') {\r\n resource['initialMarriageStatus'] = 'married';\r\n } else if (resource.currentlyEngaged === 'Y') {\r\n resource['initialMarriageStatus'] = 'engaged';\r\n }\r\n\r\n resource['initialHouseholdSize'] = resource.currentHouseholdSize - 1;\r\n resource['householdSize'] = resource.initialHouseholdSize;\r\n if (resource.householdSize > 0 && resource.dependents) {\r\n for (let i = 0; i < resource.dependents.length; i++) {\r\n resource['dependentName' + i] = resource.dependents[i].dependentName;\r\n resource['dependentLastName' + i] = resource.dependents[i].dependentLastName;\r\n resource['dependentRelationship' + i] = resource.dependents[i].dependentRelationship;\r\n resource['dependentBirthdate' + i] = resource.dependents[i].dependentBirthdate;\r\n }\r\n }\r\n\r\n resource['initialEmployerSize'] = resource.employers != null ? resource.employers.length : 0;\r\n resource['employersCount'] = resource.initialEmployerSize;\r\n\r\n if (resource.initialEmployerSize > 0) {\r\n for (let i = 0; i < resource.initialEmployerSize; i++) {\r\n resource['employmentEmployerName' + i] = resource.employers[i].employmentEmployerName;\r\n resource['employmentJobTitle' + i] = resource.employers[i].employmentJobTitle;\r\n resource['employmentStartDate' + i] = resource.employers[i].employmentStartDate;\r\n resource['employmentEndDate' + i] = resource.employers[i].employmentEndDate;\r\n resource['employmentEin' + i] = resource.employers[i].employmentEin;\r\n resource['employmentPayPeriods' + i] = resource.employers[i].employmentPayPeriods;\r\n resource['employmentHours' + i] = resource.employers[i].employmentHours;\r\n resource['employmentAddress1' + i] = resource.employers[i].employmentAddress1;\r\n resource['employmentAddress2' + i] = resource.employers[i].employmentAddress2;\r\n resource['employmentCity' + i] = resource.employers[i].employmentCity;\r\n resource['employmentState' + i] = resource.employers[i].employmentState;\r\n resource['employmentZip' + i] = resource.employers[i].employmentZip;\r\n resource['employmentEmploymentClassification' + i] =\r\n resource.employers[i].employmentEmploymentClassification;\r\n resource['employmentEmploymentType' + i] = resource.employers[i].employmentEmploymentType;\r\n }\r\n }\r\n\r\n if (resource.haveAdditionalJobs === 'Y' && resource.additionalJobs) {\r\n resource.additionalJobCount = resource.additionalJobs.length;\r\n for (let i = 0; i < resource.additionalJobCount; i++) {\r\n resource['incomeSource' + i] = resource.additionalJobs[i].incomeSource;\r\n resource['annualIncome' + i] = resource.additionalJobs[i].annualIncome;\r\n }\r\n }\r\n\r\n return { ...resource };\r\n });\r\n};\r\n\r\nconst getValueFromNullableBool = (initialValue) => {\r\n if (initialValue) {\r\n if (initialValue === true) {\r\n return 'Y';\r\n }\r\n return 'N';\r\n }\r\n return null;\r\n};\r\n\r\nconst endpointHandler = {\r\n endpoint: '/renewal-questionnaire',\r\n customResponseHandler: fixData,\r\n resourceType: 'renewal-questionnaire',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'renewal',\r\n actions,\r\n null,\r\n renewalValidator,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null,\r\n null\r\n);\r\n\r\nconst {\r\n renewalCopyResourceToForm,\r\n renewalHandleFormChange,\r\n renewalLoadResource,\r\n renewalUpdateResource,\r\n renewalValidateAttributes,\r\n renewalValidateState,\r\n} = operations;\r\n\r\nconst renewalSaveQuestionnaire = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n state.renewal.form = revertData({}, state.renewal.form);\r\n await dispatch(renewalUpdateResource(id));\r\n};\r\n\r\nconst renewalEmploymentValidation = () => async (dispatch, getState) => {\r\n const state = getState();\r\n\r\n for (let i = 0; i < state.renewal.form.employersCount; i++) {\r\n if (!!!state.renewal.form.employers[i].employmentEmployerName) {\r\n await dispatch(renewalValidateAttributes(['employmentEmployerName' + i.toString()]));\r\n }\r\n if (!!!state.renewal.form.employers[i].employmentEmploymentClassification) {\r\n await dispatch(\r\n renewalValidateAttributes(['employmentEmploymentClassification' + i.toString()])\r\n );\r\n }\r\n if (!!!state.renewal.form.employers[i].employmentEmploymentType) {\r\n await dispatch(renewalValidateAttributes(['employmentEmploymentType' + i.toString()]));\r\n }\r\n if (!!!state.renewal.form.employers[i].employmentJobTitle) {\r\n await dispatch(renewalValidateAttributes(['employmentJobTitle' + i.toString()]));\r\n }\r\n if (!!!state.renewal.form.employers[i].employmentHours) {\r\n await dispatch(renewalValidateAttributes(['employmentHours' + i.toString()]));\r\n }\r\n if (!!!state.renewal.form.employers[i].employmentAddress1) {\r\n await dispatch(renewalValidateAttributes(['employmentAddress1' + i.toString()]));\r\n }\r\n if (!!!state.renewal.form.employers[i].employmentCity) {\r\n await dispatch(renewalValidateAttributes(['employmentCity' + i.toString()]));\r\n }\r\n if (!!!state.renewal.form.employers[i].employmentState) {\r\n await dispatch(renewalValidateAttributes(['employmentState' + i.toString()]));\r\n }\r\n if (!!!state.renewal.form.employers[i].employmentZip) {\r\n await dispatch(renewalValidateAttributes(['employmentZip' + i.toString()]));\r\n }\r\n }\r\n};\r\n\r\nconst isValidDate = (date) => {\r\n // TODO: get actual validation requirements for this date.\r\n return new Date(date) > new Date('01/01/1900');\r\n};\r\n\r\nconst revertData = (origData, data) => {\r\n data.clientCurrentlyMarried = data.clientCurrentlyMarried === 'Y';\r\n data.clientMarriageStatusCorrect = data.clientMarriageStatusCorrect === 'Y';\r\n data.spouseHasStudentLoans = data.spouseHasStudentLoans === 'Y';\r\n data.currentlyEngaged = data.currentlyEngaged === 'Y';\r\n data.currentHouseholdSizeCorrect = data.currentHouseholdSizeCorrect === 'Y';\r\n data.returnToSchool = data.returnToSchool === 'Y';\r\n data.borrowMore = data.borrowMore === 'Y';\r\n data.currentlyEmployed = data.currentlyEmployed === 'Y';\r\n data.currentlyEmployedFulltime = data.currentlyEmployedFulltime === 'Y';\r\n data.changedJobs = data.changedJobs === 'Y';\r\n data.newJobNonProfit = data.newJobNonProfit === 'Y';\r\n data.incomeChanged = data.incomeChanged === 'Y';\r\n data.haveAdditionalJobs = data.haveAdditionalJobs === 'Y';\r\n\r\n data.marriageDate = isValidDate(data.marriageDate) ? data.marriageDate : null;\r\n data.returnToSchoolDate = isValidDate(data.returnToSchoolDate) ? data.returnToSchoolDate : null;\r\n data.oldJobEndDate = isValidDate(data.oldJobEndDate) ? data.oldJobEndDate : null;\r\n data.newJobStartDate = isValidDate(data.newJobStartDate) ? data.newJobStartDate : null;\r\n\r\n if (data.dependents != null && data.dependents.length > 0) {\r\n let dependents = [];\r\n for (let i = 0; i < data.dependents.length; i++) {\r\n let dependent = {\r\n 'dependent-name': data.dependents[i].dependentName,\r\n 'dependent-last-name': data.dependents[i].dependentLastName,\r\n 'dependent-relationship': data.dependents[i].dependentRelationship,\r\n 'dependent-birthdate': data.dependents[i].dependentBirthdate,\r\n };\r\n dependents.push(dependent);\r\n }\r\n data.dependents = dependents;\r\n }\r\n\r\n if (data.additionalJobs != null && data.additionalJobs.length > 0) {\r\n let additionalJobs = [];\r\n for (let i = 0; i < data.additionalJobs.length; i++) {\r\n let additionalJob = {\r\n 'income-source': data.additionalJobs[i].incomeSource,\r\n 'annual-income': data.additionalJobs[i].annualIncome,\r\n };\r\n additionalJobs.push(additionalJob);\r\n }\r\n data.additionalJobs = additionalJobs;\r\n }\r\n\r\n if (data.employers != null && data.employers.length > 0) {\r\n let employers = [];\r\n for (let i = 0; i < data.employers.length; i++) {\r\n let employer = {\r\n 'employment-employer-name': data.employers[i].employmentEmployerName,\r\n 'employment-job-title': data.employers[i].employmentJobTitle,\r\n 'employment-start-date': data.employers[i].employmentStartDate,\r\n 'employment-end-date': data.employers[i].employmentEndDate,\r\n 'employment-ein': data.employers[i].employmentEin,\r\n 'employment-pay-periods': data.employers[i].employmentPayPeriods,\r\n 'employment-hours': data.employers[i].employmentHours,\r\n 'employment-address1': data.employers[i].employmentAddress1,\r\n 'employment-address2': data.employers[i].employmentAddress2,\r\n 'employment-city': data.employers[i].employmentCity,\r\n 'employment-state': data.employers[i].employmentState,\r\n 'employment-zip': data.employers[i].employmentZip,\r\n 'employment-employment-classification':\r\n data.employers[i].employmentEmploymentClassification,\r\n 'employment-employment-type': data.employers[i].employmentEmploymentType,\r\n 'employment-employment-history-id': data.employers[i].employmentEmploymentHistoryId,\r\n 'employment-employment-history-address-id':\r\n data.employers[i].employmentEmploymentHistoryAddressId,\r\n };\r\n employers.push(employer);\r\n }\r\n data.employers = employers;\r\n }\r\n\r\n return data;\r\n};\r\n\r\nexport {\r\n renewalCopyResourceToForm,\r\n renewalHandleFormChange,\r\n renewalLoadResource,\r\n renewalSaveQuestionnaire,\r\n renewalValidateAttributes,\r\n renewalValidateState,\r\n renewalEmploymentValidation,\r\n};\r\n\r\nexport default operations;\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('renewalResults');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n endpoint: '/renewal-information',\r\n customResponseHandler: null,\r\n resourceType: 'renewal-information',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'renewalResults',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null,\r\n null\r\n);\r\n\r\nconst { renewalResultsLoadResource, renewalResultsUpdateResource } = operations;\r\n\r\nexport { renewalResultsLoadResource, renewalResultsUpdateResource };\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('renewalResults', types);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('renewalResults', types);\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n AsyncLoader,\n Card,\n CardBody,\n CardFooter,\n CardText,\n CardTitle,\n Header2,\n Link,\n} from 'fiducius-ui';\n\nimport { getUserId, authLoadPermissions } from '../../../auth';\nimport { mergeRequestStatuses, safeAccess } from '../../../utils';\n\nimport { renewalSaveQuestionnaire } from '../redux/operations';\nimport { renewalResultsLoadResource } from '../../../renewal-results';\nimport { todosLoadCollection } from '../../../todos/redux/operations';\n\nclass TabResults extends React.Component {\n static propTypes = {\n data: t.object,\n renewalData: t.object,\n getInfo: t.func.isRequired,\n id: t.string.isRequired,\n request: t.object,\n saveRenewal: t.func.isRequired,\n saveRequest: t.object,\n formsAreValid: t.bool.isRequired,\n isReducedIDR: t.bool,\n };\n\n componentDidMount() {\n const { id, saveRenewal, formsAreValid } = this.props;\n if (formsAreValid) saveRenewal(id);\n }\n\n componentDidUpdate(prevProps) {\n const { getInfo, id, saveRequest } = this.props;\n if (prevProps.saveRequest.isLoading && saveRequest.hasFinished && !saveRequest.hasFailed) {\n getInfo(id);\n }\n }\n\n getSelfServiceScenarioContent() {\n const { renewalData = {} } = this.props;\n\n if (renewalData.showPlanChangeContent) {\n return (\n <p>\n Due to your reported marital and tax filing status updates, your repayment plan may change\n during this year's renewal process. This change reflects your latest information, ensuring\n that your repayment plan is the most beneficial and aligns with federal updates.\n </p>\n );\n } else {\n return <></>;\n }\n }\n\n render() {\n const { data = {}, request, renewalData = {}, isReducedIDR } = this.props;\n return (\n <AsyncLoader request={request}>\n <Header2>Your renewal is almost done. What's next?</Header2>\n <div className=\"row\">\n <div className=\"col-12 col-md-12\">\n {renewalData.showFullServiceMessagingContent && (\n <Card brand=\"primary\">\n <CardBody>\n <CardTitle>Thank you for completing your renewal questionnaire!</CardTitle>\n <CardText>\n {renewalData.fullServiceMessagingEnterprise && (\n <>\n <p>\n Based on the information you provided and your employer's participation in\n our programs, you may be qualified for additional benefits. Please review\n your To-do list to see any benefits available to you and to determine if\n you have new steps to complete.\n </p>\n <p>\n Should you have questions, please use the \"Contact Us\" button in the left\n navigation pane of your portal to submit your request for help.\n </p>\n </>\n )}\n {renewalData.fullServiceMessagingVoluntary && (\n <>\n <p>\n Based on the information you provided, you will not meet the Forgiveness\n savings thresholds that would ensure benefit from the utilization of\n Fiducius' services for management of loan forgiveness.\n </p>\n <p>\n If you have any questions about your student loans, please direct those\n questions to your loan servicer(s).\n </p>\n </>\n )}\n </CardText>\n </CardBody>\n <CardFooter>\n <Link to=\"/dashboard\">Return to dashboard</Link>\n </CardFooter>\n </Card>\n )}\n {!renewalData.showFullServiceMessagingContent && !data.selfService && (\n <Card brand={data.documentsReceived ? 'success' : 'primary'}>\n <CardBody>\n <CardTitle>\n Congratulations, you are one step closer to improving your financial wellness!\n </CardTitle>\n <CardText>\n {!!!isReducedIDR && (\n <p>\n Recent federal modifications have created several changes to the Public\n Service Loan Forgiveness (PSLF) program. Importantly, these changes impact\n the potential financial benefits for nearly all PSLF participants.\n Unfortunately, the new rules are confusing, making it difficult to\n understand and navigate your best path to forgiveness.\n </p>\n )}\n <p>\n Don't worry! Fiducius has done all the heavy lifting so it's easy for you to\n make the right choices to improve your financial wellness. All you need to do\n is follow our step-by-step guidance provided in your \"To-Do\" steps. Our\n process ensures accuracy in submitting your renewal.\n </p>\n <p>\n Should you have questions as you go through the process, please use the\n \"Contact Us\" button in the left navigation pane of your portal to submit your\n request for help.\n </p>\n </CardText>\n </CardBody>\n {!data.documentsReceived && (\n <CardFooter>\n <Link to=\"/documents\">Go to my documents</Link>\n </CardFooter>\n )}\n </Card>\n )}\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col-12 col-md-12\">\n {!renewalData.showFullServiceMessagingContent && data.selfService && (\n <Card brand=\"success\">\n <CardBody>\n <CardTitle>\n Congratulations, you are one step closer to improving your financial wellness!\n </CardTitle>\n <CardText>\n {!!!isReducedIDR && (\n <p>\n Recent federal modifications have created several changes to the Public\n Service Loan Forgiveness (PSLF) program. Importantly, these changes impact\n the potential financial benefits for nearly all PSLF participants.\n Unfortunately, the new rules are confusing, making it difficult to\n understand and navigate your best path to forgiveness.\n </p>\n )}\n <p>\n Don't worry! Fiducius has done all the heavy lifting so it's easy for you to\n make the right choices to improve your financial wellness. All you need to do\n is follow our step-by-step guidance provided in your \"To-Do\" steps. Our\n process ensures accuracy in submitting your renewal.\n </p>\n {this.getSelfServiceScenarioContent()}\n <p>\n Should you have questions as you go through the process, please use the\n \"Contact Us\" button in the left navigation pane of your portal to submit your\n request for help.\n </p>\n </CardText>\n </CardBody>\n <CardFooter>\n <Link to=\"/dashboard\">Return to dashboard</Link>\n </CardFooter>\n </Card>\n )}\n </div>\n </div>\n </AsyncLoader>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const { renewal } = state;\n\n return {\n id: getUserId(state),\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\n renewalData: safeAccess(state, `renewal.cache[${getUserId(state)}]`) || {},\n\n request: mergeRequestStatuses([\n state.renewal.requests.updateResource,\n state.renewalResults.requests.loadResource,\n ]),\n saveRequest: state.renewal.requests.updateResource,\n formsAreValid: renewal.meta.isValid,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n getInfo: (id) => dispatch(renewalResultsLoadResource(id)),\n saveRenewal: async (id) => {\n await dispatch(renewalSaveQuestionnaire(id));\n dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TabResults);\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Form, Header2 } from 'fiducius-ui';\r\n\r\nimport { useScrollToTopOnMount } from '../../../utils';\r\n\r\nconst TabReview = ({ data = {}, errors = {}, handleChange, id, brand }) => {\r\n useScrollToTopOnMount();\r\n return (\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <Header2>Review Your Responses</Header2>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n {brand === 'success' && (\r\n <>\r\n <p>\r\n Thank you for completing the questionnaire. You can use the page links to the left\r\n to go back and review your responses.\r\n </p>\r\n <p>Please click Submit to confirm your responses and continue.</p>\r\n </>\r\n )}\r\n {brand === null && (\r\n <>\r\n <p>You have not yet completed all the questions.</p>\r\n <p>\r\n Please use the navigation items to the left to go back and finish the questionnaire.\r\n </p>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n};\r\n\r\nTabReview.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n brand: t.string,\r\n};\r\n\r\nexport default TabReview;\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('nslds');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('nslds', types);\r\n","import { postApi, resourceOperationsGenerator, kebabCase } from '../../../utils';\r\nimport { documentsCreateResource } from '../../../documents';\r\n\r\nimport actions from './actions';\r\nimport { getToken } from '../../../auth';\r\n\r\nconst endpointHandler = {\r\n endpoint: '/nslds',\r\n customResponseHandler: null,\r\n resourceType: 'nslds',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'nslds',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n nsldsClearForm,\r\n nsldsCopyResourceToForm,\r\n nsldsHandleFormChange,\r\n nsldsCreateResource,\r\n nsldsValidateAttributes,\r\n nsldsHandleCacheChange,\r\n} = operations;\r\n\r\nconst nsldsSetFormData = (nslds) => async (dispatch, getState) => {\r\n const state = getState();\r\n let { cache } = state.nslds;\r\n cache = nslds;\r\n await dispatch(nsldsHandleCacheChange(cache));\r\n};\r\n\r\nconst nsldsUploadData = (inScreening) => async (dispatch, getState) => {\r\n const state = getState();\r\n const { documents, nslds } = state;\r\n\r\n const nsldsFile = Object.keys(documents.cache).filter((a) => a.fileCode === 'LNDT');\r\n const nsldsData = nslds.cache;\r\n nsldsData.fileId = await dispatch(documentsCreateResource(nsldsFile.id));\r\n nsldsData.fromScreening = inScreening;\r\n await dispatch(nsldsPostData(nsldsData));\r\n};\r\n\r\nconst nsldsPostData = (nsldsData) => async (dispatch, getState) => {\r\n const state = getState();\r\n try {\r\n dispatch(actions.nsldsCreateResourceRequest(null));\r\n\r\n const postData = fixDataForPost(nsldsData);\r\n await postApi(getToken(state), '/nslds', postData);\r\n\r\n dispatch(actions.nsldsCreateResourceResponse(null));\r\n dispatch(actions.nsldsCreateResourceSuccess(null));\r\n } catch (error) {\r\n dispatch(operations.nsldsHandleError(error));\r\n dispatch(actions.nsldsCreateResourceFailure(error, null));\r\n }\r\n};\r\n\r\nconst fixDataForPost = (postData) => {\r\n let data = Object.keys(postData).reduce(\r\n (kebabs, key) => ({\r\n ...kebabs,\r\n [kebabCase(key).replace('address-', 'address')]: postData[key],\r\n }),\r\n {}\r\n );\r\n\r\n data = fixSubdata(data);\r\n\r\n return {\r\n data: {\r\n type: 'nslds',\r\n attributes: data,\r\n },\r\n };\r\n};\r\n\r\nconst fixSubdata = (data) => {\r\n let arrayKeys = Object.keys(data).filter((a) => Array.isArray(data[a]));\r\n\r\n for (let i = 0; i < arrayKeys.length; i++) {\r\n if (data[arrayKeys[i]] !== undefined && data[arrayKeys[i]].length > 0) {\r\n data[arrayKeys[i]] = fixArray(data[arrayKeys[i]]);\r\n }\r\n }\r\n return data;\r\n};\r\n\r\nconst fixArray = (arrayData) => {\r\n let newArray = [];\r\n for (let i = 0; i < arrayData.length; i++) {\r\n let newItem = Object.keys(arrayData[i]).reduce(\r\n (kebabs, key) => ({\r\n ...kebabs,\r\n [kebabCase(key).replace('address-', 'address')]: arrayData[i][key],\r\n }),\r\n {}\r\n );\r\n\r\n newItem = fixSubdata(newItem);\r\n newArray.push(newItem);\r\n }\r\n return newArray;\r\n};\r\n\r\nexport {\r\n nsldsClearForm,\r\n nsldsCopyResourceToForm,\r\n nsldsHandleFormChange,\r\n nsldsCreateResource,\r\n nsldsValidateAttributes,\r\n nsldsSetFormData,\r\n nsldsUploadData,\r\n};\r\n\r\nexport default operations;\r\n","export class NSLDS {\r\n constructor() {\r\n this.totalOutstandingByLoanType = []; //new NSLDSTotalOutstanding();\r\n this.loans = []; //new NSLDSLoan();\r\n this.grants = []; //new NSLDSGrant();\r\n this.overpayments = []; // new NSLDSOverpayment();\r\n this.programs = []; //new NSLDSProgram();\r\n this.awards = []; //new NSLDSAward();\r\n }\r\n\r\n totalOutstandingByLoanType; //new NSLDSTotalOutstanding();\r\n loans; //new NSLDSLoan();\r\n grants; //new NSLDSGrant();\r\n overpayments; // new NSLDSOverpayment();\r\n programs; //new NSLDSProgram();\r\n awards; //new NSLDSAward();\r\n\r\n fileSource;\r\n fileRequestDate;\r\n studentFirstName;\r\n studentMiddleInitial;\r\n studentLastName;\r\n studentStreetAddress1;\r\n studentStreetAddress2;\r\n studentCity;\r\n studentStateCode;\r\n studentCountryCode;\r\n studentZipCode;\r\n studentEmailAddress;\r\n studentHomePhoneCountryCode;\r\n studentHomePhoneNumber;\r\n studentHomePhonePreferred;\r\n studentCellPhoneContryCode;\r\n studentCellPhoneNumber;\r\n studentCellPhonePreferred;\r\n studentWorkPhoneContryCode;\r\n studentWorkPhoneNumber;\r\n studentWorkPhonePreferred;\r\n studentSULAMaximumEligibilityPeriod;\r\n studentSULASubsidizedUsagePeriod;\r\n studentSULARemainingEligibilityPeriod;\r\n studentEnrollmentStatus;\r\n studentEnrollmentStatusEffectiveDate;\r\n studentTotalAllLoansOutstandingPrincipal;\r\n studentTotalAllLoansOutstandingInterest;\r\n studentPellLifetimeEligibilityUsed;\r\n studentIraqAndAfghanistanServiceLifetimeEligibilityUsed;\r\n studentTotalAllGrants;\r\n undergraduateAggregateSubsidizedTotal;\r\n undergraduateAggregateUnsubsidizedTotal;\r\n undergraduateAggregateCombinedTotal;\r\n graduateAggregateSubsidizedTotal;\r\n graduateAggregateUnsubsidizedTotal;\r\n graduateAggregateCombinedTotal;\r\n aggregateSubsidizedTotal;\r\n aggregateUnsubsidizedTotal;\r\n aggregateCombinedTotal;\r\n\r\n fileId;\r\n isSpouseNslds;\r\n}\r\n\r\nexport class NSLDSTotalOutstanding {\r\n constructor() {\r\n this.loanType = null;\r\n this.principal = null;\r\n this.interest = null;\r\n }\r\n loanType;\r\n principal;\r\n interest;\r\n}\r\n\r\nexport class NSLDSLoan {\r\n constructor() {\r\n this.loanStatuses = []; //NSLDSLoanStatus();\r\n this.loanDisbursements = []; //NSLDSLoanDisbursement();\r\n this.loanContacts = []; //NSLDSLoanContact();\r\n this.loanSpecialContacts = []; // NSLDSLoanSpecialContact();\r\n\r\n this.loanType = null;\r\n this.loanAwardId = null;\r\n this.loanAttendingSchoolName = null;\r\n this.loanAttendingSchoolOpeid = null;\r\n this.loanDate = null;\r\n this.loanRepaymentBeginDate = null;\r\n this.loanPeriodBeginDate = null;\r\n this.loanPeriodEndDate = null;\r\n this.loanAmount = null;\r\n this.loanDisbursedAmount = null;\r\n this.loanCanceledAmount = null;\r\n this.loanOutstandingPrincipalBalance = null;\r\n this.loanOutstandingPrincipalBalanceAsOfDate = null;\r\n this.loanOutstandingInterestBalance = null;\r\n this.loanOutstandingInterestBalanceAsOfDate = null;\r\n this.loanInterestRateType = null;\r\n this.loanInterestRate = null;\r\n this.loanRepaymentPlanType = null;\r\n this.loanRepaymentPlanBeginDate = null;\r\n this.loanRepaymentPlanScheduledAmount = null;\r\n this.loanRepaymentPlanIdrPlanAnniversaryDate = null;\r\n this.loanConfirmedSubsidyStatus = null;\r\n this.loanSubsidizedUsageInYears = null;\r\n this.loanReaffirmationDate = null;\r\n this.loanMostRecentPaymentEffectiveDate = null;\r\n this.loanNextPaymentDueDate = null;\r\n this.loanCumulativePaymentAmount = null;\r\n this.loanPslfCumulativeMatchedMonths = null;\r\n\r\n //Internal LoanId\r\n this.loanId = null;\r\n //Internal ServicerId\r\n this.servicerId = null;\r\n }\r\n\r\n loanStatuses; //NSLDSLoanStatus();\r\n loanDisbursements; //NSLDSLoanDisbursement();\r\n loanContacts; //NSLDSLoanContact();\r\n loanSpecialContacts; // NSLDSLoanSpecialContact();\r\n\r\n loanType;\r\n loanAwardId;\r\n loanAttendingSchoolName;\r\n loanAttendingSchoolOpeid;\r\n loanDate;\r\n loanRepaymentBeginDate;\r\n loanPeriodBeginDate;\r\n loanPeriodEndDate;\r\n loanAmount;\r\n loanDisbursedAmount;\r\n loanCanceledAmount;\r\n loanOutstandingPrincipalBalance;\r\n loanOutstandingPrincipalBalanceAsOfDate;\r\n loanOutstandingInterestBalance;\r\n loanOutstandingInterestBalanceAsOfDate;\r\n loanInterestRateType;\r\n loanInterestRate;\r\n loanRepaymentPlanType;\r\n loanRepaymentPlanBeginDate;\r\n loanRepaymentPlanScheduledAmount;\r\n loanRepaymentPlanIdrPlanAnniversaryDate;\r\n loanConfirmedSubsidyStatus;\r\n loanSubsidizedUsageInYears;\r\n loanReaffirmationDate;\r\n loanMostRecentPaymentEffectiveDate;\r\n loanNextPaymentDueDate;\r\n loanCumulativePaymentAmount;\r\n loanPslfCumulativeMatchedMonths;\r\n\r\n //Internal LoanId\r\n LoanId;\r\n //Internal ServicerId\r\n servicerId;\r\n}\r\n\r\nexport class NSLDSLoanStatus {\r\n constructor() {\r\n this.loanStatus = null;\r\n this.loanStatusDescription = null;\r\n this.loanStatusEffectiveDate = null;\r\n }\r\n loanStatus;\r\n loanStatusDescription;\r\n loanStatusEffectiveDate;\r\n}\r\n\r\nexport class NSLDSLoanDisbursement {\r\n constructor() {\r\n this.loanDisbursementDate = null;\r\n this.loanDisbursementAmount = null;\r\n }\r\n loanDisbursementDate = null;\r\n loanDisbursementAmount = null;\r\n}\r\n\r\nexport class NSLDSLoanContact {\r\n constructor() {\r\n this.loanContactType = null;\r\n this.loanContactName = null;\r\n this.loanContactStreetAddress1 = null;\r\n this.loanContactStreetAddress2 = null;\r\n this.loanContactCity = null;\r\n this.loanContactStateCode = null;\r\n this.loanContactZipCode = null;\r\n this.loanContactPhoneNumber = null;\r\n this.loanContactPhoneExtension = null;\r\n this.loanContactEmailAddress = null;\r\n this.loanContactWebSiteAddress = null;\r\n }\r\n loanContactStreetAddress1 = null;\r\n loanContactStreetAddress2 = null;\r\n}\r\n\r\nexport class NSLDSLoanSpecialContact {\r\n constructor() {\r\n this.loanSpecialContactReason = null;\r\n this.loanSpecialContact = null;\r\n }\r\n}\r\n\r\nexport class NSLDSGrant {\r\n constructor() {\r\n this.grantContacts = []; //NSLDSGrantContact();\r\n this.grantType = null;\r\n this.grantAttendingSchoolName = null;\r\n this.grantAttendingSchoolOpeid = null;\r\n this.grantAwardYear = null;\r\n this.grantScheduledAmount = null;\r\n this.grantAwardAmount = null;\r\n this.grantDisbursedAmount = null;\r\n this.grantRemainingAmountToBePaid = null;\r\n this.grantFirstTime = null;\r\n this.grantAdditionalEligibility = null;\r\n }\r\n}\r\n\r\nexport class NSLDSGrantContact {\r\n constructor() {\r\n this.grantContactType = null;\r\n this.grantContactName = null;\r\n this.grantContactStreetAddress1 = null;\r\n this.grantContactStreetAddress2 = null;\r\n this.grantContactCity = null;\r\n this.grantContactStateCode = null;\r\n this.grantContactZipCode = null;\r\n }\r\n}\r\n\r\nexport class NSLDSOverpayment {\r\n constructor() {\r\n this.overpaymentContacts = []; //NSLDSOverpaymentContact();\r\n this.overpaymentSpecialContacts = []; // NSLDSOverpaymentSpecialContact;\r\n this.overpaymentAidType = null;\r\n this.overpaymentAttendingSchoolName = null;\r\n this.overpaymentAttendingSchoolOpeid = null;\r\n this.overpaymentDisbursementDate = null;\r\n this.overpaymentStatus = null;\r\n this.overpaymentRepaymentDate = null;\r\n }\r\n}\r\n\r\nexport class NSLDSOverpaymentContact {\r\n constructor() {\r\n this.overpaymentContactType = null;\r\n this.overpaymentContactName = null;\r\n this.overpaymentContactStreetAddress1 = null;\r\n this.overpaymentContactStreetAddress2 = null;\r\n this.overpaymentContactCity = null;\r\n this.overpaymentContactStateCode = null;\r\n this.overpaymentContactZipCode = null;\r\n this.overpaymentContactPhoneNumber = null;\r\n this.overpaymentContactPhoneExtension = null;\r\n this.overpaymentContactEmailAddress = null;\r\n this.overpaymentContactWebSiteAddress = null;\r\n }\r\n}\r\n\r\nexport class NSLDSOverpaymentSpecialContact {\r\n constructor() {\r\n this.overpaymentSpecialContactReason = null;\r\n this.overpaymentSpecialContact = null;\r\n }\r\n}\r\n\r\nexport class NSLDSProgram {\r\n constructor() {\r\n this.programStatuses = []; //NSLDSProgramStatus();\r\n this.programSchoolName = null;\r\n this.programSchoolOpeid = null;\r\n this.programCIPTitle = null;\r\n this.programCredentialLevel = null;\r\n this.programBeginDate = null;\r\n this.programPublishedLengthInYears = null;\r\n }\r\n}\r\n\r\nexport class NSLDSProgramStatus {\r\n constructor() {\r\n this.programStatusDescription = null;\r\n this.programStatusEffectiveDate = null;\r\n }\r\n}\r\n\r\nexport class NSLDSAward {\r\n constructor() {\r\n this.awardSchoolName = null;\r\n this.awardSchoolOpeid = null;\r\n this.awardEarliestDisbursementDate = null;\r\n this.awardLoanPeriodBeginDate = null;\r\n this.awardLoanPeriodEndDate = null;\r\n this.awardSubsidizedUsage = null;\r\n this.awardSubsidyStatus = null;\r\n }\r\n}\r\n","const nsldsFieldType = {\r\n //student fields\r\n student: [\r\n 'Undergraduate Aggregate Subsidized Total',\r\n 'Undergraduate Aggregate Unsubsidized Total',\r\n 'Undergraduate Aggregate Combined Total',\r\n 'Graduate Aggregate Subsidized Total',\r\n 'Graduate Aggregate Unsubsidized Total',\r\n 'Graduate Aggregate Combined Total',\r\n 'Aggregate Subsidized Total (Undergraduate and Graduate)',\r\n 'Aggregate Unsubsidized Total (Undergraduate and Graduate)',\r\n 'Aggregate Combined Total (Undergraduate and Graduate)',\r\n ],\r\n};\r\n\r\nexport default nsldsFieldType;\r\n","import {\r\n NSLDS,\r\n NSLDSTotalOutstanding,\r\n NSLDSLoan,\r\n NSLDSLoanStatus,\r\n NSLDSLoanDisbursement,\r\n NSLDSLoanContact,\r\n NSLDSLoanSpecialContact,\r\n NSLDSGrant,\r\n NSLDSGrantContact,\r\n NSLDSOverpayment,\r\n NSLDSOverpaymentContact,\r\n NSLDSOverpaymentSpecialContact,\r\n NSLDSProgram,\r\n NSLDSProgramStatus,\r\n NSLDSAward,\r\n} from './nslds';\r\n\r\nimport nsldsFieldType from '../redux/field-type';\r\n\r\nexport class NSLDSImporter {\r\n constructor() {\r\n this.fileReader = new FileReader();\r\n\r\n //When processing these values should only be incremented, never reset.\r\n this.loanIndex = 0;\r\n this.grantIndex = 0;\r\n this.overpaymentIndex = 0;\r\n this.programIndex = 0;\r\n this.awardIndex = 0;\r\n\r\n //incremented and reset\r\n this.loanStatusIndex = 0;\r\n this.loanDisbursementIndex = 0;\r\n this.loanContactIndex = 0;\r\n this.loanSpecialContactIndex = 0;\r\n this.grantContactIndex = 0;\r\n this.overpaymentContactIndex = 0;\r\n this.overpaymentSpecialContactIndex = 0;\r\n this.programStatusIndex = 0;\r\n\r\n //main object\r\n this.nsldsObject = new NSLDS();\r\n\r\n //debug\r\n this.testCounter = 0;\r\n }\r\n\r\n handleFileChosen = (file) => {\r\n return new Promise((resolve, reject) => {\r\n this.fileReader.onerror = () => {\r\n this.fileReader.abort();\r\n reject(new Error('Error parsing input file'));\r\n };\r\n\r\n this.fileReader.onload = () => {\r\n const content = this.fileReader.result.split(/\\r\\n|\\n/);\r\n resolve(this.handleFileRead(content));\r\n };\r\n\r\n try {\r\n this.fileReader.readAsText(file);\r\n } catch (ex) {\r\n this.fileReader.abort();\r\n }\r\n });\r\n };\r\n\r\n hasFieldInGroup = (fieldGroup, fieldName) => fieldGroup.includes(fieldName);\r\n\r\n handleFileRead = (content) => {\r\n //splits into line by line\r\n const nsldsFieldGroup = nsldsFieldType;\r\n content.forEach((line) => {\r\n let lineItem = line.split(':');\r\n if (lineItem[0].substring(0, 10).includes('File')) {\r\n this.parseNSLDSFile(lineItem);\r\n } else if (\r\n lineItem[0].substring(0, 10).includes('Student') ||\r\n this.hasFieldInGroup(nsldsFieldGroup.student, lineItem[0])\r\n ) {\r\n this.ParseNSLDSStudent(lineItem);\r\n } else if (lineItem[0].substring(0, 10).includes('Total')) {\r\n this.ParseNSLDSTotals(lineItem);\r\n } else if (lineItem[0].substring(0, 10).includes('Loan')) {\r\n //use a substring here because loan is a common word - ensures we are looking at the beginning of the line.\r\n this.ParseNSLDSLoans(lineItem);\r\n } else if (lineItem[0].substring(0, 10).includes('Grant')) {\r\n this.ParseNSLDSGrants(lineItem);\r\n } else if (lineItem[0].substring(0, 15).includes('Overpayment')) {\r\n this.ParseNSLDSOverpayments(lineItem);\r\n } else if (lineItem[0].substring(0, 15).includes('Program')) {\r\n this.ParseNSLDSPrograms(lineItem);\r\n } else if (lineItem[0].substring(0, 15).includes('Award')) {\r\n this.ParseNSLDSAwards(lineItem);\r\n }\r\n });\r\n return this.nsldsObject;\r\n };\r\n\r\n parseNSLDSFile = (lineItem) => {\r\n switch (lineItem[0].trim()) {\r\n case 'File Source':\r\n this.nsldsObject.fileSource = lineItem[1].trim();\r\n break;\r\n case 'File Request Date':\r\n if (lineItem[2] !== undefined) {\r\n //formatted as yyyy-MM-dd HH:mm:ss:fff from the text file.\r\n this.nsldsObject.fileRequestDate = this.getFileRequestDate(\r\n lineItem[1].trim() + '.' + lineItem[2].trim() + '.' + lineItem[3].trim()\r\n );\r\n } else {\r\n //formatted as yyyy-MM-dd-HH.mm.ss.fff from the text file.\r\n this.nsldsObject.fileRequestDate = this.getFileRequestDate(lineItem[1].trim());\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n getFileRequestDate(lineData) {\r\n if (lineData !== undefined && lineData !== null && lineData.toString().length > 0) {\r\n let year = lineData.substring(0, 4);\r\n let month = lineData.substring(5, 7);\r\n let day = lineData.substring(8, 10);\r\n let hour = lineData.substring(11, 13);\r\n hour = hour === '24' ? '00' : hour;\r\n let minute = lineData.substring(14, 16);\r\n let second = lineData.substring(17, 19);\r\n\r\n return year + '-' + month + '-' + day + 'T' + hour + ':' + minute + ':' + second;\r\n }\r\n return undefined;\r\n }\r\n\r\n ParseNSLDSStudent = (lineItem) => {\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'StudentFirstName':\r\n this.nsldsObject.studentFirstName = lineItem[1].trim();\r\n break;\r\n case 'StudentMiddleInitial':\r\n this.nsldsObject.studentMiddleInitial = lineItem[1].trim();\r\n break;\r\n case 'StudentLastName':\r\n this.nsldsObject.studentLastName = lineItem[1].trim();\r\n break;\r\n case 'StudentStreetAddress1':\r\n this.nsldsObject.studentStreetAddress1 = lineItem[1].trim();\r\n break;\r\n case 'StudentStreetAddress2':\r\n this.nsldsObject.studentStreetAddress2 = lineItem[1].trim();\r\n break;\r\n case 'StudentCity':\r\n this.nsldsObject.studentCity = lineItem[1].trim();\r\n break;\r\n case 'StudentStateCode':\r\n this.nsldsObject.studentStateCode = lineItem[1].trim();\r\n break;\r\n case 'StudentCountryCode':\r\n this.nsldsObject.studentCountryCode = lineItem[1].trim();\r\n break;\r\n case 'StudentZipCode':\r\n this.nsldsObject.studentZipCode = lineItem[1]\r\n .trim()\r\n .replace('(', '')\r\n .replace(')', '');\r\n break;\r\n case 'StudentEmailAddress':\r\n this.nsldsObject.studentEmailAddress = lineItem[1].trim();\r\n break;\r\n case 'StudentHomePhoneCountryCode':\r\n this.nsldsObject.studentHomePhoneCountryCode = lineItem[1].trim();\r\n break;\r\n case 'StudentHomePhoneNumber':\r\n this.nsldsObject.studentHomePhoneNumber = lineItem[1].trim();\r\n break;\r\n case 'StudentHomePhonePreferred':\r\n this.nsldsObject.studentHomePhonePreferred = lineItem[1].trim();\r\n break;\r\n case 'StudentCellPhoneContryCode':\r\n this.nsldsObject.studentCellPhoneContryCode = lineItem[1].trim();\r\n break;\r\n case 'StudentCellPhoneNumber':\r\n this.nsldsObject.studentCellPhoneNumber = lineItem[1].trim();\r\n break;\r\n case 'StudentCellPhonePreferred':\r\n this.nsldsObject.studentCellPhonePreferred = lineItem[1].trim();\r\n break;\r\n case 'StudentWorkPhoneContryCode':\r\n this.nsldsObject.studentWorkPhoneContryCode = lineItem[1].trim();\r\n break;\r\n case 'StudentWorkPhoneNumber':\r\n this.nsldsObject.studentWorkPhoneNumber = lineItem[1].trim();\r\n break;\r\n case 'StudentWorkPhonePreferred':\r\n this.nsldsObject.studentWorkPhonePreferred = lineItem[1].trim();\r\n break;\r\n case 'StudentSULAMaximumEligibilityPeriod':\r\n this.nsldsObject.studentSULAMaximumEligibilityPeriod = lineItem[1].trim();\r\n break;\r\n case 'StudentSULASubsidizedUsagePeriod':\r\n this.nsldsObject.studentSULASubsidizedUsagePeriod = lineItem[1].trim();\r\n break;\r\n case 'StudentSULARemainingEligibilityPeriod':\r\n this.nsldsObject.studentSULARemainingEligibilityPeriod = lineItem[1].trim();\r\n break;\r\n case 'StudentEnrollmentStatus':\r\n case 'StudentEnrollmentStatusCodeDescription':\r\n this.nsldsObject.studentEnrollmentStatus = lineItem[1].trim();\r\n break;\r\n case 'StudentEnrollmentStatusEffectiveDate':\r\n this.nsldsObject.studentEnrollmentStatusEffectiveDate =\r\n lineItem[1].trim().length > 0 ? lineItem[1].trim() : null;\r\n break;\r\n case 'StudentTotalAllLoansOutstandingPrincipal':\r\n this.nsldsObject.studentTotalAllLoansOutstandingPrincipal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'StudentTotalAllLoansOutstandingInterest':\r\n this.nsldsObject.studentTotalAllLoansOutstandingInterest = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'StudentPellLifetimeEligibilityUsed':\r\n this.nsldsObject.studentPellLifetimeEligibilityUsed = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replace('%', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'StudentIraqandAfghanistanServiceLifetimeEligibilityUsed':\r\n this.nsldsObject.studentIraqAndAfghanistanServiceLifetimeEligibilityUsed =\r\n lineItem[1].trim() === ''\r\n ? null\r\n : lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '')\r\n .replaceAll('%', '');\r\n break;\r\n case 'StudentTotalAllGrants':\r\n this.nsldsObject.studentTotalAllGrants = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'UndergraduateAggregateSubsidizedTotal':\r\n this.nsldsObject.undergraduateAggregateSubsidizedTotal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'UndergraduateAggregateUnsubsidizedTotal':\r\n this.nsldsObject.undergraduateAggregateUnsubsidizedTotal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'UndergraduateAggregateCombinedTotal':\r\n this.nsldsObject.undergraduateAggregateCombinedTotal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'GraduateAggregateSubsidizedTotal':\r\n this.nsldsObject.graduateAggregateSubsidizedTotal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'GraduateAggregateUnsubsidizedTotal':\r\n this.nsldsObject.graduateAggregateUnsubsidizedTotal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'GraduateAggregateCombinedTotal':\r\n this.nsldsObject.graduateAggregateCombinedTotal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'AggregateSubsidizedTotal(UndergraduateandGraduate)':\r\n this.nsldsObject.aggregateSubsidizedTotal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'AggregateUnsubsidizedTotal(UndergraduateandGraduate)':\r\n this.nsldsObject.aggregateUnsubsidizedTotal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'AggregateCombinedTotal(UndergraduateandGraduate)':\r\n this.nsldsObject.aggregateCombinedTotal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n ParseNSLDSTotals = (lineItem) => {\r\n let currLoanType = lineItem[0]\r\n .replace('Total ', '')\r\n .replace(' Outstanding', '')\r\n .replace(' Principal', '')\r\n .replace(' Interest', '');\r\n\r\n let index = null;\r\n index = this.nsldsObject.totalOutstandingByLoanType.findIndex(\r\n (a) => a.loanType === currLoanType\r\n );\r\n if (index > -1) {\r\n if (lineItem[0].includes('Principal')) {\r\n this.nsldsObject.totalOutstandingByLoanType[index].principal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n } else if (lineItem[0].includes('Interest')) {\r\n this.nsldsObject.totalOutstandingByLoanType[index].interest = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n }\r\n } else {\r\n let newTotalLoanType = new NSLDSTotalOutstanding();\r\n newTotalLoanType.loanType = currLoanType;\r\n if (lineItem[0].includes('Principal')) {\r\n newTotalLoanType.principal = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n } else if (lineItem[0].includes('Interest')) {\r\n newTotalLoanType.interest = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n }\r\n //array of objects\r\n this.nsldsObject.totalOutstandingByLoanType.push(newTotalLoanType);\r\n }\r\n };\r\n\r\n ParseNSLDSGrants = (lineItem) => {\r\n if (\r\n this.nsldsObject.grants[this.grantIndex] === undefined ||\r\n this.nsldsObject.grants[this.grantIndex] === null\r\n ) {\r\n let newGrant = new NSLDSGrant();\r\n this.nsldsObject.grants.push(newGrant);\r\n }\r\n\r\n let itemName = lineItem[0].replaceAll(' ', '');\r\n if (itemName.substring(0, 15).includes('GrantContact')) {\r\n this.ParseNSLDSGrantContact(lineItem);\r\n } else {\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'GrantType':\r\n //increment the loan every time we see a loan type\r\n // and current loan object has a loan type.\r\n // set all indexes to 0 - LoanType indicates start of a new loan.\r\n if (this.nsldsObject.grants[this.grantIndex].grantType !== null) {\r\n let newGrant = new NSLDSGrant();\r\n this.nsldsObject.grants.push(newGrant);\r\n this.grantIndex++;\r\n this.grantContactIndex = 0;\r\n }\r\n this.nsldsObject.grants[this.grantIndex].grantType = lineItem[1].trim();\r\n break;\r\n case 'GrantTypeCodeDescription':\r\n //increment the loan every time we see a loan type\r\n // and current loan object has a loan type.\r\n // set all indexes to 0 - LoanType indicates start of a new loan.\r\n if (this.nsldsObject.grants[this.grantIndex].grantTypeCodeDescription !== null) {\r\n let newGrant = new NSLDSGrant();\r\n this.nsldsObject.grants.push(newGrant);\r\n this.grantIndex++;\r\n this.grantContactIndex = 0;\r\n }\r\n this.nsldsObject.grants[this.grantIndex].grantType = lineItem[1].trim();\r\n break;\r\n case 'GrantAttendingSchoolName':\r\n this.nsldsObject.grants[this.grantIndex].grantAttendingSchoolName = lineItem[1].trim();\r\n break;\r\n case 'GrantAttendingSchoolOPEID':\r\n this.nsldsObject.grants[this.grantIndex].grantAttendingSchoolOpeid = lineItem[1].trim();\r\n break;\r\n case 'GrantAwardYear':\r\n this.nsldsObject.grants[this.grantIndex].grantAwardYear = lineItem[1].trim();\r\n break;\r\n case 'GrantScheduledAmount':\r\n this.nsldsObject.grants[this.grantIndex].grantScheduledAmount = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'GrantAwardAmount':\r\n this.nsldsObject.grants[this.grantIndex].grantAwardAmount = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'GrantDisbursedAmount':\r\n this.nsldsObject.grants[this.grantIndex].grantDisbursedAmount = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'GrantRemainingAmounttobePaid':\r\n this.nsldsObject.grants[this.grantIndex].grantRemainingAmountToBePaid =\r\n lineItem[1].trim() === ''\r\n ? null\r\n : lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'GrantFirstTime':\r\n this.nsldsObject.grants[this.grantIndex].grantFirstTime = lineItem[1].trim();\r\n break;\r\n case 'GrantAdditionalEligibility':\r\n this.nsldsObject.grants[this.grantIndex].grantAdditionalEligibility = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n };\r\n\r\n ParseNSLDSOverpayments = (lineItem) => {\r\n if (\r\n this.nsldsObject.overpayments[this.overpaymentIndex] === undefined ||\r\n this.nsldsObject.overpayments[this.overpaymentIndex] === null\r\n ) {\r\n let newOverpayment = new NSLDSOverpayment();\r\n this.nsldsObject.overpayments.push(newOverpayment);\r\n }\r\n\r\n let itemName = lineItem[0].replaceAll(' ', '');\r\n if (itemName.substring(0, 25).includes('OverpaymentContact')) {\r\n this.ParseNSLDSOverpaymentContact(lineItem);\r\n } else if (itemName.substring(0, 26).includes('OverpaymentSpecialContact')) {\r\n this.ParseNSLDSOverpaymentSpecialContact(lineItem);\r\n } else {\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'OverpaymentAidType':\r\n //increment the loan every time we see a loan type\r\n // and current loan object has a loan type.\r\n // set all indexes to 0 - LoanType indicates start of a new loan.\r\n if (this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentAidType !== null) {\r\n let newOverpayment = new NSLDSOverpayment();\r\n this.nsldsObject.overpayments.push(newOverpayment);\r\n this.overpaymentIndex++;\r\n this.overpaymentContactIndex = 0;\r\n this.overpaymentSpecialContactIndex = 0;\r\n }\r\n\r\n this.nsldsObject.overpayments[\r\n this.overpaymentIndex\r\n ].overpaymentAidType = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentAttendingSchoolName':\r\n this.nsldsObject.overpayments[\r\n this.overpaymentIndex\r\n ].overpaymentAttendingSchoolName = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentAttendingSchoolOPEID':\r\n this.nsldsObject.overpayments[\r\n this.overpaymentIndex\r\n ].overpaymentAttendingSchoolOpeid = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentDisbursementDate':\r\n this.nsldsObject.overpayments[\r\n this.overpaymentIndex\r\n ].overpaymentDisbursementDate = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentStatus':\r\n this.nsldsObject.overpayments[\r\n this.overpaymentIndex\r\n ].overpaymentStatus = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentRepaymentDate':\r\n this.nsldsObject.overpayments[\r\n this.overpaymentIndex\r\n ].overpaymentRepaymentDate = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n };\r\n\r\n GetLoanType = (nsldsLoanType) => {\r\n let loanType = 'OTH';\r\n\r\n switch (nsldsLoanType) {\r\n case 'DIRECT STAFFORD SUBSIDIZED':\r\n case 'DIRECT STAFFORD SUBSIDIZED (SULA ELIGIBLE)':\r\n loanType = 'SDIR';\r\n break;\r\n case 'DIRECT CONSOLIDATED SUBSIDIZED':\r\n case 'DIRECT CONSOLIDATED SUBSIDIZED (SULA ELIGIBLE)':\r\n loanType = 'SCON';\r\n break;\r\n case 'DIRECT CONSOLIDATED UNSUBSIDIZED':\r\n loanType = 'UCON';\r\n break;\r\n case 'DIRECT STAFFORD UNSUBSIDIZED':\r\n loanType = 'UDIR';\r\n break;\r\n case 'FFEL CONSOLIDATED':\r\n loanType = 'CON';\r\n break;\r\n case 'FEDERAL PERKINS':\r\n case 'NATIONAL DIRECT STUDENT LOAN (PERKINS)':\r\n case 'PERKINS EXPANDED LENDING':\r\n case 'NATIONAL DEFENSE LOAN (PERKINS)':\r\n loanType = 'PERK';\r\n break;\r\n case 'DIRECT PLUS GRADUATE':\r\n loanType = 'DPLG';\r\n break;\r\n case 'FFEL PLUS GRADUATE':\r\n loanType = 'FPLG';\r\n break;\r\n case 'DIRECT PLUS PARENT':\r\n loanType = 'DPL';\r\n break;\r\n case 'FFEL PLUS PARENT':\r\n loanType = 'FPL';\r\n break;\r\n case 'FFEL STAFFORD SUBSIDIZED':\r\n loanType = 'SSTAF';\r\n break;\r\n case 'FFEL STAFFORD UNSUBSIDIZED':\r\n case 'FFEL STAFFORD NON-SUBSIDIZED':\r\n loanType = 'USTAF';\r\n break;\r\n case 'DIRECT UNSUBSIDIZED (TEACH)':\r\n loanType = 'TEACH';\r\n break;\r\n case 'FFEL SUPPLEMENTAL LOAN (SLS)':\r\n loanType = 'SLS';\r\n break;\r\n case 'DIRECT PLUS CONSOLIDATED':\r\n loanType = 'DPC';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return loanType;\r\n };\r\n\r\n ParseNSLDSLoans = (lineItem) => {\r\n if (\r\n this.nsldsObject.loans[this.loanIndex] === undefined ||\r\n this.nsldsObject.loans[this.loanIndex] === null\r\n ) {\r\n let newLoan = new NSLDSLoan();\r\n this.nsldsObject.loans.push(newLoan);\r\n }\r\n\r\n let itemName = lineItem[0].replaceAll(' ', '');\r\n if (itemName.substring(0, 25).includes('LoanStatus')) {\r\n this.ParseNsldsLoanStatus(lineItem);\r\n } else if (itemName.substring(0, 25).includes('LoanDisbursement')) {\r\n this.ParseNsldsLoanDisbursement(lineItem);\r\n } else if (itemName.substring(0, 25).includes('LoanContact')) {\r\n this.ParseNsldsLoanContact(lineItem);\r\n } else if (itemName.substring(0, 25).includes('LoanSpecialContact')) {\r\n this.ParseNSLDSLoanSpecialContact(lineItem);\r\n } else {\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'LoanTypeDescription':\r\n case 'LoanType':\r\n //increment the loan every time we see a loan type\r\n // and current loan object has a loan type.\r\n // set all indexes to 0 - LoanType indicates start of a new loan.\r\n if (this.nsldsObject.loans[this.loanIndex].loanType !== null) {\r\n let newLoan = new NSLDSLoan();\r\n this.nsldsObject.loans.push(newLoan);\r\n this.loanIndex++;\r\n this.loanStatusIndex = 0;\r\n this.loanDisbursementIndex = 0;\r\n this.loanContactIndex = 0;\r\n this.loanSpecialContactIndex = 0;\r\n }\r\n\r\n this.nsldsObject.loans[this.loanIndex].loanType = this.GetLoanType(lineItem[1].trim());\r\n break;\r\n case 'LoanAwardID':\r\n this.nsldsObject.loans[this.loanIndex].loanAwardId = lineItem[1].trim();\r\n break;\r\n case 'LoanAttendingSchoolName':\r\n this.nsldsObject.loans[this.loanIndex].loanAttendingSchoolName = lineItem[1].trim();\r\n break;\r\n case 'LoanAttendingSchoolOPEID':\r\n this.nsldsObject.loans[this.loanIndex].loanAttendingSchoolOpeid = lineItem[1].trim();\r\n break;\r\n case 'LoanDate':\r\n this.nsldsObject.loans[this.loanIndex].loanDate = lineItem[1].trim();\r\n break;\r\n case 'LoanRepaymentBeginDate':\r\n this.nsldsObject.loans[this.loanIndex].loanRepaymentBeginDate = lineItem[1].trim();\r\n break;\r\n case 'LoanPeriodBeginDate':\r\n this.nsldsObject.loans[this.loanIndex].loanPeriodBeginDate = lineItem[1].trim();\r\n break;\r\n case 'LoanPeriodEndDate':\r\n this.nsldsObject.loans[this.loanIndex].loanPeriodEndDate = lineItem[1].trim();\r\n break;\r\n case 'LoanAmount':\r\n this.nsldsObject.loans[this.loanIndex].loanAmount = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'LoanDisbursedAmount':\r\n this.nsldsObject.loans[this.loanIndex].loanDisbursedAmount = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'LoanCanceledAmount':\r\n this.nsldsObject.loans[this.loanIndex].loanCanceledAmount = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'LoanOutstandingPrincipalBalance':\r\n this.nsldsObject.loans[this.loanIndex].loanOutstandingPrincipalBalance = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'LoanOutstandingPrincipalBalanceasofDate':\r\n this.nsldsObject.loans[this.loanIndex].loanOutstandingPrincipalBalanceAsOfDate =\r\n lineItem[1].trim() === '' ? null : lineItem[1].trim();\r\n break;\r\n case 'LoanOutstandingInterestBalance':\r\n this.nsldsObject.loans[this.loanIndex].loanOutstandingInterestBalance = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'LoanOutstandingInterestBalanceasofDate':\r\n this.nsldsObject.loans[this.loanIndex].loanOutstandingInterestBalanceAsOfDate =\r\n lineItem[1].trim() === '' ? null : lineItem[1].trim();\r\n break;\r\n case 'LoanInterestRateTypeDescription':\r\n case 'LoanInterestRateType':\r\n this.nsldsObject.loans[this.loanIndex].loanInterestRateType = lineItem[1].trim();\r\n break;\r\n case 'LoanInterestRate':\r\n this.nsldsObject.loans[this.loanIndex].loanInterestRate = lineItem[1]\r\n .trim()\r\n .replace('%', '');\r\n break;\r\n case 'LoanRepaymentPlanTypeCodeDescription':\r\n case 'LoanRepaymentPlanType':\r\n this.nsldsObject.loans[this.loanIndex].loanRepaymentPlanType = lineItem[1].trim();\r\n break;\r\n case 'LoanRepaymentPlanBeginDate':\r\n this.nsldsObject.loans[this.loanIndex].loanRepaymentPlanBeginDate = lineItem[1].trim();\r\n break;\r\n case 'LoanRepaymentPlanScheduledAmount':\r\n this.nsldsObject.loans[this.loanIndex].loanRepaymentPlanScheduledAmount =\r\n lineItem[1].trim() === ''\r\n ? null\r\n : lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'LoanRepaymentPlanIDRPlanAnniversaryDate':\r\n this.nsldsObject.loans[this.loanIndex].loanRepaymentPlanIdrPlanAnniversaryDate =\r\n lineItem[1].trim() === '' ? null : lineItem[1].trim();\r\n break;\r\n case 'LoanConfirmedSubsidyStatus':\r\n this.nsldsObject.loans[this.loanIndex].loanConfirmedSubsidyStatus = lineItem[1].trim();\r\n break;\r\n case 'LoanSubsidizedUsageinYears':\r\n this.nsldsObject.loans[this.loanIndex].loanSubsidizedUsageInYears =\r\n lineItem[1].trim() === '' ? null : lineItem[1].trim();\r\n break;\r\n case 'LoanReaffirmationDate':\r\n this.nsldsObject.loans[this.loanIndex].loanReaffirmationDate = lineItem[1].trim();\r\n break;\r\n case 'LoanMostRecentPaymentEffectiveDate':\r\n this.nsldsObject.loans[\r\n this.loanIndex\r\n ].loanMostRecentPaymentEffectiveDate = lineItem[1].trim();\r\n break;\r\n case 'LoanNextPaymentDueDate':\r\n this.nsldsObject.loans[this.loanIndex].loanNextPaymentDueDate = lineItem[1].trim();\r\n break;\r\n case 'LoanCumulativePaymentAmount':\r\n this.nsldsObject.loans[this.loanIndex].loanCumulativePaymentAmount = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n case 'LoanPSLFCumulativeMatchedMonths':\r\n this.nsldsObject.loans[\r\n this.loanIndex\r\n ].loanPslfCumulativeMatchedMonths = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n };\r\n\r\n ParseNsldsLoanStatus = (lineItem) => {\r\n if (\r\n this.nsldsObject.loans[this.loanIndex].loanStatuses[this.loanStatusIndex] === undefined ||\r\n this.nsldsObject.loans[this.loanIndex].loanStatuses[this.loanStatusIndex] === null\r\n ) {\r\n let newLoanStatus = new NSLDSLoanStatus();\r\n this.nsldsObject.loans[this.loanIndex].loanStatuses.push(newLoanStatus);\r\n }\r\n\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'LoanStatus':\r\n //increment the status index everytime we see a status where loan status exists\r\n if (\r\n this.nsldsObject.loans[this.loanIndex].loanStatuses[this.loanStatusIndex].loanStatus !==\r\n null\r\n ) {\r\n let newLoanStatus = new NSLDSLoanStatus();\r\n this.nsldsObject.loans[this.loanIndex].loanStatuses.push(newLoanStatus);\r\n this.loanStatusIndex++;\r\n }\r\n this.nsldsObject.loans[this.loanIndex].loanStatuses[\r\n this.loanStatusIndex\r\n ].loanStatus = lineItem[1].trim();\r\n break;\r\n case 'LoanStatusDescription':\r\n this.nsldsObject.loans[this.loanIndex].loanStatuses[\r\n this.loanStatusIndex\r\n ].loanStatusDescription = lineItem[1].trim();\r\n break;\r\n case 'LoanStatusEffectiveDate':\r\n this.nsldsObject.loans[this.loanIndex].loanStatuses[\r\n this.loanStatusIndex\r\n ].loanStatusEffectiveDate = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n ParseNsldsLoanDisbursement = (lineItem) => {\r\n if (\r\n this.nsldsObject.loans[this.loanIndex].loanDisbursements[this.loanDisbursementIndex] ===\r\n undefined ||\r\n this.nsldsObject.loans[this.loanIndex].loanDisbursements[this.loanDisbursementIndex] === null\r\n ) {\r\n let newLoanDisbursement = new NSLDSLoanDisbursement();\r\n this.nsldsObject.loans[this.loanIndex].loanDisbursements.push(newLoanDisbursement);\r\n }\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'LoanDisbursementDate':\r\n //increment the disbursement index everytime we see a status where loan status exists\r\n if (\r\n this.nsldsObject.loans[this.loanIndex].loanDisbursements[this.loanDisbursementIndex]\r\n .loanDisbursementDate !== null\r\n ) {\r\n let newLoanDisbursement = new NSLDSLoanDisbursement();\r\n this.nsldsObject.loans[this.loanIndex].loanDisbursements.push(newLoanDisbursement);\r\n this.loanDisbursementIndex++;\r\n }\r\n this.nsldsObject.loans[this.loanIndex].loanDisbursements[\r\n this.loanDisbursementIndex\r\n ].loanDisbursementDate = lineItem[1].trim();\r\n break;\r\n case 'LoanDisbursementAmount':\r\n this.nsldsObject.loans[this.loanIndex].loanDisbursements[\r\n this.loanDisbursementIndex\r\n ].loanDisbursementAmount = lineItem[1]\r\n .trim()\r\n .replace('$', '')\r\n .replaceAll(',', '');\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n ParseNsldsLoanContact = (lineItem) => {\r\n if (\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[this.loanContactIndex] === undefined ||\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[this.loanContactIndex] === null\r\n ) {\r\n let newLoanContact = new NSLDSLoanContact();\r\n this.nsldsObject.loans[this.loanIndex].loanContacts.push(newLoanContact);\r\n }\r\n\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'LoanContactType':\r\n //increment the disbursement index everytime we see a status where loan status exists\r\n if (\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[this.loanContactIndex]\r\n .loanContactType !== null\r\n ) {\r\n let newLoanDisbursement = new NSLDSLoanContact();\r\n this.nsldsObject.loans[this.loanIndex].loanContacts.push(newLoanDisbursement);\r\n this.loanContactIndex++;\r\n }\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactType = lineItem[1].trim();\r\n break;\r\n case 'LoanContactName':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactName = lineItem[1].trim();\r\n break;\r\n case 'LoanContactStreetAddress1':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactStreetAddress1 = lineItem[1].trim();\r\n break;\r\n case 'LoanContactStreetAddress2':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactStreetAddress2 = lineItem[1].trim();\r\n break;\r\n case 'LoanContactCity':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactCity = lineItem[1].trim();\r\n break;\r\n case 'LoanContactStateCode':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactStateCode = lineItem[1].trim();\r\n break;\r\n case 'LoanContactZipCode':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactZipCode = lineItem[1]\r\n .trim()\r\n .replace('(', '')\r\n .replace(')', '');\r\n break;\r\n case 'LoanContactPhoneNumber':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactPhoneNumber = lineItem[1].trim();\r\n break;\r\n case 'LoanContactPhoneExtension':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactPhoneExtension = lineItem[1].trim();\r\n break;\r\n case 'LoanContactEmailAddress':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactEmailAddress = lineItem[1].trim();\r\n break;\r\n case 'LoanContactWebSiteAddress':\r\n this.nsldsObject.loans[this.loanIndex].loanContacts[\r\n this.loanContactIndex\r\n ].loanContactWebSiteAddress = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n ParseNSLDSLoanSpecialContact = (lineItem) => {\r\n if (\r\n this.nsldsObject.loans[this.loanIndex].loanSpecialContacts[this.loanSpecialContactIndex] ===\r\n undefined ||\r\n this.nsldsObject.loans[this.loanIndex].loanSpecialContacts[this.loanSpecialContactIndex] ===\r\n null\r\n ) {\r\n let newLoanContact = new NSLDSLoanSpecialContact();\r\n this.nsldsObject.loans[this.loanIndex].loanSpecialContacts.push(newLoanContact);\r\n }\r\n\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'LoanSpecialContactReason':\r\n //increment the disbursement index everytime we see a status where loan status exists\r\n if (\r\n this.nsldsObject.loans[this.loanIndex].loanSpecialContacts[this.loanSpecialContactIndex]\r\n .loanSpecialContactReason !== null\r\n ) {\r\n let newLoanContact = new NSLDSLoanSpecialContact();\r\n this.nsldsObject.loans[this.loanIndex].loanSpecialContacts.push(newLoanContact);\r\n this.loanSpecialContactIndex++;\r\n }\r\n this.nsldsObject.loans[this.loanIndex].loanSpecialContacts[\r\n this.loanSpecialContactIndex\r\n ].loanSpecialContactReason = lineItem[1].trim();\r\n break;\r\n case 'LoanSpecialContact':\r\n this.nsldsObject.loans[this.loanIndex].loanSpecialContacts[\r\n this.loanSpecialContactIndex\r\n ].loanSpecialContact = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n ParseNSLDSGrantContact = (lineItem) => {\r\n if (\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[this.grantContactIndex] ===\r\n undefined ||\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[this.grantContactIndex] === null\r\n ) {\r\n let newGrantContact = new NSLDSGrantContact();\r\n this.nsldsObject.grants[this.grantIndex].grantContacts.push(newGrantContact);\r\n }\r\n\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'GrantContactType':\r\n //increment the grant index everytime we see a grant where contact type exists\r\n if (\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[this.grantContactIndex]\r\n .grantContactType !== null\r\n ) {\r\n let newGrantContact = new NSLDSGrantContact();\r\n this.nsldsObject.grants[this.grantIndex].grantContacts.push(newGrantContact);\r\n this.grantContactIndex++;\r\n }\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[\r\n this.grantContactIndex\r\n ].grantContactType = lineItem[1].trim();\r\n break;\r\n case 'GrantContactName':\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[\r\n this.grantContactIndex\r\n ].grantContactName = lineItem[1].trim();\r\n break;\r\n case 'GrantContactStreetAddress1':\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[\r\n this.grantContactIndex\r\n ].grantContactStreetAddress1 = lineItem[1].trim();\r\n break;\r\n case 'GrantContactStreetAddress2':\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[\r\n this.grantContactIndex\r\n ].grantContactStreetAddress2 = lineItem[1].trim();\r\n break;\r\n case 'GrantContactCity':\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[\r\n this.grantContactIndex\r\n ].grantContactCity = lineItem[1].trim();\r\n break;\r\n case 'GrantContactStateCode':\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[\r\n this.grantContactIndex\r\n ].grantContactStateCode = lineItem[1].trim();\r\n break;\r\n case 'GrantContactZipCode':\r\n this.nsldsObject.grants[this.grantIndex].grantContacts[\r\n this.grantContactIndex\r\n ].grantContactZipCode = lineItem[1]\r\n .trim()\r\n .replace('(', '')\r\n .replace(')', '');\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n ParseNSLDSOverpaymentContact = (lineItem) => {\r\n if (\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ] === undefined ||\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ] === null\r\n ) {\r\n let newOverpaymentContact = new NSLDSOverpaymentContact();\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts.push(\r\n newOverpaymentContact\r\n );\r\n }\r\n\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'OverpaymentContactType':\r\n //increment the grant index everytime we see a grant where contact type exists\r\n if (\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactType !== null\r\n ) {\r\n let newOverpaymentContact = new NSLDSOverpaymentContact();\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts.push(\r\n newOverpaymentContact\r\n );\r\n this.overpaymentContactIndex++;\r\n }\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactType = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactName':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactName = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactStreetAddress1':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactStreetAddress1 = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactStreetAddress2':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactStreetAddress2 = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactCity':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactCity = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactStateCode':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactStateCode = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactZipCode':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactZipCode = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactPhoneNumber':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactPhoneNumber = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactPhoneExtension':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactPhoneExtension = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactEmailAddress':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactEmailAddress = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentContactWebSiteAddress':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentContacts[\r\n this.overpaymentContactIndex\r\n ].overpaymentContactWebSiteAddress = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n ParseNSLDSOverpaymentSpecialContact = (lineItem) => {\r\n if (\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentSpecialContacts[\r\n this.overpaymentSpecialContactIndex\r\n ] === undefined ||\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentSpecialContacts[\r\n this.overpaymentSpecialContactIndex\r\n ] === null\r\n ) {\r\n let newOverpaymentSpecialContact = new NSLDSOverpaymentSpecialContact();\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentSpecialContacts.push(\r\n newOverpaymentSpecialContact\r\n );\r\n }\r\n\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'OverpaymentSpecialContact':\r\n //increment the grant index everytime we see a grant where contact type exists\r\n if (\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentSpecialContacts[\r\n this.overpaymentSpecialContactIndex\r\n ].overpaymentSpecialContact !== null\r\n ) {\r\n let newOverpaymentSpecialContact = new NSLDSOverpaymentSpecialContact();\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentSpecialContacts.push(\r\n newOverpaymentSpecialContact\r\n );\r\n this.overpaymentSpecialContactIndex++;\r\n }\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentSpecialContacts[\r\n this.overpaymentSpecialContactIndex\r\n ].overpaymentSpecialContact = lineItem[1].trim();\r\n break;\r\n case 'OverpaymentSpecialContactReason':\r\n this.nsldsObject.overpayments[this.overpaymentIndex].overpaymentSpecialContacts[\r\n this.overpaymentSpecialContactIndex\r\n ].overpaymentSpecialContactReason = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n ParseNSLDSPrograms = (lineItem) => {\r\n if (\r\n this.nsldsObject.programs[this.programIndex] === undefined ||\r\n this.nsldsObject.programs[this.programIndex] === null\r\n ) {\r\n let newProgram = new NSLDSProgram();\r\n this.nsldsObject.programs.push(newProgram);\r\n }\r\n\r\n let itemName = lineItem[0].replaceAll(' ', '');\r\n if (itemName.substring(0, 25).includes('ProgramStatus')) {\r\n this.ParseNSLDSProgramStatus(lineItem);\r\n } else {\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'ProgramSchoolName':\r\n //increment the loan every time we see a loan type\r\n // and current loan object has a loan type.\r\n // set all indexes to 0 - LoanType indicates start of a new loan.\r\n if (this.nsldsObject.programs[this.programIndex].programSchoolName !== null) {\r\n let newProgram = new NSLDSProgram();\r\n this.nsldsObject.programs.push(newProgram);\r\n this.programIndex++;\r\n this.programStatusIndex = 0;\r\n }\r\n\r\n this.nsldsObject.programs[this.programIndex].programSchoolName = lineItem[1].trim();\r\n break;\r\n case 'ProgramSchoolOPEID':\r\n this.nsldsObject.programs[this.programIndex].programSchoolOpeid = lineItem[1].trim();\r\n break;\r\n case 'ProgramCIPTitle':\r\n this.nsldsObject.programs[this.programIndex].programCIPTitle = lineItem[1].trim();\r\n break;\r\n case 'ProgramCredentialLevelCodeDescription':\r\n case 'ProgramCredentialLevel':\r\n this.nsldsObject.programs[this.programIndex].programCredentialLevel = lineItem[1].trim();\r\n break;\r\n case 'ProgramBeginDate':\r\n this.nsldsObject.programs[this.programIndex].programBeginDate = lineItem[1].trim();\r\n break;\r\n case 'ProgramPublishedLengthInYears':\r\n this.nsldsObject.programs[\r\n this.programIndex\r\n ].programPublishedLengthInYears = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n };\r\n\r\n ParseNSLDSProgramStatus = (lineItem) => {\r\n if (\r\n this.nsldsObject.programs[this.programIndex].programStatuses[this.programStatusIndex] ===\r\n undefined ||\r\n this.nsldsObject.programs[this.programIndex].programStatuses[this.programStatusIndex] === null\r\n ) {\r\n let newProgramStatus = new NSLDSProgramStatus();\r\n this.nsldsObject.programs[this.programIndex].programStatuses.push(newProgramStatus);\r\n }\r\n\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'ProgramStatusCodeDescription':\r\n case 'ProgramStatusDescription':\r\n //increment the grant index everytime we see a grant where contact type exists\r\n if (\r\n this.nsldsObject.programs[this.programIndex].programStatuses[this.programStatusIndex]\r\n .programStatusDescription !== null\r\n ) {\r\n let newProgramStatus = new NSLDSProgramStatus();\r\n this.nsldsObject.programs[this.programIndex].programStatuses.push(newProgramStatus);\r\n this.programStatusIndex++;\r\n }\r\n this.nsldsObject.programs[this.programIndex].programStatuses[\r\n this.programStatusIndex\r\n ].programStatusDescription = lineItem[1].trim();\r\n break;\r\n case 'ProgramStatusEffectiveDate':\r\n this.nsldsObject.programs[this.programIndex].programStatuses[\r\n this.programStatusIndex\r\n ].programStatusEffectiveDate = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n ParseNSLDSAwards = (lineItem) => {\r\n if (\r\n this.nsldsObject.awards[this.awardIndex] === undefined ||\r\n this.nsldsObject.awards[this.awardIndex] === null\r\n ) {\r\n let newAward = new NSLDSAward();\r\n this.nsldsObject.awards.push(newAward);\r\n }\r\n\r\n switch (lineItem[0].replaceAll(' ', '')) {\r\n case 'AwardSchoolName':\r\n //increment the loan every time we see a loan type\r\n // and current loan object has a loan type.\r\n // set all indexes to 0 - LoanType indicates start of a new loan.\r\n if (this.nsldsObject.awards[this.awardIndex].awardSchoolName !== null) {\r\n let newAward = new NSLDSAward();\r\n this.nsldsObject.awards.push(newAward);\r\n this.awardIndex++;\r\n }\r\n\r\n this.nsldsObject.awards[this.awardIndex].awardSchoolName = lineItem[1].trim();\r\n break;\r\n case 'AwardSchoolOPEID':\r\n this.nsldsObject.awards[this.awardIndex].awardSchoolOpeid = lineItem[1].trim();\r\n break;\r\n case 'AwardEarliestDisbursementDate':\r\n this.nsldsObject.awards[this.awardIndex].awardEarliestDisbursementDate = lineItem[1].trim();\r\n break;\r\n case 'AwardLoanPeriodBeginDate':\r\n this.nsldsObject.awards[this.awardIndex].awardLoanPeriodBeginDate = lineItem[1].trim();\r\n break;\r\n case 'AwardLoanPeriodEndDate':\r\n this.nsldsObject.awards[this.awardIndex].awardLoanPeriodEndDate = lineItem[1].trim();\r\n break;\r\n case 'AwardSubsidizedUsage':\r\n this.nsldsObject.awards[this.awardIndex].awardSubsidizedUsage = lineItem[1].trim();\r\n break;\r\n case 'AwardSubsidyStatus':\r\n this.nsldsObject.awards[this.awardIndex].awardSubsidyStatus = lineItem[1].trim();\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport b64toBlob from 'b64-to-blob';\r\nimport { connect } from 'react-redux';\r\nimport { FileUpload } from 'fiducius-ui';\r\n\r\nimport { authLoadPermissions } from '../../../auth';\r\nimport { getUserId } from '../../../auth';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport {\r\n documentsHandleFormChange,\r\n documentsLoadExampleFile,\r\n documentsLoadCollection,\r\n} from '../../../documents';\r\n\r\nimport { nsldsSetFormData } from '../redux/operations';\r\n\r\nimport { ApiFileWrapper, ExampleFileButton } from '../../../documents';\r\nimport { NSLDSImporter } from '../types/nslds-converter';\r\n\r\nconst NSLDSFileTypeList = ['.txt'];\r\nconst OthersFileTypeList = ['.pdf', '.gif', '.bmp', '.jpg', '.jpeg', '.tif', '.tiff', '.png'];\r\n\r\nclass NSLDSFile extends React.Component {\r\n static propTypes = {\r\n id: t.string,\r\n file: t.object,\r\n exampleFile: t.object,\r\n getExampleDocData: t.func.isRequired,\r\n hasFailed: t.bool.isRequired,\r\n //isDownloading: t.bool.isRequired,\r\n isUploading: t.bool.isRequired,\r\n requiredUpload: t.bool,\r\n uploadDoc: t.func.isRequired,\r\n uploadSuccessful: t.func,\r\n addError: t.func.isRequired,\r\n loadDocs: t.func.isRequired,\r\n nsldsHandleChange: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n shouldDownload: false,\r\n shouldDownloadExampleFile: false,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { exampleFile, file, hasFailed, isUploading /*, isDownloading*/ } = this.props;\r\n const { shouldDownload, shouldDownloadExampleFile } = this.state;\r\n\r\n if (shouldDownload && file.fileData) {\r\n this.getFileFromData(file.fileData, file.name);\r\n this.setState({ shouldDownload: false });\r\n }\r\n\r\n if (shouldDownloadExampleFile && safeAccess(file.exampleFile, 'fileData')) {\r\n this.getFileFromData(\r\n file.exampleFile.fileData,\r\n `Example ${file.description}${file.exampleFile.name}`\r\n );\r\n this.setState({ shouldDownloadExampleFile: false });\r\n }\r\n\r\n if (prevProps.isUploading && !isUploading) {\r\n this.docUploaded(file, hasFailed);\r\n\r\n this.setState({ ...this.state });\r\n }\r\n }\r\n\r\n onUpload = async (file) => {\r\n const data = await this.extractFileData(file);\r\n const rest = this.props.file;\r\n this.props.uploadSuccessful();\r\n this.props.uploadDoc({ ...rest, ...data });\r\n };\r\n\r\n onUploadFailure = async (file) => {\r\n //const data = await this.extractFileData(file);\r\n const rest = this.props.file;\r\n\r\n if (rest.fileTypeCd === 'LNDT' || rest.fileTypeCd === 'SNLDS') {\r\n this.props.addError({\r\n title: 'Invalid file extension',\r\n detail: 'NSLDS files must be uploaded as a text file. (*.txt)',\r\n });\r\n } else {\r\n this.props.addError({\r\n title: 'Invalid file extension',\r\n detail:\r\n 'File must be uploaded in one of the following file formats. (*.pdf, *.gif, *.bmp, *.jpg, *.jpeg, *.tif, *.tiff, *.png)',\r\n });\r\n }\r\n };\r\n\r\n extractFileData = async (file) => {\r\n const fileString = await this.fileToBase64(file);\r\n const nslds = await this.getNsldsData(file);\r\n this.props.nsldsHandleChange(nslds);\r\n return {\r\n fileData: fileString,\r\n lastModified: file.lastModified,\r\n lastModifiedDate: file.lastModifiedDate,\r\n name: file.name,\r\n size: file.size,\r\n contentType: file.type,\r\n };\r\n };\r\n\r\n getNsldsData = async (file) => {\r\n const importer = new NSLDSImporter();\r\n let nslds = await importer.handleFileChosen(file);\r\n nslds.isSpouseNslds = false;\r\n return nslds;\r\n };\r\n\r\n fileToBase64 = (file) => {\r\n let base64string;\r\n const reader = new FileReader();\r\n\r\n return new Promise((resolve, reject) => {\r\n reader.onerror = () => {\r\n reader.abort();\r\n reject(new Error('Error parsing input file'));\r\n };\r\n\r\n reader.onload = () => {\r\n const dataUrl = reader.result;\r\n base64string = dataUrl.split(',')[1];\r\n resolve(base64string);\r\n };\r\n\r\n try {\r\n reader.readAsDataURL(file);\r\n } catch (ex) {\r\n reader.abort();\r\n }\r\n });\r\n };\r\n\r\n onDownloadExample = () => {\r\n const { exampleFile, file } = this.props;\r\n if (safeAccess(file.exampleFile, 'fileData', false)) {\r\n this.getFileFromData(\r\n file.exampleFile.fileData,\r\n `Example ${file.description}${file.exampleFile.name}`\r\n );\r\n } else {\r\n this.setState({ shouldDownloadExampleFile: true }, () =>\r\n this.props.getExampleDocData(file.fileTypeCd, file.id)\r\n );\r\n }\r\n };\r\n\r\n getExampleFileBadge = () => {\r\n const { hasExampleFile } = this.props.file;\r\n return (\r\n <ExampleFileButton brand=\"secondary\" show={hasExampleFile} onClick={this.onDownloadExample}>\r\n Example\r\n </ExampleFileButton>\r\n );\r\n };\r\n\r\n getFileFromData = (data, name) => {\r\n const blob = b64toBlob(data);\r\n\r\n // IE10+ : (has Blob, but not a[download] or URL)\r\n if (navigator.msSaveBlob) {\r\n return navigator.msSaveBlob(blob, name);\r\n } else {\r\n let link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = name;\r\n // Firefox and Edge require actual appended element for click()\r\n document.body.appendChild(link);\r\n link.click();\r\n window.URL.revokeObjectURL(link.href);\r\n link.remove();\r\n }\r\n };\r\n\r\n getUploaderProps() {\r\n const { allowedDownload, description, fileTypeCd, name, type } = this.props.file;\r\n let props = {\r\n accept: [],\r\n allowDelete: false,\r\n allowDownload: false,\r\n allowUpload: false,\r\n disabled: true,\r\n fileName: name,\r\n fileType: type,\r\n isDownloading: this.props.isDownloading,\r\n isUploading: this.props.isUploading,\r\n requiredUpload: this.props.requiredUpload,\r\n title: description,\r\n };\r\n\r\n // Some file types in the database should be validated for type\r\n if (fileTypeCd === 'LNDT' || fileTypeCd === 'SNLDS') {\r\n props.accept = NSLDSFileTypeList;\r\n } else {\r\n props.accept = OthersFileTypeList;\r\n }\r\n\r\n // only enable actions that should be enabled\r\n if (allowedDownload) {\r\n props.allowDownload = true;\r\n props.disabled = false;\r\n props.onDownloadFile = this.onDownload;\r\n } else if (!name) {\r\n props.allowUpload = true;\r\n props.disabled = false;\r\n props.onAddFile = this.onUpload;\r\n props.onAddFileFailure = this.onUploadFailure;\r\n }\r\n\r\n return props;\r\n }\r\n\r\n render() {\r\n return (\r\n <ApiFileWrapper>\r\n {this.props.file && (\r\n <>\r\n {this.getExampleFileBadge()}\r\n <FileUpload {...this.getUploaderProps()} />\r\n </>\r\n )}\r\n </ApiFileWrapper>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n const { createResource, loadResource } = state.documents.requests;\r\n let hasFailed = true;\r\n let isUploading = false;\r\n //let isDownloading = false;\r\n if (ownProps.file) {\r\n if (createResource.key === ownProps.file.id || loadResource.key === ownProps.file.id) {\r\n hasFailed = createResource.hasFailed || loadResource.hasFailed;\r\n isUploading = createResource.isLoading;\r\n //isDownloading = loadResource.isLoading;\r\n }\r\n }\r\n\r\n return { hasFailed, isUploading, /*isDownloading,*/ id: getUserId(state) };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n getExampleDocData: (code, hostFileId) => dispatch(documentsLoadExampleFile(code, hostFileId)),\r\n uploadDoc: async (file) => {\r\n await dispatch(documentsHandleFormChange(file));\r\n },\r\n loadDocs: async () => {\r\n await dispatch(authLoadPermissions());\r\n dispatch(documentsLoadCollection());\r\n },\r\n nsldsHandleChange: async (nslds) => {\r\n dispatch(nsldsSetFormData(nslds));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NSLDSFile);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardHeader,\r\n CardText,\r\n Header2,\r\n Link,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport NSLDSFile from './nslds-file';\r\n\r\nconst TextBlock = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst PaddedDiv = styled.div`\r\n margin-left: 1em;\r\n`;\r\n\r\nconst VerticalCentered = styled.div`\r\n height: 100%;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin-top: auto;\r\n margin-bottom: auto;\r\n`;\r\n\r\nconst SpacedDiv = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nclass TabUpload extends React.Component {\r\n static propTypes = {\r\n files: t.object,\r\n request: t.object,\r\n errors: t.object,\r\n updateNsldsUploaded: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n openModal: false,\r\n errors: [],\r\n };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate(prevProps) {}\r\n\r\n openCloseModal = (value) => {\r\n this.setState({ openModal: value });\r\n };\r\n\r\n getNSLDSFile = () => {\r\n const { files } = this.props;\r\n const matches = Object.keys(files).filter((k) => files[k].fileTypeCd === 'LNDT');\r\n return matches[0];\r\n };\r\n\r\n addError = (error) => {\r\n const { errors } = this.state;\r\n errors.push(error);\r\n this.setState({ ...this.state, errors: errors });\r\n };\r\n\r\n getErrorMessage = () => {\r\n const { errors } = this.state;\r\n let message;\r\n\r\n if (Object.keys(errors).length > 0) {\r\n message = errors[0].detail;\r\n } else {\r\n message = 'An error occurred during upload';\r\n }\r\n return message;\r\n };\r\n\r\n getModalText = () => {\r\n return (\r\n <Card brand={'success'}>\r\n <CardHeader>How to obtain your NSLDS:</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <TextBlock>\r\n <ol>\r\n <li>\r\n {/* TODO: once UI is updated, convert this and other anchors to Links */}\r\n To access, visit{' '}\r\n <Link to=\"https://studentaid.gov/\" external>\r\n https://studentaid.gov/\r\n </Link>\r\n </li>\r\n <li>\r\n Click <strong>Log In</strong> if you have an FSA ID or{' '}\r\n <strong>Create Account</strong> to create one\r\n </li>\r\n <li>\r\n Click <strong>Accept</strong>\r\n </li>\r\n <li>\r\n Select <strong>VIEW DETAILS</strong> in the My Aid section of your dashboard in\r\n the middle of the page\r\n </li>\r\n <li>\r\n On the Aid Summary page, click on <strong>Download My Aid Data</strong> on the\r\n right side of the page\r\n </li>\r\n <li>\r\n Click <strong>Continue</strong>\r\n </li>\r\n <li>Save file as \"Text Document\" to your computer</li>\r\n <li>Upload the saved file to your MyFiducius account</li>\r\n </ol>\r\n <Button brand=\"lowContrast\" onClick={() => this.openCloseModal(false)}>\r\n Close\r\n </Button>\r\n </TextBlock>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n <Header2>Upload</Header2>\r\n\r\n <AsyncLoader request={this.props.request}>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n Please select the \"Loan Detail (NSLDS / Statements)\" box below to upload your NSLDS.\r\n </div>\r\n </div>\r\n <SpacedDiv className=\"row\">\r\n <div className=\"col-6\">\r\n <PaddedDiv className=\"row\">\r\n {this.props.request.hasFinished && this.props.files && (\r\n <NSLDSFile\r\n key={this.getNSLDSFile()}\r\n file={this.props.files[this.getNSLDSFile()]}\r\n uploadSuccessful={() => {\r\n this.props.updateNsldsUploaded(true);\r\n }}\r\n requiredUpload\r\n addError={this.addError}\r\n />\r\n )}\r\n </PaddedDiv>\r\n {Object.keys(this.state.errors).length > 0 && (\r\n <>\r\n <CardHeader>Upload Error</CardHeader>\r\n <CardText>{this.getErrorMessage()}</CardText>\r\n </>\r\n )}\r\n </div>\r\n <div className=\"col-6\">\r\n <VerticalCentered className=\"row\">\r\n <StyledButton brand=\"primary\" onClick={() => this.openCloseModal(true)}>\r\n How to obtain your NSLDS\r\n </StyledButton>\r\n </VerticalCentered>\r\n </div>\r\n </SpacedDiv>\r\n </AsyncLoader>\r\n\r\n <Modal isOpen={this.state.openModal} fullWidth={false}>\r\n {this.getModalText()}\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n files: state.documents.cache,\r\n errors: state.documents.errors,\r\n request: mergeRequestStatuses([\r\n state.documents.requests.loadCollection,\r\n state.documents.requests.loadResource,\r\n ]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TabUpload));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { Header2, Button } from 'fiducius-ui';\r\n\r\nimport { stringIsNullOrEmpty } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nconst TextBlock = styled.div`\r\n color: ${(p) =>\r\n p.theme.themeName === 'greenlight' ? p.theme.textPrimary : p.theme.textTertiary};\r\n`;\r\n\r\nconst Centered = styled.div`\r\n text-align: center;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nclass TabValidate extends React.Component {\r\n static propTypes = {\r\n nsldsUploaded: t.bool.isRequired,\r\n inScreening: t.bool.isRequired,\r\n updateNsldsUploaded: t.func.isRequired,\r\n uploadDifferentNslds: t.func.isRequired,\r\n files: t.object,\r\n nslds: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate(prevProps) {}\r\n\r\n clearUploadedNslds = () => {\r\n this.props.updateNsldsUploaded(false);\r\n this.props.uploadDifferentNslds();\r\n };\r\n\r\n hasErrors = () => {\r\n const { nslds } = this.props;\r\n return (\r\n stringIsNullOrEmpty(nslds.fileRequestDate) ||\r\n this.newFieldsMissing() ||\r\n nslds.loans === undefined ||\r\n nslds.loans.length === 0\r\n );\r\n };\r\n\r\n newFieldsMissing = () => {\r\n const { nslds } = this.props;\r\n return (\r\n stringIsNullOrEmpty(nslds.undergraduateAggregateSubsidizedTotal) ||\r\n stringIsNullOrEmpty(nslds.undergraduateAggregateUnsubsidizedTotal) ||\r\n stringIsNullOrEmpty(nslds.undergraduateAggregateCombinedTotal) ||\r\n stringIsNullOrEmpty(nslds.graduateAggregateSubsidizedTotal) ||\r\n stringIsNullOrEmpty(nslds.graduateAggregateUnsubsidizedTotal) ||\r\n stringIsNullOrEmpty(nslds.graduateAggregateCombinedTotal) ||\r\n stringIsNullOrEmpty(nslds.aggregateSubsidizedTotal) ||\r\n stringIsNullOrEmpty(nslds.aggregateUnsubsidizedTotal) ||\r\n stringIsNullOrEmpty(nslds.aggregateCombinedTotal)\r\n );\r\n };\r\n\r\n errorContent = () => {\r\n const { nslds, inScreening } = this.props;\r\n return (\r\n <>\r\n {stringIsNullOrEmpty(nslds.fileRequestDate) && !inScreening && (\r\n <p>\r\n The file you uploaded is missing required information. Please select the \"Upload\r\n Different NSLDS\" button to upload a new file.\r\n </p>\r\n )}\r\n {stringIsNullOrEmpty(nslds.fileRequestDate) && inScreening && (\r\n <p>\r\n The file you uploaded is missing required information. Please click the Back button to\r\n upload a new file.\r\n </p>\r\n )}\r\n {!stringIsNullOrEmpty(nslds.fileRequestDate) && this.newFieldsMissing() && (\r\n <p>\r\n This is not the newest version of the NSLDS text file. Your document was not uploaded.\r\n Please obtain the newest version of the NSLDS, and attempt to upload again.\r\n </p>\r\n )}\r\n {(nslds.loans === undefined || nslds.loans.length === 0) && !inScreening && (\r\n <p>\r\n The file you uploaded does not contain any loan information. Please select the \"Upload\r\n Different NSLDS\" button to upload a new file.\r\n </p>\r\n )}\r\n {(nslds.loans === undefined || nslds.loans.length === 0) && inScreening && (\r\n <p>\r\n The file you uploaded does not contain any loan information. Please click the Back\r\n button to upload a new file.\r\n </p>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n successContent = () => {\r\n return (\r\n <>\r\n <p>\r\n The file is an accurate NSLDS and contains the necessary information to proceed. Please\r\n select the \"Finish\" button to finalize your upload.\r\n </p>\r\n </>\r\n );\r\n };\r\n\r\n fileUploaded = () => {\r\n const { inScreening } = this.props;\r\n return (\r\n <>\r\n <p>Thank you for uploading your NSLDS.</p>\r\n {this.hasErrors() && this.errorContent()}\r\n {!this.hasErrors() && this.successContent()}\r\n {!inScreening && (\r\n <Centered>\r\n <StyledButton brand=\"primary\" onClick={() => this.clearUploadedNslds()}>\r\n Upload Different NSLDS\r\n </StyledButton>\r\n </Centered>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n fileNotUploaded = () => {\r\n return <p>You need to upload a NSLDS to complete this step.</p>;\r\n };\r\n\r\n render() {\r\n const { nsldsUploaded } = this.props;\r\n\r\n return (\r\n <>\r\n <Header2>Review</Header2>\r\n <TextBlock>\r\n {nsldsUploaded && this.fileUploaded()}\r\n {!nsldsUploaded && this.fileNotUploaded()}\r\n </TextBlock>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const files = state.documents.cache;\r\n const nslds = state.nslds.cache;\r\n\r\n return { files, nslds };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TabValidate));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\n\r\nimport { Header2, AsyncLoader } from 'fiducius-ui';\r\n\r\nimport { todosLoadCollection } from '../../../todos';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { nsldsUploadData } from '../redux/operations';\r\n\r\nimport { authLoadPermissions } from '../../../auth';\r\n\r\nconst TextBlock = styled.div`\r\n color: ${(p) =>\r\n p.theme.themeName === 'greenlight' ? p.theme.textPrimary : p.theme.textTertiary};\r\n`;\r\n\r\nclass TabReview extends React.Component {\r\n static propTypes = {\r\n uploadNslds: t.func.isRequired,\r\n request: t.object.isRequired,\r\n nsldsRequest: t.object.isRequired,\r\n uploadDifferentNslds: t.func.isRequired,\r\n inScreening: t.bool.isRequired,\r\n handleWorkflowComplete: t.func,\r\n };\r\n\r\n componentDidMount() {\r\n const { inScreening } = this.props;\r\n this.props.uploadNslds(inScreening);\r\n }\r\n\r\n failedUpload = () => {\r\n return (\r\n <>\r\n <Header2>Upload Failed</Header2>\r\n <TextBlock>\r\n <p>Your NSLDS upload has failed.</p>\r\n </TextBlock>\r\n </>\r\n );\r\n };\r\n\r\n successfulUpload = () => {\r\n return (\r\n <>\r\n <Header2>Complete</Header2>\r\n <TextBlock>\r\n <p>Your NSLDS upload has been uploaded successfully.</p>\r\n </TextBlock>\r\n </>\r\n );\r\n };\r\n\r\n workflowComplete = () => {\r\n const { nsldsRequest, handleWorkflowComplete } = this.props;\r\n if (!nsldsRequest.isLoading && nsldsRequest.hasFinished) {\r\n handleWorkflowComplete();\r\n }\r\n };\r\n\r\n render() {\r\n const { request, inScreening } = this.props;\r\n return (\r\n <AsyncLoader request={request} failed={this.failedUpload()}>\r\n {inScreening && this.workflowComplete()}\r\n {!inScreening && this.successfulUpload()}\r\n </AsyncLoader>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { documents, nslds } = state;\r\n\r\n return {\r\n request: mergeRequestStatuses([\r\n documents.requests.createResource,\r\n nslds.requests.createResource,\r\n ]),\r\n nsldsRequest: nslds.requests.createResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n uploadNslds: (inScreening) => {\r\n dispatch(nsldsUploadData(inScreening)).then(() => {\r\n if (!inScreening) {\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n }\r\n });\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TabReview));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { Workflow } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { debounce, stringIsNullOrEmpty } from '../../../utils';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport TabUpload from './tab-upload';\r\nimport TabValidate from './tab-validate';\r\nimport TabReview from './tab-review';\r\nimport {\r\n nsldsClearForm,\r\n nsldsHandleFormChange,\r\n nsldsValidateAttributes,\r\n} from '../redux/operations';\r\n\r\nimport { documentsDisableValidation, documentsLoadScreeningNSLDS } from '../../../documents';\r\n\r\nclass NSLDSWorkflowScreening extends React.Component {\r\n static propTypes = {\r\n current: t.number,\r\n data: t.object,\r\n errors: t.object,\r\n id: t.string,\r\n todos: t.array,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n updateForm: t.func.isRequired,\r\n validateTab: t.func.isRequired,\r\n clearForm: t.func.isRequired,\r\n loadDocs: t.func.isRequired,\r\n inNSLDSWorkflow: t.bool.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n current: props.current || 0,\r\n farthest: props.current || 0,\r\n redirectURI: '',\r\n toDoItemForRedirect: 0,\r\n inNSLDSWorkflow: props.inNSLDSWorkflow,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadDocs();\r\n }\r\n\r\n componentDidUpdate() {\r\n if (\r\n this.props.permissions.showLwo &&\r\n this.state.toDoItemForRedirect === 0 &&\r\n this.props.todos.length > 0\r\n ) {\r\n let currentLwoToDo = this.props.todos.find(\r\n (a) => a.id === 602 || a.id === 603 || a.id === 609 || a.id === 610\r\n );\r\n if (currentLwoToDo !== undefined) {\r\n this.setState({\r\n toDoItemForRedirect: currentLwoToDo.id,\r\n });\r\n }\r\n }\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { data, updateForm } = this.props;\r\n const newData = { ...data, ...formState };\r\n updateForm(newData, this.getDependentAttributes(attribute));\r\n }, 250);\r\n\r\n getDependentAttributes = (attribute) => {\r\n switch (attribute) {\r\n default:\r\n return [attribute];\r\n }\r\n };\r\n\r\n handleTabChange = (index) => {\r\n this.props.validateTab(Object.keys(tabs)[this.state.current]);\r\n this.setState({\r\n current: index,\r\n farthest: index > this.state.farthest ? index : this.state.farthest,\r\n });\r\n };\r\n\r\n sectionValidationStatus(section, index) {\r\n const { nsldsUploaded } = this.props;\r\n let exists = false;\r\n if (index <= this.state.farthest) {\r\n if (index === 0) {\r\n if (index < this.state.farthest) {\r\n return !nsldsUploaded ? 'danger' : 'success';\r\n } else {\r\n exists = nsldsUploaded;\r\n }\r\n } else if (index === 1) {\r\n if (nsldsUploaded) {\r\n return this.validateNsldsInfo();\r\n }\r\n }\r\n }\r\n return exists ? 'success' : null;\r\n }\r\n\r\n validateNsldsInfo() {\r\n const { data } = this.props;\r\n let retVal = 'success';\r\n if (stringIsNullOrEmpty(data.fileRequestDate)) {\r\n retVal = 'danger';\r\n } else if (data.loans === undefined || data.loans.length === 0) {\r\n retVal = 'danger';\r\n } else if (\r\n stringIsNullOrEmpty(data.undergraduateAggregateSubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.undergraduateAggregateUnsubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.undergraduateAggregateCombinedTotal) ||\r\n stringIsNullOrEmpty(data.graduateAggregateSubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.graduateAggregateUnsubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.graduateAggregateCombinedTotal) ||\r\n stringIsNullOrEmpty(data.aggregateSubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.aggregateUnsubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.aggregateCombinedTotal)\r\n ) {\r\n retVal = 'danger';\r\n }\r\n return retVal;\r\n }\r\n\r\n reviewValidationStatus = (index) => {\r\n const upload = this.sectionValidationStatus('upload', 0);\r\n const validate = this.sectionValidationStatus('review', 1);\r\n\r\n if (this.state.farthest === 2 || index === 3) {\r\n if (upload === 'success' && validate === 'success') {\r\n return 'success';\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n allowedNavigate = (i) => {\r\n return this.state.inNSLDSWorkflow;\r\n };\r\n\r\n uploadDifferentNslds = () => {};\r\n\r\n getRedirectUrl = () => {\r\n const { permissions } = this.props;\r\n let retVal = '/documents';\r\n if (permissions.showLwo) {\r\n const currentToDo = this.state.toDoItemForRedirect;\r\n if (currentToDo > 0) {\r\n retVal = '/benefits/limited-waiver-opportunity';\r\n switch (currentToDo) {\r\n case 602:\r\n retVal += '/questionnaire';\r\n break;\r\n case 609:\r\n retVal += '/complete';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n getRedirectButtonText = () => {\r\n const { permissions } = this.props;\r\n let retVal = 'Back to My Documents';\r\n if (permissions.showLwo) {\r\n const lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n if (\r\n lwoStep.id === 'Questionnaire' ||\r\n lwoStep.id === 'Complete' ||\r\n lwoStep.id === 'LoanInformation' ||\r\n lwoStep.id === 'QualifyingPaymentCheck'\r\n ) {\r\n retVal = <>Back to Assure℠</>;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const {\r\n data = {},\r\n errors,\r\n handleWorkflowComplete,\r\n updateNsldsUploaded,\r\n nsldsUploaded,\r\n } = this.props;\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <>\r\n <>\r\n <Workflow\r\n tabs={[\r\n <TabUpload\r\n key=\"1\"\r\n id=\"upload\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('upload', 0)}\r\n name=\"Upload\"\r\n handleChange={this.handleChange}\r\n updateNsldsUploaded={updateNsldsUploaded}\r\n />,\r\n <TabValidate\r\n key=\"2\"\r\n id=\"review\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('review', 1)}\r\n name=\"Review\"\r\n handleChange={this.handleChange}\r\n nsldsUploaded={nsldsUploaded}\r\n updateNsldsUploaded={updateNsldsUploaded}\r\n uploadDifferentNslds={this.uploadDifferentNslds}\r\n inScreening={true}\r\n />,\r\n <TabReview\r\n key=\"3\"\r\n id=\"complete\"\r\n data={data}\r\n errors={errors}\r\n brand={this.reviewValidationStatus(2)}\r\n name=\"Complete\"\r\n handleChange={this.handleChange}\r\n inScreening={true}\r\n handleWorkflowComplete={handleWorkflowComplete}\r\n />,\r\n ]}\r\n handleTabChange={this.handleTabChange}\r\n next\r\n prev\r\n finalPageLocksFlow\r\n finalPageCheck={() => this.reviewValidationStatus(3)}\r\n penUltimateButton={'Finish'}\r\n allowedNavigate={this.allowedNavigate}\r\n />\r\n </>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst tabs = {\r\n upload: [],\r\n validate: [],\r\n review: [],\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, cache } = state.nslds;\r\n const id = getUserId(state);\r\n const data = cache;\r\n return {\r\n id: id,\r\n data: data,\r\n errors: errors,\r\n request: state.documents.requests.documentsLoadScreeningNSLDS,\r\n todos: Object.values(state.todos.cache),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadDocs: () => {\r\n dispatch(documentsDisableValidation());\r\n dispatch(documentsLoadScreeningNSLDS());\r\n },\r\n updateForm: (data, attributes) => {\r\n dispatch(nsldsHandleFormChange(data, attributes));\r\n },\r\n clearForm: () => {\r\n dispatch(nsldsClearForm());\r\n },\r\n validateTab: async (tab) => {\r\n await dispatch(nsldsValidateAttributes(tabs[tab]));\r\n },\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(NSLDSWorkflowScreening));\r\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport t from 'prop-types';\nimport { Button, Header4 } from 'fiducius-ui';\n\nimport { useScrollToTopOnMount } from '../../../utils';\n\nimport NSLDSWorkflowScreening from '../../nslds/components/nslds-workflow-screening';\n\nconst FRIEND = 'Friend or colleague';\nconst OTHER = 'Other';\n\nexport const referrerHasExplanation = (value) => value === FRIEND || value === OTHER;\n\nconst StyledButton = styled(Button)`\n margin: 0.5em;\n`;\n\nconst Centered = styled.div`\n text-align: center;\n`;\n\nconst RenewalTabNSLDS = ({\n inNSLDSWorkflow,\n handleWorkflowComplete,\n isNSLDSWorkflowComplete,\n clearUploadedNslds,\n updateNsldsUploaded,\n nsldsUploaded,\n data,\n}) => {\n useScrollToTopOnMount();\n\n const [showNotNeeded, setShowNotNeeded] = useState(false);\n\n useEffect(() => {\n if (data && parseInt(data.federalLoanBalance) <= 0 && inNSLDSWorkflow) {\n isNSLDSWorkflowComplete = true;\n setShowNotNeeded(true);\n handleWorkflowComplete();\n } else if (data && parseInt(data.federalLoanBalance) > 0 && inNSLDSWorkflow) {\n setShowNotNeeded(false);\n clearUploadedNslds();\n }\n }, []);\n\n return (\n <>\n {!isNSLDSWorkflowComplete && (\n <NSLDSWorkflowScreening\n inNSLDSWorkflow={inNSLDSWorkflow}\n handleWorkflowComplete={handleWorkflowComplete}\n updateNsldsUploaded={updateNsldsUploaded}\n nsldsUploaded={nsldsUploaded}\n />\n )}\n\n {isNSLDSWorkflowComplete && (\n <>\n {showNotNeeded && (\n <>\n <Header4>NSLDS Upload</Header4>\n <Centered>\n <div className=\"row\">\n <div className=\"col-12\">\n Based on the information you provided, you do not have any federal student loans\n and you are not required to return an NSLDS file.\n </div>\n </div>\n </Centered>\n </>\n )}\n {!showNotNeeded && (\n <>\n <Header4>NSLDS Upload Complete</Header4>\n <Centered>\n <StyledButton brand=\"primary\" onClick={() => clearUploadedNslds()}>\n Upload Different NSLDS\n </StyledButton>\n </Centered>\n </>\n )}\n </>\n )}\n </>\n );\n};\n\nRenewalTabNSLDS.propTypes = {\n data: t.object,\n errors: t.object,\n handleChange: t.func,\n id: t.string.isRequired,\n isNSLDSWorkflowComplete: t.bool.isRequired,\n};\n\nexport default RenewalTabNSLDS;\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Alert, AsyncLoader, Workflow } from 'fiducius-ui';\n\n// import { advisorInvalidateCache } from '../../../advisor'; => renewal info invalidate\nimport { getUserId } from '../../../auth';\nimport { debounce, isEqual, safeAccess } from '../../../utils';\nimport { withPermissions } from '../../../routing';\n\nimport TabEducation from './tab-education';\nimport TabEmployment from './tab-employment';\nimport TabHousehold from './tab-household';\nimport TabIncome from './tab-income';\nimport TabMarriage from './tab-marriage';\nimport TabResults from './tab-results';\nimport TabReview from './tab-review';\nimport TabNSLDS from './tab-nslds';\nimport {\n renewalCopyResourceToForm,\n renewalHandleFormChange,\n renewalLoadResource,\n renewalValidateAttributes,\n renewalEmploymentValidation,\n} from '../redux/operations';\n\nclass RenewalWorkflow extends React.Component {\n static propTypes = {\n current: t.number,\n data: t.object,\n errors: t.object,\n hasResults: t.bool.isRequired,\n id: t.string,\n loadData: t.func.isRequired,\n request: t.object.isRequired,\n updateForm: t.func.isRequired,\n validateTab: t.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n current: props.current || 0,\n inNSLDSWorkflow: false,\n nsldsWorkflowComplete: false,\n };\n }\n\n componentDidMount() {\n this.props.loadData(this.props.id);\n }\n\n handleChange = debounce((formState, id, attribute) => {\n const { data, updateForm } = this.props;\n const newData = { ...data, ...formState };\n\n if (formState.clientMarriageStatusCorrect === 'N') {\n // switch Y/N from initial result if they mark incorrect\n newData.clientCurrentlyMarried = data.initialMarriageStatus === 'married' ? 'N' : 'Y';\n } else if (formState.clientMarriageStatusCorrect === 'Y') {\n // reset in case they change it back to correct\n newData.clientCurrentlyMarried = data.initialMarriageStatus === 'married' ? 'Y' : 'N';\n }\n\n if (\n id === 'household' &&\n (attribute.includes('dependent') || attribute.includes('householdSize'))\n ) {\n let dependents = [];\n let dependent = {};\n\n for (let i = 0; i < newData.householdSize; i++) {\n dependent = {\n dependentName: newData['dependentName' + i] || '',\n dependentLastName: newData['dependentLastName' + i] || '',\n dependentRelationship: newData['dependentRelationship' + i] || '',\n dependentBirthdate: newData['dependentBirthdate' + i] || '',\n };\n\n dependents[i] = dependent;\n }\n\n newData.dependents = dependents;\n }\n\n if (id === 'employment' && attribute.includes('employment')) {\n let employers = [];\n let employer = {};\n newData['employersCount'] =\n (isNaN(newData.initialEmployerSize) ? 0 : parseInt(newData.initialEmployerSize)) +\n (isNaN(newData.employmentNewEmployerAmount)\n ? 0\n : parseInt(newData.employmentNewEmployerAmount));\n\n for (let i = 0; i < newData.employersCount; i++) {\n employer = {\n employmentEmployerName:\n (newData['employmentEmployerName' + i] !== undefined &&\n newData['employmentEmployerName' + i]) ||\n undefined,\n employmentJobTitle:\n (newData['employmentJobTitle' + i] !== undefined &&\n newData['employmentJobTitle' + i]) ||\n '',\n employmentStartDate:\n (newData['employmentStartDate' + i] !== undefined &&\n newData['employmentStartDate' + i]) ||\n '',\n employmentEndDate:\n (newData['employmentEndDate' + i] !== undefined && newData['employmentEndDate' + i]) ||\n '',\n employmentEin:\n (newData['employmentEin' + i] !== undefined && newData['employmentEin' + i]) || '',\n employmentPayPeriods:\n (newData['employmentPayPeriods' + i] !== undefined &&\n newData['employmentPayPeriods' + i]) ||\n '',\n employmentHours:\n (newData['employmentHours' + i] !== undefined && newData['employmentHours' + i]) || '',\n employmentAddress1:\n (newData['employmentAddress1' + i] !== undefined &&\n newData['employmentAddress1' + i]) ||\n '',\n employmentAddress2:\n (newData['employmentAddress2' + i] !== undefined &&\n newData['employmentAddress2' + i]) ||\n '',\n employmentCity:\n (newData['employmentCity' + i] !== undefined && newData['employmentCity' + i]) || '',\n employmentState:\n (newData['employmentState' + i] !== undefined && newData['employmentState' + i]) || '',\n employmentZip:\n (newData['employmentZip' + i] !== undefined && newData['employmentZip' + i]) || '',\n employmentEmploymentClassification:\n (newData['employmentEmploymentClassification' + i] !== undefined &&\n newData['employmentEmploymentClassification' + i]) ||\n '',\n employmentEmploymentType:\n (newData['employmentEmploymentType' + i] !== undefined &&\n newData['employmentEmploymentType' + i]) ||\n '',\n employmentEmploymentHistoryId:\n (newData.employers != null &&\n newData.employers.length > i &&\n newData.employers[i]['employmentEmploymentHistoryId']) ||\n 0,\n employmentEmploymentHistoryAddressId:\n (newData.employers != null &&\n newData.employers.length > i &&\n newData.employers[i]['employmentEmploymentHistoryAddressId']) ||\n 0,\n currentStatus:\n (newData.employers != null &&\n newData.employers.length > i &&\n newData.employers[i]['currentStatus']) ||\n 0,\n };\n\n employers[i] = employer;\n }\n\n newData.employers = employers;\n }\n\n if (\n id === 'income' &&\n (attribute.includes('incomeSource') ||\n attribute.includes('annualIncome') ||\n attribute.includes('additionalJobCount'))\n ) {\n let additionalJobs = [];\n let incomeSource = {};\n\n for (let i = 0; i < newData.additionalJobCount; i++) {\n incomeSource = {\n incomeSource:\n (newData['incomeSource' + i] !== undefined && newData['incomeSource' + i]) || '',\n annualIncome:\n (newData['annualIncome' + i] !== undefined && newData['annualIncome' + i]) || '',\n };\n additionalJobs[i] = incomeSource;\n }\n\n newData.additionalJobs = additionalJobs;\n }\n\n updateForm(newData, this.getDependentAttributes(attribute));\n }, 250);\n\n getDependentAttributes = (attribute) => {\n switch (attribute) {\n case 'currentHouseholdSizeCorrect':\n return [\n 'dependentName0',\n 'dependentLastName0',\n 'dependentRelationship0',\n 'dependentBirthdate0',\n 'dependentName1',\n 'dependentLastName1',\n 'dependentRelationship1',\n 'dependentBirthdate1',\n 'dependentName2',\n 'dependentLastName2',\n 'dependentRelationship2',\n 'dependentBirthdate2',\n 'dependentName3',\n 'dependentLastName3',\n 'dependentRelationship3',\n 'dependentBirthdate3',\n 'dependentName4',\n 'dependentLastName4',\n 'dependentRelationship4',\n 'dependentBirthdate4',\n 'dependentName5',\n 'dependentLastName5',\n 'dependentRelationship5',\n 'dependentBirthdate5',\n 'dependentName6',\n 'dependentLastName6',\n 'dependentRelationship6',\n 'dependentBirthdate6',\n 'dependentName7',\n 'dependentLastName7',\n 'dependentRelationship7',\n 'dependentBirthdate7',\n 'dependentName8',\n 'dependentLastName8',\n 'dependentRelationship8',\n 'dependentBirthdate8',\n 'dependentName9',\n 'dependentLastName9',\n 'dependentRelationship9',\n 'dependentBirthdate9',\n 'dependentName10',\n 'dependentLastName10',\n 'dependentRelationship10',\n 'dependentBirthdate10',\n ];\n case 'householdSize':\n return [\n 'dependentName0',\n 'dependentLastName0',\n 'dependentRelationship0',\n 'dependentBirthdate0',\n 'dependentName1',\n 'dependentLastName1',\n 'dependentRelationship1',\n 'dependentBirthdate1',\n 'dependentName2',\n 'dependentLastName2',\n 'dependentRelationship2',\n 'dependentBirthdate2',\n 'dependentName3',\n 'dependentLastName3',\n 'dependentRelationship3',\n 'dependentBirthdate3',\n 'dependentName4',\n 'dependentLastName4',\n 'dependentRelationship4',\n 'dependentBirthdate4',\n 'dependentName5',\n 'dependentLastName5',\n 'dependentRelationship5',\n 'dependentBirthdate5',\n 'dependentName6',\n 'dependentLastName6',\n 'dependentRelationship6',\n 'dependentBirthdate6',\n 'dependentName7',\n 'dependentLastName7',\n 'dependentRelationship7',\n 'dependentBirthdate7',\n 'dependentName8',\n 'dependentLastName8',\n 'dependentRelationship8',\n 'dependentBirthdate8',\n 'dependentName9',\n 'dependentLastName9',\n 'dependentRelationship9',\n 'dependentBirthdate9',\n 'dependentName10',\n 'dependentLastName10',\n 'dependentRelationship10',\n 'dependentBirthdate10',\n ];\n case 'employmentSizeCorrect':\n return [\n 'employmentEmploymentClassification0',\n 'employmentEmploymentType0',\n 'employmentEmployerName0',\n 'employmentJobTitle0',\n 'employmentStartDate0',\n 'employmentEndDate0',\n 'employmentEin0',\n 'employmentPayPeriods0',\n 'employmentHours0',\n 'employmentAddress10',\n 'employmentAddress20',\n 'employmentCity0',\n 'employmentState0',\n 'employmentZip0',\n 'employmentEmploymentClassification1',\n 'employmentEmploymentType1',\n 'employmentEmployerName1',\n 'employmentJobTitle1',\n 'employmentStartDate1',\n 'employmentEndDate1',\n 'employmentEin1',\n 'employmentPayPeriods1',\n 'employmentHours1',\n 'employmentAddress11',\n 'employmentAddress21',\n 'employmentCity1',\n 'employmentState1',\n 'employmentZip1',\n 'employmentEmploymentClassification2',\n 'employmentEmploymentType2',\n 'employmentEmployerName2',\n 'employmentJobTitle2',\n 'employmentStartDate2',\n 'employmentEndDate2',\n 'employmentEin2',\n 'employmentPayPeriods2',\n 'employmentHours2',\n 'employmentAddress12',\n 'employmentAddress22',\n 'employmentCity2',\n 'employmentState2',\n 'employmentZip2',\n 'employmentEmploymentClassification3',\n 'employmentEmploymentType3',\n 'employmentEmployerName3',\n 'employmentJobTitle3',\n 'employmentStartDate3',\n 'employmentEndDate3',\n 'employmentEin3',\n 'employmentPayPeriods3',\n 'employmentHours3',\n 'employmentAddress13',\n 'employmentAddress23',\n 'employmentCity3',\n 'employmentState3',\n 'employmentZip3',\n 'employmentEmploymentClassification4',\n 'employmentEmploymentType4',\n 'employmentEmployerName4',\n 'employmentJobTitle4',\n 'employmentStartDate4',\n 'employmentEndDate4',\n 'employmentEin4',\n 'employmentPayPeriods4',\n 'employmentHours4',\n 'employmentAddress14',\n 'employmentAddress24',\n 'employmentCity4',\n 'employmentState4',\n 'employmentZip4',\n 'employmentEmploymentClassification5',\n 'employmentEmploymentType5',\n 'employmentEmployerName5',\n 'employmentJobTitle5',\n 'employmentStartDate5',\n 'employmentEndDate5',\n 'employmentEin5',\n 'employmentPayPeriods5',\n 'employmentHours5',\n 'employmentAddress15',\n 'employmentAddress25',\n 'employmentCity5',\n 'employmentState5',\n 'employmentZip5',\n 'employmentEmploymentClassification6',\n 'employmentEmploymentType6',\n 'employmentEmployerName6',\n 'employmentJobTitle6',\n 'employmentStartDate6',\n 'employmentEndDate6',\n 'employmentEin6',\n 'employmentPayPeriods6',\n 'employmentHours6',\n 'employmentAddress16',\n 'employmentAddress26',\n 'employmentCity6',\n 'employmentState6',\n 'employmentZip6',\n 'employmentEmploymentClassification7',\n 'employmentEmploymentType7',\n 'employmentEmployerName7',\n 'employmentJobTitle7',\n 'employmentStartDate7',\n 'employmentEndDate7',\n 'employmentEin7',\n 'employmentPayPeriods7',\n 'employmentHours7',\n 'employmentAddress17',\n 'employmentAddress27',\n 'employmentCity7',\n 'employmentState7',\n 'employmentZip7',\n 'employmentEmploymentClassification8',\n 'employmentEmploymentType8',\n 'employmentEmployerName8',\n 'employmentJobTitle8',\n 'employmentStartDate8',\n 'employmentEndDate8',\n 'employmentEin8',\n 'employmentPayPeriods8',\n 'employmentHours8',\n 'employmentAddress18',\n 'employmentAddress28',\n 'employmentCity8',\n 'employmentState8',\n 'employmentZip8',\n 'employmentEmploymentClassification9',\n 'employmentEmploymentType9',\n 'employmentEmployerName9',\n 'employmentJobTitle9',\n 'employmentStartDate9',\n 'employmentEndDate9',\n 'employmentEin9',\n 'employmentPayPeriods9',\n 'employmentHours9',\n 'employmentAddress19',\n 'employmentAddress29',\n 'employmentCity9',\n 'employmentState9',\n 'employmentZip9',\n 'employmentEmploymentClassification10',\n 'employmentEmploymentType10',\n 'employmentEmployerName10',\n 'employmentJobTitle10',\n 'employmentStartDate10',\n 'employmentEndDate10',\n 'employmentEin10',\n 'employmentPayPeriods10',\n 'employmentHours10',\n 'employmentAddress110',\n 'employmentAddress210',\n 'employmentCity10',\n 'employmentState10',\n 'employmentZip10',\n ];\n case 'employmentNewEmployerAmount':\n return [\n 'employmentEmploymentClassification0',\n 'employmentEmploymentType0',\n 'employmentEmployerName0',\n 'employmentJobTitle0',\n 'employmentStartDate0',\n 'employmentEndDate0',\n 'employmentEin0',\n 'employmentPayPeriods0',\n 'employmentHours0',\n 'employmentAddress10',\n 'employmentAddress20',\n 'employmentCity0',\n 'employmentState0',\n 'employmentZip0',\n 'employmentEmploymentClassification1',\n 'employmentEmploymentType1',\n 'employmentEmployerName1',\n 'employmentJobTitle1',\n 'employmentStartDate1',\n 'employmentEndDate1',\n 'employmentEin1',\n 'employmentPayPeriods1',\n 'employmentHours1',\n 'employmentAddress11',\n 'employmentAddress21',\n 'employmentCity1',\n 'employmentState1',\n 'employmentZip1',\n 'employmentEmploymentClassification2',\n 'employmentEmploymentType2',\n 'employmentEmployerName2',\n 'employmentJobTitle2',\n 'employmentStartDate2',\n 'employmentEndDate2',\n 'employmentEin2',\n 'employmentPayPeriods2',\n 'employmentHours2',\n 'employmentAddress12',\n 'employmentAddress22',\n 'employmentCity2',\n 'employmentState2',\n 'employmentZip2',\n 'employmentEmploymentClassification3',\n 'employmentEmploymentType3',\n 'employmentEmployerName3',\n 'employmentJobTitle3',\n 'employmentStartDate3',\n 'employmentEndDate3',\n 'employmentEin3',\n 'employmentPayPeriods3',\n 'employmentHours3',\n 'employmentAddress13',\n 'employmentAddress23',\n 'employmentCity3',\n 'employmentState3',\n 'employmentZip3',\n 'employmentEmploymentClassification4',\n 'employmentEmploymentType4',\n 'employmentEmployerName4',\n 'employmentJobTitle4',\n 'employmentStartDate4',\n 'employmentEndDate4',\n 'employmentEin4',\n 'employmentPayPeriods4',\n 'employmentHours4',\n 'employmentAddress14',\n 'employmentAddress24',\n 'employmentCity4',\n 'employmentState4',\n 'employmentZip4',\n 'employmentEmploymentClassification5',\n 'employmentEmploymentType5',\n 'employmentEmployerName5',\n 'employmentJobTitle5',\n 'employmentStartDate5',\n 'employmentEndDate5',\n 'employmentEin5',\n 'employmentPayPeriods5',\n 'employmentHours5',\n 'employmentAddress15',\n 'employmentAddress25',\n 'employmentCity5',\n 'employmentState5',\n 'employmentZip5',\n 'employmentEmploymentClassification6',\n 'employmentEmploymentType6',\n 'employmentEmployerName6',\n 'employmentJobTitle6',\n 'employmentStartDate6',\n 'employmentEndDate6',\n 'employmentEin6',\n 'employmentPayPeriods6',\n 'employmentHours6',\n 'employmentAddress16',\n 'employmentAddress26',\n 'employmentCity6',\n 'employmentState6',\n 'employmentZip6',\n 'employmentEmploymentClassification7',\n 'employmentEmploymentType7',\n 'employmentEmployerName7',\n 'employmentJobTitle7',\n 'employmentStartDate7',\n 'employmentEndDate7',\n 'employmentEin7',\n 'employmentPayPeriods7',\n 'employmentHours7',\n 'employmentAddress17',\n 'employmentAddress27',\n 'employmentCity7',\n 'employmentState7',\n 'employmentZip7',\n 'employmentEmploymentClassification8',\n 'employmentEmploymentType8',\n 'employmentEmployerName8',\n 'employmentJobTitle8',\n 'employmentStartDate8',\n 'employmentEndDate8',\n 'employmentEin8',\n 'employmentPayPeriods8',\n 'employmentHours8',\n 'employmentAddress18',\n 'employmentAddress28',\n 'employmentCity8',\n 'employmentState8',\n 'employmentZip8',\n 'employmentEmploymentClassification9',\n 'employmentEmploymentType9',\n 'employmentEmployerName9',\n 'employmentJobTitle9',\n 'employmentStartDate9',\n 'employmentEndDate9',\n 'employmentEin9',\n 'employmentPayPeriods9',\n 'employmentHours9',\n 'employmentAddress19',\n 'employmentAddress29',\n 'employmentCity9',\n 'employmentState9',\n 'employmentZip9',\n 'employmentEmploymentClassification10',\n 'employmentEmploymentType10',\n 'employmentEmployerName10',\n 'employmentJobTitle10',\n 'employmentStartDate10',\n 'employmentEndDate10',\n 'employmentEin10',\n 'employmentPayPeriods10',\n 'employmentHours10',\n 'employmentAddress110',\n 'employmentAddress210',\n 'employmentCity10',\n 'employmentState10',\n 'employmentZip10',\n ];\n case 'haveAdditionalJobs':\n return [\n 'haveAdditionalJobs',\n 'incomeSource0',\n 'annualIncome0',\n 'incomeSource1',\n 'annualIncome1',\n 'incomeSource2',\n 'annualIncome2',\n 'incomeSource3',\n 'annualIncome3',\n 'incomeSource4',\n 'annualIncome4',\n 'incomeSource5',\n 'annualIncome5',\n 'incomeSource6',\n 'annualIncome6',\n 'incomeSource7',\n 'annualIncome7',\n 'incomeSource8',\n 'annualIncome8',\n 'incomeSource9',\n 'annualIncome9',\n 'incomeSource10',\n 'annualIncome10',\n 'additionalJobs',\n 'additionalJobCount',\n ];\n case 'additionalJobsCount':\n return [\n 'incomeSource0',\n 'annualIncome0',\n 'incomeSource1',\n 'annualIncome1',\n 'incomeSource2',\n 'annualIncome2',\n 'incomeSource3',\n 'annualIncome3',\n 'incomeSource4',\n 'annualIncome4',\n 'incomeSource5',\n 'annualIncome5',\n 'incomeSource6',\n 'annualIncome6',\n 'incomeSource7',\n 'annualIncome7',\n 'incomeSource8',\n 'annualIncome8',\n 'incomeSource9',\n 'annualIncome9',\n 'incomeSource10',\n 'annualIncome10',\n 'additionalJobs',\n 'additionalJobCount',\n ];\n default:\n return [attribute];\n }\n };\n\n handleTabChange = (index) => {\n const { data } = this.props;\n let isReducedIDR = data && data.isReducedIdr;\n\n if (isReducedIDR) {\n delete tabs['education'];\n } else {\n delete tabs['NSLDS'];\n }\n\n if (isReducedIDR && index == 4) {\n this.setState({ inNSLDSWorkflow: true });\n }\n\n this.props.validateTab(Object.keys(tabs)[this.state.current]);\n this.setState({ current: index });\n };\n\n sectionValidationStatus(section) {\n const { errors } = this.props;\n let exists = false;\n for (let i = 0; i < tabs[section].length; i++) {\n let attribute = tabs[section][i];\n let attributeStr = `[${attribute}]`;\n\n if (safeAccess(errors, attribute) || safeAccess(errors, attributeStr)) {\n return 'danger';\n } else if (safeAccess(errors, attributeStr) === false) {\n exists = true;\n }\n }\n return exists ? 'success' : null;\n }\n\n allowedNavigate = () => {\n return !this.state.inNSLDSWorkflow || this.state.nsldsWorkflowComplete;\n };\n\n NSLDSValidationStatus() {\n return this.state.nsldsWorkflowComplete ? 'success' : null;\n }\n\n reviewValidationStatus = () => {\n const { data } = this.props;\n let isReducedIDR = data && data.isReducedIdr;\n\n const marriage = this.sectionValidationStatus('marriage');\n const household = this.sectionValidationStatus('household');\n const education = isReducedIDR ? 'success' : this.sectionValidationStatus('education');\n const employment = this.sectionValidationStatus('employment');\n const nslds = !!!isReducedIDR ? 'success' : this.NSLDSValidationStatus();\n const income = this.sectionValidationStatus('income');\n\n if (\n marriage === 'success' &&\n household === 'success' &&\n education === 'success' &&\n employment === 'success' &&\n nslds === 'success' &&\n income === 'success'\n ) {\n return 'success';\n } else {\n return null;\n }\n };\n\n nsldsWorkFlowComplete = () => {\n this.setState({ inNSLDSWorkflow: false, nsldsWorkflowComplete: true });\n };\n\n nsldsWorkFlowStartOver = () => {\n this.setState({ inNSLDSWorkflow: true, nsldsWorkflowComplete: false });\n };\n\n clearUploadedNslds = () => {\n this.updateNsldsUploaded(false);\n this.nsldsWorkFlowStartOver();\n this.uploadDifferentNslds();\n this.removeNSLDSFileFromCache();\n };\n\n removeNSLDSFileFromCache = () => {\n const { files, nsldsCreateResourceRequest } = this.props;\n const matches = Object.keys(files).filter(\n (k) => files[k].fileTypeCd === 'LNDT' && files[k].id > 0\n );\n if (matches.length > 0) {\n this.props.removeFromCache(matches[0]);\n }\n nsldsCreateResourceRequest.hasFinished = false;\n };\n\n updateNsldsUploaded = (uploaded) => {\n this.setState({ ...this.state, nsldsUploaded: uploaded });\n };\n\n uploadDifferentNslds = () => {};\n\n loadTabs = () => {\n const { data, errors, hasResults } = this.props;\n let tabs = [];\n let isReducedIDR = data && data.isReducedIdr;\n\n tabs.push(\n <TabMarriage\n key=\"1\"\n id=\"marriage\"\n data={data}\n errors={errors}\n brand={this.sectionValidationStatus('marriage')}\n name=\"Marriage\"\n handleChange={this.handleChange}\n />\n );\n\n tabs.push(\n <TabHousehold\n key=\"2\"\n id=\"household\"\n data={data}\n errors={errors}\n brand={this.sectionValidationStatus('household')}\n name=\"Household\"\n handleChange={this.handleChange}\n />\n );\n\n if (!!!isReducedIDR) {\n tabs.push(\n <TabEducation\n key=\"3\"\n id=\"education\"\n data={data}\n errors={errors}\n brand={this.sectionValidationStatus('education')}\n name=\"Education\"\n handleChange={this.handleChange}\n />\n );\n }\n\n tabs.push(\n <TabEmployment\n key=\"4\"\n id=\"employment\"\n data={data}\n errors={errors}\n brand={this.sectionValidationStatus('employment')}\n name=\"Employment\"\n handleChange={this.handleChange}\n addEmployer={this.addEmployer}\n />\n );\n\n tabs.push(\n <TabIncome\n key=\"4\"\n id=\"income\"\n data={data}\n errors={errors}\n brand={this.sectionValidationStatus('income')}\n name=\"Income\"\n handleChange={this.handleChange}\n />\n );\n\n if (!!isReducedIDR) {\n tabs.push(\n <TabNSLDS\n key=\"5\"\n id=\"NSLDS\"\n data={data}\n errors={errors}\n brand={this.NSLDSValidationStatus()}\n name=\"NSLDS\"\n handleChange={this.handleChange}\n inNSLDSWorkflow={this.state.inNSLDSWorkflow}\n handleWorkflowComplete={() => this.nsldsWorkFlowComplete()}\n isNSLDSWorkflowComplete={this.state.nsldsWorkflowComplete}\n clearUploadedNslds={this.clearUploadedNslds}\n updateNsldsUploaded={this.updateNsldsUploaded}\n nsldsUploaded={this.state.nsldsUploaded}\n />\n );\n }\n\n tabs.push(\n <TabReview\n key=\"6\"\n id=\"review\"\n data={data}\n errors={errors}\n brand={this.reviewValidationStatus()}\n name=\"Review\"\n handleChange={this.handleChange}\n />\n );\n\n tabs.push(\n <TabResults\n key=\"7\"\n brand={hasResults ? 'success' : null}\n isReducedIDR={isReducedIDR}\n name=\"Results\"\n />\n );\n\n return tabs;\n };\n\n render() {\n const { data, errors, hasResults, request } = this.props;\n return (\n <>\n <AsyncLoader request={request}>\n <>\n {safeAccess(errors, 'generalErrors')\n ? errors.generalErrors.map((e, i) => (\n <Alert key={i} brand=\"danger\">\n {e.detail}\n </Alert>\n ))\n : null}\n\n {/* TODO: Fix AsyncLoader so that it doesn't need this check for data */}\n {data && (\n <Workflow\n tabs={this.loadTabs()}\n handleTabChange={this.handleTabChange}\n next\n prev\n finalPageLocksFlow\n finalPageCheck={this.reviewValidationStatus}\n penUltimateButton={'Submit'}\n allowedNavigate={this.allowedNavigate}\n />\n )}\n </>\n </AsyncLoader>\n </>\n );\n }\n}\n\nconst tabs = {\n marriage: [\n 'clientMarriageStatusCorrect',\n 'currentlyEngaged',\n 'initialMarriageStatus',\n 'marriageDate',\n 'spouseHasStudentLoans',\n 'spouseIncome',\n 'spouseLoanBalance',\n 'spousePayPeriods',\n 'spouseLoanDeferment',\n 'spouseLoanForearance',\n 'spouseLoanRepayment',\n 'spouseLoanOther',\n 'taxFileType',\n ],\n household: [\n 'currentHouseholdSizeCorrect',\n 'householdSize',\n 'dependents',\n 'initialHouseholdSize',\n 'dependentName0',\n 'dependentLastName0',\n 'dependentRelationship0',\n 'dependentBirthdate0',\n 'dependentName1',\n 'dependentLastName1',\n 'dependentRelationship1',\n 'dependentBirthdate1',\n 'dependentName2',\n 'dependentLastName2',\n 'dependentRelationship2',\n 'dependentBirthdate2',\n 'dependentName3',\n 'dependentLastName3',\n 'dependentRelationship3',\n 'dependentBirthdate3',\n 'dependentName4',\n 'dependentLastName4',\n 'dependentRelationship4',\n 'dependentBirthdate4',\n 'dependentName5',\n 'dependentLastName5',\n 'dependentRelationship5',\n 'dependentBirthdate5',\n 'dependentName6',\n 'dependentLastName6',\n 'dependentRelationship6',\n 'dependentBirthdate6',\n 'dependentName7',\n 'dependentLastName7',\n 'dependentRelationship7',\n 'dependentBirthdate7',\n 'dependentName8',\n 'dependentLastName8',\n 'dependentRelationship8',\n 'dependentBirthdate8',\n 'dependentName9',\n 'dependentLastName9',\n 'dependentRelationship9',\n 'dependentBirthdate9',\n 'dependentName10',\n 'dependentLastName10',\n 'dependentRelationship10',\n 'dependentBirthdate10',\n ],\n education: [\n 'borrowMore',\n 'borrowMoreAmount',\n 'borrowMoreExpectedIncome',\n 'borrowMoreGraduationDate',\n 'creditHours',\n 'degreeSpecialty',\n 'degreeType',\n 'returnToSchool',\n 'returnToSchoolDate',\n ],\n employment: [\n 'employmentSizeCorrect',\n 'employmentNewEmployerAmount',\n 'employmentEmploymentClassification0',\n 'employmentEmploymentType0',\n 'employmentEmployerName0',\n 'employmentJobTitle0',\n 'employmentStartDate0',\n 'employmentEndDate0',\n 'employmentEin0',\n 'employmentPayPeriods0',\n 'employmentHours0',\n 'employmentAddress10',\n 'employmentAddress20',\n 'employmentCity0',\n 'employmentState0',\n 'employmentZip0',\n 'employmentEmploymentClassification1',\n 'employmentEmploymentType1',\n 'employmentEmployerName1',\n 'employmentJobTitle1',\n 'employmentStartDate1',\n 'employmentEndDate1',\n 'employmentEin1',\n 'employmentPayPeriods1',\n 'employmentHours1',\n 'employmentAddress11',\n 'employmentAddress21',\n 'employmentCity1',\n 'employmentState1',\n 'employmentZip1',\n 'employmentEmploymentClassification2',\n 'employmentEmploymentType2',\n 'employmentEmployerName2',\n 'employmentJobTitle2',\n 'employmentStartDate2',\n 'employmentEndDate2',\n 'employmentEin2',\n 'employmentPayPeriods2',\n 'employmentHours2',\n 'employmentAddress12',\n 'employmentAddress22',\n 'employmentCity2',\n 'employmentState2',\n 'employmentZip2',\n 'employmentEmploymentClassification3',\n 'employmentEmploymentType3',\n 'employmentEmployerName3',\n 'employmentJobTitle3',\n 'employmentStartDate3',\n 'employmentEndDate3',\n 'employmentEin3',\n 'employmentPayPeriods3',\n 'employmentHours3',\n 'employmentAddress13',\n 'employmentAddress23',\n 'employmentCity3',\n 'employmentState3',\n 'employmentZip3',\n 'employmentEmploymentClassification4',\n 'employmentEmploymentType4',\n 'employmentEmployerName4',\n 'employmentJobTitle4',\n 'employmentStartDate4',\n 'employmentEndDate4',\n 'employmentEin4',\n 'employmentPayPeriods4',\n 'employmentHours4',\n 'employmentAddress14',\n 'employmentAddress24',\n 'employmentCity4',\n 'employmentState4',\n 'employmentZip4',\n 'employmentEmploymentClassification5',\n 'employmentEmploymentType5',\n 'employmentEmployerName5',\n 'employmentJobTitle5',\n 'employmentStartDate5',\n 'employmentEndDate5',\n 'employmentEin5',\n 'employmentPayPeriods5',\n 'employmentHours5',\n 'employmentAddress15',\n 'employmentAddress25',\n 'employmentCity5',\n 'employmentState5',\n 'employmentZip5',\n 'employmentEmploymentClassification6',\n 'employmentEmploymentType6',\n 'employmentEmployerName6',\n 'employmentJobTitle6',\n 'employmentStartDate6',\n 'employmentEndDate6',\n 'employmentEin6',\n 'employmentPayPeriods6',\n 'employmentHours6',\n 'employmentAddress16',\n 'employmentAddress26',\n 'employmentCity6',\n 'employmentState6',\n 'employmentZip6',\n 'employmentEmploymentClassification7',\n 'employmentEmploymentType7',\n 'employmentEmployerName7',\n 'employmentJobTitle7',\n 'employmentStartDate7',\n 'employmentEndDate7',\n 'employmentEin7',\n 'employmentPayPeriods7',\n 'employmentHours7',\n 'employmentAddress17',\n 'employmentAddress27',\n 'employmentCity7',\n 'employmentState7',\n 'employmentZip7',\n 'employmentEmploymentClassification8',\n 'employmentEmploymentType8',\n 'employmentEmployerName8',\n 'employmentJobTitle8',\n 'employmentStartDate8',\n 'employmentEndDate8',\n 'employmentEin8',\n 'employmentPayPeriods8',\n 'employmentHours8',\n 'employmentAddress18',\n 'employmentAddress28',\n 'employmentCity8',\n 'employmentState8',\n 'employmentZip8',\n 'employmentEmploymentClassification9',\n 'employmentEmploymentType9',\n 'employmentEmployerName9',\n 'employmentJobTitle9',\n 'employmentStartDate9',\n 'employmentEndDate9',\n 'employmentEin9',\n 'employmentPayPeriods9',\n 'employmentHours9',\n 'employmentAddress19',\n 'employmentAddress29',\n 'employmentCity9',\n 'employmentState9',\n 'employmentZip9',\n 'employmentEmploymentClassification10',\n 'employmentEmploymentType10',\n 'employmentEmployerName10',\n 'employmentJobTitle10',\n 'employmentStartDate10',\n 'employmentEndDate10',\n 'employmentEin10',\n 'employmentPayPeriods10',\n 'employmentHours10',\n 'employmentAddress110',\n 'employmentAddress210',\n 'employmentCity10',\n 'employmentState10',\n 'employmentZip10',\n ],\n income: [\n 'agi',\n 'haveAdditionalJobs',\n 'incomeSource0',\n 'annualIncome0',\n 'incomeSource1',\n 'annualIncome1',\n 'incomeSource2',\n 'annualIncome2',\n 'incomeSource3',\n 'annualIncome3',\n 'incomeSource4',\n 'annualIncome4',\n 'incomeSource5',\n 'annualIncome5',\n 'incomeSource6',\n 'annualIncome6',\n 'incomeSource7',\n 'annualIncome7',\n 'incomeSource8',\n 'annualIncome8',\n 'incomeSource9',\n 'annualIncome9',\n 'incomeSource10',\n 'annualIncome10',\n 'additionalJobs',\n 'additionalJobCount',\n ],\n NSLDS: [],\n results: [],\n};\n\nconst mapStateToProps = (state) => {\n const { errors, form, requests } = state.renewal;\n return {\n id: getUserId(state),\n data: isEqual(form, {}) ? null : form,\n errors: errors,\n hasResults: state.advisor.meta.cacheIsCurrent, // todo => renewal info\n request: requests.loadResource,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n loadData: async (id) => {\n await dispatch(renewalLoadResource(id));\n await dispatch(renewalCopyResourceToForm(id));\n },\n updateForm: (data, attributes) => {\n // dispatch(advisorInvalidateCache()); // todo => renewal info\n dispatch(renewalHandleFormChange(data, attributes));\n },\n validateTab: async (tab) => {\n if (tab === 'employment') {\n await dispatch(renewalEmploymentValidation());\n } else {\n await dispatch(renewalValidateAttributes(tabs[tab]));\n }\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(RenewalWorkflow));\n","import React from 'react';\r\nimport { Card, CardBody, CardText, Header1 } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer } from '../../../routing';\r\n\r\nimport RenewalWorkflow from '../components/renewal-workflow';\r\n\r\nconst Renewal = () => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <Header1>Renewal Questionnaire</Header1>\r\n <CardText>\r\n <RenewalWorkflow />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nexport default Renewal;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Header5 } from 'fiducius-ui';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <Header5>Opt in or out of having a renewal meeting</Header5>\r\n <p>\r\n Thank you for completing the questionnaire and uploading your documents! Based on the\r\n information you provided, you are not required to have a phone meeting with a Renewal Services\r\n Specialist. However, because this is your first time renewing with us, you have the option of\r\n scheduling a phone meeting.\r\n </p>\r\n </>\r\n);\r\n\r\nconst RenewalWantsMeeting = (props) => (\r\n <TodoComplete\r\n {...props}\r\n leftButtonAction={() => {\r\n props.toggleModal();\r\n props.toggleDrawer('meetings');\r\n }}\r\n leftButtonText=\"Schedule meeting\"\r\n rightButtonText=\"Opt out\"\r\n text={<TodoText />}\r\n title=\"Schedule Meeting\"\r\n />\r\n);\r\n\r\nRenewalWantsMeeting.propTypes = {\r\n toggleDrawer: t.func.isRequired,\r\n toggleModal: t.func.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RenewalWantsMeeting);\r\n","import types from './types';\r\nimport { isEqual, resourceReducerGenerator } from '../../../utils';\r\n\r\n// This is super brittle...\r\nconst emptyState = {\r\n addressOne: null,\r\n addressTwo: null,\r\n birthDate: '', // TODO: remove from API\r\n city: null,\r\n consolidated: null,\r\n continuedEducation: null,\r\n creditScore: '',\r\n degree: '',\r\n degreeSought: '',\r\n federalPrivateMix: null,\r\n household: null,\r\n income: null,\r\n interestRate: null,\r\n jobTitle: null,\r\n knowSomeoneWithLoans: null,\r\n loanBalance: null,\r\n married: null,\r\n monthlyPayment: null,\r\n parentPlus: null,\r\n privateBalance: null,\r\n privateLoans: null,\r\n privatePayment: null,\r\n privateServicer: null,\r\n readOnly: false,\r\n referrerName: null,\r\n results: {},\r\n school: null,\r\n spouseIncome: null,\r\n startDate: '',\r\n taxFiling: '',\r\n usState: null,\r\n zipCode: null,\r\n};\r\n\r\nconst emptyDecider = (state) => isEqual(state.cache, emptyState);\r\n\r\nexport default resourceReducerGenerator('renewal', types, undefined, emptyDecider);\r\n","// Automated advisor redux types\r\nimport { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('advisor');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('advisor', types);\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/automated-advisor',\r\n resourceType: 'automated-advisor',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'advisor',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nexport default operations;\r\nconst { advisorInvalidateCache, advisorLoadResource } = operations;\r\nexport { advisorInvalidateCache, advisorLoadResource };\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('advisor', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Animation,\r\n Form,\r\n Header2,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputRadio,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n fade,\r\n} from 'fiducius-ui';\r\n\r\nimport { useFocusOnMount, useScrollToTopOnMount, safeAccess } from '../../../utils';\r\n\r\nconst RowFade = styled.div`\r\n ${fade};\r\n`;\r\n\r\nconst TabEducation = ({ data = {}, errors = {}, handleChange, id }) => {\r\n useScrollToTopOnMount();\r\n const firstInput = useFocusOnMount();\r\n return (\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <Header2>Tell us about your education</Header2>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.highestCompletedDegree}>\r\n <InputLabel htmlFor=\"highestCompletedDegree\">Highest Completed Degree</InputLabel>\r\n <InputError>{safeAccess(errors, 'highestCompletedDegree.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n inputRef={firstInput}\r\n name=\"highestCompletedDegree\"\r\n defaultValue={data.highestCompletedDegree}\r\n options={{\r\n '': '',\r\n NONE: 'None',\r\n ASSOC: 'Associates',\r\n BA: 'Bachelors',\r\n MA: 'Masters',\r\n PHD: 'Doctorate',\r\n }}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <Animation\r\n key=\"hasADoctorate\"\r\n animation=\"fade\"\r\n appear={false}\r\n in={data.degree === 'PHD'}\r\n unmountOnExit\r\n >\r\n <InputWrapper error={!!errors.doctorateType}>\r\n <InputLabel htmlFor=\"doctorateType\">Doctorate Type</InputLabel>\r\n <InputError>{safeAccess(errors, 'doctorateType.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"doctorateType\"\r\n defaultValue={data.doctorateType}\r\n options={{\r\n '': '',\r\n MD: 'MD',\r\n DO: 'DO',\r\n DDM: 'DDM',\r\n DDS: 'DDS',\r\n DVM: 'DVM',\r\n VMD: 'VMD',\r\n Other: 'Other',\r\n }}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Animation>\r\n </div>\r\n </div>\r\n <InputWrapper error={!!errors.continuingEducation}>\r\n <InputLabel>\r\n Are you in school or planning on going back to school in the next year?\r\n </InputLabel>\r\n <InputHelp>\r\n Please note: This does not include Certifications or Certificates that are required for\r\n your current occupation.\r\n </InputHelp>\r\n <InputError>{safeAccess(errors, 'continuingEducation.detail')}</InputError>\r\n <InputRadio\r\n name=\"continuingEducation\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.continuingEducation === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"continuingEducation\"\r\n value=\"N\"\r\n label=\"No\"\r\n defaultChecked={data.continuingEducation === 'N'}\r\n />\r\n </InputWrapper>\r\n <Animation\r\n key=\"continuedEducationExtraDegree\"\r\n animation=\"fade\"\r\n appear={false}\r\n in={data.continuingEducation === 'Y'}\r\n unmountOnExit\r\n >\r\n <RowFade className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.degreeSought}>\r\n <InputLabel htmlFor=\"degreeSought\">Degree Sought</InputLabel>\r\n <InputError>{safeAccess(errors, 'degreeSought.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"degreeSought\"\r\n defaultValue={data.degreeSought}\r\n options={{\r\n '': '',\r\n ASSOC: 'Associates',\r\n BA: 'Bachelors',\r\n MA: 'Masters',\r\n PHD: 'Doctorate',\r\n }}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </RowFade>\r\n </Animation>\r\n <Animation\r\n key=\"continuedEducationExtraSchool\"\r\n animation=\"fade\"\r\n appear={false}\r\n in={data.continuingEducation === 'Y'}\r\n unmountOnExit\r\n >\r\n <RowFade className=\"row\">\r\n <div className=\"col-12\">\r\n <InputWrapper error={!!errors.school}>\r\n <InputLabel htmlFor=\"school\">School</InputLabel>\r\n <InputError>{safeAccess(errors, 'school.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name=\"school\" defaultValue={data.school} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </RowFade>\r\n </Animation>\r\n </Form>\r\n );\r\n};\r\n\r\nTabEducation.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n};\r\n\r\nexport default TabEducation;\r\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Animation,\n Form,\n Header2,\n InputAddon,\n InputError,\n InputGroup,\n InputHelp,\n InputLabel,\n InputNumeric,\n InputRadio,\n InputSelect,\n InputWrapper,\n fade,\n} from 'fiducius-ui';\n\nimport { useFocusOnMount, useScrollToTopOnMount, safeAccess } from '../../../utils';\nimport { Fade } from '../../../routing';\n\nconst RowFade = styled.div`\n ${fade};\n`;\n\nconst TabFinance = ({ data = {}, errors = {}, handleChange, id }) => {\n useScrollToTopOnMount();\n const firstInput = useFocusOnMount();\n return (\n <Form handleChange={handleChange} id={id} defaults={data}>\n <Header2>Tell us about your financial situation</Header2>\n <div className=\"row\">\n <div className=\"col-12 col-md-6\">\n <InputWrapper error={!!errors.income}>\n <InputLabel htmlFor=\"income\">\n Annual Income <br /> (If married, do not include your spouse's income)\n </InputLabel>\n <InputError>{safeAccess(errors, 'income.detail')}</InputError>\n <InputGroup>\n <InputAddon>$</InputAddon>\n <InputNumeric inputRef={firstInput} name=\"income\" defaultValue={data.income} />\n <InputAddon>.00</InputAddon>\n </InputGroup>\n </InputWrapper>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-12 col-md-6\">\n <InputWrapper error={!!errors.creditScore}>\n <InputLabel htmlFor=\"creditScore\">Credit Score</InputLabel>\n <InputError>{safeAccess(errors, 'creditScore.detail')}</InputError>\n <InputGroup>\n <InputSelect\n name=\"creditScore\"\n defaultValue={data.creditScore}\n options={{\n '': '',\n IDK: \"I don't know\",\n UNDER: 'Under 620',\n MID: '620 - 679',\n HIGH: 'Above 679',\n }}\n />\n </InputGroup>\n </InputWrapper>\n </div>\n </div>\n <Header2>Tell us about your household</Header2>\n <div className=\"row\">\n <div className=\"col-12 col-md-6\">\n <InputWrapper error={!!errors.householdSize}>\n <InputLabel htmlFor=\"householdSize\">Household Size</InputLabel>\n <InputError>{safeAccess(errors, 'householdSize.detail')}</InputError>\n <InputGroup>\n <InputNumeric name=\"householdSize\" min=\"1\" defaultValue={data.householdSize} />\n </InputGroup>\n <InputHelp>Household size includes you and all of your dependents</InputHelp>\n </InputWrapper>\n </div>\n </div>\n <InputWrapper error={!!errors.married}>\n <InputLabel>Are you married?</InputLabel>\n <InputError>{safeAccess(errors, 'married.detail')}</InputError>\n <InputRadio name=\"married\" value=\"Y\" label=\"Yes\" defaultChecked={data.married === 'Y'} />\n <InputRadio name=\"married\" value=\"N\" label=\"No\" defaultChecked={data.married === 'N'} />\n </InputWrapper>\n <Animation\n key=\"marriedExtra\"\n animation=\"fade\"\n appear={false}\n in={data.married === 'Y'}\n unmountOnExit\n >\n <RowFade className=\"row\">\n <div className=\"col-12 col-md-6\">\n <InputWrapper error={!!errors.spouseIncome}>\n <InputLabel htmlFor=\"spouseIncome\">Spouse's Annual Income</InputLabel>\n <InputError>{safeAccess(errors, 'spouseIncome.detail')}</InputError>\n <InputGroup>\n <InputAddon>$</InputAddon>\n <InputNumeric name=\"spouseIncome\" defaultValue={data.spouseIncome} />\n <InputAddon>.00</InputAddon>\n </InputGroup>\n </InputWrapper>\n </div>\n\n <div className=\"col-12 col-md-12\">\n <InputWrapper error={!!errors.spouseHasStudentLoans}>\n <InputLabel htmlFor=\"spouseHasStudentLoans\">\n Does your spouse have federal student loans?\n </InputLabel>\n <InputError>{safeAccess(errors, 'spouseHasStudentLoans.detail')}</InputError>\n <InputRadio\n name=\"spouseHasStudentLoans\"\n value=\"Y\"\n label=\"Yes\"\n defaultChecked={data.spouseHasStudentLoans === 'Y'}\n />\n <InputRadio\n name=\"spouseHasStudentLoans\"\n value=\"N\"\n label=\"No\"\n defaultChecked={data.spouseHasStudentLoans === 'N'}\n />\n <InputWrapper>\n <InputHelp>\n We are asking for your spouse's loan information because some joint repayment\n plans may result in an overall lower monthly payment for your whole household. We\n look at all options when determining your savings.\n </InputHelp>\n </InputWrapper>\n </InputWrapper>\n\n <Fade id=\"spouseHasLoansGate\" show={data.spouseHasStudentLoans === 'Y'}>\n <div className=\"row\">\n <div className=\"col-12 col-md-6\">\n <InputWrapper error={!!errors.spouseLoanBalance}>\n <InputLabel htmlFor=\"spouseLoanBalance\">\n Spouse's Loan Balance in Repayment Status\n </InputLabel>\n <InputError>{safeAccess(errors, 'spouseLoanBalance.detail')}</InputError>\n <InputGroup>\n <InputAddon>$</InputAddon>\n <InputNumeric\n name=\"spouseLoanBalance\"\n step=\"0.01\"\n defaultValue={data.spouseLoanBalance}\n />\n <InputAddon>.00</InputAddon>\n </InputGroup>\n </InputWrapper>\n </div>\n </div>\n </Fade>\n </div>\n </RowFade>\n </Animation>\n <div className=\"row\">\n <div className=\"col-12 col-md-6\">\n <InputWrapper error={!!errors.taxFiling}>\n <InputLabel htmlFor=\"taxFiling\">Tax Filing Status</InputLabel>\n <InputError>{safeAccess(errors, 'taxFiling.detail')}</InputError>\n <InputGroup>\n <InputSelect\n name=\"taxFiling\"\n defaultValue={data.taxFiling}\n options={{\n '': '',\n SING: 'Single',\n SEP: 'Married - Filing Separately',\n JOINT: 'Married - Filing Jointly',\n }}\n />\n </InputGroup>\n </InputWrapper>\n </div>\n </div>\n </Form>\n );\n};\n\nTabFinance.propTypes = {\n data: t.object,\n errors: t.object,\n handleChange: t.func,\n id: t.string.isRequired,\n};\n\nexport default TabFinance;\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Form,\r\n Header2,\r\n Header4,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputMask,\r\n InputRadio,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport {\r\n convertIsoToSlash,\r\n useFocusOnMount,\r\n useScrollToTopOnMount,\r\n safeAccess,\r\n} from '../../../utils';\r\nimport { Fade } from '../../../routing';\r\n\r\nconst FRIEND = 'Friend or colleague';\r\nconst OTHER = 'Other';\r\n\r\nexport const referrerHasExplanation = (value) => value === FRIEND || value === OTHER;\r\n\r\nconst referOpts = [\r\n '',\r\n 'Email from employer',\r\n 'Employer newsletter',\r\n 'Employer benefits website',\r\n 'Employer benefits guide',\r\n 'Poster or flyer',\r\n 'Benefits fair or onsite meeting',\r\n FRIEND,\r\n 'Email from Fiducius',\r\n 'Fiducius website',\r\n OTHER,\r\n];\r\n\r\nconst TabInfo = ({ data = {}, errors = {}, handleChange, id }) => {\r\n useScrollToTopOnMount();\r\n const firstInput = useFocusOnMount();\r\n return (\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <Header2>Tell us how you heard about us</Header2>\r\n <InputWrapper error={!!errors.referrerName}>\r\n <InputLabel htmlFor=\"referrerName\" optional>\r\n How did you first learn about Fiducius?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'referrerName.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n inputRef={firstInput}\r\n name=\"referrerName\"\r\n defaultValue={data.referrerName}\r\n options={referOpts}\r\n />\r\n </InputGroup>\r\n <InputHelp>Leave this blank if you found us on your own</InputHelp>\r\n </InputWrapper>\r\n <Fade id=\"referrerGate\" show={referrerHasExplanation(data.referrerName)}>\r\n <InputWrapper error={!!errors.referrerExplanation}>\r\n <InputLabel htmlFor=\"referrerExplanation\">\r\n {data.referrerName === FRIEND && \"Friend or colleague's name\"}\r\n {data.referrerName === OTHER && 'Please specify'}\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'referrerExplanation.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"referrerExplanation\" defaultValue={data.referrerExplanation} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n <InputWrapper error={!!errors.knowSomeoneWithLoans}>\r\n <InputLabel>Do you know anyone with more than $5,000 of student loan debt?</InputLabel>\r\n <InputError>{safeAccess(errors, 'knowSomeoneWithLoans.detail')}</InputError>\r\n <InputRadio\r\n name=\"knowSomeoneWithLoans\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.knowSomeoneWithLoans === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"knowSomeoneWithLoans\"\r\n value=\"N\"\r\n label=\"No\"\r\n defaultChecked={data.knowSomeoneWithLoans === 'N'}\r\n />\r\n </InputWrapper>\r\n <Header2>Tell us about your current job</Header2>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.hireDate}>\r\n <InputLabel htmlFor=\"hireDate\">Hire Date</InputLabel>\r\n <InputError>{safeAccess(errors, 'hireDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.hireDate)}\r\n mask=\"##/##/####\"\r\n name=\"hireDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.jobTitle}>\r\n <InputLabel htmlFor=\"jobTitle\">Job Title</InputLabel>\r\n <InputError>{safeAccess(errors, 'jobTitle.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"jobTitle\" defaultValue={data.jobTitle} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <InputWrapper error={!!errors.covidFurlough}>\r\n <InputLabel>\r\n Were you temporarily laid off or furloughed in the past year due to COVID-19?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'covidFurlough.detail')}</InputError>\r\n <InputRadio\r\n name=\"covidFurlough\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.covidFurlough === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"covidFurlough\"\r\n value=\"N\"\r\n label=\"No\"\r\n defaultChecked={data.covidFurlough === 'N'}\r\n />\r\n </InputWrapper>\r\n <Header4>\r\n <InputLabel optional>Home Address</InputLabel>\r\n </Header4>\r\n <InputWrapper error={!!errors.homeAddressOne}>\r\n <InputLabel htmlFor=\"homeAddressOne\">Address Line 1</InputLabel>\r\n <InputError>{safeAccess(errors, 'homeAddressOne.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"homeAddressOne\" defaultValue={data.homeAddressOne} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.homeAddressTwo}>\r\n <InputLabel htmlFor=\"homeAddressTwo\">Address Line 2</InputLabel>\r\n <InputError>{safeAccess(errors, 'homeAddressTwo.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"homeAddressTwo\" defaultValue={data.homeAddressTwo} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.homeCity}>\r\n <InputLabel htmlFor=\"homeCity\">City</InputLabel>\r\n <InputError>{safeAccess(errors, 'homeCity.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"homeCity\" defaultValue={data.homeCity} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.homeState}>\r\n <InputLabel htmlFor=\"homeState\">State</InputLabel>\r\n <InputError>{safeAccess(errors, 'homeState.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"homeState\"\r\n defaultValue={data.homeState}\r\n options={[\r\n '',\r\n 'AL',\r\n 'AK',\r\n 'AR',\r\n 'AZ',\r\n 'CA',\r\n 'CO',\r\n 'CT',\r\n 'DC',\r\n 'DE',\r\n 'FL',\r\n 'GA',\r\n 'HI',\r\n 'IA',\r\n 'ID',\r\n 'IL',\r\n 'IN',\r\n 'KS',\r\n 'KY',\r\n 'LA',\r\n 'MA',\r\n 'MD',\r\n 'ME',\r\n 'MI',\r\n 'MN',\r\n 'MO',\r\n 'MS',\r\n 'MT',\r\n 'NC',\r\n 'NE',\r\n 'NH',\r\n 'NJ',\r\n 'NM',\r\n 'NV',\r\n 'NY',\r\n 'ND',\r\n 'OH',\r\n 'OK',\r\n 'OR',\r\n 'PA',\r\n 'PR',\r\n 'RI',\r\n 'SC',\r\n 'SD',\r\n 'TN',\r\n 'TX',\r\n 'UT',\r\n 'VT',\r\n 'VA',\r\n 'WA',\r\n 'WI',\r\n 'WV',\r\n 'WY',\r\n ]}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.homeZipCode}>\r\n <InputLabel htmlFor=\"homeZipCode\">Zip Code</InputLabel>\r\n <InputError>{safeAccess(errors, 'homeZipCode.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"homeZipCode\" defaultValue={data.homeZipCode} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n};\r\n\r\nTabInfo.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n};\r\n\r\nexport default TabInfo;\r\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Animation,\n Form,\n Header2,\n InputAddon,\n InputError,\n InputGroup,\n InputLabel,\n InputNumeric,\n InputRadio,\n InputText,\n InputWrapper,\n fade,\n} from 'fiducius-ui';\n\nimport { useFocusOnMount, useScrollToTopOnMount, safeAccess } from '../../../utils';\n\nconst FadeFragment = styled.div`\n ${fade};\n`;\n\nconst TabLoans = ({ data = {}, errors = {}, handleChange, id }) => {\n useScrollToTopOnMount();\n const firstInput = useFocusOnMount();\n return (\n <Form handleChange={handleChange} id={id} defaults={data}>\n <Header2>Tell us about your student loans</Header2>\n <div className=\"row\">\n <div className=\"col-12 col-lg-6\">\n <InputWrapper error={!!errors.federalLoanBalance}>\n <InputLabel htmlFor=\"federalLoanBalance\">Federal Loan Balance</InputLabel>\n <InputError>{safeAccess(errors, 'federalLoanBalance.detail')}</InputError>\n <InputGroup>\n <InputAddon>$</InputAddon>\n <InputNumeric\n inputRef={firstInput}\n name=\"federalLoanBalance\"\n defaultValue={data.federalLoanBalance}\n />\n <InputAddon>.00</InputAddon>\n </InputGroup>\n </InputWrapper>\n </div>\n <div className=\"col-12 col-lg-6\">\n <InputWrapper error={!!errors.federalMonthlyPayment}>\n <InputLabel htmlFor=\"federalMonthlyPayment\">Federal Loan Monthly Payment</InputLabel>\n <InputError>{safeAccess(errors, 'federalMonthlyPayment.detail')}</InputError>\n <InputGroup>\n <InputAddon>$</InputAddon>\n <InputNumeric\n name=\"federalMonthlyPayment\"\n defaultValue={data.federalMonthlyPayment}\n />\n <InputAddon>.00</InputAddon>\n </InputGroup>\n </InputWrapper>\n </div>\n </div>\n <InputWrapper error={!!errors.pslfOnOwn}>\n <InputLabel>Have you ever pursued Public Service Loan Forgiveness on your own?</InputLabel>\n <InputError>{safeAccess(errors, 'pslfOnOwn.detail')}</InputError>\n <InputRadio name=\"pslfOnOwn\" value=\"Y\" label=\"Yes\" />\n <InputRadio name=\"pslfOnOwn\" value=\"N\" label=\"No\" />\n </InputWrapper>\n <InputWrapper error={!!errors.consolidated}>\n <InputLabel>Have you consolidated your loans?</InputLabel>\n <InputError>{safeAccess(errors, 'consolidated.detail')}</InputError>\n <InputRadio\n name=\"consolidated\"\n value=\"Y\"\n label=\"Yes\"\n defaultChecked={data.consolidated === 'Y'}\n />\n <InputRadio\n name=\"consolidated\"\n value=\"N\"\n label=\"No\"\n defaultChecked={data.consolidated === 'N'}\n />\n </InputWrapper>\n <Animation\n key=\"consolidatedExtra\"\n animation=\"fade\"\n appear={false}\n in={data.consolidated === 'Y'}\n unmountOnExit\n >\n <FadeFragment>\n <InputWrapper error={!!errors.federalPrivateConsolidatedMix}>\n <InputLabel>\n Did you consolidate any private loans with a federal student loan?\n </InputLabel>\n <InputError>{safeAccess(errors, 'federalPrivateConsolidatedMix.detail')}</InputError>\n <InputRadio\n name=\"federalPrivateConsolidatedMix\"\n value=\"Y\"\n label=\"Yes\"\n defaultChecked={data.federalPrivateConsolidatedMix === 'Y'}\n />\n <InputRadio\n name=\"federalPrivateConsolidatedMix\"\n value=\"N\"\n label=\"No\"\n defaultChecked={data.federalPrivateConsolidatedMix === 'N'}\n />\n </InputWrapper>\n </FadeFragment>\n </Animation>\n <InputWrapper error={!!errors.hasParentPlus}>\n <InputLabel>Do you have any federal parent plus loans?</InputLabel>\n <InputError>{safeAccess(errors, 'hasParentPlus.detail')}</InputError>\n <InputRadio\n name=\"hasParentPlus\"\n value=\"Y\"\n label=\"Yes\"\n defaultChecked={data.hasParentPlus === 'Y'}\n />\n <InputRadio\n name=\"hasParentPlus\"\n value=\"N\"\n label=\"No\"\n defaultChecked={data.hasParentPlus === 'N'}\n />\n </InputWrapper>\n <InputWrapper error={!!errors.hasPrivateLoans}>\n <InputLabel>Do you have any private student loans?</InputLabel>\n <InputError>{safeAccess(errors, 'hasPrivateLoans.detail')}</InputError>\n <InputRadio\n name=\"hasPrivateLoans\"\n value=\"Y\"\n label=\"Yes\"\n defaultChecked={data.hasPrivateLoans === 'Y'}\n />\n <InputRadio\n name=\"hasPrivateLoans\"\n value=\"N\"\n label=\"No\"\n defaultChecked={data.hasPrivateLoans === 'N'}\n />\n </InputWrapper>\n <Animation\n key=\"privateLoansExtra\"\n animation=\"fade\"\n appear={false}\n in={data.hasPrivateLoans === 'Y'}\n unmountOnExit\n >\n <FadeFragment>\n <div className=\"row\">\n <div className=\"col-12 col-lg-6\">\n <InputWrapper error={!!errors.privateBalance}>\n <InputLabel htmlFor=\"privateBalance\">Private Loan Balance</InputLabel>\n <InputError>{safeAccess(errors, 'privateBalance.detail')}</InputError>\n <InputGroup>\n <InputAddon>$</InputAddon>\n <InputNumeric name=\"privateBalance\" defaultValue={data.privateBalance} />\n <InputAddon>.00</InputAddon>\n </InputGroup>\n </InputWrapper>\n </div>\n <div className=\"col-12 col-lg-6\">\n <InputWrapper error={!!errors.privatePayment}>\n <InputLabel htmlFor=\"privatePayment\">Private Loan Monthly Payment</InputLabel>\n <InputError>{safeAccess(errors, 'privatePayment.detail')}</InputError>\n <InputGroup>\n <InputAddon>$</InputAddon>\n <InputNumeric name=\"privatePayment\" defaultValue={data.privatePayment} />\n <InputAddon>.00</InputAddon>\n </InputGroup>\n </InputWrapper>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-12\">\n <InputWrapper error={!!errors.privateServicer}>\n <InputLabel htmlFor=\"privateServicer\">Private Loan Servicer</InputLabel>\n <InputError>{safeAccess(errors, 'privateServicer.detail')}</InputError>\n <InputGroup>\n <InputText name=\"privateServicer\" defaultValue={data.privateServicer} />\n </InputGroup>\n </InputWrapper>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-12 col-md-6\">\n <InputWrapper error={!!errors.privateInterestRate}>\n <InputLabel htmlFor=\"privateInterestRate\">Private Loan Interest Rate</InputLabel>\n <InputError>{safeAccess(errors, 'privateInterestRate.detail')}</InputError>\n <InputGroup>\n <InputNumeric\n name=\"privateInterestRate\"\n defaultValue={data.privateInterestRate}\n />\n <InputAddon>%</InputAddon>\n </InputGroup>\n </InputWrapper>\n </div>\n </div>\n </FadeFragment>\n </Animation>\n </Form>\n );\n};\n\nTabLoans.propTypes = {\n data: t.object,\n errors: t.object,\n handleChange: t.func,\n id: t.string.isRequired,\n};\n\nexport default TabLoans;\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('contribution');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator, patchApi, normalize } from '../../../utils';\r\nimport { getToken } from '../../../auth';\r\nimport { ContributionValidator } from './validators';\r\n\r\nconst contributionValidator = new ContributionValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/contribution',\r\n resourceType: 'contribution',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'contribution',\r\n actions,\r\n null,\r\n contributionValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n contributionLoadResource,\r\n contributionCreateResource,\r\n contributionClearForm,\r\n contributionLoadCollection,\r\n contributionCopyResourceToForm,\r\n contributionHandleFormChange,\r\n contributionUpdateResource,\r\n} = operations;\r\n\r\nconst contributionAccountUpdateResource = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n let form = state.contribution.form;\r\n\r\n //need to manually make sub items kebab case kebab-case-is-fun\r\n let newForm = {\r\n contributionLoans: [\r\n {\r\n 'contribution-id': form.contributionId,\r\n 'loan-id': form.loanId,\r\n 'contribution-type': form.contributionType,\r\n 'loan-amount': form.loanAmount,\r\n 'interest-rate': form.interestRate,\r\n 'monthly-payment': form.monthlyPayment,\r\n 'employer-contribution': form.employerContribution,\r\n 'employee-contribution': form.employeeContribution,\r\n 'loan-status': form.loanStatus,\r\n description: form.description,\r\n },\r\n ],\r\n };\r\n let retVal = false;\r\n\r\n try {\r\n const patchData = normalize('contribution', newForm, id);\r\n await patchApi(getToken(state), `/contribution/${id}`, patchData);\r\n } catch (error) {\r\n //alert('error: ' + error)\r\n }\r\n\r\n return retVal;\r\n};\r\n\r\nexport {\r\n contributionAccountUpdateResource,\r\n contributionClearForm,\r\n contributionCreateResource,\r\n contributionLoadResource,\r\n contributionLoadCollection,\r\n contributionCopyResourceToForm,\r\n contributionHandleFormChange,\r\n contributionUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('contribution', types);\r\n","import { FormValidator } from '../../../utils';\r\n\r\nexport class ContributionValidator extends FormValidator {\r\n // Account tab validators\r\n approverEmail(validator, data) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n validator.isValidEmail();\r\n validator.valueMatchesList(data.approverEmail, data.clientEmails);\r\n }\r\n}\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('contributionSetup');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('contributionSetup', types);\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/contribution-setup',\r\n resourceType: 'contribution-setup',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'contributionSetup',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst { contributionSetupLoadResource } = operations;\r\n\r\nexport { contributionSetupLoadResource };\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('contributionSetup', types);\r\n","import { getUserId } from '../../auth';\r\nimport { safeAccess } from '../../utils';\r\n\r\nexport const getContributionSetupData = (state) =>\r\n safeAccess(state, `contributionSetup.cache[${getUserId(state)}]`, {});\r\n","import { getUserId } from '../../../auth';\r\nimport { safeAccess, formatAsMoney } from '../../../utils';\r\n\r\nexport const getContributionData = (state) =>\r\n safeAccess(state, `contribution.cache[${getUserId(state)}]`, {});\r\n\r\nexport const convertMilestonePaymentAmountToSentence = (paymentType, paymentAmount) => {\r\n let retVal = '';\r\n\r\n switch (paymentType.toUpperCase()) {\r\n case 'SETAMT':\r\n retVal = 'An employer increase of ' + formatAsMoney(paymentAmount) + ' each month';\r\n break;\r\n case 'MODAMT':\r\n retVal = paymentAmount + '% increase';\r\n break;\r\n case 'LUMP':\r\n retVal = 'One lump sum payment of ' + formatAsMoney(paymentAmount);\r\n break;\r\n default:\r\n retVal = 'Other';\r\n }\r\n return retVal;\r\n};\r\n\r\nexport const convertMilestoneTypeAmountToSentence = (milestoneType, milestoneAmount) => {\r\n let retVal = '';\r\n\r\n switch (milestoneType.toUpperCase()) {\r\n case 'MONTHS':\r\n retVal = 'After every ' + milestoneAmount + ' month(s) you are eligible';\r\n break;\r\n case 'CALCPMTS':\r\n retVal =\r\n 'After every ' + milestoneAmount + ' time(s) your payments are calculated you are eligible';\r\n break;\r\n case 'NUMPMTS':\r\n retVal = 'After every ' + milestoneAmount + ' payment(s) have been accrued you are eligible';\r\n break;\r\n case 'START':\r\n retVal =\r\n 'At the start of every ' +\r\n milestoneAmount +\r\n ' enrollment period you will accrue this milestone.';\r\n break;\r\n default:\r\n retVal = 'Other';\r\n }\r\n return retVal;\r\n};\r\n\r\nexport const convertMilestoneCodeToType = (milestoneCode) => {\r\n let retVal = '';\r\n switch (milestoneCode.toUpperCase()) {\r\n case 'SETAMT':\r\n retVal = 'Set Amount';\r\n break;\r\n case 'MODAMT':\r\n retVal = 'Percentage';\r\n break;\r\n case 'LUMP':\r\n retVal = 'Lump Sum';\r\n break;\r\n default:\r\n retVal = 'Other';\r\n }\r\n return retVal;\r\n};\r\n\r\nexport const convertLoanCodeToType = (loanCode) => {\r\n let retVal = '';\r\n switch (loanCode.toUpperCase()) {\r\n case 'CON':\r\n retVal = 'FFEL Consolidated';\r\n break;\r\n case 'GB':\r\n retVal = 'Graduate Plus';\r\n break;\r\n case 'PLUS':\r\n retVal = 'Parent Plus';\r\n break;\r\n case 'PRIV':\r\n retVal = 'Private';\r\n break;\r\n case 'STAFF':\r\n retVal = 'Stafford';\r\n break;\r\n case 'SSTAF':\r\n retVal = 'FFEL Stafford Subsidized';\r\n break;\r\n case 'SDIR':\r\n retVal = 'Direct Stafford Subsidized';\r\n break;\r\n case 'DIR':\r\n retVal = 'Direct Consolidation';\r\n break;\r\n case 'USTAF':\r\n retVal = 'FFEL Stafford Unsubsidized';\r\n break;\r\n case 'DPL':\r\n retVal = 'Direct Plus Parent';\r\n break;\r\n case 'DPLG':\r\n retVal = 'Direct Plus Graduate';\r\n break;\r\n case 'FPL':\r\n retVal = 'FFEL Plus Parent';\r\n break;\r\n case 'FPLG':\r\n retVal = 'FFEL Grad Plus';\r\n break;\r\n case 'NDL':\r\n retVal = 'National Defense Loan';\r\n break;\r\n case 'NDSL':\r\n retVal = 'National Direct Student Loan';\r\n break;\r\n case 'SL':\r\n retVal = 'Supplemental Loan';\r\n break;\r\n case 'DPC':\r\n retVal = 'Direct PLUS Consolidated';\r\n break;\r\n case 'UDIR':\r\n retVal = 'Direct Stafford Unsubsidized';\r\n break;\r\n case 'SCON':\r\n retVal = 'Direct Subsidized Consolidated';\r\n break;\r\n case 'UCON':\r\n retVal = 'Direct Unsubsidized Consolidated';\r\n break;\r\n case 'TEACH':\r\n retVal = 'Direct Unsubsidized Teach';\r\n break;\r\n case 'PERK':\r\n retVal = 'Federal Perkins';\r\n break;\r\n case 'SLS':\r\n retVal = 'FFEL Supplemental Loan (SLS)';\r\n break;\r\n case 'RMBRS':\r\n retVal = 'Tuition Reimbursement Account';\r\n break;\r\n default:\r\n retVal = 'Other';\r\n }\r\n return retVal;\r\n};\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('customerContribution');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('customerContribution', types);\r\n","import actions from './actions';\r\nimport { CustomerContributionValidator } from './validators';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst validator = new CustomerContributionValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/customer-contribution',\r\n resourceType: 'customer-contribution',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'customerContribution',\r\n actions,\r\n null,\r\n validator,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n customerContributionClearForm,\r\n customerContributionCopyResourceToForm,\r\n customerContributionHandleFormChange,\r\n customerContributionLoadCollection,\r\n customerContributionCreateResource,\r\n customerContributionUpdateResource,\r\n} = operations;\r\n\r\nexport {\r\n customerContributionClearForm,\r\n customerContributionCopyResourceToForm,\r\n customerContributionHandleFormChange,\r\n customerContributionLoadCollection,\r\n customerContributionCreateResource,\r\n customerContributionUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('customerContribution', types);\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class CustomerContributionValidator extends FormValidator {\r\n loanId(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n contributionType(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n employerContribution(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n employeeContribution(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n active(validator) {\r\n validator.isRequired();\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n Table,\r\n Modal,\r\n Card,\r\n CardBody,\r\n CardHeader,\r\n CardFooter,\r\n CardText,\r\n Header3,\r\n Header4,\r\n Button,\r\n} from 'fiducius-ui';\r\n\r\nconst PaddedDiv = styled.div`\r\n padding-bottom: 1em;\r\n`;\r\n\r\nconst TopDiv = styled.div`\r\n margin-bottom: 1em;\r\n`;\r\n\r\nconst BorderedDiv = styled.div`\r\n margin-top: 1em;\r\n border-bottom: calc(2 * ${(p) => p.theme.borderWidth}) solid ${(p) => p.theme.textTertiary};\r\n`;\r\n\r\nconst StyledHeader4 = styled(Header4)`\r\n margin-bottom: 0em;\r\n`;\r\n\r\nclass PaymentHelp extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n closeForm: t.func.isRequired,\r\n isOpen: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.modalRef = React.createRef();\r\n if (this.modalRef.current !== null) {\r\n this.modalRef.current.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n render() {\r\n const { closeForm, isOpen } = this.props;\r\n\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={true}>\r\n <Card>\r\n <CardHeader>\r\n <Header3>How are Payments Scheduled?</Header3>\r\n </CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <TopDiv className=\"row\">\r\n <div className=\"col-12\">\r\n Scheduled contribution payments are calculated a month in advance of their due\r\n date.\r\n <BorderedDiv></BorderedDiv>\r\n </div>\r\n </TopDiv>\r\n <PaddedDiv className=\"row\">\r\n <div className=\"col-12\">\r\n <StyledHeader4>Contribution Processing</StyledHeader4>\r\n <Table\r\n header={['Payment Remittance Date', 'Information']}\r\n body={[\r\n [\r\n '1st of the Month',\r\n 'All employer contribution payments will be remitted on the 1st of the month, regardless of your loan payment due date.',\r\n ],\r\n ]}\r\n />\r\n </div>\r\n </PaddedDiv>\r\n <PaddedDiv className=\"row\">\r\n <div className=\"col-12\">\r\n Note: Contribution payments are submitted within 3-5 business days of the 1st of\r\n the month. However, please note that the processing time may vary with different\r\n loan servicers. Also, remittance dates falling on a holiday or weekend will be\r\n processed the following business day.\r\n </div>\r\n </PaddedDiv>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nexport default PaymentHelp;\r\n","import { formatAsMoney, formatAsPercent } from '../../utils';\r\n\r\nexport const getEmployerMonthlyAmountDisplay = (\r\n contributionType,\r\n employerContribution,\r\n monthlyEmployerContribution\r\n) => {\r\n return contributionType === 'D'\r\n ? formatAsMoney(employerContribution)\r\n : formatAsPercent(employerContribution) +\r\n ' (' +\r\n formatAsMoney(employerContribution * monthlyEmployerContribution * 0.01) +\r\n ')';\r\n};\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Table, Modal, Card, CardBody, CardHeader, CardFooter, Button } from 'fiducius-ui';\r\n\r\nimport { formatAsMoney, convertIsoToSlash } from '../../utils';\r\n\r\nconst PaddedDiv = styled.div`\r\n padding-bottom: 1em;\r\n`;\r\n\r\nconst getTable = (props) => {\r\n if (props.data === null || props.data.length === 0) {\r\n return null;\r\n }\r\n let columns = [];\r\n let displayHeaders = [];\r\n const displayBody = [];\r\n let displayEmployeeAmt = false;\r\n if (props.employeeContribution > 0) {\r\n displayEmployeeAmt = true;\r\n }\r\n\r\n if (displayEmployeeAmt) {\r\n displayHeaders = [\r\n 'Account',\r\n 'Employer Payment Amount',\r\n 'Employee Payment Amount',\r\n 'Total Payment Amount',\r\n 'Scheduled Payment Date',\r\n ];\r\n\r\n props.data.forEach((row) => {\r\n displayBody.push([\r\n row.account,\r\n formatAsMoney(row.employerAmount),\r\n formatAsMoney(row.employeeAmount),\r\n formatAsMoney(row.totalAmount),\r\n convertIsoToSlash(row.paymentScheduleDate),\r\n ]);\r\n });\r\n } else {\r\n displayHeaders = ['Account', 'Employer Payment Amount', 'Total Payment Amount', 'Payment Date'];\r\n\r\n props.data.forEach((row) => {\r\n displayBody.push([\r\n row.account,\r\n formatAsMoney(row.employerAmount),\r\n formatAsMoney(row.totalAmount),\r\n convertIsoToSlash(row.paymentScheduleDate),\r\n ]);\r\n });\r\n }\r\n\r\n return (\r\n <Table\r\n meta={{\r\n pageSize: 10,\r\n }}\r\n body={displayBody}\r\n columns={columns}\r\n header={displayHeaders}\r\n />\r\n );\r\n};\r\nconst AvailablePaymentHistoryTable = (props) => {\r\n const modalRef = React.createRef();\r\n if (modalRef.current !== null) {\r\n modalRef.current.scrollTo(0, 0);\r\n }\r\n\r\n return (\r\n <Modal ref={modalRef} isOpen={props.isOpen} fullWidth={false}>\r\n <Card>\r\n <CardHeader>Payment History</CardHeader>\r\n <CardBody>\r\n {getTable(props)}\r\n <PaddedDiv className=\"row\">\r\n <div className=\"col-12\">\r\n Note: Contribution payments are submitted within 3-5 business days of the Scheduled\r\n Payment Date. However, please note that the processing time may vary with different\r\n loan servicers.\r\n </div>\r\n </PaddedDiv>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={props.closeForm}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default AvailablePaymentHistoryTable;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n ProgressBar,\r\n Header4,\r\n Header5,\r\n} from 'fiducius-ui';\r\n\r\nimport PaymentHelp from './payment-help';\r\n\r\nimport { withPermissions, PaddedDD } from '../../routing';\r\nimport { formatAsMoney, formatAsPercent, convertIsoToSlash } from '../../utils';\r\nimport { getContributionData } from '../../benefits/contribution/redux/selectors';\r\nimport { getContributionSetupData } from '../../contribution-setup';\r\n\r\nimport { getEmployerMonthlyAmountDisplay } from '../redux/selectors';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\nimport AvailablePaymentHistoryTable from './available-payment-history-table';\r\n\r\nconst PaddedDiv = styled.div`\r\n padding-bottom: 1em;\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\nconst DivRight = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nconst PaymentHelpButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin-left: 0em;\r\n`;\r\n\r\nclass ActiveContribution extends React.Component {\r\n static propTypes = {\r\n key: t.any,\r\n data: t.object.isRequired,\r\n setup: t.object,\r\n dataLevel: t.number,\r\n contributionData: t.object,\r\n customerContributionData: t.object,\r\n permissions: t.object,\r\n onEditContribution: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showHelp: false, showModal: false };\r\n\r\n this.closeHelp = this.closeHelp.bind(this);\r\n this.openHelp = this.openHelp.bind(this);\r\n this.closeModal = this.closeModal.bind(this);\r\n this.openModal = this.openModal.bind(this);\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n closeHelp() {\r\n this.setState({ ...this.state, showHelp: false });\r\n }\r\n\r\n openHelp() {\r\n this.setState({ ...this.state, showHelp: true });\r\n }\r\n\r\n closeModal() {\r\n this.setState({ ...this.state, showModal: false });\r\n }\r\n\r\n openModal() {\r\n this.setState({ ...this.state, showModal: true });\r\n }\r\n\r\n getProgressBar() {\r\n const { data } = this.props;\r\n let stepsCompleted = 0;\r\n let stageText = 'Account Denied for Contribution';\r\n if (\r\n data.contributionStatus === 'CREATED' ||\r\n data.contributionStatus === 'WAITINIT' ||\r\n data.contributionStatus === 'WAITREVAL'\r\n ) {\r\n stepsCompleted = 1;\r\n stageText = 'Waiting on Account Statement';\r\n } else if (data.contributionStatus === 'UPLOAD') {\r\n stepsCompleted = 2;\r\n stageText = 'Account Statement Uploaded and Under Review';\r\n } else if (data.contributionStatus === 'APPROVE') {\r\n stepsCompleted = 3;\r\n stageText = 'Account Approved for Contribution';\r\n }\r\n\r\n return (\r\n <>\r\n <dl>\r\n <dd>\r\n <ProgressBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: stepsCompleted > 0 ? (100 * stepsCompleted) / 3 : 0,\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: stepsCompleted > 0 && stepsCompleted < 3 ? 100 / 3 : 0,\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'To Be Completed',\r\n value:\r\n stepsCompleted > 0\r\n ? (100 * (stepsCompleted === 3 ? 0 : 3 - (stepsCompleted + 1))) / 3\r\n : 0,\r\n },\r\n {\r\n brand: 'danger',\r\n name: 'danger',\r\n title: 'Denied',\r\n value: stepsCompleted === 0 ? 100 : 0,\r\n },\r\n ]}\r\n />\r\n </dd>\r\n <dd>Stage: {stageText}</dd>\r\n </dl>\r\n </>\r\n );\r\n }\r\n\r\n getEmployerContribution() {\r\n const { data } = this.props;\r\n let retVal = 0;\r\n if (data.paymentHistory !== null && Object.values(data.paymentHistory).length > 0) {\r\n Object.values(data.paymentHistory).forEach((element) => {\r\n retVal += element.employerAmount;\r\n });\r\n }\r\n return retVal;\r\n }\r\n\r\n getMonthlyEmployerContribution(monthlyAccountPayment, monthlyEmployerContribution) {\r\n const { setup } = this.props;\r\n let retVal = monthlyEmployerContribution;\r\n if (\r\n setup.nonPslfAllowCustomEmployeeContribution === 'PMTAMT' &&\r\n monthlyAccountPayment < monthlyEmployerContribution\r\n ) {\r\n retVal = monthlyAccountPayment;\r\n }\r\n return retVal;\r\n }\r\n\r\n getEmployeeContribution() {\r\n const { data } = this.props;\r\n let retVal = 0;\r\n if (data.paymentHistory !== null && Object.values(data.paymentHistory).length > 0) {\r\n Object.values(data.paymentHistory).forEach((element) => {\r\n retVal += element.employeeAmount;\r\n });\r\n }\r\n return retVal;\r\n }\r\n\r\n allowedEdit() {\r\n const { data } = this.props;\r\n return data.contributionStatus !== 'DENIED';\r\n }\r\n\r\n showEmployeeContribution() {\r\n const { setup, permissions } = this.props;\r\n let retVal = true;\r\n\r\n if (\r\n !permissions.showForgiveness &&\r\n (setup.nonPslfAllowCustomEmployeeContribution === 'NO' ||\r\n setup.nonPslfAllowCustomEmployeeContribution === 'PMTNOPD' ||\r\n setup.nonPslfAllowCustomEmployeeContribution === 'PMTAMT')\r\n ) {\r\n retVal = false;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n getBaseInfo() {\r\n const { data, dataLevel, contributionData, onEditContribution } = this.props;\r\n\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-5\">\r\n {dataLevel > 0 && <CardTitle>{data.account}</CardTitle>}\r\n {dataLevel === 0 && (\r\n <dl>\r\n <dd>\r\n <Header5>{data.account}</Header5>\r\n </dd>\r\n <PaddedDD></PaddedDD>\r\n </dl>\r\n )}\r\n </div>\r\n <div className=\"col-12 col-sm-7\">\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-10\">{this.getProgressBar()}</div>\r\n\r\n {dataLevel === 2 && this.allowedEdit() && (\r\n <DivRight className=\"col-2\">\r\n <StyledButton\r\n invert\r\n brand=\"secondary\"\r\n onClick={() => onEditContribution(data.id)}\r\n title={'Edit Contribution'}\r\n >\r\n <FontAwesomeIcon icon={faEdit} fixedWidth />\r\n </StyledButton>\r\n </DivRight>\r\n )}\r\n </div>\r\n </CardText>\r\n </div>\r\n </div>\r\n <CardText>\r\n {dataLevel === 1 && (\r\n <>\r\n <Header4>Current Elections</Header4>\r\n <div className=\"row\">\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Employer Allocation</dt>\r\n <PaddedDD>\r\n {getEmployerMonthlyAmountDisplay(\r\n data.contributionType,\r\n data.employerContribution,\r\n this.getMonthlyEmployerContribution(\r\n data.monthlyAccountPayment,\r\n contributionData.monthlyEmployerContribution\r\n )\r\n )}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n {this.showEmployeeContribution() && (\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Employee Allocation</dt>\r\n <PaddedDD>{formatAsMoney(data.employeeContribution)}</PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </CardText>\r\n </>\r\n );\r\n }\r\n\r\n getFooterText() {\r\n return (\r\n <>\r\n <PaddedDiv className=\"row\">\r\n <div className=\"col-12\">\r\n Note: Contribution payments are submitted within 3-5 business days of the Scheduled\r\n Contribution Date. However, please note that the processing time may vary with different\r\n loan servicers.\r\n </div>\r\n </PaddedDiv>\r\n </>\r\n );\r\n }\r\n\r\n getDetailedInfo() {\r\n const { data, contributionData, permissions } = this.props;\r\n\r\n return (\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Total Employer Contribution</dt>\r\n <PaddedDD>{formatAsMoney(this.getEmployerContribution())}</PaddedDD>\r\n </dl>\r\n </div>\r\n {this.showEmployeeContribution() && (\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Total Employee Contribution</dt>\r\n <PaddedDD>{formatAsMoney(this.getEmployeeContribution())}</PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n </div>\r\n <Header4>Account Information on File</Header4>\r\n <div className=\"row\">\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Account Type</dt>\r\n <PaddedDD>{data.accountType}</PaddedDD>\r\n </dl>\r\n </div>\r\n\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Account Balance</dt>\r\n <PaddedDD>{formatAsMoney(data.currentBalance)}</PaddedDD>\r\n </dl>\r\n </div>\r\n\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Monthly Payment</dt>\r\n <PaddedDD>{formatAsMoney(data.monthlyAccountPayment)}</PaddedDD>\r\n </dl>\r\n </div>\r\n\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Interest Rate</dt>\r\n <PaddedDD>{formatAsPercent(data.interestRate)}</PaddedDD>\r\n </dl>\r\n </div>\r\n </div>\r\n <Header4>Current Elections</Header4>\r\n <div className=\"row\">\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Employer Allocation</dt>\r\n <PaddedDD>\r\n {getEmployerMonthlyAmountDisplay(\r\n data.contributionType,\r\n data.employerContribution,\r\n this.getMonthlyEmployerContribution(\r\n data.monthlyAccountPayment,\r\n contributionData.monthlyEmployerContribution\r\n )\r\n )}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n {this.showEmployeeContribution() && (\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Employee Allocation</dt>\r\n <PaddedDD>{formatAsMoney(data.employeeContribution)}</PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n </div>\r\n </CardText>\r\n );\r\n }\r\n\r\n getRecentPaymentInfo() {\r\n const { data, dataLevel } = this.props;\r\n\r\n return (\r\n <CardText>\r\n {dataLevel === 1 && (\r\n <>\r\n {' '}\r\n <Header4>Most Recent Contribution Payment</Header4>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n {data.paymentHistory === null ||\r\n (Object.values(data.paymentHistory).length === 0 && (\r\n <div className=\"col\">\r\n <p>No payments on file for this account.</p>\r\n </div>\r\n ))}\r\n {data.paymentHistory !== null && Object.values(data.paymentHistory).length > 0 && (\r\n <div className=\"row\">\r\n <div className=\"col-3\">\r\n <dl>\r\n <dt>Employer Allocation</dt>\r\n <PaddedDD>{formatAsMoney(data.paymentHistory[0].employerAmount)}</PaddedDD>\r\n </dl>\r\n </div>\r\n {this.showEmployeeContribution() && (\r\n <div className=\"col-3\">\r\n <dl>\r\n <dt>Employee Allocation</dt>\r\n <PaddedDD>\r\n {formatAsMoney(data.paymentHistory[0].employeeAmount)}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n <div className=\"col-3\">\r\n <dl>\r\n <dt>Contribution Date</dt>\r\n <PaddedDD>\r\n {data.paymentHistory[0].paymentSuccessDate !== undefined &&\r\n data.paymentHistory[0].paymentSuccessDate !== null\r\n ? convertIsoToSlash(data.paymentHistory[0].paymentSuccessDate)\r\n : convertIsoToSlash(data.paymentHistory[0].paymentScheduleDate)}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n <div className=\"col-3\">\r\n <dl>\r\n <dt>Loan Due Date</dt>\r\n <PaddedDD>\r\n {data.dueDate !== undefined && data.dueDate !== null\r\n ? convertIsoToSlash(data.dueDate)\r\n : ''}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n <div className=\"row\">\r\n <div className=\"col-auto\">\r\n <Header4>\r\n Next Scheduled Contribution Payment{' '}\r\n <PaymentHelpButton brand=\"primary\" onClick={this.openHelp}>\r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n How are Payments Scheduled\r\n </PaymentHelpButton>\r\n </Header4>\r\n </div>\r\n {dataLevel === 2 &&\r\n data.paymentHistory !== null &&\r\n Object.values(data.paymentHistory).length > 0 && (\r\n <DivRight className=\"col\">\r\n <Button brand=\"primary\" onClick={this.openModal}>\r\n Show Payment History\r\n </Button>\r\n </DivRight>\r\n )}\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n {data.scheduledPayments === null ||\r\n (Object.values(data.scheduledPayments).length === 0 && (\r\n <div className=\"col\">\r\n <p>No scheduled payments on file for this account.</p>\r\n </div>\r\n ))}\r\n {data.scheduledPayments !== null && Object.values(data.scheduledPayments).length > 0 && (\r\n <div className=\"row\">\r\n <div className=\"col-3\">\r\n <dl>\r\n <dt>Employer Allocation</dt>\r\n <PaddedDD>\r\n {formatAsMoney(\r\n data.scheduledPayments[Object.values(data.scheduledPayments).length - 1]\r\n .employerAmount\r\n )}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n {this.showEmployeeContribution() && (\r\n <div className=\"col-3\">\r\n <dl>\r\n <dt>Employee Allocation</dt>\r\n <PaddedDD>\r\n {formatAsMoney(\r\n data.scheduledPayments[Object.values(data.scheduledPayments).length - 1]\r\n .employeeAmount\r\n )}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n <div className=\"col-3\">\r\n <dl>\r\n <dt>Scheduled Contribution Date</dt>\r\n <PaddedDD>\r\n {convertIsoToSlash(\r\n data.scheduledPayments[Object.values(data.scheduledPayments).length - 1]\r\n .paymentScheduleDate\r\n )}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n <div className=\"col-3\">\r\n <dl>\r\n <dt>Loan Due Date</dt>\r\n <PaddedDD>\r\n {data.dueDate !== undefined && data.dueDate !== null\r\n ? convertIsoToSlash(data.dueDate)\r\n : ''}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </CardText>\r\n );\r\n }\r\n\r\n render() {\r\n const { data, dataLevel = 0 } = this.props;\r\n\r\n if (!data.active) {\r\n return null;\r\n } else if (dataLevel === 0) {\r\n return this.getBaseInfo();\r\n } else if (dataLevel === 1) {\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n {this.getBaseInfo()}\r\n {this.getRecentPaymentInfo()}\r\n {this.getFooterText()}\r\n </CardBody>\r\n </Card>\r\n <PaymentHelp data={data} isOpen={this.state.showHelp} closeForm={this.closeHelp} />\r\n <AvailablePaymentHistoryTable\r\n data={data.paymentHistory}\r\n employeeContribution={this.getEmployeeContribution()}\r\n isOpen={this.state.showModal}\r\n closeForm={this.closeModal}\r\n />\r\n </>\r\n );\r\n } else if (dataLevel === 2) {\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n {this.getBaseInfo()}\r\n {this.getDetailedInfo()}\r\n {this.getRecentPaymentInfo()}\r\n {this.getFooterText()}\r\n </CardBody>\r\n </Card>\r\n <PaymentHelp data={data} isOpen={this.state.showHelp} closeForm={this.closeHelp} />\r\n <AvailablePaymentHistoryTable\r\n data={data.paymentHistory}\r\n employeeContribution={this.getEmployeeContribution()}\r\n isOpen={this.state.showModal}\r\n closeForm={this.closeModal}\r\n />\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n contributionData: getContributionData(state),\r\n setup: getContributionSetupData(state),\r\n customerContributionData: state.customerContribution.cache,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ActiveContribution));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport {\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n AsyncLoader,\r\n ButtonCarousel,\r\n Button,\r\n Header5,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId, getToken } from '../../auth';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport { withPermissions } from '../../routing';\r\nimport ActiveContribution from '../components/active-contribution';\r\n\r\nconst StyledDiv = styled.div`\r\n display: flex;\r\n align-content: center;\r\n`;\r\n\r\nconst DivRight = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nconst StyledHeader5 = styled(Header5)`\r\n margin-left: 0em;\r\n margin-top: 1em;\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nclass Overview extends React.Component {\r\n static propTypes = {\r\n id: t.string,\r\n token: t.string,\r\n data: t.object,\r\n load: t.func,\r\n permissions: t.object,\r\n request: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectUri: '' };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n const { request, data, permissions } = this.props;\r\n\r\n let numActive = Object.values(data).filter((a) => a.active).length;\r\n if (this.state.redirectUri && this.state.redirectUri.length > 0) {\r\n return <Redirect to={this.state.redirectUri} />;\r\n }\r\n return (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-auto\">Active Contribution(s)</div>\r\n <AsyncLoader request={request} empty={<></>} loading={<></>}>\r\n <DivRight className=\"col-12 col-sm\">\r\n <StyledButton\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.setState({\r\n ...this.state,\r\n redirectUri: '/benefits/contribution/active-contributions',\r\n });\r\n }}\r\n >\r\n Manage Active Contribution(s)\r\n </StyledButton>\r\n {!permissions.showForgiveness && (\r\n <StyledButton\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.setState({\r\n ...this.state,\r\n redirectUri: '/benefits/contribution/inactive-contributions',\r\n });\r\n }}\r\n >\r\n Manage Inactive Contribution(s)\r\n </StyledButton>\r\n )}\r\n </DivRight>\r\n </AsyncLoader>\r\n </div>\r\n </CardTitle>\r\n <AsyncLoader\r\n request={request}\r\n empty={\r\n <StyledHeader5>There are no active contribution accounts on file.</StyledHeader5>\r\n }\r\n >\r\n <StyledDiv>\r\n {numActive > 0 && (\r\n <ButtonCarousel\r\n components={Object.values(data)\r\n .filter((a) => a.active)\r\n .map((contribution, i) => (\r\n <ActiveContribution data={contribution} key={i} dataLevel={1} />\r\n ))}\r\n componentDisplayNames={Object.values(data)\r\n .filter((a) => a.active)\r\n .map((contribution, i) => contribution.account)}\r\n />\r\n )}\r\n {numActive === 0 && (\r\n <StyledHeader5>There are no active contribution accounts on file.</StyledHeader5>\r\n )}\r\n </StyledDiv>\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n token: getToken(state),\r\n id: getUserId(state),\r\n data: safeAccess(state, 'customerContribution.cache', {}),\r\n request: state.customerContribution.requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Overview));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n ProgressBar,\r\n Header4,\r\n Header5,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions, PaddedDD } from '../../routing';\r\nimport { formatAsMoney, formatAsPercent, convertIsoToSlash } from '../../utils';\r\nimport { getContributionData } from '../../benefits/contribution/redux/selectors';\r\nimport { getContributionSetupData } from '../../contribution-setup';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\r\nimport AvailablePaymentHistoryTable from './available-payment-history-table';\r\n\r\nconst PaddedDiv = styled.div`\r\n padding-bottom: 1em;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin-left: 0em;\r\n`;\r\n\r\nconst DivRight = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nclass InactiveContribution extends React.Component {\r\n static propTypes = {\r\n key: t.any,\r\n data: t.object.isRequired,\r\n setup: t.object,\r\n dataLevel: t.number,\r\n contributionData: t.object,\r\n customerContributionData: t.object,\r\n permissions: t.object,\r\n onEditContribution: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showModal: false };\r\n\r\n this.closeModal = this.closeModal.bind(this);\r\n this.openModal = this.openModal.bind(this);\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n closeModal() {\r\n this.setState({ ...this.state, showModal: false });\r\n }\r\n\r\n openModal() {\r\n this.setState({ ...this.state, showModal: true });\r\n }\r\n\r\n getProgressBar() {\r\n const { data } = this.props;\r\n let stepsCompleted = 0;\r\n let stageText = 'Account Denied for Contribution';\r\n if (\r\n data.contributionStatus === 'CREATED' ||\r\n data.contributionStatus === 'WAITINIT' ||\r\n data.contributionStatus === 'WAITREVAL'\r\n ) {\r\n stepsCompleted = 1;\r\n stageText = 'Waiting on Account Statement';\r\n } else if (data.contributionStatus === 'UPLOAD') {\r\n stepsCompleted = 2;\r\n stageText = 'Account Statement Uploaded and Under Review';\r\n } else if (data.contributionStatus === 'APPROVE') {\r\n stepsCompleted = 3;\r\n stageText = 'Account Approved for Contribution';\r\n }\r\n\r\n return (\r\n <>\r\n <dl>\r\n <dd>\r\n <ProgressBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: stepsCompleted > 0 ? (100 * stepsCompleted) / 3 : 0,\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: stepsCompleted > 0 && stepsCompleted < 3 ? 100 / 3 : 0,\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'To Be Completed',\r\n value:\r\n stepsCompleted > 0\r\n ? (100 * (stepsCompleted === 3 ? 0 : 3 - (stepsCompleted + 1))) / 3\r\n : 0,\r\n },\r\n {\r\n brand: 'danger',\r\n name: 'danger',\r\n title: 'Denied',\r\n value: stepsCompleted === 0 ? 100 : 0,\r\n },\r\n ]}\r\n />\r\n </dd>\r\n <dd>Stage: {stageText}</dd>\r\n </dl>\r\n </>\r\n );\r\n }\r\n\r\n getEmployerContribution() {\r\n const { data } = this.props;\r\n let retVal = 0;\r\n if (Object.values(data.paymentHistory).length > 0) {\r\n data.paymentHistory.forEach((element) => {\r\n retVal += element.employerAmount;\r\n });\r\n }\r\n return retVal;\r\n }\r\n\r\n getEmployeeContribution() {\r\n const { data } = this.props;\r\n let retVal = 0;\r\n if (Object.values(data.paymentHistory).length > 0) {\r\n data.paymentHistory.forEach((element) => {\r\n retVal += element.employeeAmount;\r\n });\r\n }\r\n return retVal;\r\n }\r\n\r\n allowedEdit() {\r\n const { data, customerContributionData } = this.props;\r\n return (\r\n data.contributionStatus !== 'DENIED' &&\r\n Object.values(customerContributionData).filter((a) => a.active).length < 2\r\n );\r\n }\r\n\r\n showEmployeeContribution() {\r\n const { setup, permissions } = this.props;\r\n let retVal = true;\r\n\r\n if (\r\n !permissions.showForgiveness &&\r\n (setup.nonPslfAllowCustomEmployeeContribution === 'NO' ||\r\n setup.nonPslfAllowCustomEmployeeContribution === 'PMTNOPD' ||\r\n setup.nonPslfAllowCustomEmployeeContribution === 'PMTAMT')\r\n ) {\r\n retVal = false;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n getBaseInfo() {\r\n const { data, dataLevel, onEditContribution } = this.props;\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-5\">\r\n {dataLevel > 0 && <CardTitle>{data.account}</CardTitle>}\r\n {dataLevel === 0 && (\r\n <dl>\r\n <dd>\r\n <Header5>{data.account}</Header5>\r\n </dd>\r\n <PaddedDD></PaddedDD>\r\n </dl>\r\n )}\r\n </div>\r\n <div className=\"col-12 col-sm-7\">\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-10\">{this.getProgressBar()}</div>\r\n\r\n {dataLevel === 2 && this.allowedEdit() && (\r\n <DivRight className=\"col-2\">\r\n <StyledButton\r\n invert\r\n brand=\"secondary\"\r\n onClick={() => onEditContribution(data.id)}\r\n title={'Edit Contribution'}\r\n >\r\n <FontAwesomeIcon icon={faEdit} fixedWidth />\r\n </StyledButton>\r\n </DivRight>\r\n )}\r\n </div>\r\n </CardText>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n getDetailedInfo() {\r\n const { data } = this.props;\r\n\r\n return (\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Total Employer Contribution</dt>\r\n <PaddedDD>{formatAsMoney(this.getEmployerContribution())}</PaddedDD>\r\n </dl>\r\n </div>\r\n {this.showEmployeeContribution() && (\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Total Employee Contribution</dt>\r\n <PaddedDD>{formatAsMoney(this.getEmployeeContribution())}</PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n </div>\r\n <Header4>Account Information on File</Header4>\r\n <div className=\"row\">\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Account Type</dt>\r\n <PaddedDD>{data.accountType}</PaddedDD>\r\n </dl>\r\n </div>\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Account Balance</dt>\r\n <PaddedDD>{formatAsMoney(data.currentBalance)}</PaddedDD>\r\n </dl>\r\n </div>\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Monthly Payment</dt>\r\n <PaddedDD>{formatAsMoney(data.monthlyAccountPayment)}</PaddedDD>\r\n </dl>\r\n </div>\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Interest Rate</dt>\r\n <PaddedDD>{formatAsPercent(data.interestRate)}</PaddedDD>\r\n </dl>\r\n </div>\r\n </div>\r\n </CardText>\r\n );\r\n }\r\n\r\n getFooterText() {\r\n return (\r\n <>\r\n <PaddedDiv className=\"row\">\r\n <div className=\"col-12\">\r\n Note: Contribution payments are submitted within 3-5 business days of the Scheduled\r\n Contribution Date. However, please note that the processing time may vary with different\r\n loan servicers.\r\n </div>\r\n </PaddedDiv>\r\n </>\r\n );\r\n }\r\n\r\n getRecentPaymentInfo() {\r\n const { data, dataLevel } = this.props;\r\n\r\n return (\r\n <>\r\n <CardText>\r\n {dataLevel === 2 && (\r\n <>\r\n {' '}\r\n <div className=\"row\">\r\n <div className=\"col-auto\">\r\n <Header4>Most Recent Contribution Payment</Header4>\r\n </div>\r\n {dataLevel === 2 && Object.values(data.paymentHistory).length > 0 && (\r\n <DivRight className=\"col\">\r\n <Button brand=\"primary\" onClick={this.openModal}>\r\n Show Payment History\r\n </Button>\r\n </DivRight>\r\n )}\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n {Object.values(data.paymentHistory).length === 0 && (\r\n <div className=\"col\">\r\n <p>No payments on file for this account.</p>\r\n </div>\r\n )}\r\n {Object.values(data.paymentHistory).length > 0 && (\r\n <div className=\"row\">\r\n <div className=\"col-4\">\r\n <dl>\r\n <dt>Employer Allocation</dt>\r\n <PaddedDD>\r\n {formatAsMoney(data.paymentHistory[0].employerAmount)}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n {this.showEmployeeContribution() && (\r\n <div className=\"col-4\">\r\n <dl>\r\n <dt>Employee Allocation</dt>\r\n <PaddedDD>\r\n {formatAsMoney(data.paymentHistory[0].employeeAmount)}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n <div className=\"col-4\">\r\n <dl>\r\n <dt>Contribution Date</dt>\r\n <PaddedDD>\r\n {convertIsoToSlash(\r\n data.paymentHistory[0].paymentSuccessDate !== undefined &&\r\n data.paymentHistory[0].paymentSuccessDate !== null\r\n ? data.paymentHistory[0].paymentSuccessDate\r\n : data.paymentHistory[0].paymentScheduleDate\r\n )}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </CardText>\r\n\r\n <AvailablePaymentHistoryTable\r\n data={data.paymentHistory}\r\n employeeContribution={this.getEmployeeContribution()}\r\n isOpen={this.state.showModal}\r\n closeForm={this.closeModal}\r\n />\r\n </>\r\n );\r\n }\r\n\r\n render() {\r\n const { data, dataLevel = 0 } = this.props;\r\n\r\n if (data.active) {\r\n return null;\r\n } else if (dataLevel === 0) {\r\n return this.getBaseInfo();\r\n } else if (dataLevel === 1) {\r\n return (\r\n <Card>\r\n <CardBody>\r\n {this.getBaseInfo()}\r\n {this.getRecentPaymentInfo()}\r\n {this.getFooterText()}\r\n </CardBody>\r\n </Card>\r\n );\r\n } else if (dataLevel === 2) {\r\n return (\r\n <Card>\r\n <CardBody>\r\n {this.getBaseInfo()}\r\n {this.getDetailedInfo()}\r\n {this.getRecentPaymentInfo()}\r\n {this.getFooterText()}\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n contributionData: getContributionData(state),\r\n setup: getContributionSetupData(state),\r\n customerContributionData: state.customerContribution.cache,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(InactiveContribution));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n CardText,\r\n Form,\r\n InputAddon,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputNumeric,\r\n InputSelect,\r\n InputWrapper,\r\n Loader,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../root';\r\nimport { withPermissions, Fade, PaddedDD } from '../../routing';\r\nimport { safeAccess, stringIsNullOrEmpty, formatAsMoney, formatAsPercent } from '../../utils';\r\n\r\nimport { getContributionSetupData } from '../../contribution-setup';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nclass CustomerContributionForm extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n setup: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n permissions: t.object,\r\n accountsOnFile: t.object,\r\n contributionEligibleAccounts: t.object,\r\n token: t.any,\r\n contributionData: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.modalRef = React.createRef();\r\n this.firstInput = React.createRef();\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.data.error = '';\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n // if (!prevProps.isOpen && this.props.isOpen) {\r\n // // TODO: this focuses correctly, but loses focus right afterwards for some reason\r\n // this.firstInput.current.focus();\r\n // }\r\n\r\n if (\r\n !prevProps.errors.generalErrors &&\r\n this.props.errors.generalErrors &&\r\n this.modalRef.current !== null\r\n ) {\r\n this.modalRef.current.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n onAccountChange() {\r\n //Do things\r\n }\r\n\r\n showEmployeeContribution() {\r\n const { setup, permissions } = this.props;\r\n let retVal = true;\r\n\r\n if (\r\n !permissions.showForgiveness &&\r\n (setup.nonPslfAllowCustomEmployeeContribution === 'NO' ||\r\n setup.nonPslfAllowCustomEmployeeContribution === 'PMTNOPD' ||\r\n setup.nonPslfAllowCustomEmployeeContribution === 'PMTAMT')\r\n ) {\r\n retVal = false;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n getSelectedAccountInfo() {\r\n const { data, accountsOnFile } = this.props;\r\n\r\n let account = {};\r\n if (!stringIsNullOrEmpty(data.loanId)) {\r\n account = Object.values(accountsOnFile).filter(\r\n (a) => a.id.toString() === data.loanId.toString()\r\n )[0];\r\n }\r\n return (\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Account Balance</dt>\r\n <PaddedDD>\r\n {account !== undefined ? formatAsMoney(account.currentLoanBalance) : null}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Monthly Payment</dt>\r\n <PaddedDD>\r\n {account !== undefined ? formatAsMoney(account.monthlyPayment) : null}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n <div className=\"col-auto\">\r\n <dl>\r\n <dt>Interest Rate</dt>\r\n <PaddedDD>\r\n {account !== undefined && !isNaN(account.interestRate) ? (\r\n formatAsPercent(account.interestRate)\r\n ) : (\r\n <> </>\r\n )}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n </div>\r\n </CardText>\r\n );\r\n }\r\n\r\n getForm() {\r\n const {\r\n action,\r\n data,\r\n errors,\r\n onChange,\r\n onSubmit,\r\n permissions,\r\n contributionEligibleAccounts = {},\r\n contribution,\r\n } = this.props;\r\n\r\n if (permissions.showForgiveness && action === 'Create') {\r\n data.contributionType = contribution.contributionType;\r\n data.employerContribution = contribution.employerAmount;\r\n data.employeeContribution = contribution.employeeAmount;\r\n }\r\n\r\n return (\r\n <Form defaults={data} handleChange={onChange} id={data.id || 'create'} onSubmit={onSubmit}>\r\n <InputWrapper error={!!errors.loanId}>\r\n <InputLabel htmlFor=\"loanId\" required>\r\n Account\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'loanId.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"loanId\"\r\n options={contributionEligibleAccounts}\r\n value={data.loanId || ''}\r\n disabled={action === 'Update'}\r\n onChange={this.onAccountChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col\">{this.getSelectedAccountInfo()}</div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-6\">\r\n <InputWrapper error={!!errors.contributionType}>\r\n <InputLabel htmlFor=\"contributionType\" required>\r\n Employer Allocation Type\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'contributionType.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"contributionType\"\r\n options={{ '': '', D: 'Dollar Amount', P: 'Percentage' }}\r\n value={data.contributionType || ''}\r\n disabled={permissions.showForgiveness}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-lg-6\">\r\n <InputWrapper error={!!errors.employerContribution}>\r\n <InputLabel htmlFor=\"employerContribution\" required>\r\n Employer Allocation Amount\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'employerContribution.detail')}</InputError>\r\n <InputGroup>\r\n {data.contributionType === 'D' && <InputAddon>$</InputAddon>}\r\n <InputNumeric\r\n name=\"employerContribution\"\r\n defaultValue={data.employerContribution}\r\n disabled={permissions.showForgiveness}\r\n />\r\n {data.contributionType === 'P' && <InputAddon>%</InputAddon>}\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n {this.showEmployeeContribution() && (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-6\">\r\n <InputWrapper error={!!errors.employeeContribution}>\r\n <InputLabel htmlFor=\"employeeContribution\" required>\r\n Employee Allocation Amount\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'employeeContribution.detail')}</InputError>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"employeeContribution\"\r\n defaultValue={data.employeeContribution}\r\n disabled={permissions.showForgiveness}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n )}\r\n <InputWrapper error={!!errors.active}>\r\n <InputLabel htmlFor=\"active\" required>\r\n Contribution Active\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'active.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"active\"\r\n options={{ true: 'Active', false: 'Inactive' }}\r\n disabled={action === 'Create'}\r\n value={data.active !== undefined ? data.active.toString() : 'true'}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n }\r\n\r\n enableSubmit = () => {\r\n return this.checkNoMissingData() && this.checkNoErrors();\r\n };\r\n\r\n checkNoMissingData = () => {\r\n return true;\r\n };\r\n\r\n checkNoErrors = () => {\r\n return true;\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (!this.props.isLoading) {\r\n this.props.onSubmit();\r\n }\r\n };\r\n\r\n render() {\r\n const { action, closeForm, errors = {}, isLoading, isOpen } = this.props;\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={false}>\r\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\r\n <CardHeader>{action} Contribution</CardHeader>\r\n <CardBody>\r\n {errors.generalErrors &&\r\n errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n <TextLeft>{this.getForm()}</TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Fade show={this.enableSubmit()}>\r\n <Button brand=\"success\" onClick={(e) => this.submit(e)}>\r\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : action + ' contribution'}\r\n </Button>\r\n </Fade>\r\n <Fade show={!isLoading && !this.checkNoMissingData()}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade show={!isLoading && this.checkNoMissingData() && !this.checkNoErrors()}>\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n accountsOnFile: state.accounts.cache,\r\n setup: getContributionSetupData(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(CustomerContributionForm));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { withPermissions, Fade } from '../../routing';\r\nimport {\r\n Alert,\r\n Animation,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n CardTitle,\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n Modal,\r\n fade,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../root';\r\nimport { safeAccess, stringIsNullOrEmpty } from '../../utils';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst StyledFade = styled.div`\r\n ${fade};\r\n`;\r\n\r\nclass ServicerForm extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n permissions: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n refServicers: t.object,\r\n selectRefServicer: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.modalRef = React.createRef();\r\n this.firstInput = React.createRef();\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate(prevProps) {\r\n // if (!prevProps.isOpen && this.props.isOpen) {\r\n // // TODO: this focuses correctly, but loses focus right afterwards for some reason\r\n // this.firstInput.current.focus();\r\n // }\r\n\r\n if (!prevProps.errors.generalErrors && this.props.errors.generalErrors) {\r\n this.modalRef.current.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n getShowSecondColumn() {\r\n const { permissions } = this.props;\r\n\r\n return (\r\n (permissions.isFullService && permissions.inForgiveness) ||\r\n (!permissions.inTuition && permissions.inForgiveness)\r\n );\r\n return false;\r\n }\r\n\r\n getForm() {\r\n const {\r\n data = {},\r\n errors = {},\r\n onChange,\r\n onSubmit,\r\n refServicers = {},\r\n selectRefServicer,\r\n } = this.props;\r\n\r\n const id = data.id || 'create';\r\n const isCreating = id === 'create';\r\n const refId = data.refServicerId || '';\r\n const exists = (isCreating && refId !== '') || !isCreating;\r\n let colVar = 'col-12 col-xl-6 col-lg-6 col-md-6';\r\n\r\n if (!this.getShowSecondColumn()) {\r\n colVar = 'col-12 col-xl-12 col-lg-12 col-md-12';\r\n }\r\n\r\n return (\r\n <Form defaults={data} handleChange={onChange} id={id} onSubmit={onSubmit}>\r\n <div className=\"row\">\r\n <div className={colVar}>\r\n <CardTitle>Servicer / Bank Contact Information</CardTitle>\r\n {id === 'create' && (\r\n <InputWrapper error={!!errors.refServicerId}>\r\n <InputLabel htmlFor=\"refServicerId\" required>\r\n Template Servicer\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'refServicerId.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputSelect\r\n name=\"refServicerId\"\r\n options={refServicers}\r\n value={refId}\r\n onChange={selectRefServicer}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n )}\r\n <Animation key=\"servicerInfo\" animation=\"fade\" appear={false} in={exists} unmountOnExit>\r\n <StyledFade>\r\n <InputWrapper error={!!errors.servicerName}>\r\n <InputLabel htmlFor=\"servicerName\" required>\r\n Servicer / Bank Name\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'servicerName.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText\r\n inputRef={this.firstInput}\r\n name=\"servicerName\"\r\n defaultValue={data.servicerName}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.description}>\r\n <InputLabel htmlFor=\"description\" required>\r\n Description\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'description.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"description\" defaultValue={data.description} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.routingNumber}>\r\n <InputLabel htmlFor=\"routingNumber\" required>\r\n Routing Number\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'routingNumber.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputText name=\"routingNumber\" defaultValue={data.routingNumber} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.address1}>\r\n <InputLabel htmlFor=\"address1\" required>\r\n Address Line 1\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'address1.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name=\"address1\" defaultValue={data.address1} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.address2}>\r\n <InputLabel htmlFor=\"address2\">Address Line 2</InputLabel>\r\n <InputError>{safeAccess(errors, 'address2.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name=\"address2\" defaultValue={data.address2} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.city}>\r\n <InputLabel htmlFor=\"city\" required>\r\n City\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'city.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name=\"city\" defaultValue={data.city} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-4 col-sm-4 col-xs-12\">\r\n <InputWrapper error={!!errors.state}>\r\n <InputLabel htmlFor=\"state\" required>\r\n State\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'state.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n defaultValue={data.state}\r\n name=\"state\"\r\n options={[\r\n '',\r\n 'AL',\r\n 'AK',\r\n 'AR',\r\n 'AZ',\r\n 'CA',\r\n 'CO',\r\n 'CT',\r\n 'DC',\r\n 'DE',\r\n 'FL',\r\n 'GA',\r\n 'HI',\r\n 'IA',\r\n 'ID',\r\n 'IL',\r\n 'IN',\r\n 'KS',\r\n 'KY',\r\n 'LA',\r\n 'MA',\r\n 'MD',\r\n 'ME',\r\n 'MI',\r\n 'MN',\r\n 'MO',\r\n 'MS',\r\n 'MT',\r\n 'NC',\r\n 'NE',\r\n 'NH',\r\n 'NJ',\r\n 'NM',\r\n 'NV',\r\n 'NY',\r\n 'ND',\r\n 'OH',\r\n 'OK',\r\n 'OR',\r\n 'PA',\r\n 'PR',\r\n 'RI',\r\n 'SC',\r\n 'SD',\r\n 'TN',\r\n 'TX',\r\n 'UT',\r\n 'VT',\r\n 'VA',\r\n 'WA',\r\n 'WI',\r\n 'WV',\r\n 'WY',\r\n ]}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-4 col-sm-4 col-xs-12\">\r\n <InputWrapper error={!!errors.zip}>\r\n <InputLabel htmlFor=\"zip\" required>\r\n Zip Code\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'zip.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"zip\" defaultValue={data.zip} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-5 col-sm-6 col-xs-12\">\r\n <InputWrapper error={!!errors.phone}>\r\n <InputLabel htmlFor=\"phone\" required>\r\n Phone\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'phone.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={data.phone}\r\n mask=\"(###) ###-####\"\r\n name=\"phone\"\r\n placeholder=\"(___) ___-____\"\r\n type=\"tel\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-3 col-xl-3 col-lg-3 col-md-3 col-sm-3 col-xs-12\">\r\n <InputWrapper error={!!errors.phoneExtension}>\r\n <InputLabel htmlFor=\"phoneExtension\">Ext.</InputLabel>\r\n <InputError>{safeAccess(errors, 'phoneExtension.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"phoneExtension\" defaultValue={data.phoneExtension} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel htmlFor=\"email\">Email</InputLabel>\r\n <InputError>{safeAccess(errors, 'email.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputText name=\"email\" defaultValue={data.email} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledFade>\r\n </Animation>\r\n </div>\r\n\r\n {this.getShowSecondColumn() && (\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <CardTitle>Servicer / Bank Login Information</CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-sm-12 col-xs-12\">\r\n <InputWrapper error={!!errors.username}>\r\n <InputLabel htmlFor=\"username\" required>\r\n Username\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'username.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"username\" defaultValue={data.username} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <InputWrapper error={!!errors.password}>\r\n <InputLabel htmlFor=\"password\" required>\r\n Password\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'password.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"password\" defaultValue={data.password} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-sm-12 col-xs-12\">\r\n <InputWrapper error={!!errors.question1Text}>\r\n <InputLabel htmlFor=\"question1Text\">Challenge Question 1</InputLabel>\r\n <InputError>{safeAccess(errors, 'question1Text.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name=\"question1Text\" defaultValue={data.question1Text} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.question1Response}>\r\n <InputLabel htmlFor=\"question1Response\">Challenge Question 1 Answer</InputLabel>\r\n <InputError>{safeAccess(errors, 'question1Response.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputText name=\"question1Response\" defaultValue={data.question1Response} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-sm-12 col-xs-12\">\r\n <InputWrapper error={!!errors.question2Text}>\r\n <InputLabel htmlFor=\"question2Text\">Challenge Question 2</InputLabel>\r\n <InputError>{safeAccess(errors, 'question2Text.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name=\"question2Text\" defaultValue={data.question2Text} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.question2Response}>\r\n <InputLabel htmlFor=\"question2Response\">Challenge Question 2 Answer</InputLabel>\r\n <InputError>{safeAccess(errors, 'question2Response.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputText name=\"question2Response\" defaultValue={data.question2Response} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-sm-12 col-xs-12\">\r\n <InputWrapper error={!!errors.question3Text}>\r\n <InputLabel htmlFor=\"question3Text\">Challenge Question 3</InputLabel>\r\n <InputError>{safeAccess(errors, 'question3Text.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText name=\"question3Text\" defaultValue={data.question3Text} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.question3Response}>\r\n <InputLabel htmlFor=\"question3Response\">Challenge Question 3 Answer</InputLabel>\r\n <InputError>{safeAccess(errors, 'question3Response.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputText name=\"question3Response\" defaultValue={data.question3Response} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n\r\n checkSecondColumnNoMissingData = () => {\r\n const { data = {} } = this.props;\r\n\r\n if (data.inForgiveness && data.isFullService) {\r\n return (\r\n !stringIsNullOrEmpty(data.username) &&\r\n !stringIsNullOrEmpty(data.password) &&\r\n ((!stringIsNullOrEmpty(data.question1Text) &&\r\n !stringIsNullOrEmpty(data.question1Response)) ||\r\n (stringIsNullOrEmpty(data.question1Response) &&\r\n stringIsNullOrEmpty(data.question1Text))) &&\r\n ((!stringIsNullOrEmpty(data.question2Text) &&\r\n !stringIsNullOrEmpty(data.question2Response)) ||\r\n (stringIsNullOrEmpty(data.question2Response) &&\r\n stringIsNullOrEmpty(data.question2Text))) &&\r\n ((!stringIsNullOrEmpty(data.question3Text) &&\r\n !stringIsNullOrEmpty(data.question3Response)) ||\r\n (stringIsNullOrEmpty(data.question3Response) && stringIsNullOrEmpty(data.question3Text)))\r\n );\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n checkSecondColumnNoErrors = () => {\r\n const { data = {}, errors = {} } = this.props;\r\n\r\n if (data.inForgiveness && data.isFullService) {\r\n return (\r\n !errors.question1Text &&\r\n !errors.question1Response &&\r\n !errors.question2Text &&\r\n !errors.question2Response &&\r\n !errors.question3Text &&\r\n !errors.question3Response &&\r\n !errors.username &&\r\n !errors.password\r\n );\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n enableSubmit = () => {\r\n return this.checkNoMissingData() && this.checkNoErrors();\r\n };\r\n\r\n checkNoMissingData = () => {\r\n const { data = {} } = this.props;\r\n return (\r\n !stringIsNullOrEmpty(data.servicerName) &&\r\n !stringIsNullOrEmpty(data.address1) &&\r\n !stringIsNullOrEmpty(data.city) &&\r\n !stringIsNullOrEmpty(data.state) &&\r\n !stringIsNullOrEmpty(data.zip) &&\r\n !stringIsNullOrEmpty(data.phone) &&\r\n this.checkSecondColumnNoMissingData()\r\n );\r\n };\r\n\r\n checkNoErrors = () => {\r\n const { data = {}, errors = {} } = this.props;\r\n return (\r\n !errors.servicerName &&\r\n !errors.routingNumber &&\r\n !errors.address1 &&\r\n !errors.address2 &&\r\n !errors.city &&\r\n !errors.state &&\r\n !errors.zip &&\r\n !errors.description &&\r\n !errors.phone &&\r\n data.phone.match(/(\\([0-9]{3}\\) [0-9]{3}-[0-9]{4}|[0-9]{10})/g) &&\r\n !errors.email &&\r\n this.checkSecondColumnNoErrors()\r\n );\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (!this.props.isLoading) {\r\n this.props.onSubmit();\r\n }\r\n };\r\n\r\n render() {\r\n const { action, errors, closeForm, isLoading, isOpen, permissions } = this.props;\r\n /*for(let [key, value] of Object.entries(permissions)) {\r\n alert(`${key}: ${value}`);\r\n }*/\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={this.getShowSecondColumn()}>\r\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\r\n <CardHeader>{action} Account Servicer</CardHeader>\r\n <CardBody>\r\n {errors.generalErrors && (\r\n <TextLeft>\r\n {errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n </TextLeft>\r\n )}\r\n <TextLeft>\r\n {this.getForm(\r\n permissions.isFullService,\r\n permissions.inTuition,\r\n permissions.inForgiveness\r\n )}\r\n </TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Fade show={this.enableSubmit()}>\r\n <Button brand=\"success\" onClick={(e) => this.submit(e)}>\r\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : action + ' Account Servicer'}\r\n </Button>\r\n </Fade>\r\n <Fade show={!isLoading && !this.checkNoMissingData()}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade show={!isLoading && this.checkNoMissingData() && !this.checkNoErrors()}>\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nexport default withPermissions(ServicerForm);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Button, Table } from 'fiducius-ui';\r\nimport { startCase } from '../../utils';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\r\n\r\nconst ServicerTable = ({ servicers = {}, onEditServicer }) => {\r\n if (Object.keys(servicers).length === 0) {\r\n return null;\r\n }\r\n\r\n const headers = ['id', 'servicerName', 'description', 'edit'];\r\n\r\n let body = Object.values(servicers).map((a) => headers.map((h) => a[h]));\r\n\r\n delete headers[0];\r\n body.forEach((row) => {\r\n const id = row[0];\r\n row[3] = (\r\n <Button invert brand=\"secondary\" onClick={() => onEditServicer(id)}>\r\n <FontAwesomeIcon icon={faEdit} fixedWidth />\r\n </Button>\r\n );\r\n delete row[0];\r\n });\r\n\r\n return (\r\n <Table\r\n body={body}\r\n columns={[\r\n {},\r\n { sortable: true, width: '50%' },\r\n { sortable: true, width: '30%' },\r\n { width: '10%' },\r\n ]}\r\n header={headers.map((h) => startCase(h))}\r\n />\r\n );\r\n};\r\n\r\nServicerTable.propTypes = {\r\n servicers: t.object,\r\n onEditServicer: t.func.isRequired,\r\n};\r\n\r\nexport default ServicerTable;\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('servicers');\r\n","import actions from './actions';\r\nimport { ServicerValidator } from './validators';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst servicerValidator = new ServicerValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/customer-servicer',\r\n resourceType: 'customer-servicer',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'servicers',\r\n actions,\r\n null,\r\n servicerValidator,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n servicersClearForm,\r\n servicersCopyResourceToForm,\r\n servicersHandleFormChange,\r\n servicersLoadCollection,\r\n servicersCreateResource,\r\n servicersUpdateResource,\r\n} = operations;\r\n\r\nexport {\r\n servicersClearForm,\r\n servicersCopyResourceToForm,\r\n servicersHandleFormChange,\r\n servicersLoadCollection,\r\n servicersCreateResource,\r\n servicersUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('servicers', types);\r\n","import { FormValidator, stringIsNullOrEmpty } from '../../utils';\r\n\r\nexport class ServicerValidator extends FormValidator {\r\n priorityNumber(validator) {\r\n // validator.isRequired();\r\n }\r\n\r\n servicerName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n username(validator, state) {\r\n if (state.isFullService && state.inForgiveness) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n password(validator, state) {\r\n if (state.isFullService && state.inForgiveness) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n routingNumber(validator, state) {\r\n if (validator.value && validator.value !== '') {\r\n validator.hasMaxLength(9);\r\n validator.matchesRegex(/^[0-9]{9}/g, 'must be 9 digits long');\r\n }\r\n }\r\n\r\n address1(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n address2(validator) {\r\n if (validator.value && validator.value !== '') {\r\n validator.hasMaxLength(30);\r\n }\r\n }\r\n\r\n city(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n state(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n\r\n zip(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n\r\n description(validator) {\r\n if (validator.value && validator.value !== '') {\r\n validator.hasMaxLength(50);\r\n }\r\n }\r\n\r\n phone(validator) {\r\n validator.isRequired();\r\n validator.isValidPhoneNumber();\r\n }\r\n\r\n phoneExtension(validator) {\r\n // validator.isRequired();\r\n }\r\n\r\n email(validator) {\r\n // validator.isRequired();\r\n validator.isValidEmail();\r\n }\r\n\r\n refServicerId(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n needsUpdated(validator) {\r\n // validator.isRequired();\r\n }\r\n\r\n question1Text(validator, state) {\r\n if (!stringIsNullOrEmpty(state.question1Response)) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n question1Response(validator, state) {\r\n if (!stringIsNullOrEmpty(state.question1Text)) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n question2Text(validator, state) {\r\n if (!stringIsNullOrEmpty(state.question2Response)) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n question2Response(validator, state) {\r\n if (!stringIsNullOrEmpty(state.question2Text)) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n question3Text(validator, state) {\r\n if (!stringIsNullOrEmpty(state.question3Response)) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n question3Response(validator, state) {\r\n if (!stringIsNullOrEmpty(state.question3Text)) {\r\n validator.isRequired();\r\n }\r\n }\r\n}\r\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlusCircle } from '@fortawesome/pro-solid-svg-icons/faPlusCircle';\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\n\nimport {\n AsyncLoader,\n Badge,\n Button,\n Card,\n CardBody,\n CardTitle,\n CardText,\n Modal,\n CardFooter,\n} from 'fiducius-ui';\n\nimport { debounce, mergeRequestStatuses, pick, safeAccess } from '../../utils';\nimport { todosLoadCollection } from '../../todos';\nimport { withPermissions } from '../../routing';\n\nimport ServicerForm from '../components/servicer-form';\nimport ServicerTable from '../components/servicer-table';\nimport {\n servicersClearForm,\n servicersCopyResourceToForm,\n servicersUpdateResource,\n servicersHandleFormChange,\n servicersCreateResource,\n} from '../redux/operations';\n\nconst StyledButton = styled(Button)`\n margin-right: 1em;\n margin-top: 1em;\n`;\n\nconst StyledCardText = styled(CardText)`\n text-align: left;\n`;\n\nconst PaddedIcon = styled(FontAwesomeIcon)`\n margin-right: 0.45em;\n`;\n\nconst PaddedBadge = styled(Badge)`\n margin-right: 0.45em;\n font-size: 0.75em;\n top: -0.75rem;\n`;\n\nclass Servicers extends React.Component {\n static propTypes = {\n actionRequest: t.object,\n clearForm: t.func.isRequired,\n createServicer: t.func.isRequired,\n errors: t.object,\n form: t.object,\n handleForm: t.func.isRequired,\n hasContributionAccountTypes: t.bool,\n hydrateForm: t.func.isRequired,\n permissions: t.object,\n refServicers: t.object,\n reload: t.func.isRequired,\n request: t.object,\n servicers: t.object,\n toDos: t.object,\n updateServicer: t.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n formId: null,\n showForm: false,\n showTuitionInstructions: false,\n showContributionInstructions: false,\n };\n this.handleInstructionsButton = this.handleInstructionsButton.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const wasLoading = prevProps.actionRequest.isLoading;\n const currently = this.props.actionRequest;\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\n this.setState({ ...this.state, showForm: false }, () => this.props.reload());\n }\n }\n\n closeForm = () => {\n this.props.clearForm();\n this.setState({ ...this.state, showForm: false });\n };\n\n onAddServicer = () => this.setState({ formId: null, showForm: true });\n\n onEditServicer = (id) => {\n this.props.hydrateForm(id);\n this.setState({ formId: id, showForm: true });\n };\n\n onSelectRef = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const id = e.target.value;\n const attributes = [\n 'address1',\n 'address2',\n 'city',\n 'email',\n 'phone',\n 'phoneExtension',\n 'refServicerId',\n 'routingNumber',\n 'servicerName',\n 'state',\n 'zip',\n ];\n\n const template = id === '-1' ? {} : pick(this.props.refServicers[id], attributes);\n const copiedServicer = { refServicerId: id, ...template };\n\n this.props.clearForm();\n this.onChange(copiedServicer, null, 'refServicerId');\n };\n\n onChange = debounce((servicer, id, attribute) => {\n const { permissions } = this.props;\n let formData = this.props.form;\n formData['isFullService'] = permissions['isFullService'];\n formData['isTuition'] = permissions['isTuition'];\n formData['inForgiveness'] = permissions['inForgiveness'];\n\n this.props.handleForm({ ...formData, ...servicer }, this.getDependentAttributes(attribute));\n }, 250);\n\n getDependentAttributes = (attribute) => {\n switch (attribute) {\n case 'refServicerId':\n return [\n 'refServicerId',\n 'address1',\n 'address2',\n 'city',\n 'email',\n 'phone',\n 'phoneExtension',\n 'refServicerId',\n 'routingNumber',\n 'servicerName',\n 'state',\n 'zip',\n ];\n case 'question1Text':\n case 'question1Response':\n return ['question1Text', 'question1Response'];\n case 'question2Text':\n case 'question2Response':\n return ['question2Text', 'question2Response'];\n case 'question3Text':\n case 'question3Response':\n return ['question3Text', 'question3Response'];\n default:\n return [attribute];\n }\n };\n\n onCreate = () => this.props.createServicer();\n\n onUpdate = () => this.props.updateServicer(this.props.form.id);\n\n handleInstructionsButton = (instructionType) => {\n switch (instructionType) {\n case 'TR':\n this.setState({ showTuitionInstructions: !this.state.showTuitionInstructions });\n break;\n case 'CONTB':\n this.setState({ showContributionInstructions: !this.state.showContributionInstructions });\n break;\n default:\n break;\n }\n };\n\n getIconForAdd() {\n const { toDos } = this.props;\n\n if (Object.keys(toDos).includes('402') || Object.keys(toDos).includes('501')) {\n return (\n <PaddedBadge brand=\"primary\">\n <FontAwesomeIcon icon={faSolidExclamation} />\n </PaddedBadge>\n );\n } else {\n return <PaddedIcon icon={faPlusCircle} fixedWidth />;\n }\n }\n\n render() {\n const {\n actionRequest,\n servicers,\n errors,\n form,\n hasContributionAccountTypes,\n permissions,\n refServicers,\n request,\n } = this.props;\n let refs = { '-1': 'Other', '': '' };\n Object.keys(refServicers).forEach((k) => {\n refs[refServicers[k].id] = refServicers[k].servicerName;\n });\n const { formId, showForm } = this.state;\n\n return (\n <>\n <Card>\n <CardBody>\n <CardTitle>Account Servicers / Banks</CardTitle>\n <div className=\"row\">\n <div className=\"col\">\n <StyledButton brand=\"primary\" onClick={this.onAddServicer}>\n {this.getIconForAdd()} Add Servicer / Bank\n </StyledButton>\n {/* {permissions.hasTuition && (\n <StyledButton brand=\"primary\" onClick={() => this.handleInstructionsButton('TR')}>\n <FontAwesomeIcon icon={faQuestionCircle} fixedWidth /> Add Bank for Tuition\n Reimbursement\n </StyledButton>\n )} */}\n {permissions.showContribution && hasContributionAccountTypes && (\n <StyledButton\n brand=\"primary\"\n onClick={() => this.handleInstructionsButton('CONTB')}\n >\n <FontAwesomeIcon icon={faQuestionCircle} fixedWidth /> Add Servicer/Bank for\n Contribution\n </StyledButton>\n )}\n </div>\n </div>\n </CardBody>\n <AsyncLoader request={request} emptyMessage={'You have no Servicers / Banks on file.'}>\n {servicers && (\n <ServicerTable servicers={servicers} onEditServicer={this.onEditServicer} />\n )}\n </AsyncLoader>\n {showForm && (\n <ServicerForm\n action={formId ? 'Update' : 'Create'}\n closeForm={this.closeForm}\n data={form}\n errors={errors}\n isLoading={actionRequest.isLoading}\n isOpen={showForm}\n onChange={this.onChange}\n onSubmit={formId ? this.onUpdate : this.onCreate}\n refServicers={refs}\n selectRefServicer={this.onSelectRef}\n />\n )}\n <CardBody></CardBody>\n </Card>\n <Modal isOpen={this.state.showTuitionInstructions}>\n <Card>\n <CardBody>\n <CardTitle>Adding a Bank for Tuition Reimbursement</CardTitle>\n <StyledCardText>\n <ol>\n <li>Click on \"Add Servicer / Bank\"</li>\n <li>Select \"Other\" from the dropdown</li>\n <li>Fill out all required information</li>\n </ol>\n </StyledCardText>\n </CardBody>\n <CardFooter>\n <Button brand=\"lowContrast\" onClick={() => this.handleInstructionsButton('TR')}>\n Close\n </Button>\n </CardFooter>\n </Card>\n </Modal>\n <Modal isOpen={this.state.showContributionInstructions}>\n <Card>\n <CardBody>\n <CardTitle>Adding a Servicer/Bank for Contribution</CardTitle>\n <StyledCardText>\n <ol>\n <li>Click on \"Add Servicer / Bank\"</li>\n <li>Select a servicer or \"Other\" from the dropdown</li>\n <li>Fill out all required information</li>\n </ol>\n </StyledCardText>\n </CardBody>\n <CardFooter>\n <Button brand=\"lowContrast\" onClick={() => this.handleInstructionsButton('CONTB')}>\n Close\n </Button>\n </CardFooter>\n </Card>\n </Modal>\n </>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const { cache, errors, form, requests } = state.servicers;\n const refServicers = state.refServicers.cache;\n return {\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\n errors: errors,\n form: form,\n refServicers: refServicers,\n request: requests.loadCollection,\n servicers: cache,\n toDos: safeAccess(state, 'todos.cache', {}),\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n clearForm: () => dispatch(servicersClearForm()),\n createServicer: async () => {\n await dispatch(servicersCreateResource());\n dispatch(todosLoadCollection());\n },\n handleForm: (servicer, attributes) => dispatch(servicersHandleFormChange(servicer, attributes)),\n hydrateForm: async (id) => await dispatch(servicersCopyResourceToForm(id)),\n updateServicer: async (id) => {\n await dispatch(servicersUpdateResource(id));\n dispatch(todosLoadCollection());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Servicers));\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('servicers', types);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('refServicers');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/ref-customer-servicer',\r\n resourceType: 'ref-customer-servicer',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'refServicers',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst { refServicersLoadCollection } = operations;\r\nexport { refServicersLoadCollection };\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('refServicers', types);\r\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\n\nimport {\n Alert,\n Button,\n Card,\n CardBody,\n CardFooter,\n CardHeader,\n Form,\n InputAddon,\n InputError,\n InputGroup,\n InputHelp,\n InputLabel,\n InputMask,\n InputNumeric,\n InputSelect,\n InputText,\n InputWrapper,\n Loader,\n Modal,\n} from 'fiducius-ui';\n\nimport { FlexBetween } from '../../root';\nimport { withPermissions, Fade } from '../../routing';\nimport { convertIsoToSlash, safeAccess, stringIsNullOrEmpty } from '../../utils';\nimport { toUpper } from 'lodash';\n\nconst TextLeft = styled.div`\n text-align: left;\n`;\n\nconst InputAddonStyled = styled(InputAddon)`\n &.btn-addon {\n align-items: center;\n display: inline;\n }\n`;\n\nclass AccountForm extends React.Component {\n static propTypes = {\n action: t.string,\n closeForm: t.func.isRequired,\n data: t.object,\n errors: t.object,\n isLoading: t.bool,\n isOpen: t.bool,\n onChange: t.func.isRequired,\n onSubmit: t.func.isRequired,\n servicers: t.object,\n permissions: t.object,\n accounts: t.object,\n token: t.any,\n allowedAccountTypes: t.object,\n hasContributionAccountTypes: t.bool,\n hasTRAccountTypes: t.bool,\n contributionData: t.object,\n };\n\n constructor(props) {\n super(props);\n this.modalRef = React.createRef();\n this.firstInput = React.createRef();\n this.state = { contbReverification: '' };\n }\n\n componentDidMount() {\n this.props.data.error = '';\n this.props.data.errorNickname = '';\n }\n\n componentDidUpdate(prevProps) {\n // if (!prevProps.isOpen && this.props.isOpen) {\n // // TODO: this focuses correctly, but loses focus right afterwards for some reason\n // this.firstInput.current.focus();\n // }\n\n if (\n !prevProps.errors.generalErrors &&\n this.props.errors.generalErrors &&\n this.modalRef.current !== null\n ) {\n this.modalRef.current.scrollTo(0, 0);\n }\n }\n\n handleContributionChanges = () => {\n if (this.props.data.contributionStatus === 'APPROVE') {\n this.setState({\n contbReverification:\n 'Changing the Monthly Payment and/or Final Due Date will require re-validation of your contribution.',\n });\n }\n };\n\n getForm() {\n const {\n action,\n contributionData,\n data,\n errors,\n onChange,\n onSubmit,\n servicers = {},\n allowedAccountTypes,\n hasContributionAccountTypes,\n hasTRAccountTypes,\n permissions,\n } = this.props;\n\n if (permissions.showForgiveness) {\n data.monthlyPayment = contributionData.idrRepayment;\n data.dueDate = contributionData.doeRepayDate;\n }\n\n return (\n <Form defaults={data} handleChange={onChange} id={data.id || 'create'} onSubmit={onSubmit}>\n <InputWrapper error={!!errors.loanDescription}>\n <InputLabel\n htmlFor=\"loanDescription\"\n required={data.loanTypeCode === 'RMBRS' || hasContributionAccountTypes}\n >\n Account Nickname\n </InputLabel>\n <InputError>{safeAccess(errors, 'loanDescription.detail')}</InputError>\n <InputGroup>\n <InputText\n inputRef={this.firstInput}\n placeholder=\"My Account Nickname\"\n name=\"loanDescription\"\n defaultValue={data.loanDescription}\n />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.loanServicerId}>\n <InputLabel htmlFor=\"loanServicerId\" required>\n Account Servicer / Bank\n </InputLabel>\n <InputError>{safeAccess(errors, 'loanServicerId.detail')}</InputError>\n <InputGroup>\n <InputSelect\n name=\"loanServicerId\"\n options={servicers}\n value={data.loanServicerId || ''}\n />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.loanTypeCode}>\n <InputLabel htmlFor=\"loanTypeCode\" required>\n Account Type\n </InputLabel>\n <InputError>{safeAccess(errors, 'loanTypeCode.detail')}</InputError>\n {hasContributionAccountTypes && (\n <InputHelp>\n If you have multiple loans under one account number, please select \"Direct Subsidized\n Consolidated\" and enter your total account balance with that loan servicer. Your\n contribution payment will be applied to all loans under the account number entered.\n </InputHelp>\n )}\n <InputGroup>\n <InputSelect\n name=\"loanTypeCode\"\n options={allowedAccountTypes}\n value={data.loanTypeCode}\n />\n </InputGroup>\n {hasContributionAccountTypes && !hasTRAccountTypes && (\n <InputHelp>^ - Account types eligible for contribution</InputHelp>\n )}\n {!hasContributionAccountTypes && hasTRAccountTypes && (\n <InputHelp>+ - Account type used for reimbursement account</InputHelp>\n )}\n {hasContributionAccountTypes && hasTRAccountTypes && (\n <InputHelp>\n ^ - Account types eligible for contribution\n <br />+ - Account type used for reimbursement account\n </InputHelp>\n )}\n </InputWrapper>\n <InputWrapper error={!!errors.accountNumber}>\n <InputLabel\n htmlFor=\"accountNumber\"\n required={data.loanTypeCode === 'RMBRS' || hasContributionAccountTypes}\n >\n Account Number\n </InputLabel>\n <InputError>{safeAccess(errors, 'accountNumber.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputText name=\"accountNumber\" defaultValue={data.accountNumber} />\n </InputGroup>\n </InputWrapper>\n\n <Fade\n show={\n data.loanTypeCode !== undefined &&\n data.loanTypeCode !== '' &&\n data.loanTypeCode !== '529PN' &&\n data.loanTypeCode !== 'RMBRS'\n }\n >\n <div className=\"row\">\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-6 col-xs-12\">\n <InputWrapper error={!!errors.initialLoanBalance}>\n <InputLabel htmlFor=\"initialLoanBalance\" required>\n Initial Loan Balance\n </InputLabel>\n <InputError>{safeAccess(errors, 'initialLoanBalance.detail')}</InputError>\n <InputGroup affordance=\"full\">\n <InputAddon>$</InputAddon>\n <InputNumeric name=\"initialLoanBalance\" defaultValue={data.initialLoanBalance} />\n <InputAddon>.00</InputAddon>\n </InputGroup>\n <InputHelp>\n If you do not know your initial loan balance, please input your current loan\n balance.\n </InputHelp>\n </InputWrapper>\n </div>\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-6 col-xs-12\">\n <InputWrapper error={!!errors.currentLoanBalance}>\n <InputLabel htmlFor=\"currentLoanBalance\" required>\n Current Balance\n </InputLabel>\n <InputError>{safeAccess(errors, 'currentLoanBalance.detail')}</InputError>\n <InputGroup affordance=\"full\">\n <InputAddon>$</InputAddon>\n <InputNumeric name=\"currentLoanBalance\" defaultValue={data.currentLoanBalance} />\n <InputAddon>.00</InputAddon>\n </InputGroup>\n </InputWrapper>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-6 col-sm-6 col-xs-12\">\n <InputWrapper error={!!errors.interestRate}>\n <InputLabel htmlFor=\"interestRate\" required>\n Interest Rate\n </InputLabel>\n <InputError>{safeAccess(errors, 'interestRate.detail')}</InputError>\n <InputGroup affordance=\"full\">\n <InputNumeric name=\"interestRate\" defaultValue={data.interestRate} />\n <InputAddonStyled>%</InputAddonStyled>\n </InputGroup>\n <InputHelp>\n Interest rate must be greater than 0. An average interest rate will be accepted.\n </InputHelp>\n </InputWrapper>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-6 col-xs-12\">\n <InputWrapper error={!!errors.monthlyPayment}>\n <InputLabel\n htmlFor=\"monthlyPayment\"\n required={\n !stringIsNullOrEmpty(data.loanTypeCode) &&\n allowedAccountTypes[data.loanTypeCode] !== undefined &&\n allowedAccountTypes[data.loanTypeCode].includes('^')\n }\n >\n Monthly Payment\n </InputLabel>\n <InputError>{safeAccess(errors, 'monthlyPayment.detail')}</InputError>\n <InputGroup affordance=\"full\">\n <InputAddon>$</InputAddon>\n <InputNumeric\n name=\"monthlyPayment\"\n defaultValue={data.monthlyPayment}\n onChange={() => this.handleContributionChanges()}\n disabled={permissions.showForgiveness}\n />\n </InputGroup>\n </InputWrapper>\n </div>\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-6 col-xs-12\">\n <InputWrapper error={!!errors.dueDate}>\n <InputLabel\n htmlFor=\"dueDate\"\n required={\n !stringIsNullOrEmpty(data.loanTypeCode) &&\n allowedAccountTypes[data.loanTypeCode] !== undefined &&\n allowedAccountTypes[data.loanTypeCode].includes('^')\n //added undefined check in case we are not getting a specific type, such as OTH other loan type\n }\n >\n Final Due Date\n </InputLabel>\n <InputError>{safeAccess(errors, 'dueDate.detail')}</InputError>\n <InputGroup>\n <InputMask\n defaultValue={convertIsoToSlash(data.dueDate)}\n mask=\"##/##/####\"\n name=\"dueDate\"\n placeholder=\"MM/DD/YYYY\"\n onChange={() => this.handleContributionChanges()}\n disabled={permissions.showForgiveness}\n />\n </InputGroup>\n <InputHelp>\n If you do not know the final due date of your loan, please enter your next loan\n payment date.\n </InputHelp>\n </InputWrapper>\n </div>\n </div>\n </Fade>\n </Form>\n );\n }\n\n checkForMultipleTRAccounts = (data, accounts) => {\n //let accountNames;\n let retVal = false;\n\n for (let value of Object.values(accounts)) {\n if (`${value.loanTypeCode}` === 'RMBRS') {\n retVal = true;\n //accountNames = '\"'+`${value.loanDescription}` + '\", ' + accountNames\n data.error =\n 'cannot be a tuition reimbursement account. Please select \"Cancel\" and select the edit option for your current reimbursement account on file to update your information.';\n }\n }\n\n return retVal;\n };\n\n enableSubmit = () => {\n return (\n !this.hasMultipleAccountDescriptions() && this.checkNoMissingData() && this.checkNoErrors()\n );\n };\n\n checkNoMissingData = () => {\n const { data = {}, hasContributionAccountTypes } = this.props;\n\n let missingData = false;\n\n if (data.loanTypeCode === 'RMBRS' || hasContributionAccountTypes) {\n missingData =\n !stringIsNullOrEmpty(data.loanDescription) &&\n !stringIsNullOrEmpty(data.accountNumber) &&\n !stringIsNullOrEmpty(data.loanServicerId) &&\n !stringIsNullOrEmpty(data.loanTypeCode);\n } else {\n missingData =\n !stringIsNullOrEmpty(data.loanServicerId) && !stringIsNullOrEmpty(data.loanTypeCode);\n }\n return missingData;\n };\n\n checkNoErrors = () => {\n const { data = {}, errors = {}, action, accounts } = this.props;\n let multipleTrAccounts = false;\n if (action === 'Create' && data.loanTypeCode === 'RMBRS') {\n multipleTrAccounts = this.checkForMultipleTRAccounts(data, accounts);\n }\n\n return (\n !multipleTrAccounts &&\n !errors.loanDescription &&\n !errors.accountNumber &&\n !errors.loanServicerId &&\n !errors.loanTypeCode &&\n !errors.initialLoanBalance &&\n !errors.currentLoanBalance &&\n !errors.interestRate &&\n !errors.monthlyPayment &&\n !errors.dueDate\n );\n };\n\n hasMultipleAccountDescriptions = () => {\n const { data = {}, accounts } = this.props;\n let retVal = false;\n const description = Object.values(accounts).filter(\n (a) => toUpper(a.loanDescription) === toUpper(data.loanDescription) && a.id !== data.id\n );\n\n if (\n description &&\n data.loanDescription &&\n data.loanDescription.length > 0 &&\n description.length > 0\n ) {\n retVal = true;\n data.errorNickname = 'value is invalid. This account nickname has already been used.';\n }\n\n return retVal;\n };\n\n submit = (e) => {\n e.preventDefault();\n if (!this.props.isLoading) {\n this.props.onSubmit();\n }\n };\n\n render() {\n const { action, closeForm, errors = {}, isLoading, isOpen } = this.props;\n return (\n <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={true}>\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\n <CardHeader>{action} Account</CardHeader>\n <CardBody>\n {errors.generalErrors &&\n errors.generalErrors.map((e, i) => (\n <Alert key={i} brand=\"danger\">\n {e.detail}\n </Alert>\n ))}\n <TextLeft>{this.getForm()}</TextLeft>\n\n <Fade show={this.state.contbReverification !== ''}>\n <Alert brand=\"warning\">{this.state.contbReverification}</Alert>\n </Fade>\n </CardBody>\n <CardFooter>\n <FlexBetween>\n <Button brand=\"lowContrast\" onClick={closeForm}>\n Cancel\n </Button>\n <Fade show={this.enableSubmit()}>\n <Button brand=\"success\" onClick={(e) => this.submit(e)}>\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : action + ' account'}\n </Button>\n </Fade>\n <Fade show={(!isLoading && !this.checkNoMissingData()) || !this.checkNoMissingData()}>\n Please enter the missing information above.\n </Fade>\n <Fade\n show={\n !isLoading &&\n this.checkNoMissingData() &&\n (this.hasMultipleAccountDescriptions() || !this.checkNoErrors())\n }\n >\n Please fix the errors above.\n </Fade>\n </FlexBetween>\n </CardFooter>\n </Card>\n </Modal>\n );\n }\n}\n\nexport default withPermissions(AccountForm);\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Button, Table } from 'fiducius-ui';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\r\n\r\nimport { formatAsMoney, formatAsPercent, startCase } from '../../utils';\r\n\r\nconst AccountTable = ({ accounts = {}, onEditAccount }) => {\r\n if (Object.keys(accounts).length === 0) {\r\n return null;\r\n }\r\n\r\n const headers = [\r\n 'id',\r\n 'loanDescription',\r\n 'currentLoanBalance',\r\n 'interestRate',\r\n 'monthlyPayment',\r\n 'edit',\r\n ];\r\n\r\n let body = Object.values(accounts).map((a) => headers.map((h) => a[h]));\r\n\r\n headers[1] = 'accountNickname';\r\n delete headers[0];\r\n body.forEach((row) => {\r\n const id = row[0];\r\n row[5] = (\r\n <Button invert brand=\"secondary\" onClick={() => onEditAccount(id)}>\r\n <FontAwesomeIcon icon={faEdit} fixedWidth />\r\n </Button>\r\n );\r\n delete row[0];\r\n });\r\n\r\n return (\r\n <Table\r\n body={body}\r\n columns={[\r\n {},\r\n { sortable: true, width: '35%' },\r\n { sortable: true, renderer: formatAsMoney },\r\n { sortable: true, renderer: formatAsPercent },\r\n { sortable: true, renderer: formatAsMoney },\r\n { width: '10%' },\r\n ]}\r\n header={headers.map((h) => startCase(h))}\r\n />\r\n );\r\n};\r\n\r\nAccountTable.propTypes = {\r\n accounts: t.object,\r\n onEditAccount: t.func.isRequired,\r\n};\r\n\r\nexport default AccountTable;\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('accounts');\r\n","import actions from './actions';\r\nimport { AccountValidator } from './validators';\r\nimport { convertSlashToIso, resourceOperationsGenerator } from '../../utils';\r\n\r\nconst accountValidator = new AccountValidator();\r\n\r\nconst fixData = (data) => {\r\n return data.map((resource) => {\r\n const { dueDate, monthlyPayment } = resource;\r\n resource.dueDate = dueDate ? convertSlashToIso(dueDate) : null;\r\n resource.monthlyPayment = monthlyPayment === 0 ? null : monthlyPayment;\r\n return resource;\r\n });\r\n};\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: fixData,\r\n endpoint: '/loan',\r\n resourceType: 'loan',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'accounts',\r\n actions,\r\n null,\r\n accountValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n accountsClearForm,\r\n accountsCopyResourceToForm,\r\n accountsHandleFormChange,\r\n accountsLoadCollection,\r\n accountsLoadResource,\r\n accountsCreateResource,\r\n accountsUpdateResource,\r\n} = operations;\r\n\r\nexport {\r\n accountsClearForm,\r\n accountsCopyResourceToForm,\r\n accountsHandleFormChange,\r\n accountsLoadCollection,\r\n accountsLoadResource,\r\n accountsCreateResource,\r\n accountsUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('accounts', types);\r\n","import { FormValidator } from '../../utils';\n\nexport class AccountValidator extends FormValidator {\n loanDescription(validator, state) {\n validator.isRequired();\n validator.hasMaxLength(250);\n if (state.errorNickname.length > 0) {\n validator.addCustomMessage(state.errorNickname);\n }\n }\n\n accountNumber(validator, state) {\n if (state.loanTypeCode === 'RMBRS') {\n validator.isRequired();\n validator.hasMaxLength(30);\n } else {\n validator.hasMaxLength(30);\n }\n }\n\n loanServicerId(validator) {\n validator.isRequired();\n }\n\n loanTypeCode(validator, state) {\n validator.isRequired();\n if (state.error.length > 0) {\n validator.addCustomMessage(state.error);\n }\n }\n\n initialLoanBalance(validator, state) {\n if (state.loanTypeCode !== '529PN' && state.loanTypeCode !== 'RMBRS') {\n validator.isRequired();\n validator.isGreaterThan(0);\n }\n }\n\n currentLoanBalance(validator, state) {\n if (state.loanTypeCode !== '529PN' && state.loanTypeCode !== 'RMBRS') {\n validator.isRequired();\n }\n }\n\n interestRate(validator, state) {\n validator.isLessThan(100);\n if (state.loanTypeCode !== '529PN' && state.loanTypeCode !== 'RMBRS') {\n validator.isRequired();\n validator.isGreaterThan(0);\n }\n }\n\n monthlyPayment(validator, state) {\n if (state.loanTypeCode !== '529PN' && state.loanTypeCode !== 'RMBRS') {\n validator.isRequired();\n }\n }\n\n dueDate(validator, state) {\n if (state.loanTypeCode !== '529PN' && state.loanTypeCode !== 'RMBRS') {\n let today = new Date();\n validator.isRequired();\n validator.isAfterDate(today);\n }\n }\n\n studentFirstName(validator) {\n // validator.isRequired();\n }\n\n studentMiddleInitial(validator) {\n // validator.isRequired();\n }\n\n studentLastName(validator) {\n // validator.isRequired();\n }\n\n validatedForRelief(validator) {\n // validator.isRequired();\n }\n}\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlusCircle } from '@fortawesome/pro-solid-svg-icons/faPlusCircle';\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\n\nimport {\n AsyncLoader,\n Badge,\n Button,\n Card,\n CardBody,\n CardTitle,\n CardText,\n Modal,\n CardFooter,\n} from 'fiducius-ui';\n\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../utils';\nimport { todosLoadCollection } from '../../todos';\nimport { withPermissions } from '../../routing';\n\nimport AccountForm from '../components/account-form';\nimport AccountTable from '../components/account-table';\nimport {\n accountsClearForm,\n accountsCopyResourceToForm,\n accountsUpdateResource,\n accountsHandleFormChange,\n accountsCreateResource,\n} from '../redux/operations';\nimport { contributionLoadResource } from '../../benefits/contribution/redux/operations';\nimport { getContributionData } from '../../benefits/contribution/redux/selectors';\n\nconst StyledButton = styled(Button)`\n margin-right: 1em;\n margin-top: 1em;\n`;\n\nconst StyledCardText = styled(CardText)`\n text-align: left;\n`;\n\nconst PaddedIcon = styled(FontAwesomeIcon)`\n margin-right: 0.45em;\n`;\n\nconst PaddedBadge = styled(Badge)`\n margin-right: 0.45em;\n font-size: 0.75em;\n top: -0.75rem;\n`;\n\nclass Accounts extends React.Component {\n static propTypes = {\n accounts: t.object,\n actionRequest: t.object,\n allowedAccountTypes: t.object,\n clearForm: t.func.isRequired,\n createAccount: t.func.isRequired,\n errors: t.object,\n form: t.object,\n handleForm: t.func.isRequired,\n hasContributionAccountTypes: t.bool.isRequired,\n hasTRAccountTypes: t.bool.isRequired,\n hydrateForm: t.func.isRequired,\n reload: t.func.isRequired,\n request: t.object,\n servicers: t.object,\n updateAccount: t.func.isRequired,\n permissions: t.object,\n toDos: t.object,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n formId: null,\n showForm: false,\n showTuitionInstructions: false,\n showContributionInstructions: false,\n };\n this.handleInstructionsButton = this.handleInstructionsButton.bind(this);\n }\n\n componentDidMount() {\n const { load, id } = this.props;\n load(id);\n }\n componentDidUpdate(prevProps) {\n const wasLoading = prevProps.actionRequest.isLoading;\n const currently = this.props.actionRequest;\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\n this.setState({ ...this.state, showForm: false }, () => this.props.reload());\n }\n }\n\n closeForm = () => {\n this.props.clearForm();\n this.setState({ ...this.state, showForm: false });\n };\n\n onAddAccount = () => this.setState({ formId: null, showForm: true });\n\n onEditAccount = (id) => {\n this.props.hydrateForm(id);\n this.setState({ formId: id, showForm: true });\n };\n\n onChange = debounce((account, id, attributes) => {\n this.props.handleForm({ ...this.props.form, ...account }, [attributes]);\n }, 250);\n\n onCreate = () => this.props.createAccount();\n\n onUpdate = () => this.props.updateAccount(this.props.form.id);\n\n handleInstructionsButton = (instructionType) => {\n switch (instructionType) {\n case 'TR':\n this.setState({ showTuitionInstructions: !this.state.showTuitionInstructions });\n break;\n case 'CONTB':\n this.setState({ showContributionInstructions: !this.state.showContributionInstructions });\n break;\n default:\n break;\n }\n };\n\n getIconForAdd() {\n const { toDos } = this.props;\n if (\n Object.keys(toDos).includes('403') ||\n Object.keys(toDos).includes('13') ||\n Object.keys(toDos).includes('502')\n ) {\n return (\n <PaddedBadge brand=\"primary\">\n <FontAwesomeIcon icon={faSolidExclamation} />\n </PaddedBadge>\n );\n } else {\n return <PaddedIcon icon={faPlusCircle} fixedWidth />;\n }\n }\n\n showAddButton() {\n const { permissions, contributionData } = this.props;\n\n let showAddForForgive = true;\n if (\n permissions.showForgiveness &&\n (contributionData.idrRepayment === null || contributionData.doeRepayDate === null)\n ) {\n showAddForForgive = false;\n }\n\n return showAddForForgive;\n }\n\n render() {\n const {\n accounts,\n actionRequest,\n contributionData,\n errors,\n form,\n permissions,\n request,\n servicers,\n allowedAccountTypes,\n hasContributionAccountTypes,\n hasTRAccountTypes,\n } = this.props;\n const { formId, showForm } = this.state;\n\n return (\n <>\n <Card>\n <CardBody>\n <CardTitle>Accounts</CardTitle>\n <div className=\"row\">\n <div className=\"col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n {(permissions.hasTuition || this.showAddButton()) && (\n <StyledButton brand=\"primary\" onClick={this.onAddAccount}>\n {this.getIconForAdd()}Add Account\n </StyledButton>\n )}\n {/* {permissions.hasTuition && (\n <StyledButton brand=\"primary\" onClick={() => this.handleInstructionsButton('TR')}>\n <PaddedIcon icon={faQuestionCircle} fixedWidth /> Add Account for Tuition\n Reimbursement\n </StyledButton>\n )} */}\n {permissions.showContribution &&\n hasContributionAccountTypes &&\n this.showAddButton() && (\n <StyledButton\n brand=\"primary\"\n onClick={() => this.handleInstructionsButton('CONTB')}\n >\n <PaddedIcon icon={faQuestionCircle} fixedWidth /> Add Account for Contribution\n </StyledButton>\n )}\n </div>\n </div>\n </CardBody>\n <AsyncLoader request={request} emptyMessage={'You have no Accounts on file.'}>\n {accounts && <AccountTable accounts={accounts} onEditAccount={this.onEditAccount} />}\n </AsyncLoader>\n {showForm && (\n <AccountForm\n action={formId ? 'Update' : 'Create'}\n closeForm={this.closeForm}\n data={form}\n errors={errors}\n isLoading={actionRequest.isLoading}\n isOpen={showForm}\n onChange={this.onChange}\n onSubmit={formId ? this.onUpdate : this.onCreate}\n servicers={servicers}\n accounts={accounts}\n allowedAccountTypes={allowedAccountTypes}\n hasContributionAccountTypes={hasContributionAccountTypes}\n hasTRAccountTypes={hasTRAccountTypes}\n contributionData={contributionData}\n />\n )}\n <CardBody></CardBody>\n </Card>\n <Modal isOpen={this.state.showTuitionInstructions}>\n <Card>\n <CardBody>\n <CardTitle>Adding an Account for Tuition Reimbursement</CardTitle>\n <StyledCardText>\n <ol>\n <li>\n Ensure that you have completed the \"Add Bank for Tuition Reimbursement\" steps\n </li>\n <li>Click on \"Add Account\"</li>\n <li>Select the bank previously added as your \"Account Servicer / Bank\"</li>\n <li>Select \"Reimbursement Account+\" for the \"Account Type\"</li>\n <li>Fill out all other required information</li>\n </ol>\n </StyledCardText>\n </CardBody>\n <CardFooter>\n <Button brand=\"lowContrast\" onClick={() => this.handleInstructionsButton('TR')}>\n Close\n </Button>\n </CardFooter>\n </Card>\n </Modal>\n <Modal isOpen={this.state.showContributionInstructions}>\n <Card>\n <CardBody>\n <CardTitle>Adding an Account for Contribution</CardTitle>\n <StyledCardText>\n <ol>\n <li>Ensure that you have completed the \"Add Servicer for Contribution\" steps</li>\n <li>Click on \"Add Account\"</li>\n <li>Select the bank previously added as your \"Account Servicer/Bank\"</li>\n <li>\n Select an account flagged as eligible for contribution for the \"Account Type\"\n </li>\n <li>Fill out all other required information</li>\n </ol>\n </StyledCardText>\n </CardBody>\n <CardFooter>\n <Button brand=\"lowContrast\" onClick={() => this.handleInstructionsButton('CONTB')}>\n Close\n </Button>\n </CardFooter>\n </Card>\n </Modal>\n </>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const { cache, errors, form, requests } = state.accounts;\n const servicerCache = state.servicers.cache;\n let servicers = { '': '' };\n Object.keys(servicerCache).forEach((k) => {\n servicers[servicerCache[k].id] = servicerCache[k].servicerName;\n });\n\n return {\n accounts: cache,\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\n servicers: servicers,\n errors: errors,\n form: form,\n request: requests.loadCollection,\n toDos: safeAccess(state, 'todos.cache', {}),\n contributionData: getContributionData(state),\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n clearForm: () => dispatch(accountsClearForm()),\n createAccount: async () => {\n await dispatch(accountsCreateResource());\n dispatch(todosLoadCollection());\n },\n handleForm: (account, attributes) => dispatch(accountsHandleFormChange(account, attributes)),\n hydrateForm: async (id) => await dispatch(accountsCopyResourceToForm(id)),\n updateAccount: async (id) => {\n await dispatch(accountsUpdateResource(id));\n dispatch(todosLoadCollection());\n },\n load: (id) => {\n dispatch(contributionLoadResource(id));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Accounts));\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { DashboardSection, Header2 } from 'fiducius-ui';\r\n\r\nimport { Servicers } from '../../servicers';\r\nimport { servicersLoadCollection } from '../../servicers/redux/operations';\r\nimport { refServicersLoadCollection } from '../../servicers-ref/redux/operations';\r\n\r\nimport Accounts from './accounts';\r\nimport { accountsLoadCollection } from '../redux/operations';\r\nimport { withPermissions } from '../../routing';\r\nimport { getApi } from '../../utils';\r\nimport { getToken } from '../../auth';\r\n\r\nclass MyAccounts extends React.Component {\r\n static propTypes = {\r\n loadMyAccountInfo: t.func.isRequired,\r\n reloadAccounts: t.func.isRequired,\r\n reloadServicers: t.func.isRequired,\r\n permissions: t.object,\r\n dropdownData: t.object,\r\n token: t.any,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n allowedAccountTypes: {},\r\n hasContributionAccountTypes: false,\r\n hasTRAccountTypes: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getAccountTypeDropDownOptions();\r\n this.props.loadMyAccountInfo();\r\n }\r\n\r\n getAccountTypeDropDownOptions = () => {\r\n getApi(this.props.token, '/drop-down-list/AccountTypes__A').then((data) => {\r\n let accountTypes = {};\r\n let hasContributionAccountTypes = false,\r\n hasTRAccountTypes = false;\r\n Object.keys(data).forEach((a) => {\r\n accountTypes[data[a].id] = data[a].description;\r\n if (data[a].description.includes('+')) {\r\n hasTRAccountTypes = true;\r\n }\r\n if (data[a].description.includes('^')) {\r\n hasContributionAccountTypes = true;\r\n }\r\n });\r\n this.setState({\r\n ...this.state,\r\n allowedAccountTypes: accountTypes,\r\n hasContributionAccountTypes: hasContributionAccountTypes,\r\n hasTRAccountTypes: hasTRAccountTypes,\r\n });\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n <DashboardSection title=\"My Accounts\">\r\n <Header2>Keep track of your accounts and account servicers / banks in one place.</Header2>\r\n <Servicers\r\n reload={this.props.reloadServicers}\r\n hasContributionAccountTypes={this.state.hasContributionAccountTypes}\r\n />\r\n\r\n <Accounts\r\n reload={this.props.reloadAccounts}\r\n allowedAccountTypes={this.state.allowedAccountTypes}\r\n hasTRAccountTypes={this.state.hasTRAccountTypes}\r\n hasContributionAccountTypes={this.state.hasContributionAccountTypes}\r\n />\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n token: getToken(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadMyAccountInfo: () => {\r\n dispatch(refServicersLoadCollection());\r\n dispatch(servicersLoadCollection());\r\n dispatch(accountsLoadCollection());\r\n },\r\n reloadAccounts: () => dispatch(accountsLoadCollection()),\r\n reloadServicers: () => dispatch(servicersLoadCollection()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(MyAccounts));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('accounts', types);\r\n","import styled from 'styled-components';\r\n\r\nconst ButtonSpacer = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nexport default ButtonSpacer;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faPlusCircle } from '@fortawesome/pro-solid-svg-icons/faPlusCircle';\r\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { AsyncLoader, DashboardSection, Button, Badge, Header5 } from 'fiducius-ui';\r\n\r\nimport { getUserId, getToken } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { contributionLoadResource } from '../redux/operations';\r\nimport { debounce, mergeRequestStatuses, safeAccess, getApi } from '../../../utils';\r\nimport { contributionSetupLoadResource } from '../../../contribution-setup';\r\nimport { todosLoadCollection } from '../../../todos';\r\nimport { getContributionData } from '../redux/selectors';\r\n\r\nimport {\r\n customerContributionClearForm,\r\n customerContributionCopyResourceToForm,\r\n customerContributionHandleFormChange,\r\n customerContributionLoadCollection,\r\n customerContributionCreateResource,\r\n customerContributionUpdateResource,\r\n ActiveContribution,\r\n CustomerContributionForm,\r\n} from '../../../customer-contribution';\r\n\r\nimport { accountsLoadCollection } from '../../../accounts';\r\n\r\nconst StyledDiv = styled.div`\r\n display: flex;\r\n align-content: center;\r\n`;\r\nconst StyledButton = styled(Button)`\r\n margin-right: 1em;\r\n margin-top: 1em;\r\n`;\r\n\r\nconst StyledHeader5 = styled(Header5)`\r\n margin-top: 1em;\r\n margin-left: 0em;\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst PaddedBadge = styled(Badge)`\r\n margin-right: 0.45em;\r\n font-size: 0.75em;\r\n top: -0.75rem;\r\n`;\r\n\r\nclass ActiveContributions extends React.Component {\r\n static propTypes = {\r\n id: t.string,\r\n token: t.string,\r\n data: t.object,\r\n load: t.func,\r\n permissions: t.object,\r\n request: t.object,\r\n actionRequest: t.object,\r\n clearForm: t.func.isRequired,\r\n createCustomerContribution: t.func.isRequired,\r\n errors: t.object,\r\n form: t.object,\r\n handleForm: t.func.isRequired,\r\n hydrateForm: t.func.isRequired,\r\n reload: t.func.isRequired,\r\n updateCustomerContribution: t.func.isRequired,\r\n toDos: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showForm: false,\r\n redirectUri: '',\r\n formId: null,\r\n contributionEligibleAccounts: {},\r\n contributionAvailableAccounts: {},\r\n };\r\n\r\n this.showAddButton = this.showAddButton.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const { load, id } = this.props;\r\n this.getContributionEligibleAccounts();\r\n this.getContributionAvailableAccounts();\r\n load(id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { load, id } = this.props;\r\n\r\n const wasLoading = prevProps.actionRequest.isLoading;\r\n const currently = this.props.actionRequest;\r\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\r\n this.setState({ ...this.state, showForm: false }, () => {\r\n this.getContributionEligibleAccounts();\r\n this.getContributionAvailableAccounts();\r\n load(id);\r\n });\r\n }\r\n }\r\n\r\n getContributionEligibleAccounts = () => {\r\n getApi(this.props.token, '/drop-down-list/ContributionEligibleLoan__A').then((data) => {\r\n let eligibleAccounts = {};\r\n if (Object.keys(data).length > 0) {\r\n Object.keys(data).forEach((a) => {\r\n eligibleAccounts[data[a].id] = data[a].description;\r\n });\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n contributionEligibleAccounts: eligibleAccounts,\r\n });\r\n });\r\n };\r\n\r\n getContributionAvailableAccounts = () => {\r\n getApi(this.props.token, '/drop-down-list/ContributionLoan__A').then((data) => {\r\n let eligibleAccounts = {};\r\n if (Object.keys(data).length > 0) {\r\n Object.keys(data).forEach((a) => {\r\n eligibleAccounts[data[a].id] = data[a].description;\r\n });\r\n }\r\n eligibleAccounts[''] = '';\r\n\r\n this.setState({\r\n ...this.state,\r\n contributionAvailableAccounts: eligibleAccounts,\r\n });\r\n });\r\n };\r\n\r\n handleRedirect = (uri) => {\r\n this.setState({ redirectUri: uri });\r\n };\r\n\r\n closeForm = () => {\r\n this.props.clearForm();\r\n this.setState({ ...this.state, showForm: false });\r\n };\r\n\r\n onAddContribution = () => this.setState({ formId: null, showForm: true });\r\n\r\n onEditContribution = (id) => {\r\n this.props.hydrateForm(id);\r\n this.setState({ formId: id, showForm: true });\r\n };\r\n\r\n onChange = debounce((contribution, id, attributes) => {\r\n this.props.handleForm({ ...this.props.form, ...contribution }, [attributes]);\r\n }, 250);\r\n\r\n onCreate = () => {\r\n this.props.createCustomerContribution();\r\n this.getContributionEligibleAccounts();\r\n this.getContributionAvailableAccounts();\r\n };\r\n\r\n onUpdate = () => this.props.updateCustomerContribution(this.props.form.id);\r\n\r\n getIconForAdd() {\r\n const { toDos } = this.props;\r\n if (Object.keys(toDos).includes('403') || Object.keys(toDos).includes('13')) {\r\n return (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>\r\n );\r\n } else {\r\n return <PaddedIcon icon={faPlusCircle} fixedWidth />;\r\n }\r\n }\r\n\r\n showAddButton() {\r\n const { data = {}, permissions, contributionData } = this.props;\r\n\r\n const { contributionAvailableAccounts } = this.state;\r\n let numActive = Object.values(data).filter((a) => a.active).length;\r\n let showAddForForgive = true;\r\n if (\r\n permissions.showForgiveness &&\r\n (contributionData.idrRepayment === null || contributionData.doeRepayDate === null)\r\n ) {\r\n showAddForForgive = false;\r\n }\r\n return (\r\n Object.values(contributionAvailableAccounts).length > 0 && numActive < 2 && showAddForForgive\r\n );\r\n }\r\n\r\n render() {\r\n const { data = {}, request, form, errors, actionRequest, contributionData } = this.props;\r\n const {\r\n showForm,\r\n formId,\r\n contributionEligibleAccounts,\r\n contributionAvailableAccounts,\r\n } = this.state;\r\n let numActive = Object.values(data).filter((a) => a.active).length;\r\n\r\n if (this.state.redirectUri && this.state.redirectUri.length > 0) {\r\n return <Redirect to={this.state.redirectUri} />;\r\n }\r\n\r\n return (\r\n <>\r\n <DashboardSection title=\"Active Contributions\">\r\n <AsyncLoader\r\n request={request}\r\n empty={\r\n <>\r\n {this.showAddButton() && (\r\n <StyledDiv className=\"row\">\r\n <div className=\"col\">\r\n <StyledButton brand=\"primary\" onClick={this.onAddContribution}>\r\n {this.getIconForAdd()}Add Contribution\r\n </StyledButton>\r\n </div>\r\n </StyledDiv>\r\n )}\r\n <div className=\"col-12\">\r\n <StyledHeader5>You have no active contributions on file.</StyledHeader5>\r\n </div>\r\n </>\r\n }\r\n >\r\n {this.showAddButton() && (\r\n <StyledDiv className=\"row\">\r\n <div className=\"col\">\r\n <StyledButton brand=\"primary\" onClick={this.onAddContribution}>\r\n {this.getIconForAdd()}Add Contribution\r\n </StyledButton>\r\n </div>\r\n </StyledDiv>\r\n )}\r\n <StyledDiv className=\"row\">\r\n {Object.values(data)\r\n .filter((a) => a.active)\r\n .map((contribution, i) => (\r\n <div className=\"col-12 col-lg-6\" key={i}>\r\n <ActiveContribution\r\n data={contribution}\r\n key={i}\r\n dataLevel={2}\r\n onEditContribution={this.onEditContribution}\r\n />\r\n </div>\r\n ))}\r\n {numActive === 0 && (\r\n <div className=\"col-12\">\r\n <StyledHeader5>You have no active contributions on file.</StyledHeader5>\r\n </div>\r\n )}\r\n </StyledDiv>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n {showForm && (\r\n <CustomerContributionForm\r\n action={formId ? 'Update' : 'Create'}\r\n contributionEligibleAccounts={\r\n formId ? contributionEligibleAccounts : contributionAvailableAccounts\r\n }\r\n closeForm={this.closeForm}\r\n data={form}\r\n errors={errors}\r\n isLoading={actionRequest.isLoading}\r\n isOpen={showForm}\r\n onChange={this.onChange}\r\n onSubmit={formId ? this.onUpdate : this.onCreate}\r\n contribution={contributionData}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cache, requests, errors, form } = state.customerContribution;\r\n return {\r\n token: getToken(state),\r\n id: getUserId(state),\r\n data: cache,\r\n errors: errors,\r\n form: form,\r\n request: requests.loadCollection,\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n toDos: safeAccess(state, 'todos.cache', {}),\r\n contributionData: getContributionData(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => {\r\n dispatch(accountsLoadCollection());\r\n dispatch(contributionLoadResource(id));\r\n dispatch(contributionSetupLoadResource(id));\r\n dispatch(customerContributionLoadCollection());\r\n },\r\n clearForm: () => dispatch(customerContributionClearForm()),\r\n createCustomerContribution: async () => {\r\n await dispatch(customerContributionCreateResource());\r\n dispatch(todosLoadCollection());\r\n },\r\n handleForm: (contribution, attributes) =>\r\n dispatch(customerContributionHandleFormChange(contribution, attributes)),\r\n hydrateForm: async (id) => await dispatch(customerContributionCopyResourceToForm(id)),\r\n updateCustomerContribution: async (id) => {\r\n await dispatch(customerContributionUpdateResource(id));\r\n dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ActiveContributions));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { AsyncLoader, DashboardSection, Header5 } from 'fiducius-ui';\r\n\r\nimport { getUserId, getToken } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { contributionLoadResource } from '../redux/operations';\r\n\r\nimport { debounce, mergeRequestStatuses, safeAccess, getApi } from '../../../utils';\r\nimport { todosLoadCollection } from '../../../todos';\r\n\r\nimport {\r\n customerContributionClearForm,\r\n customerContributionCopyResourceToForm,\r\n customerContributionHandleFormChange,\r\n customerContributionLoadCollection,\r\n customerContributionUpdateResource,\r\n InactiveContribution,\r\n CustomerContributionForm,\r\n} from '../../../customer-contribution';\r\nimport { contributionSetupLoadResource } from '../../../contribution-setup';\r\nimport { accountsLoadCollection } from '../../../accounts';\r\n\r\nconst StyledHeader5 = styled(Header5)`\r\n margin-left: 0em;\r\n margin-top: 1em;\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst StyledDiv = styled.div`\r\n display: flex;\r\n align-content: center;\r\n`;\r\n\r\nclass InactiveContributions extends React.Component {\r\n static propTypes = {\r\n id: t.string,\r\n token: t.string,\r\n data: t.object,\r\n load: t.func,\r\n permissions: t.object,\r\n request: t.object,\r\n actionRequest: t.object,\r\n clearForm: t.func.isRequired,\r\n errors: t.object,\r\n form: t.object,\r\n handleForm: t.func.isRequired,\r\n hydrateForm: t.func.isRequired,\r\n reload: t.func.isRequired,\r\n updateCustomerContribution: t.func.isRequired,\r\n toDos: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showForm: false,\r\n redirectUri: '',\r\n formId: null,\r\n contributionEligibleAccounts: {},\r\n contributionAvailableAccounts: {},\r\n };\r\n }\r\n componentDidMount() {\r\n const { load, id } = this.props;\r\n this.getContributionEligibleAccounts();\r\n this.getContributionAvailableAccounts();\r\n load(id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { load, id } = this.props;\r\n\r\n const wasLoading = prevProps.actionRequest.isLoading;\r\n const currently = this.props.actionRequest;\r\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\r\n this.setState({ ...this.state, showForm: false }, () => {\r\n this.getContributionEligibleAccounts();\r\n this.getContributionAvailableAccounts();\r\n load(id);\r\n });\r\n }\r\n }\r\n\r\n getContributionEligibleAccounts = () => {\r\n getApi(this.props.token, '/drop-down-list/ContributionEligibleLoan__A').then((data) => {\r\n let eligibleAccounts = {};\r\n if (Object.keys(data).length > 0) {\r\n Object.keys(data).forEach((a) => {\r\n eligibleAccounts[data[a].id] = data[a].description;\r\n });\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n contributionEligibleAccounts: eligibleAccounts,\r\n });\r\n });\r\n };\r\n\r\n getContributionAvailableAccounts = () => {\r\n getApi(this.props.token, '/drop-down-list/ContributionLoan__A').then((data) => {\r\n let eligibleAccounts = {};\r\n if (Object.keys(data).length > 0) {\r\n Object.keys(data).forEach((a) => {\r\n eligibleAccounts[data[a].id] = data[a].description;\r\n });\r\n }\r\n eligibleAccounts[''] = '';\r\n\r\n this.setState({\r\n ...this.state,\r\n contributionAvailableAccounts: eligibleAccounts,\r\n });\r\n });\r\n };\r\n\r\n handleRedirect = (uri) => {\r\n this.setState({ redirectUri: uri });\r\n };\r\n\r\n closeForm = () => {\r\n this.props.clearForm();\r\n this.setState({ ...this.state, showForm: false });\r\n };\r\n\r\n onEditContribution = (id) => {\r\n this.props.hydrateForm(id);\r\n this.setState({ formId: id, showForm: true });\r\n };\r\n\r\n onChange = debounce((contribution, id, attributes) => {\r\n this.props.handleForm({ ...this.props.form, ...contribution }, [attributes]);\r\n }, 250);\r\n\r\n onUpdate = () => this.props.updateCustomerContribution(this.props.form.id);\r\n\r\n render() {\r\n const { data = {}, request, form, errors, actionRequest } = this.props;\r\n const {\r\n showForm,\r\n formId,\r\n contributionEligibleAccounts,\r\n contributionAvailableAccounts,\r\n } = this.state;\r\n\r\n let numInactive = Object.values(data).filter((a) => !a.active).length;\r\n\r\n if (this.state.redirectUri && this.state.redirectUri.length > 0) {\r\n return <Redirect to={this.state.redirectUri} />;\r\n }\r\n return (\r\n <>\r\n <DashboardSection title=\"Inactive Contributions\">\r\n <AsyncLoader\r\n request={request}\r\n empty={\r\n <div className=\"col\">\r\n <StyledHeader5>You have no inactive contributions on file.</StyledHeader5>\r\n </div>\r\n }\r\n >\r\n <StyledDiv className=\"row\">\r\n {Object.values(data)\r\n .filter((a) => !a.active)\r\n .map((contribution, i) => {\r\n return (\r\n <div className=\"col-12 col-lg-6\" key={i}>\r\n <InactiveContribution\r\n data={contribution}\r\n key={i}\r\n dataLevel={2}\r\n onEditContribution={this.onEditContribution}\r\n />\r\n </div>\r\n );\r\n })}\r\n {numInactive === 0 && (\r\n <div className=\"col\">\r\n <StyledHeader5>You have no inactive contributions on file.</StyledHeader5>\r\n </div>\r\n )}\r\n </StyledDiv>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n {showForm && (\r\n <CustomerContributionForm\r\n action={formId ? 'Update' : 'Create'}\r\n contributionEligibleAccounts={\r\n formId ? contributionEligibleAccounts : contributionAvailableAccounts\r\n }\r\n closeForm={this.closeForm}\r\n data={form}\r\n errors={errors}\r\n isLoading={actionRequest.isLoading}\r\n isOpen={showForm}\r\n onChange={this.onChange}\r\n onSubmit={formId ? this.onUpdate : this.onCreate}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cache, requests, errors, form } = state.customerContribution;\r\n return {\r\n token: getToken(state),\r\n id: getUserId(state),\r\n data: cache,\r\n errors: errors,\r\n form: form,\r\n request: requests.loadCollection,\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n toDos: safeAccess(state, 'todos.cache', {}),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => {\r\n dispatch(accountsLoadCollection());\r\n dispatch(contributionLoadResource(id));\r\n dispatch(contributionSetupLoadResource(id));\r\n dispatch(customerContributionLoadCollection());\r\n },\r\n clearForm: () => dispatch(customerContributionClearForm()),\r\n handleForm: (contribution, attributes) =>\r\n dispatch(customerContributionHandleFormChange(contribution, attributes)),\r\n hydrateForm: async (id) => await dispatch(customerContributionCopyResourceToForm(id)),\r\n updateCustomerContribution: async (id) => {\r\n await dispatch(customerContributionUpdateResource(id));\r\n dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(InactiveContributions));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n Header4,\r\n Header5,\r\n Lede,\r\n AsyncLoader,\r\n CardFooter,\r\n Link,\r\n} from 'fiducius-ui';\r\nimport b64toBlob from 'b64-to-blob';\r\n\r\nimport { convertIsoToSlash, formatAsMoney, safeAccess } from '../../../utils';\r\nimport { getContributionData } from '../redux/selectors';\r\nimport {\r\n getContributionSetupData,\r\n contributionSetupLoadResource,\r\n} from '../../../contribution-setup';\r\n\r\nimport { getUserId, getToken } from '../../../auth';\r\n\r\nimport { withPermissions, PaddedDD } from '../../../routing';\r\nimport { faFileDownload } from '@fortawesome/pro-solid-svg-icons/faFileDownload';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport styled from 'styled-components';\r\nimport { contributionLoadResource } from '../redux/operations';\r\nimport {\r\n customerContributionLoadCollection,\r\n ActiveContribution,\r\n} from '../../../customer-contribution';\r\nimport { documentsLoadContbFaq } from '../../../documents';\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst StyledDiv = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nconst StyledHeader5 = styled(Header5)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nclass ContributionSummary extends React.Component {\r\n static propTypes = {\r\n id: t.string,\r\n token: t.string,\r\n data: t.object,\r\n contributionData: t.object,\r\n setup: t.object,\r\n load: t.func,\r\n getFAQ: t.func.isRequired,\r\n permissions: t.object,\r\n request: t.object.isRequired,\r\n contributionRequest: t.object.isRequired,\r\n fromDashboard: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n //get single api here\r\n const { id, load, fromDashboard = false } = this.props;\r\n if (fromDashboard) {\r\n load(id);\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n onDownloadFaq = () => {\r\n this.props.getFAQ().then((data) => {\r\n if (safeAccess(data, 'fileData')) {\r\n this.getFileFromData(data.fileData, 'FAQ.pdf');\r\n }\r\n });\r\n };\r\n\r\n getFileFromData = (data, name) => {\r\n const blob = b64toBlob(data);\r\n\r\n // IE10+ : (has Blob, but not a[download] or URL)\r\n if (navigator.msSaveBlob) {\r\n return navigator.msSaveBlob(blob, name);\r\n } else {\r\n let link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = name;\r\n // Firefox and Edge require actual appended element for click()\r\n document.body.appendChild(link);\r\n link.click();\r\n window.URL.revokeObjectURL(link.href);\r\n link.remove();\r\n }\r\n };\r\n\r\n showEmployeeContribution() {\r\n const { setup, permissions } = this.props;\r\n let retVal = true;\r\n\r\n if (\r\n !permissions.showForgiveness &&\r\n (setup.nonPslfAllowCustomEmployeeContribution === 'NO' ||\r\n setup.nonPslfAllowCustomEmployeeContribution === 'PMTNOPD' ||\r\n setup.nonPslfAllowCustomEmployeeContribution === 'PMTAMT')\r\n ) {\r\n retVal = false;\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n getPayoutDate() {\r\n const { data } = this.props;\r\n\r\n let retComponent = null;\r\n\r\n let today = new Date();\r\n let comparison = new Date(data.payoutStartDate);\r\n if (comparison > today) {\r\n retComponent = (\r\n <Lede>\r\n You are not eligible for contribution payments until{' '}\r\n {convertIsoToSlash(data.payoutStartDate)}.\r\n </Lede>\r\n );\r\n }\r\n return retComponent;\r\n }\r\n\r\n render() {\r\n const {\r\n data,\r\n contributionData,\r\n request,\r\n contributionRequest,\r\n fromDashboard,\r\n permissions,\r\n } = this.props;\r\n\r\n let className = fromDashboard ? 'col-6 col-lg-3' : 'col-6 col-lg-4';\r\n\r\n return (\r\n <Card brand={fromDashboard ? 'tertiary' : undefined}>\r\n <CardBody>\r\n <CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-auto\">\r\n <CardTitle>{fromDashboard ? 'Contribution' : 'Summary Information'}</CardTitle>\r\n </div>\r\n <StyledDiv className=\"col-12 col-sm\">\r\n <AsyncLoader request={request} loading={<></>}>\r\n {data.faqUploaded && (\r\n <Button brand=\"primary\" onClick={this.onDownloadFaq}>\r\n <PaddedIcon icon={faFileDownload} fixedWidth />\r\n Download Policy Information\r\n </Button>\r\n )}\r\n </AsyncLoader>\r\n </StyledDiv>\r\n </div>\r\n </CardTitle>\r\n <AsyncLoader request={request}>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className={className}>\r\n <dl>\r\n <dt>Total Contribution</dt>\r\n <PaddedDD>{formatAsMoney(data.totalContribution)}</PaddedDD>\r\n </dl>\r\n </div>\r\n {this.showEmployeeContribution() && (\r\n <div className={className}>\r\n <dl>\r\n <dt>Total Employer Contribution</dt>\r\n <PaddedDD>{formatAsMoney(data.totalEmployerContribution)}</PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n\r\n {!fromDashboard && (\r\n <div className={className}>\r\n <dl>\r\n <dt>Time in Program</dt>\r\n <PaddedDD>{data.monthsInProgram} Month(s)</PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n\r\n <div className={className}>\r\n <dl>\r\n <dt>YTD Contribution </dt>\r\n <PaddedDD>{formatAsMoney(data.ytdContribution)}</PaddedDD>\r\n </dl>\r\n </div>\r\n\r\n {this.showEmployeeContribution() && (\r\n <div className={className}>\r\n <dl>\r\n <dt>YTD Employer Contribution</dt>\r\n <PaddedDD>{formatAsMoney(data.ytdEmployerContribution)}</PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n\r\n {!fromDashboard && (\r\n <div className={className}>\r\n <dl>\r\n <dt>Max Monthly Employer Contribution </dt>\r\n <PaddedDD>{formatAsMoney(data.monthlyEmployerContribution)}</PaddedDD>\r\n </dl>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {fromDashboard && (\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Header4>Active Contribution(s)</Header4>\r\n </div>\r\n <div className=\"col-12\">\r\n <AsyncLoader\r\n request={contributionRequest}\r\n loading={request.hasFinished ? undefined : <></>}\r\n empty={\r\n <>\r\n <StyledHeader5>\r\n There are no active contribution accounts on file.\r\n </StyledHeader5>\r\n </>\r\n }\r\n >\r\n {Object.values(contributionData).map((a, i) => (\r\n <ActiveContribution data={a} key={i} dataLevel={0} />\r\n ))}\r\n {(contributionData === undefined ||\r\n Object.values(contributionData).length === 0 ||\r\n Object.values(contributionData).filter((a) => a.active).length === 0) && (\r\n <StyledHeader5>\r\n There are no active contribution accounts on file.\r\n </StyledHeader5>\r\n )}\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n )}\r\n {!fromDashboard && this.getPayoutDate()}\r\n </CardText>\r\n </AsyncLoader>\r\n </CardBody>\r\n\r\n {fromDashboard && !permissions.contributionReadOnly && (\r\n <FlexFooter>\r\n <Link to=\"/benefits/contribution/overview\">Contribution</Link>\r\n <Link to=\"/accounts\">My Accounts</Link>\r\n </FlexFooter>\r\n )}\r\n {fromDashboard && permissions.contributionReadOnly && (\r\n <FlexFooter>{/*We will likely add something here at some point.*/}</FlexFooter>\r\n )}\r\n </Card>\r\n );\r\n }\r\n}\r\n//}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n token: getToken(state),\r\n id: getUserId(state),\r\n request: state.contribution.requests.loadResource,\r\n contributionRequest: state.customerContribution.requests.loadCollection,\r\n data: getContributionData(state),\r\n contributionData: safeAccess(state, 'customerContribution.cache', {}),\r\n setup: getContributionSetupData(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => {\r\n dispatch(contributionLoadResource(id));\r\n dispatch(contributionSetupLoadResource(id));\r\n dispatch(customerContributionLoadCollection());\r\n },\r\n getFAQ: () => {\r\n return dispatch(documentsLoadContbFaq());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ContributionSummary));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { Button, Badge, Card, CardBody, CardText, CardTitle, Header4 } from 'fiducius-ui';\r\n\r\nconst PaddedBadge = styled(Badge)`\r\n margin-left: 0.45em;\r\n font-size: 0.75em;\r\n`;\r\nconst DivRight = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nclass ContributionRequiredInfo extends React.Component {\r\n static propTypes = {\r\n data: t.object.isRequired,\r\n permissions: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n redirectUri: '',\r\n }; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n //handleLoanClick = () => {\r\n // this.setState({ showLoanAccts: !this.state.showLoanAccts });\r\n //};\r\n\r\n render() {\r\n const { data = {}, permissions } = this.props;\r\n if (this.state.redirectUri && this.state.redirectUri.length > 0) {\r\n return <Redirect to={this.state.redirectUri} />;\r\n }\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Other Required Information</CardTitle>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-7\">\r\n <dl>\r\n <dt>\r\n <Header4>\r\n Home Address{' '}\r\n {!data.addressOne && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>\r\n )}\r\n </Header4>\r\n </dt>\r\n {data.addressOne && (\r\n <dd>\r\n <div className=\"col\">{data.addressOne}</div>\r\n {data.addressTwo && data.addressTwo.length > 0 && (\r\n <div className=\"col\">{data.addressTwo}</div>\r\n )}\r\n <div className=\"col\">\r\n {data.city + ', ' + data.usState + ' ' + data.zipCode}\r\n </div>\r\n </dd>\r\n )}\r\n {!data.addressOne && (\r\n <dd>\r\n <div className=\"col\">Not on file</div>\r\n </dd>\r\n )}\r\n </dl>\r\n </div>\r\n <DivRight className=\"col-5\">\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.setState({ ...this.state, redirectUri: '/profile' });\r\n }}\r\n >\r\n Manage Profile\r\n </Button>\r\n </DivRight>\r\n </div>\r\n {!permissions.showForgiveness && (\r\n <div className=\"row\">\r\n <div className=\"col-7\">\r\n <dl>\r\n <dt>\r\n <Header4>\r\n Contribution Account(s){' '}\r\n {data.contributionEligibleAccounts === 0 && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>\r\n )}\r\n </Header4>\r\n </dt>\r\n <dd>\r\n <div className=\"col\">\r\n You have {data.contributionEligibleAccounts} eligible account(s) on file\r\n </div>\r\n </dd>\r\n </dl>\r\n </div>\r\n <DivRight className=\"col-5\">\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.setState({ ...this.state, redirectUri: '/accounts' });\r\n }}\r\n >\r\n Manage Accounts\r\n </Button>\r\n </DivRight>\r\n </div>\r\n )}\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(ContributionRequiredInfo));\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('customerContributionMilestone');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('customerContributionMilestone', types);\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/customer-contribution-milestone',\r\n resourceType: 'customer-contribution-milestone',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'customerContributionMilestone',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n customerContributionMilestoneClearForm,\r\n customerContributionMilestoneCopyResourceToForm,\r\n customerContributionMilestoneHandleFormChange,\r\n customerContributionMilestoneLoadCollection,\r\n customerContributionMilestoneCreateResource,\r\n customerContributionMilestoneUpdateResource,\r\n} = operations;\r\n\r\nexport {\r\n customerContributionMilestoneClearForm,\r\n customerContributionMilestoneCopyResourceToForm,\r\n customerContributionMilestoneHandleFormChange,\r\n customerContributionMilestoneLoadCollection,\r\n customerContributionMilestoneCreateResource,\r\n customerContributionMilestoneUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('customerContributionMilestone', types);\r\n","export const convertMilestonePaymentCodeToDescription = (paymentType) => {\r\n let retVal = '';\r\n\r\n switch (paymentType.toUpperCase()) {\r\n case 'SETAMT':\r\n retVal = 'Set Amount';\r\n break;\r\n case 'MODAMT':\r\n retVal = 'Modify Amount';\r\n break;\r\n case 'LUMP':\r\n retVal = 'Lump Sum';\r\n break;\r\n default:\r\n retVal = 'Other';\r\n }\r\n return retVal;\r\n};\r\n\r\nexport const convertMilestoneAccruementTypeCodeToDescription = (milestoneType) => {\r\n let retVal = '';\r\n\r\n switch (milestoneType.toUpperCase()) {\r\n case 'MONTHS':\r\n retVal = 'Months in Program';\r\n break;\r\n case 'CALCPMTS':\r\n retVal = 'Number of Scheduled Payments';\r\n break;\r\n case 'NUMPMTS':\r\n retVal = 'Number of Payments';\r\n break;\r\n case 'START':\r\n retVal = 'Starting Amount';\r\n break;\r\n default:\r\n retVal = 'Other';\r\n }\r\n return retVal;\r\n};\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Table } from 'fiducius-ui';\r\n\r\nimport { formatAsMoney, startCase, convertIsoToSlash } from '../../utils';\r\nimport {\r\n convertMilestonePaymentCodeToDescription,\r\n convertMilestoneAccruementTypeCodeToDescription,\r\n} from '../redux/selectors';\r\n\r\nconst RecentMilestonesTable = ({ data } = {}) => {\r\n if (Object.keys(data).length === 0) {\r\n return null;\r\n }\r\n\r\n const headers = [\r\n 'dateAccrued',\r\n 'milestoneAccruementType',\r\n 'milestonePaymentType',\r\n 'milestonePaymentAmount',\r\n ];\r\n\r\n let body = Object.values(data)\r\n .filter(\r\n (a) => a['dateAccrued'] !== undefined && a['dateAccrued'] !== null && a['dateAccrued'] !== ''\r\n )\r\n .filter((a, i) => i < 3)\r\n .map((a) => headers.map((h) => a[h]));\r\n\r\n headers[1] = 'accruementType';\r\n headers[2] = 'paymentType';\r\n headers[3] = 'amount';\r\n\r\n return (\r\n <Table\r\n body={body}\r\n columns={[\r\n { sortable: false, renderer: convertIsoToSlash },\r\n { sortable: false, renderer: convertMilestoneAccruementTypeCodeToDescription },\r\n { sortable: false, renderer: convertMilestonePaymentCodeToDescription },\r\n { sortable: false, renderer: formatAsMoney },\r\n ]}\r\n header={headers.map((h) => startCase(h))}\r\n />\r\n );\r\n};\r\n\r\nRecentMilestonesTable.propTypes = {\r\n data: t.object.isRequired,\r\n};\r\n\r\nexport default RecentMilestonesTable;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n Table,\r\n Modal,\r\n Card,\r\n CardBody,\r\n CardHeader,\r\n CardFooter,\r\n CardText,\r\n Button,\r\n} from 'fiducius-ui';\r\n\r\nimport { formatAsMoney, startCase, convertIsoToSlash } from '../../utils';\r\nimport {\r\n convertMilestonePaymentCodeToDescription,\r\n convertMilestoneAccruementTypeCodeToDescription,\r\n} from '../redux/selectors';\r\n\r\nconst AlignLeft = styled.div`\r\n text-align: left;\r\n margin-top: 1em;\r\n`;\r\n\r\nclass AvailableMilestonesTable extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n closeForm: t.func.isRequired,\r\n isOpen: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.modalRef = React.createRef();\r\n if (this.modalRef.current !== null) {\r\n this.modalRef.current.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n getTable() {\r\n const { data } = this.props;\r\n if (Object.keys(data).length === 0) {\r\n return null;\r\n }\r\n\r\n const headers = [\r\n 'dateAccrued',\r\n 'milestoneAccruementType',\r\n 'milestoneTypeAmount',\r\n 'milestonePaymentType',\r\n 'milestonePaymentAmount',\r\n ];\r\n\r\n let body = Object.values(data).map((a) => headers.map((h) => a[h]));\r\n\r\n headers[1] = 'accruementType';\r\n headers[2] = 'accruementAmount';\r\n headers[3] = 'paymentType';\r\n headers[4] = 'amount';\r\n\r\n return (\r\n <Table\r\n body={body}\r\n columns={[\r\n { sortable: false, renderer: convertIsoToSlash },\r\n { sortable: false, renderer: convertMilestoneAccruementTypeCodeToDescription },\r\n {},\r\n { sortable: false, renderer: convertMilestonePaymentCodeToDescription },\r\n { sortable: false, renderer: formatAsMoney },\r\n ]}\r\n header={headers.map((h) => startCase(h))}\r\n />\r\n );\r\n }\r\n\r\n render() {\r\n const { closeForm, isOpen } = this.props;\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={true}>\r\n <Card>\r\n <CardHeader>Milestones</CardHeader>\r\n <CardBody>\r\n {this.getTable()}\r\n <div className=\"row\">\r\n <AlignLeft className=\"col-12\">\r\n <CardText>\r\n Note: If a milestone does not have an accrued date, that milestone has not been\r\n met.\r\n </CardText>\r\n </AlignLeft>\r\n </div>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nexport default AvailableMilestonesTable;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n Table,\r\n Modal,\r\n Card,\r\n CardBody,\r\n CardHeader,\r\n CardFooter,\r\n CardText,\r\n Header3,\r\n Header4,\r\n Button,\r\n} from 'fiducius-ui';\r\n\r\nconst PaddedDiv = styled.div`\r\n padding-bottom: 1em;\r\n`;\r\n\r\nconst TopDiv = styled.div`\r\n margin-bottom: 1em;\r\n`;\r\n\r\nconst BorderedDiv = styled.div`\r\n margin-top: 1em;\r\n border-bottom: calc(2 * ${(p) => p.theme.borderWidth}) solid ${(p) => p.theme.textTertiary};\r\n`;\r\n\r\nconst StyledHeader4 = styled(Header4)`\r\n margin-bottom: 0em;\r\n`;\r\n\r\nclass MilestoneHelp extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n closeForm: t.func.isRequired,\r\n isOpen: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.modalRef = React.createRef();\r\n if (this.modalRef.current !== null) {\r\n this.modalRef.current.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n getAccruementBody() {\r\n const { data } = this.props;\r\n const accruementBody = [];\r\n\r\n if (Object.values(data).filter((a) => a.milestoneAccruementType === 'START').length > 0) {\r\n accruementBody.push([\r\n 'Starting Amount',\r\n 'Starting monthly contribution amount set by your employer',\r\n ]);\r\n }\r\n if (Object.values(data).filter((a) => a.milestoneAccruementType === 'NUMPMTS').length > 0) {\r\n accruementBody.push([\r\n 'Number of Payments',\r\n 'Number of contribution payments needed to reach a milestone',\r\n ]);\r\n }\r\n if (Object.values(data).filter((a) => a.milestoneAccruementType === 'CALCPMTS').length > 0) {\r\n accruementBody.push([\r\n 'Number of Calculated Payments',\r\n 'Number of pre-calculated contribution payments needed to reach a milestone',\r\n ]);\r\n }\r\n if (Object.values(data).filter((a) => a.milestoneAccruementType === 'MONTHS').length > 0) {\r\n accruementBody.push([\r\n 'Months',\r\n 'Number of months participating in contribution needed to reach a milestone',\r\n ]);\r\n }\r\n\r\n return accruementBody;\r\n }\r\n\r\n getPaymentBody() {\r\n const { data } = this.props;\r\n const paymentBody = [];\r\n\r\n if (Object.values(data).filter((a) => a.milestonePaymentType === 'SETAMT').length > 0) {\r\n paymentBody.push(['Set Amount', 'Contribution payment amount set by your employer']);\r\n }\r\n if (Object.values(data).filter((a) => a.milestonePaymentType === 'MODAMT').length > 0) {\r\n paymentBody.push([\r\n 'Modify Amount',\r\n 'Additional contribution amount applied to your previous milestone',\r\n ]);\r\n }\r\n if (Object.values(data).filter((a) => a.milestonePaymentType === 'LUMP').length > 0) {\r\n paymentBody.push(['Lump Sum', 'Lump sum contribution payment amount set by your employer']);\r\n }\r\n\r\n return paymentBody;\r\n }\r\n\r\n render() {\r\n const { closeForm, isOpen, data } = this.props;\r\n\r\n let accruementHeaders = ['Accruement Type', 'Description'];\r\n let paymentHeaders = ['Payment Type', 'Description'];\r\n\r\n //This check has to be here because the table shows up empty otherwise\r\n //The table element is taking the first available version of the data and not updating normally\r\n if (Object.values(data).length === 0) {\r\n return <></>;\r\n } else {\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={true}>\r\n <Card>\r\n <CardHeader>\r\n <Header3>What are Milestones?</Header3>\r\n </CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <TopDiv className=\"row\">\r\n <div className=\"col-12\">\r\n A milestone is accrued over time and impacts your monthly employer contribution.\r\n <BorderedDiv></BorderedDiv>\r\n </div>\r\n </TopDiv>\r\n <PaddedDiv className=\"row\">\r\n <div className=\"col-12\">\r\n <StyledHeader4>Milestone Accruement Types</StyledHeader4>\r\n <Table\r\n columns={[{ width: '25%' }, { width: '75%' }]}\r\n header={accruementHeaders}\r\n body={this.getAccruementBody()}\r\n />\r\n </div>\r\n </PaddedDiv>\r\n <PaddedDiv className=\"row\">\r\n <div className=\"col-12\">\r\n <StyledHeader4>Milestone Payment Types</StyledHeader4>\r\n <Table\r\n columns={[{ width: '25%' }, { width: '75%' }]}\r\n header={paymentHeaders}\r\n body={this.getPaymentBody()}\r\n />\r\n </div>\r\n </PaddedDiv>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default MilestoneHelp;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { Header4, Card, CardBody, CardTitle, AsyncLoader, Button } from 'fiducius-ui';\r\n\r\nimport { getUserId, getToken } from '../../auth';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport { withPermissions } from '../../routing';\r\n\r\nimport { customerContributionMilestoneLoadCollection } from '../redux/operations';\r\nimport RecentMilestonesTable from '../components/recent-milestones-table';\r\nimport AvailableMilestonesTable from '../components/available-milestones-table';\r\nimport MilestoneHelp from '../components/milestone-help';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\nconst DivRight = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nclass MyMilestones extends React.Component {\r\n static propTypes = {\r\n id: t.string,\r\n token: t.string,\r\n data: t.object,\r\n load: t.func,\r\n permissions: t.object,\r\n request: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showModal: false, showHelp: false };\r\n this.closeModal = this.closeModal.bind(this);\r\n\r\n this.openModal = this.openModal.bind(this);\r\n\r\n this.closeHelp = this.closeHelp.bind(this);\r\n\r\n this.openHelp = this.openHelp.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load();\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n closeModal() {\r\n this.setState({ ...this.state, showModal: false });\r\n }\r\n\r\n openModal() {\r\n this.setState({ ...this.state, showModal: true });\r\n }\r\n\r\n closeHelp() {\r\n this.setState({ ...this.state, showHelp: false });\r\n }\r\n\r\n openHelp() {\r\n this.setState({ ...this.state, showHelp: true });\r\n }\r\n\r\n render() {\r\n const { request, data } = this.props;\r\n if (Object.keys(data).length === 0) {\r\n return null;\r\n }\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-auto\">Milestone(s)</div>\r\n <AsyncLoader request={request} empty={<></>} loading={<></>}>\r\n <DivRight className=\"col-12 col-sm\">\r\n <StyledButton brand=\"primary\" onClick={this.openHelp}>\r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n What are Milestones\r\n </StyledButton>\r\n <StyledButton brand=\"primary\" onClick={this.openModal}>\r\n View All Milestones\r\n </StyledButton>\r\n </DivRight>\r\n </AsyncLoader>\r\n </div>\r\n </CardTitle>\r\n <AsyncLoader request={request} empty={<>You have not yet accrued any milestones.</>}>\r\n <Header4>Recently Accrued Milestones</Header4>\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n <RecentMilestonesTable data={data} />\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n <AvailableMilestonesTable\r\n data={data}\r\n isOpen={this.state.showModal}\r\n closeForm={this.closeModal}\r\n />\r\n <MilestoneHelp data={data} isOpen={this.state.showHelp} closeForm={this.closeHelp} />\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n token: getToken(state),\r\n id: getUserId(state),\r\n data: safeAccess(state, 'customerContributionMilestone.cache', {}),\r\n request: state.customerContributionMilestone.requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: () => {\r\n //dispatch(customerContributionMilestoneLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(MyMilestones));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\n\r\nconst MessageDiv = styled.div`\r\n padding: 5px 5px 5px 5px;\r\n text-align: left;\r\n`;\r\n\r\nconst MessageDivNoPadding = styled.div`\r\n padding: 0px;\r\n text-align: left;\r\n`;\r\n\r\nconst EmbedContainer = styled.div`\r\n position: relative;\r\n padding-bottom: 46.25%;\r\n height: 0;\r\n overflow: hidden;\r\n max-width: 100%;\r\n border: 0;\r\n`;\r\n\r\nconst EmbedContainerIFrame = styled.iframe`\r\n position: absolute; \r\n top: 0; left: 0; bottom: 0; right 0;\r\n width: 100%; \r\n height: 100%;\r\n border: 0; \r\n`;\r\n\r\nconst Messages = ({\r\n messageType,\r\n contentType,\r\n avatarLink,\r\n messageContent,\r\n showAvatar,\r\n showMessage,\r\n noPadding,\r\n}) => {\r\n if (contentType === 'AVATAR') {\r\n return (\r\n <>\r\n {showAvatar && (\r\n <EmbedContainer>\r\n <EmbedContainerIFrame\r\n id={'avatarFrame_' + messageType}\r\n src={avatarLink}\r\n allow=\"autoplay; fullscreen; picture-in-picture\"\r\n title=\"Fresh Start Program\"\r\n allowfullscreen\r\n ></EmbedContainerIFrame>\r\n </EmbedContainer>\r\n )}\r\n {showMessage && !!!noPadding && (\r\n <MessageDiv dangerouslySetInnerHTML={{ __html: messageContent }}></MessageDiv>\r\n )}\r\n {showMessage && noPadding && (\r\n <MessageDivNoPadding\r\n dangerouslySetInnerHTML={{ __html: messageContent }}\r\n ></MessageDivNoPadding>\r\n )}\r\n </>\r\n );\r\n } else {\r\n return (\r\n <>\r\n {showMessage && !!!noPadding && (\r\n <MessageDiv dangerouslySetInnerHTML={{ __html: messageContent }}></MessageDiv>\r\n )}\r\n {showMessage && noPadding && (\r\n <MessageDivNoPadding\r\n dangerouslySetInnerHTML={{ __html: messageContent }}\r\n ></MessageDivNoPadding>\r\n )}\r\n </>\r\n );\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nMessages.propTypes = {};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Messages);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('messages');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('messages', types);\r\n","import actions from './actions';\r\nimport { getApi, keyById, resourceOperationsGenerator } from '../../utils';\r\n\r\nimport { getToken } from '../../auth';\r\n\r\nconst endpointHandler = {\r\n endpoint: '/internal-message',\r\n customResponseHandler: null,\r\n resourceType: 'internal-message',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'messages',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst { messagesLoadResource } = operations;\r\n\r\nconst loadMessage = (id) => async (dispatch, getState) => {\r\n let data = [];\r\n try {\r\n const state = getState();\r\n dispatch(actions.messagesLoadResourceRequest());\r\n data = await getApi(getToken(state), `/internal-message/${id}`);\r\n\r\n dispatch(actions.messagesLoadResourceResponse());\r\n\r\n const cache = {\r\n ...getState().messages.cache,\r\n ...keyById(data),\r\n };\r\n\r\n await dispatch(operations.messagesHandleCacheChange(cache));\r\n await dispatch(actions.messagesUpdateResourceSuccess());\r\n } catch (error) {\r\n dispatch(operations.messagesHandleError(error));\r\n dispatch(actions.messagesLoadResourceFailure(error));\r\n }\r\n\r\n return data;\r\n};\r\n\r\nexport { messagesLoadResource, loadMessage };\r\n\r\nexport default operations;\r\n","import React, { useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, CardText } from 'fiducius-ui';\r\nimport Messages from '../components/messages';\r\nimport { loadMessage } from '../redux/operations';\r\n\r\nconst MessageTile = ({ tileTitle, loadMessage, messageType, data = {}, brand }) => {\r\n useEffect(() => {\r\n loadMessage(messageType);\r\n }, []);\r\n\r\n const dataObject = data && data.length > 0 && data.find((a) => a.id === messageType); // [0].messages && data[0].messages.find((a) => a.messageType === messageType);\r\n const messageObject =\r\n dataObject && Object.keys(dataObject).length > 0\r\n ? dataObject.messages && dataObject.messages.find((a) => a.id === messageType)\r\n : undefined;\r\n const contentType = messageObject && messageObject.contentType;\r\n const avatarLink = messageObject && messageObject.avatarLink;\r\n const messageContent = messageObject && messageObject.messageContent;\r\n const showAvatar = avatarLink && avatarLink.length > 0;\r\n const showMessage = messageContent && messageContent.length > 0;\r\n const displayContent = showAvatar || showMessage;\r\n\r\n return (\r\n <>\r\n {displayContent && (\r\n <Card brand={brand}>\r\n <CardBody>\r\n <CardTitle>{tileTitle}</CardTitle>\r\n <CardText>\r\n <Messages\r\n messageType={messageType}\r\n contentType={contentType}\r\n avatarLink={avatarLink}\r\n messageContent={messageContent}\r\n showAvatar={showAvatar}\r\n showMessage={showMessage}\r\n />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: Object.values(state.messages.cache),\r\n});\r\n\r\nMessageTile.propTypes = {\r\n load: t.func.isRequired,\r\n loadMessage: t.func.isRequired,\r\n messageType: t.string.isRequired,\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadMessage: async (id) => {\r\n await dispatch(loadMessage(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MessageTile);\r\n","import React, { useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport Messages from '../components/messages';\r\nimport { loadMessage, messagesLoadResource } from '../redux/operations';\r\n\r\nconst MessageDiv = ({ loadMessage, messageType, showModal, modalMessage, data = {} }) => {\r\n useEffect(() => {\r\n loadMessage(messageType);\r\n }, []);\r\n\r\n const messageObject = getMessageObject();\r\n const contentType = messageObject && messageObject.contentType;\r\n const avatarLink = messageObject && messageObject.avatarLink;\r\n const messageContent = messageObject && messageObject.messageContent;\r\n const showAvatar = avatarLink && avatarLink.length > 0;\r\n const showMessage = messageContent && messageContent.length > 0;\r\n const displayContent = showAvatar || showMessage;\r\n\r\n if (displayContent && modalMessage) {\r\n showModal();\r\n }\r\n\r\n return (\r\n <>\r\n {displayContent && (\r\n <div>\r\n <Messages\r\n noPadding={true}\r\n messageType={messageType}\r\n contentType={contentType}\r\n avatarLink={avatarLink}\r\n messageContent={messageContent}\r\n showAvatar={showAvatar}\r\n showMessage={showMessage}\r\n />\r\n </div>\r\n )}\r\n </>\r\n );\r\n\r\n function getMessageObject() {\r\n const dataObject = data && data.length > 0 && data.find((a) => a.id === messageType);\r\n const messageObject =\r\n dataObject && Object.keys(dataObject).length > 0\r\n ? dataObject.messages && dataObject.messages.find((a) => a.id === messageType)\r\n : undefined;\r\n return messageObject;\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: Object.values(state.messages.cache),\r\n});\r\n\r\nMessageDiv.propTypes = {\r\n load: t.func.isRequired,\r\n loadMessage: t.func.isRequired,\r\n messageType: t.string.isRequired,\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(messagesLoadResource(id));\r\n },\r\n loadMessage: async (id) => {\r\n await dispatch(loadMessage(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MessageDiv);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('messages', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { withPermissions } from '../../../routing';\r\nimport { AsyncLoader, Button, DashboardSection, Header1 } from 'fiducius-ui';\r\n\r\nimport { getContributionData } from '../redux/selectors';\r\nimport ContributionSummary from '../components/contribution-summary';\r\nimport ContributionRequiredInfo from '../components/contribution-required-info';\r\n\r\nimport { safeAccess } from '../../../utils';\r\nimport { contributionLoadResource } from '../redux/operations';\r\nimport { customerContributionLoadCollection, Overview } from '../../../customer-contribution';\r\nimport { customerContributionMilestoneLoadCollection } from '../../../customer-contribution-milestone';\r\nimport { contributionSetupLoadResource } from '../../../contribution-setup';\r\nimport { MyMilestones } from '../../../customer-contribution-milestone';\r\nimport { MessageTile } from '../../../messages';\r\nimport styled from 'styled-components';\r\n\r\nimport { getUserId } from '../../../auth';\r\n\r\nconst ButtonRight = styled(Button)`\r\n float: right;\r\n width: 150px;\r\n`;\r\n\r\nclass ContributionOverview extends React.Component {\r\n static propTypes = {\r\n id: t.string,\r\n data: t.object,\r\n request: t.object,\r\n milestoneRequest: t.object,\r\n getFAQ: t.func.isRequired,\r\n permissions: t.object,\r\n loadData: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showSetUp: false,\r\n }; // must be initialized for data handling\r\n\r\n this.handleSetupButton = this.handleSetupButton.bind(this);\r\n }\r\n\r\n handleSetupButton() {\r\n this.setState({ showSetUp: !this.state.showSetUp });\r\n }\r\n\r\n handleFilingStatus(event) {\r\n this.setState({ filingStatus: event.target.value });\r\n }\r\n\r\n componentDidMount() {\r\n const { loadData, id } = this.props;\r\n loadData(id);\r\n }\r\n\r\n onDownloadFaq = () => {\r\n this.props.getFAQ().then((data) => {\r\n if (safeAccess(data, 'fileData')) {\r\n this.getFileFromData(data.fileData, 'FAQ.pdf');\r\n }\r\n });\r\n };\r\n\r\n setRedirectURI = (urlInput) => {\r\n this.setState({ redirectURI: urlInput });\r\n };\r\n\r\n render() {\r\n const { data, request, milestoneRequest } = this.props;\r\n\r\n if (this.state.redirectURI !== undefined) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n\r\n return (\r\n <DashboardSection>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-9\">\r\n <Header1>My Contribution</Header1>\r\n </div>\r\n <div className=\"col-12 col-lg-3\">\r\n <ButtonRight\r\n brand=\"primary\"\r\n type=\"submit\"\r\n onClick={() => {\r\n this.setRedirectURI('/benefits/contribution/need-assistance');\r\n }}\r\n >\r\n Need Assistance?\r\n </ButtonRight>\r\n </div>\r\n </div>\r\n <div id=\"messageSection\">\r\n <MessageTile messageType={'Contribution'} />\r\n </div>\r\n <AsyncLoader request={request}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-7\">\r\n <ContributionSummary />\r\n <Overview />\r\n </div>\r\n <div className=\"col-12 col-lg-5\">\r\n <ContributionRequiredInfo data={data} />\r\n <AsyncLoader request={milestoneRequest} loading={null} empty={null}>\r\n <MyMilestones />\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.contribution;\r\n\r\n return {\r\n id: getUserId(state),\r\n data: getContributionData(state),\r\n request: requests.loadResource,\r\n milestoneRequest: state.customerContributionMilestone.requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: (id) => {\r\n dispatch(contributionLoadResource(id));\r\n dispatch(contributionSetupLoadResource(id));\r\n dispatch(customerContributionLoadCollection());\r\n dispatch(customerContributionMilestoneLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ContributionOverview));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('contribution', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { BrandColor, Card, CardBody, CardHeader, CardText, Header5 } from 'fiducius-ui';\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst ContributionQualify = ({ amount }) => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Contribution</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>How should I allocate my employer contribution?</Header5>\r\n <Spaced>\r\n Your employer has allocated\r\n <strong>\r\n <BrandColor brand=\"primary\"> {formatAsMoney(amount)} </BrandColor>\r\n </strong>\r\n for you to use towards your student loans per month.\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nContributionQualify.propTypes = {\r\n amount: t.number.isRequired,\r\n};\r\n\r\nexport default ContributionQualify;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\n\r\nconst MessageDiv = styled.div`\r\n padding: 5px 5px 5px 5px;\r\n text-align: left;\r\n`;\r\n\r\nconst MessageDivNoPadding = styled.div`\r\n padding: 0px;\r\n text-align: left;\r\n`;\r\n\r\nconst EmbedContainer = styled.div`\r\n position: relative;\r\n padding-bottom: 46.25%;\r\n height: 0;\r\n overflow: hidden;\r\n max-width: 100%;\r\n border: 0;\r\n`;\r\n\r\nconst EmbedContainerIFrame = styled.iframe`\r\n position: absolute; \r\n top: 0; left: 0; bottom: 0; right 0;\r\n width: 100%; \r\n height: 100%;\r\n border: 0; \r\n`;\r\n\r\nconst Messages = ({\r\n messageType,\r\n contentType,\r\n avatarLink,\r\n messageContent,\r\n showAvatar,\r\n showMessage,\r\n noPadding,\r\n}) => {\r\n if (contentType === 'AVATAR') {\r\n return (\r\n <>\r\n {showAvatar && (\r\n <EmbedContainer>\r\n <EmbedContainerIFrame\r\n id={'avatarFrame_' + messageType}\r\n src={avatarLink}\r\n allow=\"autoplay; fullscreen; picture-in-picture\"\r\n title=\"Fresh Start Program\"\r\n allowfullscreen\r\n ></EmbedContainerIFrame>\r\n </EmbedContainer>\r\n )}\r\n {showMessage && !!!noPadding && (\r\n <MessageDiv dangerouslySetInnerHTML={{ __html: messageContent }}></MessageDiv>\r\n )}\r\n {showMessage && noPadding && (\r\n <MessageDivNoPadding\r\n dangerouslySetInnerHTML={{ __html: messageContent }}\r\n ></MessageDivNoPadding>\r\n )}\r\n </>\r\n );\r\n } else {\r\n return (\r\n <>\r\n {showMessage && !!!noPadding && (\r\n <MessageDiv dangerouslySetInnerHTML={{ __html: messageContent }}></MessageDiv>\r\n )}\r\n {showMessage && noPadding && (\r\n <MessageDivNoPadding\r\n dangerouslySetInnerHTML={{ __html: messageContent }}\r\n ></MessageDivNoPadding>\r\n )}\r\n </>\r\n );\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nMessages.propTypes = {};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Messages);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('needAssistance');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('needAssistance', types);\r\n","import actions from './actions';\r\nimport { getApi, keyById, resourceOperationsGenerator } from '../../utils';\r\n\r\nimport { getToken } from '../../auth';\r\n\r\nconst endpointHandler = {\r\n endpoint: '/need-assistance',\r\n customResponseHandler: null,\r\n resourceType: 'need-assistance',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'needAssistance',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst { needAssistanceLoadResource } = operations;\r\n\r\nconst loadMessage = (id) => async (dispatch, getState) => {\r\n let data = [];\r\n try {\r\n const state = getState();\r\n dispatch(actions.needAssistanceLoadResourceRequest());\r\n data = await getApi(getToken(state), `/need-assistance/${id}`);\r\n\r\n dispatch(actions.needAssistanceLoadResourceResponse());\r\n\r\n const cache = {\r\n ...getState().needAssistance.cache,\r\n ...keyById(data),\r\n };\r\n\r\n await dispatch(operations.needAssistanceHandleCacheChange(cache));\r\n await dispatch(actions.needAssistanceUpdateResourceSuccess());\r\n } catch (error) {\r\n dispatch(operations.needAssistanceHandleError(error));\r\n dispatch(actions.needAssistanceLoadResourceFailure(error));\r\n }\r\n\r\n return data;\r\n};\r\n\r\nexport { needAssistanceLoadResource, loadMessage };\r\n\r\nexport default operations;\r\n","import React, { useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { withPermissions } from '../../routing';\r\nimport { mergeRequestStatuses } from '../../utils';\r\nimport Messages from '../components/messages';\r\nimport { loadMessage, needAssistanceLoadResource } from '../redux/operations';\r\nimport { Alert, AsyncLoader, Loader } from 'fiducius-ui';\r\n\r\nconst NeedAssistance = ({\r\n permissions,\r\n loadMessage,\r\n request,\r\n messageType,\r\n showModal,\r\n modalMessage,\r\n data = {},\r\n}) => {\r\n useEffect(() => {\r\n loadMessage(messageType);\r\n }, []);\r\n\r\n const messageObject = getMessageObject();\r\n const messageId = messageObject && messageObject.id;\r\n const contentType = messageObject && messageObject.contentType;\r\n const avatarLink = messageObject && messageObject.avatarLink;\r\n const messageContent = messageObject && messageObject.messageContent;\r\n const showAvatar = avatarLink && avatarLink.length > 0;\r\n const showMessage = messageContent && messageContent.length > 0;\r\n const displayContent = showAvatar || showMessage;\r\n const showAlert =\r\n contentType === 'MESSAGE' &&\r\n ((messageType && messageType.indexOf('_Alert') > 0) || messageId.indexOf('Alert') > 0);\r\n\r\n if (displayContent && modalMessage) {\r\n showModal();\r\n }\r\n\r\n return (\r\n <>\r\n {request.notStarted || request.isLoading ? (\r\n <>\r\n <Loader variant=\"atom\" size={3} />\r\n <br />\r\n </>\r\n ) : (\r\n <></>\r\n )}\r\n {displayContent && (\r\n <div>\r\n <AsyncLoader request={request} loading={<>loading!</>}>\r\n {showAlert && (\r\n <Alert brand=\"warning\">\r\n <Messages\r\n noPadding={true}\r\n messageType={messageType}\r\n contentType={contentType}\r\n avatarLink={avatarLink}\r\n messageContent={messageContent}\r\n showAvatar={showAvatar}\r\n showMessage={showMessage}\r\n />\r\n </Alert>\r\n )}\r\n\r\n {!showAlert && (\r\n <Messages\r\n noPadding={true}\r\n messageType={messageType}\r\n contentType={contentType}\r\n avatarLink={avatarLink}\r\n messageContent={messageContent}\r\n showAvatar={showAvatar}\r\n showMessage={showMessage}\r\n />\r\n )}\r\n </AsyncLoader>\r\n </div>\r\n )}\r\n </>\r\n );\r\n\r\n // function getMessageObject() {\r\n // const dataObject = data && data.length > 0 && data.find((a) => a.id === messageType);\r\n // const messageObject =\r\n // dataObject && Object.keys(dataObject).length > 0\r\n // ? dataObject.messages && dataObject.messages.find((a) => a.id === messageType)\r\n // : undefined;\r\n // return messageObject;\r\n // }\r\n\r\n function getMessageObject() {\r\n const dataObject = data && data.length > 0 && data.find((a) => a.id === messageType);\r\n const messageObject = dataObject ? dataObject : undefined;\r\n return messageObject;\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.needAssistance.requests.updateResource,\r\n // request: mergeRequestStatuses([\r\n // // state.todos.requests.updateResource,\r\n // // state.todos.requests.loadCollection,\r\n // state.needAssistance.requests.loadCollection,\r\n // state.needAssistance.requests.updateResource,\r\n // ]),\r\n data: Object.values(state.needAssistance.cache),\r\n});\r\n\r\nNeedAssistance.propTypes = {\r\n load: t.func.isRequired,\r\n loadMessage: t.func.isRequired,\r\n messageType: t.string.isRequired,\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(needAssistanceLoadResource(id));\r\n },\r\n loadMessage: async (id) => {\r\n await dispatch(loadMessage(id));\r\n },\r\n});\r\n\r\n//export default connect(mapStateToProps, mapDispatchToProps)(NeedAssistance);\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(NeedAssistance));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('needAssistance', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\n\r\nconst AccountForm = ({ data = {}, errors = {}, handleChange }) => (\r\n <Form id=\"account\" handleChange={handleChange} defaults={data}>\r\n <InputWrapper error={!!errors.contactEmail}>\r\n <InputLabel htmlFor=\"contactEmail\" required>\r\n Contact Email\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'contactEmail.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name=\"contactEmail\"\r\n //type=\"email\" - this does not accomidate multiple emails.\r\n placeholder=\"Email\"\r\n autoComplete=\"email username\"\r\n defaultValue={data.contactEmail}\r\n />\r\n </InputGroup>\r\n <InputHelp>Please note that this will not update the email you use to log in.</InputHelp>\r\n </InputWrapper>\r\n </Form>\r\n);\r\n\r\nAccountForm.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func.isRequired,\r\n};\r\n\r\nexport default AccountForm;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Form,\r\n Header4,\r\n InputCheckbox,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\n\r\nconst TextMessageText = styled.div`\r\n margin-left: 2rem;\r\n`;\r\n\r\nconst StyledCheckbox = styled.div`\r\n & > label.input-checkbox {\r\n margin-bottom: 0;\r\n color: ${(p) => p.theme.textPrimary};\r\n }\r\n`;\r\n\r\nconst ContactForm = ({ data = {}, errors = {}, handleChange }) => (\r\n <Form id=\"contact\" handleChange={handleChange} defaults={data}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-6\">\r\n <InputWrapper error={!!errors.cellPhone}>\r\n <InputLabel htmlFor=\"cellPhone\" required>\r\n Phone Number\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'cellPhone.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={data.cellPhone}\r\n mask=\"(###) ###-####\"\r\n name=\"cellPhone\"\r\n placeholder=\"(___) ___-____\"\r\n type=\"tel\"\r\n />\r\n </InputGroup>\r\n <StyledCheckbox>\r\n <InputCheckbox\r\n defaultChecked={data.textNotifications}\r\n name=\"textNotifications\"\r\n label=\"I agree to receive text messages from Fiducius.\"\r\n />\r\n </StyledCheckbox>\r\n <TextMessageText>\r\n Message and data rates may apply. Message frequency varies. Reply HELP for help and STOP\r\n to cancel. View our <a href=\"/terms-of-use\">Terms of Use</a> and{' '}\r\n <a href=\"/privacy\">Privacy Policy</a>.\r\n </TextMessageText>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-sm-6\">\r\n <InputWrapper error={!!errors.altPhone}>\r\n <InputLabel htmlFor=\"altPhone\">Alternate Number</InputLabel>\r\n <InputError>{safeAccess(errors, 'altPhone.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={data.altPhone}\r\n mask=\"(###) ###-####\"\r\n name=\"altPhone\"\r\n placeholder=\"(___) ___-____\"\r\n type=\"tel\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <Header4>Home Address</Header4>\r\n <InputWrapper error={!!errors.addressOne}>\r\n <InputLabel htmlFor=\"addressOne\" required>\r\n Address Line 1\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'addressOne.detail')}</InputError>\r\n <InputGroup>\r\n <InputText defaultValue={data.addressOne} name=\"addressOne\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.addressTwo}>\r\n <InputLabel htmlFor=\"addressTwo\">Address Line 2</InputLabel>\r\n <InputError>{safeAccess(errors, 'addressTwo.detail')}</InputError>\r\n <InputGroup>\r\n <InputText defaultValue={data.addressTwo} name=\"addressTwo\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.city}>\r\n <InputLabel htmlFor=\"city\" required>\r\n City\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'city.detail')}</InputError>\r\n <InputGroup>\r\n <InputText defaultValue={data.city} name=\"city\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.usState}>\r\n <InputLabel htmlFor=\"usState\" required>\r\n State\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'usState.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n defaultValue={data.usState}\r\n name=\"usState\"\r\n options={[\r\n '',\r\n 'AL',\r\n 'AK',\r\n 'AR',\r\n 'AZ',\r\n 'CA',\r\n 'CO',\r\n 'CT',\r\n 'DC',\r\n 'DE',\r\n 'FL',\r\n 'GA',\r\n 'HI',\r\n 'IA',\r\n 'ID',\r\n 'IL',\r\n 'IN',\r\n 'KS',\r\n 'KY',\r\n 'LA',\r\n 'MA',\r\n 'MD',\r\n 'ME',\r\n 'MI',\r\n 'MN',\r\n 'MO',\r\n 'MS',\r\n 'MT',\r\n 'NC',\r\n 'NE',\r\n 'NH',\r\n 'NJ',\r\n 'NM',\r\n 'NV',\r\n 'NY',\r\n 'ND',\r\n 'OH',\r\n 'OK',\r\n 'OR',\r\n 'PA',\r\n 'PR',\r\n 'RI',\r\n 'SC',\r\n 'SD',\r\n 'TN',\r\n 'TX',\r\n 'UT',\r\n 'VT',\r\n 'VA',\r\n 'WA',\r\n 'WI',\r\n 'WV',\r\n 'WY',\r\n ]}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.zipCode}>\r\n <InputLabel htmlFor=\"zipCode\" required>\r\n Zip Code\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'zipCode.detail')}</InputError>\r\n <InputGroup>\r\n <InputText defaultValue={data.zipCode} name=\"zipCode\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n);\r\n\r\nContactForm.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func.isRequired,\r\n};\r\n\r\nexport default ContactForm;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { InputWrapperSpaced } from '../../auth';\r\nimport { convertIsoToSlash, safeAccess } from '../../utils';\r\nimport { withPermissions } from '../../routing';\r\n\r\nclass PersonalForm extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n permissions: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.firstInput = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n this.firstInput.current.focus();\r\n }\r\n\r\n render() {\r\n const { data = {}, errors = {}, handleChange, permissions } = this.props;\r\n return (\r\n <Form id=\"personal\" handleChange={handleChange} defaults={data}>\r\n <div className=\"row no-gutters\">\r\n <div className=\"col-4\">\r\n <InputWrapperSpaced error={!!errors.firstName} first>\r\n <InputLabel htmlFor=\"firstName\" required>\r\n First Name\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'firstName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n inputRef={this.firstInput}\r\n name=\"firstName\"\r\n defaultValue={data.firstName}\r\n />\r\n </InputGroup>\r\n </InputWrapperSpaced>\r\n </div>\r\n <div className=\"col-2\">\r\n <InputWrapperSpaced error={!!errors.middleInitial}>\r\n <InputLabel htmlFor=\"middleInitial\">M.I.</InputLabel>\r\n <InputError>{safeAccess(errors, 'middleInitial.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"middleInitial\" defaultValue={data.middleInitial} maxLength=\"1\" />\r\n </InputGroup>\r\n </InputWrapperSpaced>\r\n </div>\r\n <div className=\"col-4\">\r\n <InputWrapperSpaced error={!!errors.lastName}>\r\n <InputLabel htmlFor=\"lastName\" required>\r\n Last Name\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'lastName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"lastName\" defaultValue={data.lastName} />\r\n </InputGroup>\r\n </InputWrapperSpaced>\r\n </div>\r\n <div className=\"col-2\">\r\n <InputWrapperSpaced error={!!errors.suffix} last>\r\n <InputLabel htmlFor=\"suffix\">Suffix</InputLabel>\r\n <InputError>{safeAccess(errors, 'suffix.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"suffix\" defaultValue={data.suffix} />\r\n </InputGroup>\r\n </InputWrapperSpaced>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n {/* <div className=\"col-12 col-md-3\">\r\n <InputWrapper error={!!errors.pronounPreference}>\r\n <InputLabel htmlFor=\"pronounPreference\">Pronoun Preference</InputLabel>\r\n <InputError>{safeAccess(errors, 'pronounPreference.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n defaultValue={data.pronounPreference}\r\n name=\"pronounPreference\"\r\n options={['', 'He', 'She', 'They']}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div> */}\r\n <div className=\"col-12 col-md-9\">\r\n <InputWrapper error={!!errors.maidenName}>\r\n <InputLabel htmlFor=\"maidenName\">Last Name Pre-marriage</InputLabel>\r\n <InputError>{safeAccess(errors, 'maidenName.detail')}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputText defaultValue={data.maidenName} name=\"maidenName\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.dob}>\r\n <InputLabel htmlFor=\"dob\" required>\r\n Birth Date\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'dob.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.dob)}\r\n mask=\"##/##/####\"\r\n name=\"dob\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-8\">\r\n <InputWrapper\r\n error={\r\n (permissions.inForgiveness || permissions.inSimplifi) &&\r\n !!errors.driverLicenseNumber\r\n }\r\n >\r\n <InputLabel\r\n htmlFor=\"driverLicenseNumber\"\r\n required={permissions.inForgiveness || permissions.inSimplifi}\r\n >\r\n Driver's License Number\r\n </InputLabel>\r\n {(permissions.inForgiveness || permissions.inSimplifi) && (\r\n <InputError>{safeAccess(errors, 'driverLicenseNumber.detail')}</InputError>\r\n )}\r\n <InputGroup>\r\n <InputText name=\"driverLicenseNumber\" defaultValue={data.driverLicenseNumber} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-4\">\r\n <InputWrapper\r\n error={\r\n (permissions.inForgiveness || permissions.inSimplifi) && !!errors.driverLicenseState\r\n }\r\n >\r\n <InputLabel\r\n htmlFor=\"driverLicenseState\"\r\n required={permissions.inForgiveness || permissions.inSimplifi}\r\n >\r\n License State\r\n </InputLabel>\r\n {(permissions.inForgiveness || permissions.inSimplifi) && (\r\n <InputError>{safeAccess(errors, 'driverLicenseState.detail')}</InputError>\r\n )}\r\n <InputGroup>\r\n <InputSelect\r\n defaultValue={data.driverLicenseState}\r\n name=\"driverLicenseState\"\r\n options={[\r\n '',\r\n 'AL',\r\n 'AK',\r\n 'AR',\r\n 'AZ',\r\n 'CA',\r\n 'CO',\r\n 'CT',\r\n 'DC',\r\n 'DE',\r\n 'FL',\r\n 'GA',\r\n 'HI',\r\n 'IA',\r\n 'ID',\r\n 'IL',\r\n 'IN',\r\n 'KS',\r\n 'KY',\r\n 'LA',\r\n 'MA',\r\n 'MD',\r\n 'ME',\r\n 'MI',\r\n 'MN',\r\n 'MO',\r\n 'MS',\r\n 'MT',\r\n 'NC',\r\n 'NE',\r\n 'NH',\r\n 'NJ',\r\n 'NM',\r\n 'NV',\r\n 'NY',\r\n 'ND',\r\n 'OH',\r\n 'OK',\r\n 'OR',\r\n 'PA',\r\n 'PR',\r\n 'RI',\r\n 'SC',\r\n 'SD',\r\n 'TN',\r\n 'TX',\r\n 'UT',\r\n 'VT',\r\n 'VA',\r\n 'WA',\r\n 'WI',\r\n 'WV',\r\n 'WY',\r\n ]}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default withPermissions(PersonalForm);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('profile');\r\n","import actions from './actions';\r\nimport { ProfileValidator } from './validators';\r\nimport { convertSlashToIso, resourceOperationsGenerator } from '../../utils';\r\n\r\nconst profileValidator = new ProfileValidator();\r\n\r\nconst fixData = (data) => {\r\n return data.map((resource) => {\r\n const { altPhone, cellPhone, dob } = resource;\r\n resource.altPhone = altPhone ? altPhone.replace(/\\D/g, '') : null;\r\n resource.cellPhone = cellPhone ? cellPhone.replace(/\\D/g, '') : null;\r\n resource.dob = dob ? convertSlashToIso(dob) : '';\r\n return resource;\r\n });\r\n};\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: fixData,\r\n endpoint: '/demographic-info',\r\n resourceType: 'demographic-info',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'profile',\r\n actions,\r\n null,\r\n profileValidator,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n profileCopyResourceToForm,\r\n profileHandleFormChange,\r\n profileLoadResource,\r\n profileUpdateResource,\r\n} = operations;\r\n\r\nconst profileSaveForm = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n // state.profile.form = revertData(state.profile.form)\r\n await dispatch(profileUpdateResource(id));\r\n if (\r\n state.profile.form.needsProfileVerification === true &&\r\n state.profile.form.verifyProfile === true\r\n ) {\r\n state.profile.form.needsProfileVerification = false;\r\n }\r\n};\r\n\r\nexport {\r\n profileCopyResourceToForm,\r\n profileHandleFormChange,\r\n profileLoadResource,\r\n profileUpdateResource,\r\n profileSaveForm,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('profile', types);\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class ProfileValidator extends FormValidator {\r\n // Account tab validators\r\n contactEmail(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n validator.isValidEmail();\r\n }\r\n\r\n // Contact tab validators\r\n cellPhone(validator) {\r\n validator.isRequired();\r\n validator.isValidPhoneNumber();\r\n }\r\n\r\n addressOne(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n addressTwo(validator) {\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n city(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n usState(validator) {\r\n validator.requiredSelection();\r\n validator.hasMaxLength(2);\r\n }\r\n\r\n zipCode(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n\r\n // Personal tab validators\r\n dob(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n driverLicenseNumber(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n\r\n driverLicenseState(validator) {\r\n validator.requiredSelection();\r\n validator.hasMaxLength(2);\r\n }\r\n\r\n firstName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(20);\r\n }\r\n\r\n lastName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n maidenName(validator) {\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n middleInitial(validator) {\r\n validator.hasMaxLength(1);\r\n }\r\n\r\n suffix(validator) {\r\n validator.hasMaxLength(15);\r\n }\r\n\r\n //Correct info checkbox validator\r\n\r\n verifyProfile(validator, state) {\r\n if (state.needsProfileVerification) {\r\n validator.checkRequired();\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport {\r\n Alert,\r\n AsyncLoader,\r\n Button,\r\n CardText,\r\n CardTitle,\r\n InputWrapper,\r\n InputError,\r\n InputCheckbox,\r\n InputGroup,\r\n Loader,\r\n Form,\r\n Header4,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\nimport { withPermissions } from '../../routing';\r\n\r\nimport { FlexEnd } from '../../root';\r\nimport { todosLoadCollection } from '../../todos';\r\nimport { debounce, nest, flatten, stringIsNullOrEmpty } from '../../utils';\r\nimport { Fade } from '../../routing';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport AccountForm from '../components/account-form';\r\nimport ContactForm from '../components/contact-form';\r\nimport PersonalForm from '../components/personal-form';\r\nimport {\r\n profileCopyResourceToForm,\r\n profileHandleFormChange,\r\n profileSaveForm,\r\n} from '../redux/operations';\r\n\r\nimport { authLoadPermissions } from '../../auth';\r\n\r\nconst StyledWrapper = styled(InputWrapper)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nclass ProfileForm extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n getFormData: t.func.isRequired,\r\n id: t.string,\r\n copyRequest: t.object.isRequired,\r\n updateRequest: t.object.isRequired,\r\n saveData: t.func.isRequired,\r\n updateFormState: t.func.isRequired,\r\n permissions: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '' }; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const { id, getFormData } = this.props;\r\n getFormData(id);\r\n }\r\n\r\n handleChange = debounce((formState) => {\r\n const { data, updateFormState } = this.props;\r\n const newData = { ...flatten(data), ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 200);\r\n\r\n save = () => {\r\n this.props.saveData();\r\n };\r\n\r\n saveAndRedirect = () => {\r\n const { permissions, data } = this.props;\r\n this.props.saveData().then(() => {\r\n if (permissions.clientStatus === 'CRET' && data.verification.needsProfileVerification) {\r\n this.setState({ redirectURI: '/benefits/forgiveness/questionnaire' });\r\n } else if (permissions.clientStatus === 'NFPSS') {\r\n let retVal = permissions.forgivenessSteps.filter((a) => a.stepCurrent === true);\r\n if (retVal.find((b) => b.id === 'Welcome') !== undefined) {\r\n this.setState({ redirectURI: '/benefits/forgiveness/welcome' });\r\n }\r\n }\r\n });\r\n };\r\n\r\n render() {\r\n const { data = {}, errors = {}, copyRequest, updateRequest } = this.props;\r\n\r\n const request = Object.keys(copyRequest).reduce(\r\n (combined, key) => ({\r\n ...combined,\r\n [key]: copyRequest[key] || updateRequest[key],\r\n }),\r\n {}\r\n );\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n return (\r\n <>\r\n {errors.generalErrors\r\n ? errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))\r\n : null}\r\n {/* TODO: Fix AsyncLoader so that it doesn't need this check for data */}\r\n <AsyncLoader request={request}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-6 col-xl-5\">\r\n <CardTitle>Personal Information</CardTitle>\r\n <CardText>\r\n <PersonalForm\r\n data={data.personal}\r\n errors={errors}\r\n handleChange={this.handleChange}\r\n />\r\n </CardText>\r\n <CardTitle>Account Information</CardTitle>\r\n <CardText>\r\n <AccountForm\r\n data={data.account}\r\n errors={errors}\r\n handleChange={this.handleChange}\r\n />\r\n </CardText>\r\n </div>\r\n <div className=\"col-12 col-lg-6 col-xl-5 offset-xl-1\">\r\n <CardTitle>Contact Information</CardTitle>\r\n <CardText>\r\n <ContactForm\r\n data={data.contact}\r\n errors={errors}\r\n handleChange={this.handleChange}\r\n />\r\n </CardText>\r\n </div>\r\n </div>\r\n <div className=\"col-12 col-lg-6 col-xl-5 offset-xl-1\">\r\n <Fade Id=\"verifyGate\" show={data.verification.needsProfileVerification || false}>\r\n <Form id=\"Verification\" handleChange={this.handleChange}>\r\n <StyledWrapper error={!!errors.verifyProfile}>\r\n <InputGroup>\r\n <InputCheckbox name=\"verifyProfile\" label=\"My information is correct\" />\r\n </InputGroup>\r\n <InputError>{safeAccess(errors, 'verifyProfile.detail')}</InputError>\r\n </StyledWrapper>\r\n </Form>\r\n </Fade>\r\n </div>\r\n <FlexEnd>\r\n <Fade show={this.enableSubmit()}>\r\n {data.verification.needsProfileVerification && (\r\n <Button brand=\"primary\" onClick={this.saveAndRedirect}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Save'}\r\n </Button>\r\n )}\r\n\r\n {!data.verification.needsProfileVerification && (\r\n <Button brand=\"primary\" onClick={this.save}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Save'}\r\n </Button>\r\n )}\r\n </Fade>\r\n <Fade show={!this.checkNoMissingData()}>\r\n <Header4>Please enter the missing information above.</Header4>\r\n </Fade>\r\n <Fade show={this.checkNoMissingData() && !this.checkNoErrors()}>\r\n <Header4>Please fix the errors above.</Header4>\r\n </Fade>\r\n </FlexEnd>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n }\r\n\r\n checkNoMissingData = () => {\r\n const { data = {}, permissions } = this.props;\r\n let retVal =\r\n !stringIsNullOrEmpty(data.account.contactEmail) &&\r\n !stringIsNullOrEmpty(data.contact.cellPhone) &&\r\n !stringIsNullOrEmpty(data.contact.addressOne) &&\r\n !stringIsNullOrEmpty(data.contact.city) &&\r\n !stringIsNullOrEmpty(data.contact.usState) &&\r\n !stringIsNullOrEmpty(data.contact.zipCode) &&\r\n !stringIsNullOrEmpty(data.personal.dob) &&\r\n (!permissions.inForgiveness || !stringIsNullOrEmpty(data.personal.driverLicenseNumber)) &&\r\n (!permissions.inSimplifi || !stringIsNullOrEmpty(data.personal.driverLicenseNumber)) &&\r\n (!permissions.inForgiveness || !stringIsNullOrEmpty(data.personal.driverLicenseState)) &&\r\n (!permissions.inSimplifi || !stringIsNullOrEmpty(data.personal.driverLicenseState)) &&\r\n !stringIsNullOrEmpty(data.personal.firstName) &&\r\n !stringIsNullOrEmpty(data.personal.lastName) &&\r\n (!data.verification.needsProfileVerification ||\r\n (data.verification.needsProfileVerification && data.verification.verifyProfile));\r\n\r\n return retVal;\r\n };\r\n\r\n checkNoErrors = () => {\r\n const { errors = {}, permissions } = this.props;\r\n\r\n let retVal =\r\n (!errors.contactEmail || errors.contactEmail.detail === undefined) &&\r\n (!errors.cellPhone || errors.cellPhone.detail === undefined) &&\r\n (!errors.addressOne || errors.addressOne.detail === undefined) &&\r\n (!errors.addressTwo || errors.addressTwo.detail === undefined) &&\r\n (!errors.city || errors.city.detail === undefined) &&\r\n (!errors.usState || errors.usState.detail === undefined) &&\r\n (!errors.zipCode || errors.zipCode.detail === undefined) &&\r\n (!errors.dob || errors.dob.detail === undefined) &&\r\n (!permissions.inForgiveness ||\r\n !errors.driverLicenseNumber ||\r\n errors.driverLicenseNumber.detail === undefined) &&\r\n (!permissions.inSimplifi ||\r\n !errors.driverLicenseNumber ||\r\n errors.driverLicenseNumber.detail === undefined) &&\r\n (!permissions.inForgiveness ||\r\n !errors.driverLicenseState ||\r\n errors.driverLicenseState.detail === undefined) &&\r\n (!permissions.inSimplifi ||\r\n !errors.driverLicenseState ||\r\n errors.driverLicenseState.detail === undefined) &&\r\n (!errors.firstName || errors.firstName.detail === undefined) &&\r\n (!errors.lastName || errors.lastName.detail === undefined) &&\r\n (!errors.maidenName || errors.maidenName.detail === undefined) &&\r\n (!errors.middleInitial || errors.middleInitial.detail === undefined) &&\r\n (!errors.suffix || errors.suffix.detail === undefined) &&\r\n (!errors.verifyProfile || errors.verifyProfile.detail === undefined);\r\n return retVal;\r\n };\r\n\r\n enableSubmit = () => {\r\n return this.checkNoMissingData() && this.checkNoErrors();\r\n };\r\n}\r\n\r\nconst tabs = {\r\n account: ['contactEmail'],\r\n contact: [\r\n 'addressOne',\r\n 'addressTwo',\r\n 'altPhone',\r\n 'cellPhone',\r\n 'city',\r\n 'textNotifications',\r\n 'usState',\r\n 'zipCode',\r\n ],\r\n personal: [\r\n 'dob',\r\n 'driverLicenseNumber',\r\n 'driverLicenseState',\r\n 'firstName',\r\n 'lastName',\r\n 'maidenName',\r\n 'middleInitial',\r\n 'suffix',\r\n 'pronounPreference',\r\n ],\r\n verification: ['needsProfileVerification', 'verifyProfile'],\r\n};\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n const { form, requests, errors } = state.profile;\r\n return {\r\n data: nest(form, tabs),\r\n errors: errors,\r\n copyRequest: requests.copyResourceToForm,\r\n updateRequest: requests.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n getFormData: () => dispatch(profileCopyResourceToForm(ownProps.id)),\r\n saveData: async () => {\r\n await dispatch(profileSaveForm(ownProps.id));\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n },\r\n updateFormState: (data, attributes) => dispatch(profileHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ProfileForm));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, DashboardSection, Header2 } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../auth';\r\n\r\nimport ProfileForm from './profile-form';\r\nimport { profileLoadResource } from '../redux/operations';\r\n\r\nclass MyProfile extends React.Component {\r\n static propTypes = {\r\n hasData: t.bool,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n request: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const { id, loadData } = this.props;\r\n loadData(id);\r\n }\r\n\r\n render() {\r\n const { hasData, id, request } = this.props;\r\n return (\r\n <DashboardSection title=\"My Profile\">\r\n <Header2>One simple place to keep all of your information up to date</Header2>\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request}>{hasData && <ProfileForm id={id} />}</AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n hasData: state.profile.cache && Object.keys(state.profile.cache).length > 0,\r\n id: getUserId(state),\r\n request: state.profile.requests.loadResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: (id) => dispatch(profileLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyProfile);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('profile', types);\r\n","import React, { useMemo, useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { format, startOfToday, getHours } from 'date-fns';\r\nimport styled from 'styled-components';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n Datepicker,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputMask,\r\n InputTextarea,\r\n InputWrapper,\r\n Loader,\r\n Form,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, stringIsNullOrEmpty } from '../../utils';\r\nimport { Fade } from '../../routing';\r\n\r\nconst LoaderWrapper = styled.div`\r\n align-items: center;\r\n align-self: stretch;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst StyledCard = styled(Card)`\r\n padding-top: 0.5rem;\r\n padding-bottom: 2rem;\r\n`;\r\n\r\nconst StyledBody = styled(CardBody)`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst StyledText = styled(CardText)`\r\n align-items: flex-start;\r\n align-self: center;\r\n display: flex;\r\n flex-direction: column;\r\n width: 320px;\r\n`;\r\n\r\nconst StyledFooter = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n & > button {\r\n margin: 0 1.5rem;\r\n }\r\n`;\r\n\r\nconst StyledGroup = styled(InputGroup)`\r\n & .react-datepicker__time,\r\n & .react-datepicker__time-box,\r\n & .react-datepicker__time-container {\r\n width: 90px !important;\r\n }\r\n & .react-datepicker__navigation--next {\r\n right: 96px !important;\r\n }\r\n & .react-datepicker__time-list-item--disabled {\r\n display: none;\r\n }\r\n`;\r\n\r\n// Adjust to play nice with react-datepicker\r\nconst NoteWrapper = styled(InputWrapper)`\r\n align-items: flex-start;\r\n width: inherit;\r\n`;\r\n\r\nconst InputHelpLeft = styled(InputHelp)`\r\n text-align: left;\r\n`;\r\n\r\nconst InputLabelLeft = styled(InputLabel)`\r\n text-align: left;\r\n`;\r\n\r\nconst getDatesFromSlots = (slots) => {\r\n const unique = [...new Set(slots.map((s) => format(s, 'MM/dd/yyyy')))];\r\n return unique.map((u) => new Date(u));\r\n};\r\n\r\nconst getTimesForSelectedDate = (selected, slots) => {\r\n if (!selected) {\r\n return [];\r\n } else {\r\n return slots.filter((s) => format(s, 'MM/dd/yyyy') === format(selected, 'MM/dd/yyyy'));\r\n }\r\n};\r\n\r\nconst getPhoneNumber = (phone, form) => {\r\n return !(form.cellPhone === undefined) ? form.cellPhone : phone.cellPhone;\r\n};\r\n\r\nconst SchedulerForm = ({\r\n closeModal,\r\n schedule,\r\n slots,\r\n errors = {},\r\n form = {},\r\n phone = {},\r\n handleChange,\r\n request,\r\n rescheduleID = {},\r\n}) => {\r\n const [note, setNote] = useState('');\r\n const [selected, setSelected] = useState(startOfToday());\r\n const dates = useMemo(() => getDatesFromSlots(slots), [slots]);\r\n const times = useMemo(() => getTimesForSelectedDate(selected, slots), [selected, slots]);\r\n\r\n return (\r\n <StyledCard brand={request.hasFailed ? 'danger' : 'primary'}>\r\n {request.isLoading ? (\r\n <StyledBody>\r\n <LoaderWrapper>\r\n <Loader />\r\n </LoaderWrapper>\r\n </StyledBody>\r\n ) : (\r\n <>\r\n <StyledBody>\r\n <CardTitle>Schedule a meeting</CardTitle>\r\n <Form id=\"scheduleMeeting\" handleChange={handleChange}>\r\n <StyledText>\r\n <InputWrapper>\r\n <StyledGroup>\r\n <Datepicker\r\n dateFormat=\"MMMM d, yyyy h:mm aa\"\r\n onChange={setSelected}\r\n includeTimes={times}\r\n includeDates={dates}\r\n inline\r\n name=\"scheduler\"\r\n timeFormat=\"hh:mm aa\"\r\n timeCaption=\"Time\"\r\n selected={selected}\r\n showTimeSelect\r\n />\r\n </StyledGroup>\r\n <InputHelpLeft>\r\n To schedule a time for a meeting:\r\n <ul>\r\n <li>Select a date from the calendar</li>\r\n <li>Scroll to choose an available time slot</li>\r\n <li>All times are shown in your local time zone</li>\r\n </ul>\r\n </InputHelpLeft>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.cellPhone}>\r\n <InputLabelLeft htmlFor=\"cellPhone\" required>\r\n Phone Number\r\n </InputLabelLeft>\r\n <InputError>{safeAccess(errors, 'cellPhone.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={getPhoneNumber(phone, form)}\r\n mask=\"(###) ###-####\"\r\n name=\"cellPhone\"\r\n placeholder=\"(___) ___-____\"\r\n type=\"tel\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <NoteWrapper>\r\n <InputLabel optional>Notes</InputLabel>\r\n <InputGroup>\r\n <InputTextarea\r\n name=\"scheduleNote\"\r\n value={note}\r\n onChange={(e) => setNote(e.target.value)}\r\n />\r\n </InputGroup>\r\n <InputHelp>Add any notes or questions for your advisor.</InputHelp>\r\n </NoteWrapper>\r\n </StyledText>\r\n </Form>\r\n </StyledBody>\r\n <StyledFooter>\r\n <Button brand=\"lowContrast\" onClick={closeModal}>\r\n Cancel\r\n </Button>\r\n <Fade show={enableSubmit(form, phone, errors, selected)}>\r\n <Button brand=\"primary\" onClick={() => schedule(selected, note, form, rescheduleID)}>\r\n Schedule\r\n </Button>\r\n </Fade>\r\n <Fade show={!checkNoMissingData(form, phone)}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade show={checkNoMissingData(form, phone) && !checkNoErrors(errors)}>\r\n Please fix the errors above.\r\n </Fade>\r\n <Fade\r\n show={\r\n !checkMeetingDateTimeIsSelected(selected) &&\r\n checkNoMissingData(form, phone) &&\r\n checkNoErrors(errors)\r\n }\r\n >\r\n Please select a meeting date and time.\r\n </Fade>\r\n </StyledFooter>\r\n </>\r\n )}\r\n </StyledCard>\r\n );\r\n};\r\n\r\nconst checkNoMissingData = (form, phone) => {\r\n let retVal = !stringIsNullOrEmpty(getPhoneNumber(phone, form));\r\n return retVal;\r\n};\r\n\r\nconst checkMeetingDateTimeIsSelected = (selected) => {\r\n let retVal = !(selected && getHours(selected) === getHours(startOfToday()));\r\n return retVal;\r\n};\r\n\r\nconst checkNoErrors = (errors) => {\r\n let retVal = !errors.cellPhone || errors.cellPhone.detail === undefined;\r\n return retVal;\r\n};\r\n\r\nconst enableSubmit = (form, phone, errors, selected) => {\r\n return (\r\n checkNoMissingData(form, phone) &&\r\n checkNoErrors(errors) &&\r\n checkMeetingDateTimeIsSelected(selected)\r\n );\r\n};\r\n\r\nSchedulerForm.propTypes = {\r\n closeModal: t.func,\r\n schedule: t.func.isRequired,\r\n slots: t.array,\r\n request: t.object,\r\n};\r\n\r\nexport default SchedulerForm;\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('meetings');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('meetings', types);\r\n","import actions from './actions';\r\nimport { MeetingsValidator } from './validators';\r\n\r\nimport { getToken } from '../../auth';\r\nimport {\r\n checkForEmpty,\r\n getApi,\r\n keyById,\r\n normalize,\r\n postApi,\r\n resourceOperationsGenerator,\r\n} from '../../utils';\r\n\r\nconst meetingsValidator = new MeetingsValidator();\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/schedule-meeting',\r\n resourceType: 'schedule-meeting',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'meetings',\r\n actions,\r\n null,\r\n meetingsValidator,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler\r\n);\r\n\r\nconst {\r\n meetingsCreateResource,\r\n meetingsDeleteResource,\r\n meetingsHandleCacheChange,\r\n meetingsHandleFormChange,\r\n} = operations;\r\n\r\nconst meetingsClearSlots = () => async (dispatch, getState) => {\r\n await dispatch(\r\n operations.meetingsHandleCacheChange({ ...getState().meetings.cache, available: {} })\r\n );\r\n};\r\n\r\nconst meetingsLoadSlots = () => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.meetingsLoadCollectionRequest());\r\n let available = await getApi(getToken(getState()), '/schedule-meeting'); // wat\r\n\r\n dispatch(actions.meetingsLoadCollectionResponse());\r\n available = available || [];\r\n available = keyById(available);\r\n\r\n let cache = getState().meetings.cache;\r\n await dispatch(operations.meetingsHandleCacheChange({ ...cache, available }));\r\n\r\n dispatch(actions.meetingsLoadCollectionSuccess(checkForEmpty(getState().meetings)));\r\n } catch (error) {\r\n dispatch(operations.meetingsHandleError(error));\r\n dispatch(actions.meetingsLoadCollectionFailure(error));\r\n }\r\n};\r\n\r\nconst meetingsLoadMeetings = () => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.meetingsLoadCollectionRequest());\r\n let current = await getApi(getToken(getState()), '/schedule-meeting/0/GetAll');\r\n\r\n dispatch(actions.meetingsLoadCollectionResponse());\r\n current = current || [];\r\n current = keyById(current);\r\n\r\n let cache = getState().meetings.cache;\r\n await dispatch(operations.meetingsHandleCacheChange({ ...cache, current }));\r\n\r\n dispatch(actions.meetingsLoadCollectionSuccess(checkForEmpty(getState().meetings)));\r\n } catch (error) {\r\n dispatch(operations.meetingsHandleError(error));\r\n dispatch(actions.meetingsLoadCollectionFailure(error));\r\n }\r\n};\r\n\r\nconst meetingsLoadCollection = () => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.meetingsLoadCollectionRequest());\r\n let [available, current] = await Promise.all([\r\n getApi(getToken(getState()), '/schedule-meeting'),\r\n getApi(getToken(getState()), '/schedule-meeting/0/GetAll'), // wat\r\n ]);\r\n\r\n dispatch(actions.meetingsLoadCollectionResponse());\r\n available = available || [];\r\n current = current || [];\r\n [available, current] = [keyById(available), keyById(current)];\r\n\r\n await dispatch(operations.meetingsHandleCacheChange({ available, current }));\r\n\r\n dispatch(actions.meetingsLoadCollectionSuccess(checkForEmpty(getState().meetings)));\r\n } catch (error) {\r\n dispatch(operations.meetingsHandleError(error));\r\n dispatch(actions.meetingsLoadCollectionFailure(error));\r\n }\r\n};\r\n\r\nconst meetingsScheduleMeeting = (meeting, rescheduleID) => async (dispatch, getState) => {\r\n const state = getState();\r\n try {\r\n dispatch(actions.meetingsCreateResourceRequest());\r\n\r\n if (Object.keys(rescheduleID).length > 0) {\r\n await dispatch(meetingsDeleteResource(rescheduleID.meetingid, rescheduleID.meetingid));\r\n let cache = state.meetings.cache;\r\n delete cache.current[rescheduleID.meetingid];\r\n dispatch(meetingsHandleCacheChange(cache));\r\n }\r\n\r\n const postData = normalize('schedule-meeting', meeting);\r\n let data = await postApi(getToken(state), '/schedule-meeting', postData);\r\n\r\n dispatch(actions.meetingsCreateResourceResponse());\r\n\r\n let cache = state.meetings.cache;\r\n cache.current = { ...cache.current, ...keyById(data) };\r\n await dispatch(operations.meetingsHandleCacheChange(cache));\r\n\r\n dispatch(actions.meetingsCreateResourceSuccess(false));\r\n if (!(state.profile.form === undefined)) {\r\n state.profile.form.cellPhone = meeting.phoneNumber;\r\n }\r\n } catch (error) {\r\n dispatch(operations.meetingsHandleError(error));\r\n dispatch(actions.meetingsCreateResourceFailure(error));\r\n }\r\n};\r\n\r\nconst meetingsCancelMeeting = (id) => async (dispatch, getState) => {\r\n await dispatch(meetingsDeleteResource(id, id));\r\n let cache = getState().meetings.cache;\r\n delete cache.current[id];\r\n dispatch(meetingsHandleCacheChange(cache));\r\n await dispatch(meetingsLoadCollection());\r\n};\r\n\r\nexport {\r\n meetingsCancelMeeting,\r\n meetingsClearSlots,\r\n meetingsCreateResource,\r\n meetingsDeleteResource,\r\n meetingsHandleFormChange,\r\n meetingsLoadCollection,\r\n meetingsLoadMeetings,\r\n meetingsLoadSlots,\r\n meetingsScheduleMeeting,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class MeetingsValidator extends FormValidator {\r\n // Phone Number field validator\r\n cellPhone(validator) {\r\n validator.isRequired();\r\n validator.isValidPhoneNumber();\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { parseISO } from 'date-fns';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { Button, Modal } from 'fiducius-ui';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCheckCircle } from '@fortawesome/pro-regular-svg-icons/faCheckCircle';\r\n\r\nimport { todosLoadCollection } from '../../todos';\r\nimport { mergeRequestStatuses, debounce } from '../../utils';\r\nimport { profileLoadResource } from '../../profile';\r\nimport { getUserId, getToken } from '../../auth';\r\n\r\nimport SchedulerForm from '../components/scheduler-form';\r\nimport {\r\n meetingsClearSlots,\r\n meetingsHandleFormChange,\r\n meetingsLoadSlots,\r\n meetingsScheduleMeeting,\r\n} from '../redux/operations';\r\n\r\nconst StyledSuccess = styled.div`\r\n border: ${(p) => p.theme.borderWidth} solid ${(p) => p.theme.secondary};\r\n border-radius: ${(p) => p.theme.borderRadius};\r\n color: ${(p) => p.theme.secondary};\r\n display: inline-block;\r\n font-size: 1rem;\r\n padding: 0.375rem 0.75rem;\r\n text-align: center;\r\n vertical-align: middle;\r\n`;\r\n\r\nclass Scheduler extends React.Component {\r\n static propTypes = {\r\n buttonBrand: t.string,\r\n buttonText: t.string,\r\n clearSlots: t.func.isRequired,\r\n createRequest: t.object,\r\n formRequest: t.object,\r\n loadSlots: t.func.isRequired,\r\n reloadTodos: t.func.isRequired,\r\n scheduleMeeting: t.func.isRequired,\r\n slots: t.object,\r\n slotsRequest: t.object,\r\n errors: t.object,\r\n reloadProfile: t.func.isRequired,\r\n };\r\n\r\n state = {\r\n schedulerIsOpen: false,\r\n shouldClose: false,\r\n successfulSchedule: false,\r\n };\r\n\r\n componentDidUpdate() {\r\n const { createRequest, id } = this.props;\r\n\r\n if (this.state.shouldClose && createRequest.hasFinished && !createRequest.hasFailed) {\r\n this.setState(\r\n { schedulerIsOpen: false, shouldClose: false, successfulSchedule: true },\r\n () => {\r\n this.props.reloadTodos();\r\n this.props.reloadProfile(id);\r\n }\r\n );\r\n }\r\n }\r\n\r\n getOpenSlots = () => {\r\n const { slots = {} } = this.props;\r\n return Object.keys(slots).reduce((open, key) => {\r\n // TODO: fix API to return ISO 8601 with TZ.\r\n // TODO: THIS IS BROKEN FOR DAYLIGHT SAVINGS CHANGES\r\n // Everything in the database is EST (UTC-5)\r\n //let date = new Date(parseISO(slots[key].meetingStartTime + '-0400'));\r\n let date = new Date(parseISO(slots[key].meetingStartTime));\r\n return [...open, date];\r\n }, []);\r\n };\r\n\r\n getPhone = () => {\r\n const { slots = {} } = this.props;\r\n let phone = slots[Object.keys(slots)[0]] ? slots[Object.keys(slots)[0]].phoneNumber : undefined;\r\n return { cellPhone: phone };\r\n };\r\n\r\n schedule = (time, note, form, rescheduleID) => {\r\n const { slots = {} } = this.props;\r\n // TODO: THIS IS BROKEN FOR DAYLIGHT SAVINGS CHANGES\r\n const matches = Object.keys(slots).filter(\r\n //(k) => new Date(parseISO(slots[k].meetingStartTime + '-0400')).getTime() === time.getTime()\r\n (k) => new Date(parseISO(slots[k].meetingStartTime)).getTime() === time.getTime()\r\n );\r\n\r\n let meeting = slots[matches[0]];\r\n if (meeting) {\r\n meeting.note = note;\r\n\r\n if (this.phoneChanged(form)) {\r\n if (!(form.cellPhone === undefined)) {\r\n meeting.phoneNumber = form.cellPhone.replace(/\\D/g, '');\r\n meeting.phoneType = 'CELL';\r\n }\r\n }\r\n } else {\r\n throw new Error('Slot is no longer available.');\r\n }\r\n this.setState({ ...this.state, shouldClose: true }, () =>\r\n this.props.scheduleMeeting(meeting, rescheduleID)\r\n );\r\n };\r\n\r\n toggleScheduler = () => {\r\n // Sooo... this is really bad to reload these every time, but when there's a\r\n // massive amount of meeting slots cached in the state it kills the rest of\r\n // the app... soo... idk.\r\n // TODO: figure out a better way to do this.\r\n if (this.state.schedulerIsOpen) {\r\n this.props.clearSlots();\r\n } else {\r\n this.props.loadSlots();\r\n\r\n // When showing the scheduler, always load phone with data from the database\r\n delete this.props.form.cellPhone;\r\n delete this.props.errors.cellPhone;\r\n }\r\n this.setState({ ...this.state, schedulerIsOpen: !this.state.schedulerIsOpen });\r\n };\r\n\r\n handleChange = debounce((formState) => {\r\n const { data, updateFormState } = this.props;\r\n const newData = { ...data, ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 200);\r\n\r\n phoneChanged = (form) => {\r\n return form.cellPhone === undefined ? false : true;\r\n };\r\n\r\n render() {\r\n const { errors = {}, form = {}, rescheduleID = {} } = this.props;\r\n if (this.state.successfulSchedule) {\r\n return (\r\n <StyledSuccess>\r\n <FontAwesomeIcon icon={faCheckCircle} fixedWidth />\r\n You're scheduled!\r\n </StyledSuccess>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <Button brand={this.props.buttonBrand || 'primary'} onClick={this.toggleScheduler}>\r\n {this.props.buttonText || 'Schedule'}\r\n </Button>\r\n <Modal isOpen={this.state.schedulerIsOpen}>\r\n <SchedulerForm\r\n closeModal={this.toggleScheduler}\r\n slots={this.getOpenSlots()}\r\n schedule={this.schedule}\r\n request={this.props.formRequest}\r\n handleChange={this.handleChange}\r\n errors={errors}\r\n form={form}\r\n phone={this.getPhone()}\r\n rescheduleID={rescheduleID}\r\n />\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n slots: state.meetings.cache.available,\r\n formRequest: mergeRequestStatuses([\r\n state.meetings.requests.createResource,\r\n state.meetings.requests.loadCollection,\r\n ]),\r\n createRequest: state.meetings.requests.createResource,\r\n slotsRequest: state.meetings.requests.loadCollection,\r\n id: getUserId(state),\r\n token: getToken(state),\r\n errors: state.meetings.errors,\r\n form: state.meetings.form,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadSlots: () => dispatch(meetingsLoadSlots()),\r\n clearSlots: () => dispatch(meetingsClearSlots()),\r\n reloadTodos: () => dispatch(todosLoadCollection()),\r\n scheduleMeeting: (meeting, rescheduleID) =>\r\n dispatch(meetingsScheduleMeeting(meeting, rescheduleID)),\r\n updateForm: (meeting) => dispatch(meetingsHandleFormChange(meeting)),\r\n updateFormState: (data, attributes) => dispatch(meetingsHandleFormChange(data, attributes)),\r\n reloadProfile: (id) => dispatch(profileLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Scheduler);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faAngleDown } from '@fortawesome/pro-solid-svg-icons/faAngleDown';\r\nimport { faAngleRight } from '@fortawesome/pro-solid-svg-icons/faAngleRight';\r\n\r\nimport { Card, CardBody, CardText, Header4 } from 'fiducius-ui';\r\n\r\nclass FaqQuestion extends React.Component {\r\n static propTypes = {\r\n question: t.string.isRequired,\r\n children: t.node.isRequired,\r\n };\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showAnswer: false,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n handleClick = () => {\r\n this.setState({\r\n showAnswer: !this.state.showAnswer,\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header4 onClick={this.handleClick}>\r\n <FontAwesomeIcon\r\n icon={this.state.showAnswer ? faAngleDown : faAngleRight}\r\n fixedWidth\r\n />\r\n {this.props.question}\r\n </Header4>\r\n {this.state.showAnswer && (\r\n <CardText>\r\n <u>Answer:</u>\r\n {this.props.children}\r\n </CardText>\r\n )}\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nexport default FaqQuestion;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardTitle, CardBody, DashboardSection, Header1 } from 'fiducius-ui';\r\nimport { withPermissions } from '../../../routing';\r\nimport { NeedAssistance } from '../../../need-assistance';\r\nimport Scheduler from '../../../meetings/containers/scheduler';\r\nimport FaqQuestion from '../../../faq/components/faq-question';\r\nimport { isStringWithContent } from '../../../utils';\r\n\r\nconst ContributionNeedAssistance = ({ permissions, needAssistanceObject }) => {\r\n const showSpeakToAnExpertButton = () => {\r\n if (permissions.clientStatus === 'FUPHB' && permissions.enterpriseEnabled) {\r\n return true;\r\n }\r\n };\r\n\r\n const ContributionAssistanceObject =\r\n needAssistanceObject.length &&\r\n needAssistanceObject.find((element) => {\r\n return element.id === 'Contribution_Assistance';\r\n });\r\n const ContributionPromptObject =\r\n needAssistanceObject.length &&\r\n needAssistanceObject.find((element) => {\r\n return element.id === 'ContributionMessagePrompt';\r\n });\r\n const needAssistanceText =\r\n ContributionAssistanceObject && ContributionAssistanceObject.messageContent;\r\n const needAssistanceAvatarLink =\r\n ContributionAssistanceObject && ContributionAssistanceObject.avatarLink;\r\n const needAssistancePrompt = ContributionPromptObject && ContributionPromptObject.messageContent;\r\n const blocktext =\r\n isStringWithContent(needAssistanceText) ||\r\n isStringWithContent(needAssistanceAvatarLink) ||\r\n isStringWithContent(needAssistancePrompt)\r\n ? 'block'\r\n : 'none';\r\n\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <DashboardSection>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-9\">\r\n <Header1>Need Assistance?</Header1>\r\n </div>\r\n {showSpeakToAnExpertButton() && (\r\n <>\r\n <div className=\"col-12 col-lg-3\" style={{ 'text-align': 'right' }}>\r\n <Scheduler buttonText=\"Speak to an Expert\" />\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n <NeedAssistance messageType={'ContributionAlertPrompt'} />\r\n <Card style={{ display: blocktext }}>\r\n <CardBody>\r\n <CardTitle>Information</CardTitle>\r\n <NeedAssistance messageType={'Contribution_Assistance'} />\r\n <NeedAssistance messageType={'ContributionMessagePrompt'} />\r\n </CardBody>\r\n </Card>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>FAQs</CardTitle>\r\n <FaqQuestion question={'When are Contribution payments made?'}>\r\n <p>\r\n Contribution payments are issued on the 1st of the month or the next business day\r\n if the 1st occurs on the weekend.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'How are Contribution payments made?'}>\r\n <p>Contribution payments are made directly to your loan servicer(s).</p>\r\n </FaqQuestion>\r\n <FaqQuestion\r\n question={\r\n 'After my Contribution account is approved, when will I receive my first payment?'\r\n }\r\n >\r\n <p>\r\n It can take up to 60 days for you to receive your first Contribution payment. The\r\n first payment to be received is based on the approval date. For example, if your\r\n Contribution account is approved in February, you will receive your first payment\r\n in April. Please note that you are responsible for any loan payment due prior to\r\n your first scheduled Contribution payment.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion\r\n question={\r\n 'If Fiducius is managing my student loan forgiveness (Public Service Loan Forgiveness, etc.), how does this impact my Contribution benefit?'\r\n }\r\n >\r\n <p>\r\n If you are participating in student loan forgiveness, your monthly Contribution\r\n payment will be limited to your Income-Driven Repayment (IDR) amount. When\r\n completing the steps to set up your Contribution account, the payment amount and\r\n payment due date will default to the information you supplied via the student loan\r\n forgiveness process.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion\r\n question={\r\n 'When adding Contribution accounts should I input my loans individually as separate accounts or my overall loan balance as one account?'\r\n }\r\n >\r\n <p>\r\n Although you have the ability to input individual loans for payment, Fiducius\r\n recommends that you set up one Contribution account per account number at your\r\n loan servicer(s) (if applicable) that encompasses your overall loan balance.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'Where can I find my Proof of Account/Loan?'}>\r\n <p>\r\n Proof of account/loan is a document provided by your loan servicer. It should\r\n include:\r\n <ul>\r\n <li>Your Name</li>\r\n <li>Servicer/Bank Name</li>\r\n <li>Payment Address</li>\r\n <li>Account Number</li>\r\n <li>Account Balance</li>\r\n <li>Monthly Payment</li>\r\n </ul>\r\n Common names for this document include \"Printable Account Information,\" \"Loan\r\n Summary/Mortgage Verification,\" or \"Student Loan Obligation Statement.\"\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion\r\n question={\r\n 'What if my student loan monthly payment exceeds the contribution provided by my employer?'\r\n }\r\n >\r\n <p>\r\n If your student loan monthly payment is higher than your employer’s maximum\r\n contribution, the employer’s payment will be sent to your loan servicer. You will\r\n only be responsible to ensure that the remaining balance of the monthly payment is\r\n being made.\r\n </p>\r\n </FaqQuestion>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n todos: Object.values(state.todos.cache),\r\n needAssistanceObject: Object.values(state.needAssistance.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(ContributionNeedAssistance));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { BrandColor, Card, CardBody, CardHeader, CardText, Header5 } from 'fiducius-ui';\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst ForgivenessQualify = ({ newPayment, savings }) => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Forgiveness</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Is it possible to lower my monthly payments?</Header5>\r\n <Spaced>\r\n You may qualify for a federal program that would lower your monthly payment to\r\n <strong>\r\n <BrandColor brand=\"primary\">\r\n {' '}\r\n {newPayment < 0 ? '—' : formatAsMoney(newPayment)}{' '}\r\n </BrandColor>\r\n </strong>\r\n and potentially forgive\r\n <strong>\r\n <BrandColor brand=\"primary\"> {savings < 0 ? '—' : formatAsMoney(savings)} </BrandColor>\r\n </strong>\r\n of your loans.\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nForgivenessQualify.propTypes = {\r\n newPayment: t.number.isRequired,\r\n savings: t.number.isRequired,\r\n};\r\n\r\nexport default ForgivenessQualify;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { BrandColor, Card, CardBody, CardHeader, CardText, Header5 } from 'fiducius-ui';\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst ForgivenessShortTermQualify = ({ savings }) => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Forgiveness</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Continue the progress you've made!</Header5>\r\n <Spaced>\r\n You've made progress toward forgiveness through a federal program. Your employer has hired\r\n Fiducius to provide management of this process and help you see receive potentially{' '}\r\n <strong>\r\n <BrandColor brand=\"primary\"> {savings < 0 ? '—' : formatAsMoney(savings)} </BrandColor>\r\n </strong>{' '}\r\n in student loan forgiveness\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nForgivenessShortTermQualify.propTypes = {\r\n savings: t.number.isRequired,\r\n};\r\n\r\nexport default ForgivenessShortTermQualify;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport t from 'prop-types';\r\nimport { Card, CardBody, CardText, CardTitle, ChartBar } from 'fiducius-ui';\r\nimport { formatAsMoney } from '../../../utils/format';\r\n\r\nconst StyledRow = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nconst PaymentCompare = ({ newPayment, oldPayment, year = 1, bigTitle = false }) => (\r\n <Card>\r\n <CardBody>\r\n {bigTitle && <CardTitle>My Payment Comparison</CardTitle>}\r\n <CardText>\r\n {!bigTitle && (\r\n <center>\r\n <strong>My Payment Comparison</strong>\r\n </center>\r\n )}\r\n <StyledRow className=\"row\">\r\n <div className=\"col\">\r\n <ChartBar\r\n bars={[\r\n {\r\n label: '',\r\n dataType: 'currency',\r\n data: [oldPayment, newPayment],\r\n },\r\n ]}\r\n config={{ labels: ['Standard', 'Income Driven'], formatter: formatAsMoney }}\r\n />\r\n </div>\r\n </StyledRow>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nPaymentCompare.propTypes = {\r\n newPayment: t.number,\r\n oldPayment: t.number,\r\n year: t.number,\r\n bigTitle: t.bool,\r\n};\r\n\r\nexport default PaymentCompare;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { Card, CardBody, CardText, CardTitle, ChartPie } from 'fiducius-ui';\r\nimport { formatAsMoney } from '../../../utils/format';\r\n\r\nconst StyledRow = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nconst RepaymentPie = ({ repay, forgive, cutout = 0, bigTitle = false }) => (\r\n <Card>\r\n <CardBody>\r\n {bigTitle && <CardTitle>My Repayment Breakdown</CardTitle>}\r\n <CardText>\r\n {!bigTitle && (\r\n <center>\r\n <strong>My Repayment Breakdown</strong>\r\n </center>\r\n )}\r\n <StyledRow className=\"row\">\r\n <div className=\"col-12\">\r\n <ChartPie\r\n pie={{ data: [forgive, repay] }}\r\n config={{\r\n labels: ['My Forgiveness', 'My IDR Repayment'],\r\n cutout: cutout,\r\n formatter: formatAsMoney,\r\n }}\r\n />\r\n </div>\r\n </StyledRow>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nRepaymentPie.propTypes = {\r\n repay: t.number,\r\n forgive: t.number,\r\n cutout: t.number,\r\n bigTitle: t.bool,\r\n};\r\n\r\nexport default RepaymentPie;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n CardBody,\r\n CardText,\r\n DashboardSection,\r\n Button,\r\n Header2,\r\n Header4,\r\n InputWrapper,\r\n ProgressBar,\r\n} from 'fiducius-ui';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { safeAccess, mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nconst StyleBar = styled(ProgressBar)`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nclass ForgivenessProgress extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n removeContainer: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '', fullServiceSteps: 9, currentURI: '' };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ ...this.state, currentURI: window.location.pathname });\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n goToCurrentStep = () => {\r\n const { permissions, todos } = this.props;\r\n const forgivenessSteps = permissions.forgivenessSteps.filter((a) => a.stepCurrent);\r\n let forgivenessStep = permissions.forgivenessSteps.find((a) => a.stepCurrent);\r\n if (\r\n forgivenessSteps !== undefined &&\r\n forgivenessSteps !== null &&\r\n forgivenessSteps.length > 1 &&\r\n forgivenessSteps.find((a) => window.location.pathname.includes(a.stepPath))\r\n ) {\r\n forgivenessStep = forgivenessSteps.find((a) => window.location.pathname.includes(a.stepPath));\r\n }\r\n let retVal = '/benefits/forgiveness/overview';\r\n if (\r\n forgivenessStep !== undefined &&\r\n forgivenessStep !== null &&\r\n todos !== undefined &&\r\n todos !== null\r\n ) {\r\n if (\r\n forgivenessStep.id === 'Consolidation' ||\r\n forgivenessStep.id === 'EmpCert' ||\r\n forgivenessStep.id === 'IDR' ||\r\n forgivenessStep.id === 'Contribution'\r\n ) {\r\n retVal = '/benefits/forgiveness' + forgivenessStep.stepPath;\r\n const currentToDo = todos.find(\r\n (a) =>\r\n (forgivenessStep.id === 'Consolidation' &&\r\n (a.id === 103 || a.id === 104 || a.id === 105)) ||\r\n (forgivenessStep.id === 'EmpCert' &&\r\n (a.id === 106 ||\r\n a.id === 107 ||\r\n a.id === 108 ||\r\n a.id === 252 ||\r\n a.id === 253 ||\r\n a.id === 254)) ||\r\n (forgivenessStep.id === 'IDR' &&\r\n (a.id === 111 ||\r\n a.id === 112 ||\r\n a.id === 113 ||\r\n a.id === 255 ||\r\n a.id === 256 ||\r\n a.id === 257)) ||\r\n (forgivenessStep.id === 'Contribution' &&\r\n (a.id === 114 || a.id === 115 || a.id === 260 || a.id === 261))\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 103:\r\n case 106:\r\n case 111:\r\n case 114:\r\n case 252:\r\n case 255:\r\n case 260:\r\n retVal += '/step-1';\r\n break;\r\n case 104:\r\n case 107:\r\n case 112:\r\n case 115:\r\n case 253:\r\n case 256:\r\n case 261:\r\n retVal += '/step-2';\r\n break;\r\n case 105:\r\n case 108:\r\n case 113:\r\n case 254:\r\n case 257:\r\n retVal += '/step-3';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } else {\r\n retVal = '/benefits/forgiveness' + forgivenessStep.stepPath;\r\n }\r\n }\r\n this.setState({ ...this.state, redirectURI: retVal });\r\n };\r\n\r\n getCurrentStepText = () => {\r\n const { permissions, todos } = this.props;\r\n const forgivenessSteps = permissions.forgivenessSteps.filter((a) => a.stepCurrent);\r\n let forgivenessStep = permissions.forgivenessSteps.find((a) => a.stepCurrent);\r\n if (\r\n forgivenessSteps !== undefined &&\r\n forgivenessSteps !== null &&\r\n forgivenessSteps.length > 1 &&\r\n forgivenessSteps.find((a) => window.location.pathname.includes(a.stepPath))\r\n ) {\r\n forgivenessStep = forgivenessSteps.find((a) => window.location.pathname.includes(a.stepPath));\r\n }\r\n\r\n let retVal = '';\r\n if (\r\n forgivenessStep !== undefined &&\r\n forgivenessStep !== null &&\r\n todos !== undefined &&\r\n todos !== null\r\n ) {\r\n if (\r\n forgivenessStep.id === 'Consolidation' ||\r\n forgivenessStep.id === 'EmpCert' ||\r\n forgivenessStep.id === 'IDR' ||\r\n forgivenessStep.id === 'Contribution'\r\n ) {\r\n retVal = forgivenessStep.stepText;\r\n const currentToDo = todos.find(\r\n (a) =>\r\n (forgivenessStep.id === 'Consolidation' &&\r\n (a.id === 103 || a.id === 104 || a.id === 105)) ||\r\n (forgivenessStep.id === 'EmpCert' &&\r\n (a.id === 106 ||\r\n a.id === 107 ||\r\n a.id === 108 ||\r\n a.id === 252 ||\r\n a.id === 253 ||\r\n a.id === 254)) ||\r\n (forgivenessStep.id === 'IDR' &&\r\n (a.id === 111 ||\r\n a.id === 112 ||\r\n a.id === 113 ||\r\n a.id === 255 ||\r\n a.id === 256 ||\r\n a.id === 257)) ||\r\n (forgivenessStep.id === 'Contribution' &&\r\n (a.id === 114 || a.id === 115 || a.id === 260 || a.id === 261))\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 103:\r\n case 106:\r\n case 111:\r\n case 252:\r\n case 255:\r\n retVal += ' - Generate';\r\n break;\r\n case 104:\r\n case 107:\r\n case 112:\r\n case 253:\r\n case 256:\r\n retVal += ' - Submit';\r\n break;\r\n case 105:\r\n case 108:\r\n case 113:\r\n case 254:\r\n case 257:\r\n retVal += ' - Review';\r\n break;\r\n case 114:\r\n case 260:\r\n retVal += ' - Repayment Details';\r\n break;\r\n case 115:\r\n case 261:\r\n retVal += ' - Validation';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } else {\r\n retVal = forgivenessStep.stepText;\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getTotalSteps = () => {\r\n const { permissions } = this.props;\r\n const forgivenessSteps = permissions.forgivenessSteps.filter(\r\n (a) => a.id !== 'Overview' && a.id !== 'BtsReview'\r\n );\r\n if (permissions.isFullService && !permissions.inAuth) {\r\n return this.state.fullServiceSteps;\r\n } else {\r\n return forgivenessSteps.length;\r\n }\r\n };\r\n\r\n getCompletedSteps = (normalized) => {\r\n const { permissions } = this.props;\r\n const forgivenessSteps = permissions.forgivenessSteps.filter(\r\n (a) => a.id !== 'Overview' && a.id !== 'BtsReview'\r\n );\r\n const completedSteps = forgivenessSteps.filter((a) => a.stepComplete);\r\n if (permissions.isFullService && !permissions.inAuth)\r\n if (normalized) {\r\n return 100.0 * (completedSteps.length / this.state.fullServiceSteps);\r\n } else {\r\n return Math.min(completedSteps.length + 1, this.state.fullServiceSteps);\r\n }\r\n else {\r\n if (normalized) {\r\n return 100.0 * (completedSteps.length / forgivenessSteps.length);\r\n } else {\r\n return Math.min(completedSteps.length + 1, forgivenessSteps.length);\r\n }\r\n }\r\n };\r\n\r\n getCurrentStep = () => {\r\n const { permissions } = this.props;\r\n const forgivenessSteps = permissions.forgivenessSteps.filter(\r\n (a) => a.id !== 'Overview' && a.id !== 'BtsReview'\r\n );\r\n const currentSteps = permissions.forgivenessSteps.filter(\r\n (a) => a.id !== 'Overview' && a.id !== 'BtsReview' && a.stepCurrent\r\n );\r\n if (permissions.isFullService && !permissions.inAuth) {\r\n return 100.0 * (1.0 / this.state.fullServiceSteps);\r\n } else {\r\n return 100.0 * (currentSteps.length / forgivenessSteps.length);\r\n }\r\n };\r\n\r\n getCurrentStepPath = () => {\r\n const { permissions } = this.props;\r\n\r\n const currentSteps = permissions.forgivenessSteps.filter(\r\n (a) => a.id !== 'Overview' && a.id !== 'BtsReview' && a.stepCurrent\r\n );\r\n\r\n let stepPaths = [];\r\n currentSteps.forEach((step) => {\r\n stepPaths.push(step.stepPath);\r\n });\r\n //return an array since we can have multiple current steps.\r\n return stepPaths;\r\n };\r\n\r\n onCurrentStep = () => {\r\n let steps = this.getCurrentStepPath();\r\n var retVal = false;\r\n steps.forEach((step) => {\r\n if (retVal === false) {\r\n retVal = this.state.currentURI.includes(step);\r\n }\r\n });\r\n return retVal;\r\n };\r\n\r\n getLockedSteps = () => {\r\n return 100.0 - this.getCompletedSteps(true) - this.getCurrentStep();\r\n };\r\n\r\n render() {\r\n const { permissions, removeContainer } = this.props;\r\n if (\r\n permissions.clientStatus === 'CRET' ||\r\n !permissions.isFullService ||\r\n permissions.isFullService\r\n ) {\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n if (\r\n safeAccess(permissions, 'forgivenessSteps') &&\r\n safeAccess(permissions, 'forgivenessSteps').length > 1\r\n ) {\r\n return (\r\n <>\r\n {removeContainer && (\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n Your Forgiveness Progress : {this.getCompletedSteps(false)} /{' '}\r\n {this.getTotalSteps()}\r\n </Header2>\r\n <StyleBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: this.getCompletedSteps(true),\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: this.getCurrentStep(),\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'Locked',\r\n value: this.getLockedSteps(),\r\n },\r\n ]}\r\n />\r\n <div className=\"row col-12\">\r\n <div className=\"col-8 col-xl-8 col-lg-8 col-md-8 col-sm-12 col-xs-12\">\r\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\r\n </div>\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-4 col-sm-12 col-xs-12\">\r\n <InputWrapper>\r\n {!this.onCurrentStep() && (\r\n <Button brand=\"primary\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n {!removeContainer && (\r\n <DashboardSection>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n Your Forgiveness Progress : {this.getCompletedSteps(false)} /{' '}\r\n {this.getTotalSteps()}\r\n </Header2>\r\n <StyleBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: this.getCompletedSteps(true),\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: this.getCurrentStep(),\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'Locked',\r\n value: this.getLockedSteps(),\r\n },\r\n ]}\r\n />\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\">\r\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\r\n </div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n {!this.onCurrentStep() && (\r\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n }\r\n } else {\r\n return <></>;\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ForgivenessProgress));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n CardFooter,\r\n Link,\r\n BrandColor,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { formatAsMoney, convertIsoToSlash } from '../../../utils';\r\n\r\nimport PaymentCompare from '../components/payment-compare';\r\nimport RepaymentPie from '../components/repayment-pie';\r\nimport { forgivenessLoadResource } from '../redux/operations';\r\nimport {\r\n getForgivenessData,\r\n getMonthlyPayment,\r\n getMonthlySavings,\r\n getNewPayment,\r\n getOldPayment,\r\n getStandardPayment,\r\n getTotalForgiveness,\r\n getTotalIdrRepayment,\r\n getTotalStandardRepayment,\r\n} from '../redux/selectors';\r\n\r\nimport ForgivenessProgress from './forgiveness-progress';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nclass ForgivenessSummary extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n id: t.string.isRequired,\r\n load: t.func.isRequired,\r\n monthlyPayment: t.number,\r\n monthlySavings: t.number,\r\n newPayment: t.number,\r\n oldPayment: t.number,\r\n permissions: t.object,\r\n request: t.object.isRequired,\r\n standardPayment: t.number,\r\n totalForgiveness: t.number,\r\n totalIdrRepayment: t.number,\r\n totalStandardRepayment: t.number,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '' };\r\n }\r\n\r\n componentDidMount() {\r\n const { id, load } = this.props;\r\n load(id);\r\n }\r\n\r\n redirectToFAQ = () => {\r\n this.setState({ ...this.state, redirectURI: '/faq' });\r\n };\r\n\r\n render() {\r\n const {\r\n data = {},\r\n monthlyPayment,\r\n monthlySavings,\r\n newPayment,\r\n oldPayment,\r\n permissions,\r\n request,\r\n standardPayment,\r\n totalForgiveness,\r\n totalIdrRepayment,\r\n totalStandardRepayment,\r\n } = this.props;\r\n\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n return (\r\n <Card brand=\"secondary\">\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-8 col-xl-8 col-lg-8 col-md-8 col-sm-12 col-xs-12\">\r\n <CardTitle>\r\n Forgiveness {permissions.inPreSale && <small>{'(Estimated Values)'}</small>}\r\n </CardTitle>\r\n </div>\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-4 col-sm-12 col-xs-12\">\r\n <Button brand=\"primary\" onClick={this.redirectToFAQ}>\r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n Frequently Asked Questions\r\n </Button>\r\n </div>\r\n </div>\r\n <AsyncLoader request={request}>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <dl>\r\n <dt>Qualifying Plan</dt>\r\n <dd>{data.plan || '—'}</dd>\r\n <dt>Standard Monthly Payment</dt>\r\n <dd>{standardPayment < 0 ? '—' : formatAsMoney(standardPayment)}</dd>\r\n <dt>Total Standard Repayment</dt>\r\n <dd>{formatAsMoney(totalStandardRepayment)}</dd>\r\n {data.btsReviewDate !== null && (\r\n <>\r\n <dt>StudentFORGIVE Snapshot Date</dt>\r\n <dd>{convertIsoToSlash(data.btsReviewDate) || '—'}</dd>\r\n </>\r\n )}\r\n {data.btsReviewDate === null && (\r\n <>\r\n <dt>Annual Recertification Date</dt>\r\n <dd>{data.recertDate ? convertIsoToSlash(data.recertDate) : '—'}</dd>\r\n </>\r\n )}\r\n {permissions.clientStatus === 'CRET' && data.renewalQuestionnaireDate && (\r\n <>\r\n <dt>Deadline to Complete Recertification</dt>\r\n <dd>\r\n {data.renewalRecertificationDeadline\r\n ? convertIsoToSlash(data.renewalRecertificationDeadline)\r\n : '—'}\r\n </dd>\r\n {data.renewalDocumentDate && (\r\n <>\r\n <dt>Recertification Documents Due Date</dt>\r\n <dd>\r\n {data.renewalDocumentDate\r\n ? convertIsoToSlash(data.renewalDocumentDate)\r\n : '—'}\r\n </dd>\r\n </>\r\n )}\r\n </>\r\n )}\r\n </dl>\r\n </div>\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <dl>\r\n <dt>Status</dt>\r\n <dd>{data.status || '—'}</dd>\r\n <dt>Income-Driven Monthly Payment</dt>\r\n <dd>\r\n {monthlyPayment < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlyPayment)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n <dt>Total Income-Driven Forgiveness</dt>\r\n <dd>\r\n {totalForgiveness < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(totalForgiveness)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n <dt>Monthly Savings</dt>\r\n <dd>\r\n {monthlySavings < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlySavings)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n </dl>\r\n </div>\r\n </div>\r\n {permissions.clientStatus !== 'NFPSS' && (\r\n <div className=\"row\">\r\n <div className=\"col-6 col-xl-6 col-lg-12 col-md-12 col-sm-12 col-xs-12\">\r\n {standardPayment > 0 && standardPayment > monthlyPayment && (\r\n <PaymentCompare\r\n oldPayment={oldPayment}\r\n newPayment={newPayment}\r\n year={data.year}\r\n />\r\n )}\r\n </div>\r\n <div className=\"col-6 col-xl-6 col-lg-12 col-md-12 col-sm-12 col-xs-12\">\r\n <RepaymentPie\r\n repay={totalIdrRepayment}\r\n forgive={totalForgiveness}\r\n cutout={65}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </CardText>\r\n {!permissions.btsQuestionnaireCompleted && (\r\n <ForgivenessProgress removeContainer={true} />\r\n )}\r\n </AsyncLoader>\r\n </CardBody>\r\n <FlexFooter>\r\n <Link to=\"/benefits/forgiveness/overview\">My Forgiveness</Link>\r\n {permissions.btsQuestionnaireCompleted && (\r\n <Link to=\"/benefits/forgiveness/bts-review\">StudentFORGIVE Snapshot</Link>\r\n )}\r\n <Link to=\"/accounts\">My Accounts</Link>\r\n </FlexFooter>\r\n </Card>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: getForgivenessData(state),\r\n id: getUserId(state),\r\n monthlyPayment: getMonthlyPayment(state),\r\n monthlySavings: getMonthlySavings(state),\r\n newPayment: getNewPayment(state),\r\n oldPayment: getOldPayment(state),\r\n request: state.forgiveness.requests.loadResource,\r\n standardPayment: getStandardPayment(state),\r\n totalForgiveness: getTotalForgiveness(state),\r\n totalIdrRepayment: getTotalIdrRepayment(state),\r\n totalStandardRepayment: getTotalStandardRepayment(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => dispatch(forgivenessLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ForgivenessSummary));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Card, CardBody, CardText, ChartBar } from 'fiducius-ui';\r\nimport { formatAsMoney } from '../../../utils/format';\r\n\r\nconst TaxCompare = ({ jointly = 0, separately = 0, savings = 0 }) => (\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <center>\r\n <strong>My Tax Analysis</strong>\r\n <br />\r\n <small>\r\n <i>(My Federal Income Tax + My Student Loan Payment)</i>\r\n </small>\r\n <br />\r\n Filing separately lowers my monthly payment <br /> and saves me {formatAsMoney(\r\n savings\r\n )}{' '}\r\n overall this year!\r\n </center>\r\n <ChartBar\r\n bars={[\r\n {\r\n title: '',\r\n data: [jointly, separately],\r\n },\r\n ]}\r\n config={{\r\n labels: ['Married, Filing Jointly', 'Married, Filing Separately'],\r\n legend: {\r\n display: false,\r\n },\r\n horizontal: true,\r\n formatter: formatAsMoney,\r\n }}\r\n />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nTaxCompare.propTypes = {\r\n jointly: t.number.isRequired,\r\n separately: t.number.isRequired,\r\n savings: t.number,\r\n};\r\n\r\nexport default TaxCompare;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Card, CardBody, CardTitle, ChartLine } from 'fiducius-ui';\r\nimport { formatAsMoney } from '../../../utils/format';\r\n\r\nconst TotalRepayment = ({ totalStd = 0, totalIdr = 0, years = 0 }) => (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Total Repayment - IDR vs Standard</CardTitle>\r\n <ChartLine\r\n lines={[\r\n {\r\n brand: 'secondary',\r\n dataType: 'currency',\r\n fill: true,\r\n title: 'Total IDR',\r\n label: 'IDR',\r\n data: [0.0, totalIdr],\r\n xDataType: 'category',\r\n yDataType: 'linear',\r\n },\r\n {\r\n brand: 'primary',\r\n dataType: 'currency',\r\n fill: true,\r\n title: 'Total Standard',\r\n label: 'Std',\r\n data: [0.0, totalStd],\r\n xDataType: 'category',\r\n yDataType: 'linear',\r\n },\r\n ]}\r\n config={{\r\n multiAxis: false,\r\n labels: ['0', years.toString()],\r\n xScaleLabelDisplay: true,\r\n xScaleLabelLabelString: 'Years',\r\n yScaleLabelDisplay: false,\r\n yScaleLabelLabelString: '',\r\n formatter: formatAsMoney,\r\n }}\r\n />\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nTotalRepayment.propTypes = {\r\n totalIdr: t.number,\r\n totalStd: t.number,\r\n years: t.number,\r\n};\r\n\r\nexport default TotalRepayment;\r\n","import React, { useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n BrandColor,\r\n Header2,\r\n Header5,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { MyReferences } from '../../../references';\r\nimport { withPermissions } from '../../../routing';\r\nimport { convertIsoToSlash, formatAsMoney } from '../../../utils';\r\n\r\nimport RepaymentPie from '../components/repayment-pie';\r\nimport TotalRepayment from '../components/total-repayment';\r\nimport PaymentCompare from '../components/payment-compare';\r\nimport TaxCompare from '../components/tax-compare';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport { forgivenessLoadResource } from '../redux/operations';\r\nimport {\r\n getForgivenessData,\r\n getMonthlyPayment,\r\n getMonthlySavings,\r\n getNewPayment,\r\n getOldPayment,\r\n getTotalForgiveness,\r\n getTotalIdrRepayment,\r\n getTotalStandardRepayment,\r\n getRepaymentTerm,\r\n getShowTaxCompare,\r\n} from '../redux/selectors';\r\n\r\nconst MyForgiveness = withPermissions(\r\n ({\r\n data = {},\r\n id,\r\n load,\r\n monthlyPayment,\r\n monthlySavings,\r\n newPayment,\r\n oldPayment,\r\n permissions,\r\n request,\r\n totalForgiveness,\r\n totalIdrRepayment,\r\n totalStandardRepayment,\r\n repaymentTerm,\r\n showTaxCompare,\r\n }) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n\r\n return (\r\n <DashboardSection title=\"My Loan Forgiveness\">\r\n <Header2>\r\n Lower your payments and get forgiveness through Federal programs, including Public Service\r\n Loan Forgiveness (PSLF)\r\n </Header2>\r\n {permissions.isPreSale && (\r\n <Header5>All data shown contains estimated values at this point in the process.</Header5>\r\n )}\r\n <AsyncLoader request={request}>\r\n {!permissions.btsQuestionnaireCompleted && <ForgivenessProgress />}\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-4\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Plan Details</CardTitle>\r\n <CardText>\r\n <dl>\r\n <dt>Qualifying Plan</dt>\r\n <dd>{data.plan || '—'}</dd>\r\n <dt>Status</dt>\r\n <dd>{data.status || '—'}</dd>\r\n <dt>IDR Monthly Payment</dt>\r\n <dd>\r\n {monthlyPayment < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlyPayment)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n <dt>Monthly Savings</dt>\r\n <dd>\r\n {monthlySavings < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlySavings)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n <dt>Total Standard Repayment</dt>\r\n <dd>\r\n {totalStandardRepayment < 0 ? '—' : formatAsMoney(totalStandardRepayment)}\r\n </dd>\r\n <dt>Total IDR Repayment</dt>\r\n <dd>{totalIdrRepayment < 0 ? '—' : formatAsMoney(totalIdrRepayment)}</dd>\r\n <dt>Total Forgiveness</dt>\r\n <dd>\r\n {totalForgiveness < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(totalForgiveness)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n <dt>Next Payment Due Date</dt>\r\n <dd>{convertIsoToSlash(data.nextPayment || '—')}</dd>\r\n {data.btsReviewDate !== null && (\r\n <>\r\n <dt>StudentFORGIVE Snapshot Date</dt>\r\n <dd>{convertIsoToSlash(data.btsReviewDate || '—')}</dd>\r\n </>\r\n )}\r\n {data.btsReviewDate === null && (\r\n <>\r\n <dt>Renewal Date</dt>\r\n <dd>{convertIsoToSlash(data.recertDate || '—')}</dd>\r\n </>\r\n )}\r\n </dl>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-12 col-lg-8\">\r\n <TotalRepayment\r\n totalStd={totalStandardRepayment}\r\n totalIdr={totalIdrRepayment}\r\n years={repaymentTerm}\r\n />\r\n </div>\r\n <div className=\"col-12 col-lg-6\">\r\n <PaymentCompare\r\n oldPayment={oldPayment}\r\n newPayment={newPayment}\r\n year={data.year}\r\n bigTitle={true}\r\n />\r\n </div>\r\n <div className=\"col-12 col-lg-6\">\r\n <RepaymentPie\r\n repay={totalIdrRepayment}\r\n forgive={totalForgiveness}\r\n cutout={60}\r\n bigTitle={true}\r\n />\r\n </div>\r\n {permissions.inForgiveness && (\r\n <div className=\"col-12 col-lg-6\">\r\n <MyReferences showTitle={true} />\r\n </div>\r\n )}\r\n {permissions.isMarried && showTaxCompare && (\r\n <div className=\"col-12 col-lg-6\">\r\n <TaxCompare\r\n jointly={\r\n data.marriedFilingJointly && data.marriedFilingJointly >= 0\r\n ? data.marriedFilingJointly\r\n : 0\r\n }\r\n separately={\r\n data.marriedFilingSeparate && data.marriedFilingSeparate >= 0\r\n ? data.marriedFilingSeparate\r\n : 0\r\n }\r\n savings={data.taxSavings || 0}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n );\r\n }\r\n);\r\n\r\nMyForgiveness.propTypes = {\r\n data: t.object,\r\n id: t.string.isRequired,\r\n load: t.func.isRequired,\r\n monthlyPayment: t.number,\r\n monthlySavings: t.number,\r\n newPayment: t.number,\r\n oldPayment: t.number,\r\n request: t.object.isRequired,\r\n totalForgiveness: t.number,\r\n totalIdrRepayment: t.number,\r\n totalStandardRepayment: t.number,\r\n repaymentTerm: t.number,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: getForgivenessData(state),\r\n id: getUserId(state),\r\n monthlyPayment: getMonthlyPayment(state),\r\n monthlySavings: getMonthlySavings(state),\r\n newPayment: getNewPayment(state),\r\n oldPayment: getOldPayment(state),\r\n request: state.forgiveness.requests.loadResource,\r\n totalForgiveness: getTotalForgiveness(state),\r\n totalIdrRepayment: getTotalIdrRepayment(state),\r\n totalStandardRepayment: getTotalStandardRepayment(state),\r\n repaymentTerm: getRepaymentTerm(state),\r\n showTaxCompare: getShowTaxCompare(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => dispatch(forgivenessLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyForgiveness);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faAngleDown } from '@fortawesome/pro-solid-svg-icons/faAngleDown';\r\nimport { faAngleRight } from '@fortawesome/pro-solid-svg-icons/faAngleRight';\r\n\r\nimport { Card, CardBody, CardTitle, CardText } from 'fiducius-ui';\r\n\r\nclass StepDisplay extends React.Component {\r\n static propTypes = {\r\n title: t.string,\r\n children: t.node,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showBody: false,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n handleClick = () => {\r\n this.setState({\r\n showBody: !this.state.showBody,\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n <CardTitle onClick={this.handleClick}>\r\n <FontAwesomeIcon icon={this.state.showBody ? faAngleDown : faAngleRight} fixedWidth />\r\n {this.props.title}\r\n </CardTitle>\r\n\r\n {this.state.showBody && <CardText>{this.props.children}</CardText>}\r\n </CardBody>\r\n </Card>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nexport default StepDisplay;\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('selfServiceDocument');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('selfServiceDocument', types);\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('selfServiceDocument', types);\r\n","import actions from './actions';\r\nimport { getToken } from '../../auth';\r\nimport {\r\n checkForEmpty,\r\n getApi,\r\n keyById,\r\n normalize,\r\n patchApi,\r\n resourceOperationsGenerator,\r\n} from '../../utils';\r\n\r\n/*const endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/self-service-document',\r\n resourceType: 'self-service-document',\r\n};*/\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'selfServiceDocument',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst { selfServiceDocumentHandleCacheChange } = operations;\r\n\r\nconst selfServiceDocumentMarkStatus = (\r\n id,\r\n readyToSend,\r\n sentToServicer,\r\n documentIncorrect\r\n) => async (dispatch, getState) => {\r\n let cache = getState().selfServiceDocument.cache;\r\n cache['current'][id].readyToSend = readyToSend;\r\n cache['current'][id].sentToServicer = sentToServicer;\r\n cache['current'][id].documentIncorrect = documentIncorrect;\r\n await dispatch(selfServiceDocumentHandleCacheChange({ ...cache }));\r\n};\r\n\r\nconst selfServiceDocumentClearDocument = (id) => async (dispatch, getState) => {\r\n let cache = getState().selfServiceDocument.cache;\r\n let old = cache['current'];\r\n let current = [];\r\n Object.keys(old).forEach((a) => {\r\n if (a !== id) {\r\n current.push(old[a]);\r\n }\r\n });\r\n\r\n await dispatch(selfServiceDocumentHandleCacheChange({ ...cache, current }));\r\n};\r\n\r\nconst selfServiceDocumentUpdateAll = () => async (dispatch, getState) => {\r\n let current = getState().selfServiceDocument.cache['current'];\r\n if (current !== undefined && current !== null && Object.keys(current).length > 0) {\r\n let ids = [];\r\n Object.keys(current).forEach((a) => {\r\n ids.push(a);\r\n });\r\n for (let i = 0; i < ids.length; i++) {\r\n await dispatch(selfServiceDocumentUpdateResource(ids[i]));\r\n }\r\n }\r\n};\r\n\r\nconst selfServiceDocumentUpdateParentFile = () => async (dispatch, getState) => {\r\n let current = getState().selfServiceDocument.cache['current'];\r\n if (current !== undefined && current !== null && Object.keys(current).length > 0) {\r\n let ids = [];\r\n Object.keys(current).forEach((a) => {\r\n if (current[a].name === 'IDR' || current[a].name === 'Consolidation') {\r\n ids.push(a);\r\n }\r\n });\r\n for (let i = 0; i < ids.length; i++) {\r\n await dispatch(selfServiceDocumentUpdateResource(ids[i]));\r\n }\r\n }\r\n};\r\n\r\nconst selfServiceDocumentUpdateResource = (id) => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.selfServiceDocumentUpdateResourceRequest());\r\n let cache = getState().selfServiceDocument.cache;\r\n let patchData = normalize('self-service-document', cache['current'][id]);\r\n patchData['data']['attributes']['id'] = id;\r\n patchData['data']['id'] = id;\r\n let data = await patchApi(getToken(getState()), `/self-service-document/${id}`, patchData);\r\n dispatch(actions.selfServiceDocumentUpdateResourceResponse());\r\n cache = { ...getState().selfServiceDocument.cache, ...keyById(data) };\r\n await dispatch(selfServiceDocumentHandleCacheChange({ ...cache }));\r\n dispatch(\r\n actions.selfServiceDocumentUpdateResourceSuccess(\r\n checkForEmpty(getState().selfServiceDocument)\r\n )\r\n );\r\n } catch (error) {\r\n dispatch(operations.selfServiceDocumentHandleError(error));\r\n dispatch(actions.selfServiceDocumentUpdateResourceFailure(error));\r\n }\r\n};\r\n\r\nconst selfServiceDocumentClientEmpCertApproval = (documentId) => async (dispatch, getState) => {\r\n const state = getState();\r\n let form = state.empcertApproval.form;\r\n\r\n try {\r\n dispatch(actions.selfServiceDocumentUpdateResourceRequest());\r\n let cache = getState().selfServiceDocument.cache;\r\n let patchData = normalize('self-service-document', cache['current'][documentId]);\r\n patchData['data']['attributes']['id'] = documentId;\r\n patchData['data']['id'] = documentId;\r\n\r\n patchData['data']['attributes']['signature-pad-approver'] = form.signaturePadClient;\r\n patchData['data']['attributes']['additional-data'] = form.ssn1 + form.ssn2 + form.ssn3;\r\n\r\n let data = await patchApi(\r\n getToken(getState()),\r\n `/self-service-document/${documentId}`,\r\n patchData\r\n );\r\n dispatch(actions.selfServiceDocumentUpdateResourceResponse());\r\n cache = { ...getState().selfServiceDocument.cache, ...keyById(data) };\r\n cache['current'][documentId].status = 'X';\r\n await dispatch(selfServiceDocumentHandleCacheChange({ ...cache }));\r\n dispatch(\r\n actions.selfServiceDocumentUpdateResourceSuccess(\r\n checkForEmpty(getState().selfServiceDocument)\r\n )\r\n );\r\n } catch (error) {\r\n dispatch(operations.selfServiceDocumentHandleError(error));\r\n dispatch(actions.selfServiceDocumentUpdateResourceFailure(error));\r\n }\r\n};\r\n\r\nconst selfServiceDocumentLoadDocuments = (toDoStepId) => async (dispatch, getState) => {\r\n try {\r\n dispatch(actions.selfServiceDocumentLoadCollectionRequest());\r\n let current = await getApi(getToken(getState()), '/self-service-document/0/' + toDoStepId);\r\n\r\n dispatch(actions.selfServiceDocumentLoadCollectionResponse());\r\n current = current || [];\r\n current = keyById(current);\r\n await dispatch(selfServiceDocumentHandleCacheChange({ current }));\r\n dispatch(\r\n actions.selfServiceDocumentLoadCollectionSuccess(\r\n checkForEmpty(getState().selfServiceDocument)\r\n )\r\n );\r\n } catch (error) {\r\n dispatch(operations.selfServiceDocumentHandleError(error));\r\n dispatch(actions.selfServiceDocumentLoadCollectionFailure(error));\r\n }\r\n};\r\n\r\nexport {\r\n selfServiceDocumentUpdateResource,\r\n selfServiceDocumentLoadDocuments,\r\n selfServiceDocumentMarkStatus,\r\n selfServiceDocumentClearDocument,\r\n selfServiceDocumentUpdateAll,\r\n selfServiceDocumentUpdateParentFile,\r\n selfServiceDocumentClientEmpCertApproval,\r\n};\r\n\r\nexport default operations;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n CardText,\r\n Loader,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../../root';\r\nimport { safeAccess, formatAsMoney, mergeRequestStatuses } from '../../../utils';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { PdfViewer } from '../../../fulfillment';\r\n\r\nimport { authLoadPermissions, getUserId } from '../../../auth';\r\nimport { todosLoadCollection } from '../../../todos/redux/operations';\r\n\r\nimport {\r\n selfServiceDocumentUpdateResource,\r\n selfServiceDocumentLoadDocuments,\r\n selfServiceDocumentMarkStatus,\r\n selfServiceDocumentClearDocument,\r\n} from '../../../self-service-document';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nclass FaxApproval extends React.Component {\r\n static propTypes = {\r\n closeForm: t.func.isRequired,\r\n isOpen: t.bool,\r\n onSubmit: t.func.isRequired,\r\n request: t.object.isRequired,\r\n documents: t.object.isRequired,\r\n documentId: t.string.isRequired,\r\n markDocument: t.func.isRequired,\r\n update: t.func.isRequired,\r\n documentIncorrect: t.func.isRequired,\r\n alreadySent: t.func.isRequired,\r\n stepId: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { documentIncorrectModal: false, submitWarningModal: false };\r\n }\r\n\r\n submitApproval = () => {\r\n const { markDocument, documentId, closeForm } = this.props;\r\n markDocument(documentId, true, false, false).then(closeForm(false));\r\n };\r\n\r\n submitAlreadySent = () => {\r\n const { alreadySent, documentId, closeForm } = this.props;\r\n alreadySent(documentId).then(closeForm(true));\r\n };\r\n\r\n submitDocumentIncorrect = () => {\r\n const { documentIncorrect, documentId, closeForm } = this.props;\r\n documentIncorrect(documentId).then(closeForm(true));\r\n };\r\n\r\n toggleDocumentIncorrectModal = () => {\r\n this.setState({ ...this.state, documentIncorrectModal: !this.state.documentIncorrectModal });\r\n };\r\n\r\n toggleSubmitWarningModal = () => {\r\n this.setState({ ...this.state, submitWarningModal: !this.state.submitWarningModal });\r\n };\r\n\r\n getFormReviewInstructions = () => {\r\n const { stepId, documents, documentId } = this.props;\r\n\r\n if (stepId.id === 253 || stepId.id === 107) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information you provided. We\r\n recommend that you review the document to confirm it is filled out properly.\r\n </p>\r\n <p>\r\n <strong>Employment Certification review recommendations:</strong>\r\n </p>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on the first three pages of your\r\n employment certification(s) prior to submitting it.\r\n </li>\r\n <li>\r\n Questions 1 through 9 <strong>must</strong> be completed on the second page. Please\r\n read the answer to question 9 to determine if succeeding questions require an answer.\r\n </li>\r\n </ul>\r\n\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n } else if (\r\n (stepId.id === 256 || stepId.id === 112) &&\r\n safeAccess(documents['current'][documentId], 'description', '') !== 'Taxes' &&\r\n safeAccess(documents['current'][documentId], 'description', '') !== \"Spouse's Taxes\"\r\n ) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information you provided. We\r\n recommend that you review the document to confirm it is filled out properly.\r\n </p>\r\n <p>\r\n <strong>Repayment review recommendations: </strong>\r\n </p>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on the first six pages of your\r\n application prior to submitting it.\r\n </li>\r\n {/*ADD PART FOR SPOUSE's SSN IF TIME PERMITS*/}\r\n </ul>\r\n\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n } else if (stepId.id === 104) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information you provided. We\r\n recommend that you review the document to confirm it is filled out properly.\r\n </p>\r\n <p>\r\n <strong>Consolidation review recommendations: </strong>\r\n </p>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on all pages up to the signature\r\n page.\r\n </li>\r\n <li>Please verify that your address on line #9 is not a P.O. box.</li>\r\n <li>\r\n Please verify that your references at the bottom of page one have different home\r\n addresses and phone numbers from both you and each other.\r\n </li>\r\n </ul>\r\n\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n }\r\n if (stepId.id === 810) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information your employer\r\n provided. We recommend that you review the document to confirm it is filled out\r\n properly.\r\n </p>\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. You will need to contact your employer to\r\n discuss the information you feel is incorrect.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n Federal Student Aid.\r\n </p>\r\n </>\r\n );\r\n } else {\r\n return (\r\n <>\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n }\r\n };\r\n\r\n mapRepaymentType = (type) => {\r\n switch (type) {\r\n case 'PAYE':\r\n return 'Pay as you earn';\r\n case 'REPAY':\r\n return 'Revised pay as you earn';\r\n case 'IBR':\r\n return 'Income based repayment';\r\n case 'ICR':\r\n return 'Income contingent repayment';\r\n case 'SAVE':\r\n return 'Saving on a valuable education';\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n componentDidUpdate(prevProps) {}\r\n\r\n render() {\r\n const { isOpen, closeForm, request, documents, documentId, stepId, idr } = this.props;\r\n\r\n //only need to check for IDR's and Consolidations\r\n let isFulfillmentDoc =\r\n safeAccess(documents['current'][documentId], 'name', '') === 'IDR' ||\r\n safeAccess(documents['current'][documentId], 'name', '') === 'Consolidation';\r\n\r\n let showSubmitWarning = safeAccess(documents['current'][documentId], 'name', '') === 'IDR';\r\n\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={true}>\r\n {!this.state.documentIncorrectModal && !this.state.submitWarningModal && (\r\n <Card>\r\n <CardHeader>\r\n Approve {safeAccess(documents['current'][documentId], 'description', '')} For Fax\r\n </CardHeader>\r\n <CardBody>\r\n <PdfViewer\r\n base64={safeAccess(documents['current'][documentId], 'fileData', '')}\r\n isFulfillment={isFulfillmentDoc}\r\n />\r\n <Card>\r\n <TextLeft>\r\n <CardBody>\r\n <CardText>{this.getFormReviewInstructions()}</CardText>\r\n </CardBody>\r\n </TextLeft>\r\n </Card>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n {stepId.id !== 810 && (\r\n <Button brand=\"danger\" onClick={this.submitDocumentIncorrect}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Form is Incorrect'}\r\n </Button>\r\n )}\r\n {stepId.id === 810 && (\r\n <Button brand=\"danger\" onClick={this.toggleDocumentIncorrectModal}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Form is Incorrect'}\r\n </Button>\r\n )}\r\n {showSubmitWarning && (\r\n <Button brand=\"success\" onClick={this.toggleSubmitWarningModal}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Form is Correct'}\r\n </Button>\r\n )}\r\n {!showSubmitWarning && (\r\n <Button brand=\"success\" onClick={this.submitApproval}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Form is Correct'}\r\n </Button>\r\n )}\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n )}\r\n {this.state.documentIncorrectModal && (\r\n <Card>\r\n <CardHeader>Confirm Form is Incorrect</CardHeader>\r\n <CardBody>\r\n <TextLeft>\r\n <p>\r\n If you select \"Confirm\" you are confirming that information is incorrect on your\r\n employment certification form. It is your responsibility to contact your employer\r\n to discuss the information you feel is incorrect.\r\n </p>\r\n </TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={this.toggleDocumentIncorrectModal}>\r\n Cancel\r\n </Button>\r\n <Button brand=\"danger\" onClick={this.submitDocumentIncorrect}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Confirm'}\r\n </Button>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n )}\r\n {this.state.submitWarningModal && (\r\n <Card>\r\n <CardHeader>Are you Sure?</CardHeader>\r\n <CardBody>\r\n <TextLeft>\r\n <p>\r\n Submitting this repayment application will result in an approximate monthly\r\n payment of {formatAsMoney(idr.projectedIdr)} on the{' '}\r\n {this.mapRepaymentType(idr.projectedRepaymentType)} plan.\r\n </p>\r\n <p>\r\n In order to make progress towards managing your student loans, we recommend\r\n proceeding with the submission of this application. If you are on SAVE, you may\r\n opt to remain on the SAVE plan and utilize any applicable forbearance on your\r\n account. You will accrue interest on the SAVE plan and make zero progress on your\r\n loans. To remain on SAVE, you must back out of this submission and not proceed.\r\n </p>\r\n <p>\r\n For more detailed information regarding the SAVE plan, please visit our chat\r\n feature or utilize the PaySmart Loan Navigator to determine your options.\r\n </p>\r\n </TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={this.toggleSubmitWarningModal}>\r\n Back\r\n </Button>\r\n <Button brand=\"danger\" onClick={this.submitDocumentIncorrect}>\r\n {request.isLoading ? (\r\n <Loader variant=\"push\" size={1.5} />\r\n ) : (\r\n 'This information is incorrect'\r\n )}\r\n </Button>\r\n <Button brand=\"success\" onClick={this.submitApproval}>\r\n {request.isLoading ? (\r\n <Loader variant=\"push\" size={1.5} />\r\n ) : (\r\n 'This information is correct'\r\n )}\r\n </Button>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n )}\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.selfServiceDocument.requests.updateResource,\r\n state.selfServiceDocument.requests.loadCollection,\r\n ]),\r\n documents: safeAccess(state, 'selfServiceDocument.cache'),\r\n idr: safeAccess(state, `idr.cache[${getUserId(state)}]`, {}),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n update: async (id) => {\r\n await dispatch(selfServiceDocumentUpdateResource(id));\r\n },\r\n markDocument: async (id, readyToSend, sentToServicer, documentIncorrect) => {\r\n await dispatch(\r\n selfServiceDocumentMarkStatus(id, readyToSend, sentToServicer, documentIncorrect)\r\n );\r\n },\r\n alreadySent: async (id) => {\r\n dispatch(authLoadPermissions());\r\n await dispatch(selfServiceDocumentMarkStatus(id, false, true, false));\r\n await dispatch(selfServiceDocumentUpdateResource(id));\r\n await dispatch(selfServiceDocumentLoadDocuments(253));\r\n await dispatch(todosLoadCollection());\r\n },\r\n documentIncorrect: async (id) => {\r\n await dispatch(selfServiceDocumentMarkStatus(id, false, false, true));\r\n await dispatch(selfServiceDocumentUpdateResource(id));\r\n await dispatch(selfServiceDocumentClearDocument(id));\r\n await dispatch(todosLoadCollection());\r\n await dispatch(authLoadPermissions());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FaxApproval);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('empcertApproval');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('empcertApproval', types);\r\n","import React, { useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport {\r\n Alert,\r\n Animation,\r\n Button,\r\n Card,\r\n CardTitle,\r\n fade,\r\n Form,\r\n InputCheckbox,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputMask,\r\n InputRadio,\r\n InputText,\r\n InputWrapper,\r\n Header4,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, convertIsoToSlash } from '../../utils';\r\n\r\nimport { Signature } from '../../fulfillment';\r\n\r\nconst StyledInputError = styled(InputError)`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst RowFade = styled.div`\r\n ${fade};\r\n`;\r\n\r\nconst EmpcertApprovalForm = ({\r\n data,\r\n cache,\r\n errors = {},\r\n onSubmit,\r\n onChange,\r\n handleApproverSignature,\r\n handleSectionSixModal,\r\n}) => {\r\n const allowedToSubmit = (data, errors) => {\r\n let retVal = true;\r\n if (\r\n !data.email ||\r\n !data.employerName ||\r\n !data.ein ||\r\n !data.address1 ||\r\n !data.city ||\r\n !data.state ||\r\n !data.zipCode ||\r\n !data.employmentBeginDate ||\r\n !data.employmentHoursPerWeek ||\r\n !data.approverName ||\r\n !data.approverPhone ||\r\n !data.approverTitle ||\r\n !data.employmentStatus ||\r\n !data.signaturePadApprover\r\n ) {\r\n retVal = false;\r\n }\r\n\r\n if (\r\n safeAccess(errors, 'email') ||\r\n safeAccess(errors, 'employerName') ||\r\n safeAccess(errors, 'ein') ||\r\n safeAccess(errors, 'address1') ||\r\n safeAccess(errors, 'city') ||\r\n safeAccess(errors, 'state') ||\r\n safeAccess(errors, 'employmentBeginDate') ||\r\n safeAccess(errors, 'employmentHoursPerWeek') ||\r\n safeAccess(errors, 'approverName') ||\r\n safeAccess(errors, 'approverPhone') ||\r\n safeAccess(errors, 'approverTitle') ||\r\n safeAccess(errors, 'employmentStatus') ||\r\n safeAccess(errors, 'signaturePadApprover')\r\n ) {\r\n retVal = false;\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n if (data && data.message && data.message.length > 0) {\r\n return <Card>{data.message}</Card>;\r\n } else {\r\n return (\r\n <>\r\n {safeAccess(errors, 'na') && (\r\n <Alert key={'invalid-info'} brand=\"danger\">\r\n {errors.na.detail}\r\n </Alert>\r\n )}\r\n <CardTitle>{data.customerName}'s Employment Information</CardTitle>\r\n <Form defaults={data} handleChange={onChange} id={'empcertApproval'} onSubmit={onSubmit}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employerName}>\r\n <InputLabel required>Employer Name</InputLabel>\r\n <InputError>{safeAccess(errors, 'employerName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"employerName\" defaultValue={data.employerName} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.ein}>\r\n <InputLabel required>Federal Employer Identification Number (FEIN)</InputLabel>\r\n <InputError>{safeAccess(errors, 'ein.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"ein\" defaultValue={data.ein} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.address1}>\r\n <InputLabel required>Address Line 1</InputLabel>\r\n <InputError>{safeAccess(errors, 'address1.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"address1\" defaultValue={data.address1} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employerWebsite}>\r\n <InputLabel>Employer Website</InputLabel>\r\n <InputError>{safeAccess(errors, 'employerWebsite.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"employerWebsite\" defaultValue={data.employerWebsite} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.address2}>\r\n <InputLabel>Address Line 2</InputLabel>\r\n <InputError>{safeAccess(errors, 'address2.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"address2\" defaultValue={data.address2} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employmentBeginDate}>\r\n <InputLabel required>Employment Begin Date</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentBeginDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.employmentBeginDate)}\r\n mask=\"##/##/####\"\r\n name=\"employmentBeginDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.city}>\r\n <InputLabel required>City</InputLabel>\r\n <InputError>{safeAccess(errors, 'city.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"city\" defaultValue={data.city} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employmentEndDate}>\r\n <InputLabel>Employment End Date</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentEndDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.employmentEndDate)}\r\n mask=\"##/##/####\"\r\n name=\"employmentEndDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-3 col-md-3\">\r\n <InputWrapper error={!!errors.state}>\r\n <InputLabel required>State</InputLabel>\r\n <InputError>{safeAccess(errors, 'state.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"state\" defaultValue={data.state} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-3 col-md-3\">\r\n <InputWrapper error={!!errors.zipCode}>\r\n <InputLabel required>Zip Code</InputLabel>\r\n <InputError>{safeAccess(errors, 'zipCode.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"zipCode\" defaultValue={data.zipCode} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6 col-md-6\">\r\n <InputWrapper error={!!errors.employmentHoursPerWeek}>\r\n <InputLabel required>Hours Per Week (Average)</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentHoursPerWeek.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name=\"employmentHoursPerWeek\"\r\n defaultValue={data.employmentHoursPerWeek}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6 col-md-6\">\r\n <InputWrapper error={!!errors.employmentStatus}>\r\n <InputLabel htmlfor=\"employmentStatus\" required>\r\n Employment Status\r\n </InputLabel>\r\n <StyledInputError\r\n dangerouslySetInnerHTML={{\r\n __html: safeAccess(errors, 'employmentStatus.detail'),\r\n }}\r\n />\r\n <InputRadio\r\n name=\"employmentStatus\"\r\n value=\"FULL\"\r\n checked={data.employmentStatus === 'FULL'}\r\n onChange={() => {}}\r\n label=\"Full-Time\"\r\n />\r\n <InputRadio\r\n name=\"employmentStatus\"\r\n value=\"PART\"\r\n checked={data.employmentStatus === 'PART'}\r\n onChange={() => {}}\r\n label=\"Part-Time\"\r\n />\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <Animation key=\"showFinalSection\" animation=\"fade\" appear={true} in={true} unmountOnExit>\r\n <RowFade>\r\n <Header4>Employer Certification</Header4>\r\n <div className=\"col-12 col-md-12\" id=\"signingCertify\">\r\n <p>\r\n By providing an acceptable signature below, I certify (1) that the information in\r\n Section 4 is true, complete, and correct to the best of my knowledge and belief,\r\n (2) that I am an authorized official of the organization named in Section 4, and\r\n (3) that the borrower named is or was a direct employee of the organization named;\r\n or is or was employed under a contract or by a contracted organization in a\r\n position or providing services that, under applicable state law, cannot be filled\r\n or provided by a direct employee of the organization named.\r\n </p>\r\n </div>\r\n <Signature\r\n handleChange={handleApproverSignature}\r\n label=\"Authorized Official's Signature:\"\r\n name=\"approverSignature\"\r\n />\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-6\">\r\n <InputWrapper error={!!errors.approverName}>\r\n <InputLabel required>Official's Name</InputLabel>\r\n <InputError>{safeAccess(errors, 'approverName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"approverName\" defaultValue={data.approverName} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-3 col-md-3\">\r\n <InputWrapper error={!!errors.approverPhone}>\r\n <InputLabel required>Official's Phone</InputLabel>\r\n <InputError>{safeAccess(errors, 'approverPhone.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={data.approverPhone}\r\n mask=\"(###) ###-####\"\r\n name=\"approverPhone\"\r\n placeholder=\"(___) ___-____\"\r\n type=\"tel\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-3 col-md-3\">\r\n <InputWrapper error={!!errors.phoneExtension}>\r\n <InputLabel htmlFor=\"phoneExtension\">Ext.</InputLabel>\r\n <InputError>{safeAccess(errors, 'phoneExtension.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"phoneExtension\" defaultValue={data.phoneExtension} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.approverTitle}>\r\n <InputLabel required>Official's Title</InputLabel>\r\n <InputError>{safeAccess(errors, 'approverTitle.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"approverTitle\" defaultValue={data.approverTitle} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel required>Official's Email</InputLabel>\r\n <StyledInputError\r\n dangerouslySetInnerHTML={{ __html: safeAccess(errors, 'email.detail') }}\r\n />\r\n <InputGroup>\r\n <InputText\r\n name=\"email\"\r\n autoComplete=\"email\"\r\n placeholder=\"Email\"\r\n defaultValue={data.email}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n {allowedToSubmit(data, errors) ? (\r\n <Button className=\"col-4\" brand=\"primary\" onClick={onSubmit}>\r\n Submit Response(s)\r\n </Button>\r\n ) : (\r\n <>To submit, please finish filling out the above information correctly.</>\r\n )}\r\n </RowFade>\r\n </Animation>\r\n </Form>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nexport default EmpcertApprovalForm;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { CardText } from 'fiducius-ui';\r\n\r\nconst EmpcertApprovalSuccess = () => {\r\n return (\r\n <>\r\n <CardText>\r\n <p>The information you submitted has been processed successfully!</p>\r\n </CardText>\r\n </>\r\n );\r\n};\r\n\r\nEmpcertApprovalSuccess.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EmpcertApprovalSuccess);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { CardText } from 'fiducius-ui';\r\n\r\nconst EmpcertApprovalInvalid = () => {\r\n return (\r\n <>\r\n <CardText>\r\n <p>You've used an invalid link to come to this page.</p>\r\n </CardText>\r\n </>\r\n );\r\n};\r\n\r\nEmpcertApprovalInvalid.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EmpcertApprovalInvalid);\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\nimport { EmpCertApprovalValidator } from './validators';\r\n\r\nconst empcertApprovalValidator = new EmpCertApprovalValidator();\r\n\r\nconst checkToken = (data) => {\r\n if (data[0].customerName === '') {\r\n throw new Error('no data found');\r\n }\r\n return data;\r\n};\r\n\r\nconst endpointHandler = {\r\n endpoint: '/emp-cert-approval',\r\n customResponseHandler: checkToken,\r\n resourceType: 'emp-cert-approval',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'empcertApproval',\r\n actions,\r\n null,\r\n empcertApprovalValidator,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null,\r\n null\r\n);\r\n\r\nconst {\r\n empcertApprovalClearForm,\r\n empcertApprovalCopyResourceToForm,\r\n empcertApprovalHandleFormChange,\r\n empcertApprovalLoadResource,\r\n empcertApprovalUpdateResource,\r\n} = operations;\r\n\r\nconst empcertApprovalSaveApprovalInfo = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n let data = state.empcertApproval.form;\r\n state.empcertApproval.form = data;\r\n await dispatch(empcertApprovalUpdateResource(id));\r\n};\r\n\r\nexport {\r\n empcertApprovalClearForm,\r\n empcertApprovalCopyResourceToForm,\r\n empcertApprovalHandleFormChange,\r\n empcertApprovalLoadResource,\r\n empcertApprovalSaveApprovalInfo,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('empcertApproval', types);\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class EmpCertApprovalValidator extends FormValidator {\r\n email(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n if (validator.value !== null && validator.value !== undefined) {\r\n validator.isValidEmail();\r\n }\r\n }\r\n\r\n emailNotQualified(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n if (validator.value !== null && validator.value !== undefined) {\r\n validator.isValidEmail();\r\n }\r\n }\r\n\r\n employerName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n ein(validator) {\r\n validator.isRequired();\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n\r\n address1(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n address2(validator) {\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n city(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n state(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n zipCode(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n employerWebsite(validator) {\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n employmentBeginDate(validator) {\r\n validator.isRequired();\r\n if (validator.value && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n\r\n employmentHoursPerWeek(validator) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThan(0);\r\n }\r\n\r\n approverName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n approverTitle(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n approverPhone(validator) {\r\n validator.isRequired();\r\n validator.isValidPhoneNumber();\r\n }\r\n\r\n phoneExtension(validator) {\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n employmentStatus(validator) {\r\n validator.isRequired();\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport { Button, Card, CardBody, CardFooter, CardText, Header2, InputWrapper } from 'fiducius-ui';\r\nimport { FlexEnd } from '../../root';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimes as faXIcon } from '@fortawesome/pro-regular-svg-icons/faTimes';\r\n\r\nconst empcertSectionSix = ({ closeModal }) => {\r\n const LeftText = styled.div`\r\n text-align: left;\r\n `;\r\n\r\n return (\r\n <Card>\r\n <FlexEnd>\r\n <InputWrapper>\r\n <Button brand=\"lowContrast\" onClick={closeModal}>\r\n <FontAwesomeIcon icon={faXIcon} />\r\n </Button>\r\n </InputWrapper>\r\n </FlexEnd>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n <strong>Qualifying Employment Definitions</strong>\r\n </Header2>\r\n <LeftText>\r\n <p>\r\n A <b>Qualifying employer</b> includes the government, a not-for-profit organization\r\n that is tax-exempt under Section 501(c)(3) of the Internal Revenue Code, or a private\r\n not-for-profit organization that provides certain public services. Service in an\r\n AmeriCorps or Peace Corps position is also qualifying employment.\r\n </p>\r\n\r\n <p>\r\n <b>Government</b> includes a Federal, State, local or Tribal government organization,\r\n agency or entity; a public child or family service agency; or a Tribal college or\r\n university.\r\n </p>\r\n\r\n <p>\r\n A <b>private not-for-profit organization</b> is an organization that is not organized\r\n for profit, and provides at least one of the following public services: <b>(1)</b>{' '}\r\n emergency management, <b>(2)</b> military service, <b>(3)</b> public safety,{' '}\r\n <b>(4)</b> law enforcement, <b>(5)</b> public interest legal services, <b>(6)</b>{' '}\r\n early childhood education, <b>(7)</b> public service for individuals with disabilities\r\n and the elderly, <b>(8)</b> public health, <b>(9)</b> public education, <b>(10)</b>{' '}\r\n public library services, <b>(11)</b> school library services, or <b>(12)</b> other\r\n school-based services.\r\n </p>\r\n\r\n <p>\r\n <b>AmeriCorps position</b> means a position approved by the Corporation for National\r\n and Community Service under Section 123 of the National and Community Service Act of\r\n 1990 (42 U.S.C. 12573).\r\n </p>\r\n\r\n <p>\r\n <b>Peace Corps position</b> means a full-time assignment under the Peace Corps Act as\r\n provided for under 22 U.S.C. 2504.\r\n </p>\r\n\r\n <p>\r\n <b>An employee</b> means an individual who is hired and paid by the qualifying\r\n employer.\r\n </p>\r\n\r\n <p>\r\n <b>Full-time</b> means working for one or more qualifying employers for the greater\r\n of: <b>(1)</b> an annual average of at least 30 hours per week or, for a contractual\r\n or employment period of at least 8 months, an average of 30 hours per week; or{' '}\r\n <b>(2)</b> unless the qualifying employment is with two or more employers, the number\r\n of hours the employer considers full time.\r\n </p>\r\n\r\n <p>\r\n An <b>authorized official</b> is an official of a qualifying employer who has access\r\n to the borrower’s employment or service records and is authorized by the employer to\r\n certify the employment status of the organization’s employees or former employees, or\r\n the service of AmeriCorps or Peace Corps volunteers.\r\n </p>\r\n\r\n <p>\r\n <b>Early childhood education</b> includes licensed or regulated child care, Head\r\n Start, and State funded pre-kindergarten.\r\n </p>\r\n\r\n <p>\r\n <b>Law enforcement</b> means crime prevention, control or reduction of crim, or the\r\n enforcement of criminal law.\r\n </p>\r\n\r\n <p>\r\n <b>Military service</b> means service on behalf of the U.S. Armed Forces or the\r\n National Guard.\r\n </p>\r\n\r\n <p>\r\n <b>Public interest legal services</b> refers to legal services that are funded in\r\n whole or in part by a local, State, Federal or Tribal government.\r\n </p>\r\n\r\n <p>\r\n <b>Public health</b> includes nurses, nurse practitioners, nurses in clinical setting,\r\n and full-time professionals engaged in health care practitioner occupations, health\r\n support occupations, and counselors, social Workers, and other community and social\r\n service specialists as such terms are defined by the{' '}\r\n <a\r\n href=\"https://www.bls.gov/soc/2018/major_groups.htm#29-0000\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Bureau of Labor Statistics\r\n </a>\r\n .\r\n </p>\r\n </LeftText>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={closeModal}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n );\r\n};\r\n\r\nempcertSectionSix.propTypes = {\r\n closeModal: t.func.isRequired,\r\n id: t.string,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(empcertSectionSix);\r\n","import React, { useEffect, useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport queryString from 'query-string';\r\nimport { Card, CardBody, Loader, Modal } from 'fiducius-ui';\r\n\r\nimport { safeAccess, debounce, mergeRequestStatuses } from '../../utils';\r\n\r\nimport LoaderWrapper from '../../auth/styles/loader-wrapper';\r\nimport EmpcertApprovalForm from '../components/empcert-approval-form';\r\nimport EmpcertApprovalSuccess from '../components/empcert-approval-success';\r\nimport EmpcertApprovalInvalid from '../components/empcert-approval-invalid';\r\n\r\nimport {\r\n empcertApprovalLoadResource,\r\n empcertApprovalCopyResourceToForm,\r\n empcertApprovalHandleFormChange,\r\n empcertApprovalSaveApprovalInfo,\r\n} from '../redux/operations';\r\n\r\nimport { ContrastDisplay, FullscreenContainer } from '../../routing';\r\nimport EmpcertSectionSix from '../components/empcert-section-six';\r\n\r\nconst EmpcertApproval = ({\r\n id,\r\n load,\r\n update,\r\n updateForm,\r\n updateRequest,\r\n location,\r\n data = {},\r\n errors = {},\r\n request = {},\r\n form = {},\r\n handleForm,\r\n}) => {\r\n const [submitSuccessful, setSubmitSuccessful] = useState(false);\r\n const [hasSubmitted, setHasSubmitted] = useState(false);\r\n const [openSectionSixModal, setOpenSectionSixModal] = useState(false);\r\n\r\n useEffect(() => {\r\n const params = queryString.parse(location.search);\r\n load(params.token);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (updateRequest.hasFinished) {\r\n if (!submitSuccessful && hasSubmitted) {\r\n if (!updateRequest.hasFailed && !hasServerErrors(errors)) {\r\n setSubmitSuccessful(true);\r\n } else {\r\n setHasSubmitted(false);\r\n }\r\n }\r\n }\r\n });\r\n\r\n const hasServerErrors = (errors) => {\r\n let retVal = false;\r\n\r\n if (safeAccess(errors, 'na')) {\r\n retVal = true;\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n const handleChange = debounce((formState, id, attribute, props) => {\r\n const newData = { ...form, ...formState, signaturePadApprover: form.signaturePadApprover };\r\n handleForm(newData, Object.keys(newData));\r\n }, 250);\r\n\r\n const handleApproverSignature = (data) => {\r\n updateForm({ ...form, signaturePadApprover: data }, ['signaturePadApprover']);\r\n };\r\n\r\n const handleSectionSixModal = () => {\r\n !openSectionSixModal\r\n ? (document.body.style.overflow = 'hidden')\r\n : (document.body.style.overflow = '');\r\n\r\n document.getElementsByClassName('modal-wrapper')[0].style['position'] = 'fixed';\r\n\r\n setOpenSectionSixModal(!openSectionSixModal);\r\n };\r\n\r\n const onSubmit = () => {\r\n delete errors.na;\r\n update(form.id);\r\n delete form.signaturePadApprover;\r\n setHasSubmitted(true);\r\n };\r\n\r\n return (\r\n <>\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <ContrastDisplay>Employer Information</ContrastDisplay>\r\n <Card brand={(request.hasFailed && 'danger') || 'primary'}>\r\n <CardBody>\r\n {request.isLoading ? (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n ) : !submitSuccessful ? (\r\n form !== undefined && Object.keys(form).length > 0 ? (\r\n <EmpcertApprovalForm\r\n data={form}\r\n cache={data}\r\n errors={errors}\r\n onSubmit={onSubmit}\r\n onChange={handleChange}\r\n handleApproverSignature={handleApproverSignature}\r\n handleSectionSixModal={handleSectionSixModal}\r\n />\r\n ) : (\r\n <EmpcertApprovalInvalid />\r\n )\r\n ) : (\r\n <EmpcertApprovalSuccess />\r\n )}\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n <Modal isOpen={openSectionSixModal} fullWidth theme={'position:fixed;'}>\r\n <EmpcertSectionSix closeModal={handleSectionSixModal} />\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\nEmpcertApproval.propTypes = {\r\n errors: t.object,\r\n request: t.object,\r\n updateRequest: t.object,\r\n form: t.object,\r\n data: t.object,\r\n location: t.shape({\r\n search: t.string,\r\n }),\r\n load: t.func.isRequired,\r\n handleForm: t.func.isRequired,\r\n update: t.func.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n errors: safeAccess(state, 'empcertApproval.errors') || {},\r\n request: mergeRequestStatuses([\r\n safeAccess(state, 'empcertApproval.requests.loadResource'),\r\n safeAccess(state, 'empcertApproval.requests.updateResource'),\r\n ]),\r\n updateRequest: safeAccess(state, 'empcertApproval.requests.updateResource'),\r\n data: state.empcertApproval.cache,\r\n form: safeAccess(state, 'empcertApproval.form'),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(empcertApprovalLoadResource(id));\r\n dispatch(empcertApprovalCopyResourceToForm(id));\r\n },\r\n handleForm: (empcertApproval, attributes) =>\r\n dispatch(empcertApprovalHandleFormChange(empcertApproval, attributes)),\r\n update: async (id) => {\r\n await dispatch(empcertApprovalSaveApprovalInfo(id));\r\n },\r\n updateForm: (data, attributes) => dispatch(empcertApprovalHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EmpcertApproval);\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n CardText,\r\n InputLabel,\r\n InputError,\r\n InputGroup,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n Modal,\r\n Form,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../../root';\r\nimport { safeAccess, mergeRequestStatuses, debounce } from '../../../utils';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { PdfViewer, Signature } from '../../../fulfillment';\r\n\r\nimport { authLoadPermissions } from '../../../auth';\r\nimport { todosLoadCollection } from '../../../todos/redux/operations';\r\n\r\nimport {\r\n selfServiceDocumentUpdateResource,\r\n selfServiceDocumentLoadDocuments,\r\n selfServiceDocumentMarkStatus,\r\n selfServiceDocumentClearDocument,\r\n selfServiceDocumentClientEmpCertApproval,\r\n} from '../../../self-service-document';\r\n\r\nimport {\r\n //empcertApprovalSaveClientApprovalInfo,\r\n empcertApprovalHandleFormChange,\r\n} from '../../../empcert-approval';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst EmpcertClientApproval = ({\r\n isOpen,\r\n closeForm,\r\n request,\r\n documents,\r\n documentId,\r\n documentIncorrect,\r\n stepId,\r\n clientSignAndApprove,\r\n form,\r\n updateForm,\r\n errors = {},\r\n}) => {\r\n const [formState, setFormState] = useState();\r\n const [ssn1State, setssn1State] = useState('');\r\n const [ssn2State, setssn2State] = useState('');\r\n const [ssn3State, setssn3State] = useState('');\r\n const [documentIncorrectModal, setDocumentIncorrectModal] = useState(false);\r\n\r\n let ssnOnFile = safeAccess(documents['current'][documentId], 'haveSsn', false);\r\n\r\n const handleClientSignature = (data) => {\r\n updateForm({ ...form, signaturePadClient: data }, ['signaturePadClient']);\r\n setFormState(data);\r\n };\r\n\r\n const toggleDocumentIncorrectModal = () => {\r\n setDocumentIncorrectModal(!documentIncorrectModal);\r\n };\r\n\r\n const handleNumericChange = (e) => {\r\n const re = /^[0-9\\b]+$/;\r\n switch (e.target.name) {\r\n case 'ssn1':\r\n if (e.target.value === '' || re.test(e.target.value)) {\r\n setssn1State(e.target.value);\r\n }\r\n break;\r\n case 'ssn2':\r\n if (e.target.value === '' || re.test(e.target.value)) {\r\n setssn2State(e.target.value);\r\n }\r\n break;\r\n case 'ssn3':\r\n if (e.target.value === '' || re.test(e.target.value)) {\r\n setssn3State(e.target.value);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const handleChange = debounce((formState, id, attribute) => {\r\n formState.docId = documentId;\r\n const newData = { ...form, ...formState };\r\n updateForm(newData, [attribute]);\r\n }, 250);\r\n\r\n const submitClientSignAndApprove = () => {\r\n clientSignAndApprove(documentId).then(closeForm(false));\r\n };\r\n\r\n const submitDocumentIncorrect = () => {\r\n documentIncorrect(documentId).then(closeForm(true));\r\n };\r\n\r\n const allowedToSubmit = () => {\r\n let retVal = true;\r\n if (\r\n !formState ||\r\n (!ssnOnFile\r\n ? !(ssn1State.length === 3) || !(ssn2State.length === 2) || !(ssn3State.length === 4)\r\n : false)\r\n ) {\r\n retVal = false;\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n const getFormReviewInstructions = () => {\r\n if (stepId.id === 253 || stepId.id === 107) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information you provided. We\r\n recommend that you review the document to confirm it is filled out properly.\r\n </p>\r\n <p>Please review and electronically sign this document.</p>\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n } else if (\r\n (stepId.id === 256 || stepId.id === 112) &&\r\n safeAccess(documents['current'][documentId], 'description', '') !== 'Taxes' &&\r\n safeAccess(documents['current'][documentId], 'description', '') !== \"Spouse's Taxes\"\r\n ) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information you provided. We\r\n recommend that you review the document to confirm it is filled out properly.\r\n </p>\r\n <p>\r\n <strong>Repayment review recommendations: </strong>\r\n </p>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on the first six pages of your\r\n application prior to submitting it.\r\n </li>\r\n {/*ADD PART FOR SPOUSE's SSN IF TIME PERMITS*/}\r\n </ul>\r\n\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n } else if (stepId.id === 104) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information you provided. We\r\n recommend that you review the document to confirm it is filled out properly.\r\n </p>\r\n <p>\r\n <strong>Consolidation review recommendations: </strong>\r\n </p>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on all pages up to the signature\r\n page.\r\n </li>\r\n <li>Please verify that your address on line #9 is not a P.O. box.</li>\r\n <li>\r\n Please verify that your references at the bottom of page one have different home\r\n addresses and phone numbers from both you and each other.\r\n </li>\r\n </ul>\r\n\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n }\r\n if (stepId.id === 810) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information your employer\r\n provided. We recommend that you review the document to confirm it is filled out\r\n properly.\r\n </p>\r\n <p>Please review and electronically sign this document.</p>\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. You will need to contact your employer to\r\n discuss the information you feel is incorrect.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n Federal Student Aid.\r\n </p>\r\n </>\r\n );\r\n } else {\r\n return (\r\n <>\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n }\r\n };\r\n\r\n //only need to check for IDR's and Consolidations\r\n let isFulfillmentDoc =\r\n safeAccess(documents['current'][documentId], 'name', '') === 'IDR' ||\r\n safeAccess(documents['current'][documentId], 'name', '') === 'Consolidation';\r\n\r\n return (\r\n // <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={true}>\r\n <Modal isOpen={isOpen} fullWidth={true}>\r\n {!documentIncorrectModal && (\r\n <Card>\r\n <CardHeader>\r\n Approve {safeAccess(documents['current'][documentId], 'description', '')} For Signature\r\n </CardHeader>\r\n <CardBody>\r\n <PdfViewer\r\n base64={safeAccess(documents['current'][documentId], 'fileData', '')}\r\n isFulfillment={isFulfillmentDoc}\r\n />\r\n <Card>\r\n <TextLeft>\r\n <CardBody>\r\n <CardText>{getFormReviewInstructions()}</CardText>\r\n </CardBody>\r\n </TextLeft>\r\n </Card>\r\n </CardBody>\r\n <Form id={'empcertClientApproval'} handleChange={handleChange}>\r\n <Card>\r\n <CardBody>\r\n <Signature\r\n handleChange={handleClientSignature}\r\n label=\"Signature:\"\r\n name=\"clientSignature\"\r\n />\r\n {!ssnOnFile && (\r\n <>\r\n <TextLeft>\r\n <p>\r\n One requirement of this form is your Social Security Number (SSN), please\r\n provide it and we will populate it to the form\r\n </p>\r\n </TextLeft>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <TextLeft>\r\n <InputWrapper error={!!errors.empCertSSN}>\r\n <InputLabel required>Social Security Number</InputLabel>\r\n <InputError>{safeAccess(errors, 'empCertSSN.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name=\"ssn1\"\r\n type=\"password\"\r\n autoComplete=\"off\"\r\n placeholder=\"XXX\"\r\n maxLength=\"3\"\r\n onChange={handleNumericChange}\r\n value={ssn1State}\r\n />\r\n \r\n <InputText\r\n name=\"ssn2\"\r\n type=\"password\"\r\n autoComplete=\"off\"\r\n placeholder=\"XX\"\r\n maxLength=\"2\"\r\n onChange={handleNumericChange}\r\n value={ssn2State}\r\n />\r\n \r\n <InputText\r\n name=\"ssn3\"\r\n type=\"password\"\r\n autoComplete=\"off\"\r\n placeholder=\"XXXX\"\r\n maxLength=\"4\"\r\n onChange={handleNumericChange}\r\n value={ssn3State}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </TextLeft>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </CardBody>\r\n </Card>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n {stepId.id !== 810 && (\r\n <Button brand=\"danger\" onClick={submitDocumentIncorrect}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Form is Incorrect'}\r\n </Button>\r\n )}\r\n {stepId.id === 810 && (\r\n <Button brand=\"danger\" onClick={toggleDocumentIncorrectModal}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Form is Incorrect'}\r\n </Button>\r\n )}\r\n {allowedToSubmit() ? (\r\n <Button brand=\"success\" onClick={submitClientSignAndApprove}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Submit'}\r\n </Button>\r\n ) : (\r\n <>To submit, please finish filling out the above information correctly.</>\r\n )}\r\n </FlexBetween>\r\n </CardFooter>\r\n </Form>\r\n </Card>\r\n )}\r\n {documentIncorrectModal && (\r\n <Card>\r\n <CardHeader>Confirm Form is Incorrect</CardHeader>\r\n <CardBody>\r\n <TextLeft>\r\n <p>\r\n If you select \"Confirm\" you are confirming that information is incorrect on your\r\n employment certification form. It is your responsibility to contact your employer to\r\n discuss the information you feel is incorrect.\r\n </p>\r\n </TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={toggleDocumentIncorrectModal}>\r\n Cancel\r\n </Button>\r\n <Button brand=\"danger\" onClick={submitDocumentIncorrect}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Confirm'}\r\n </Button>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n )}\r\n </Modal>\r\n );\r\n};\r\n\r\nEmpcertClientApproval.propTypes = {\r\n closeForm: t.func.isRequired,\r\n isOpen: t.bool,\r\n onSubmit: t.func.isRequired,\r\n request: t.object.isRequired,\r\n documents: t.object.isRequired,\r\n documentId: t.string.isRequired,\r\n markDocument: t.func.isRequired,\r\n clientSignAndApprove: t.func.isRequired,\r\n update: t.func.isRequired,\r\n documentIncorrect: t.func.isRequired,\r\n alreadySent: t.func.isRequired,\r\n stepId: t.object,\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.selfServiceDocument.requests.updateResource,\r\n state.selfServiceDocument.requests.loadCollection,\r\n ]),\r\n form: state.empcertApproval.form,\r\n documents: safeAccess(state, 'selfServiceDocument.cache'),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n update: async (id) => {\r\n await dispatch(selfServiceDocumentUpdateResource(id));\r\n },\r\n markDocument: async (id, readyToSend, sentToServicer, documentIncorrect) => {\r\n await dispatch(\r\n selfServiceDocumentMarkStatus(id, readyToSend, sentToServicer, documentIncorrect)\r\n );\r\n },\r\n alreadySent: async (id) => {\r\n dispatch(authLoadPermissions());\r\n await dispatch(selfServiceDocumentMarkStatus(id, false, true, false));\r\n await dispatch(selfServiceDocumentUpdateResource(id));\r\n await dispatch(selfServiceDocumentLoadDocuments(253));\r\n await dispatch(todosLoadCollection());\r\n },\r\n\r\n clientSignAndApprove: async (documentId) => {\r\n await dispatch(selfServiceDocumentClientEmpCertApproval(documentId));\r\n },\r\n\r\n documentIncorrect: async (id) => {\r\n await dispatch(selfServiceDocumentMarkStatus(id, false, false, true));\r\n await dispatch(selfServiceDocumentUpdateResource(id));\r\n await dispatch(selfServiceDocumentClearDocument(id));\r\n await dispatch(todosLoadCollection());\r\n await dispatch(authLoadPermissions());\r\n },\r\n updateForm: (data, attributes) => dispatch(empcertApprovalHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EmpcertClientApproval);\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n AsyncLoader,\n CardBody,\n CardText,\n Button,\n InputWrapper,\n InputCheckbox,\n InputLabel,\n} from 'fiducius-ui';\nimport { Redirect } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { formatRelative, parseISO } from 'date-fns';\nimport englishDefault from 'date-fns/locale/en-US/index';\n\nimport { FlexBetween } from '../../../root';\n\nimport { safeAccess, debounce, mergeRequestStatuses } from '../../../utils';\n\nimport { withPermissions } from '../../../routing';\n\nimport { authLoadPermissions } from '../../../auth';\n\nimport { todosLoadCollection } from '../../../todos/redux/operations';\n\nimport {\n selfServiceDocumentLoadDocuments,\n selfServiceDocumentUpdateAll,\n selfServiceDocumentUpdateParentFile,\n selfServiceDocumentUpdateResource,\n} from '../../../self-service-document';\n\nimport FaxApproval from './fax-approval';\nimport EmpcertClientApproval from './empcert-client-approval.jsx';\n\nimport { ButtonSpacer } from '../../../accounts';\n\nconst InputWrapper2 = styled(InputWrapper)`\n color: ${(p) => p.theme.textPrimary};\n`;\n\nclass StandardFax extends React.Component {\n static propTypes = {\n confirm: t.func.isRequired,\n permissions: t.object.isRequired,\n request: t.object.isRequired,\n stepId: t.number.isRequired,\n todos: t.array,\n additionalInfoNeeded: t.bool,\n handleChange: t.func,\n reload: t.func.isRequired,\n load: t.func.isRequired,\n documents: t.object,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n showCheckbox: false,\n redirectURI: '',\n goToInfo: false,\n showForm: false,\n showNewForm: false,\n documentId: '',\n };\n this.onConfirm = this.onConfirm.bind(this);\n this.goToInfo = this.goToInfo.bind(this);\n }\n\n componentDidMount() {\n const { load, stepId, updateToDosAndLoad, permissions, todos } = this.props;\n if (\n (permissions.electronicEmpcertEnabled && (stepId === 253 || stepId === 107)) ||\n (permissions.reducedIdrSteps !== undefined &&\n permissions.reducedIdrSteps !== null &&\n stepId == 810)\n ) {\n const currentToDo = todos.find((a) => a.id === 2 || a.id === 4);\n // Check for todo of 2 or 4. If found, need to reload Todos as well\n if (parseInt(safeAccess(currentToDo, 'id', 0)) > 0) {\n updateToDosAndLoad(stepId);\n } else {\n load(stepId);\n }\n } else {\n load(stepId);\n }\n }\n\n componentDidUpdate(prevProps, prevState) {}\n\n onConfirm = async () => {\n await this.props.confirm(this.props.stepId);\n this.goToCurrentStep();\n };\n\n onUpdateDocumentStatus = async (id, action) => {\n const { documents = [] } = this.props;\n documents['current'][id].additionalData = action;\n await this.props.updateDocumentStatus(id);\n this.goToCurrentStep();\n };\n\n goToInfo(e) {\n this.props.handleChange(e.type);\n }\n\n checkStepCompleted = () => {\n const { stepId, permissions, todos } = this.props;\n const stepMapping = this.getStepMapping(stepId);\n const forgivenessStep = permissions.forgivenessSteps\n ? permissions.forgivenessSteps.find((a) => a.id === stepMapping)\n : permissions.reducedIdrSteps.find((a) => a.id === stepMapping)\n ? permissions.reducedIdrSteps.find((a) => a.id === stepMapping)\n : permissions.reducedIdrSteps.find((a) => a.id === 'EmpCert');\n\n let retVal = false;\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n retVal = forgivenessStep.stepComplete;\n if (!retVal) {\n if (stepId === 103 || stepId === 104 || stepId === 105) {\n const currentToDo = todos.find((a) => a.id === 103 || a.id === 104 || a.id === 105);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 106 || stepId === 107 || stepId === 108) {\n const currentToDo = todos.find((a) => a.id === 106 || a.id === 107 || a.id === 108);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 111 || stepId === 112 || stepId === 113) {\n const currentToDo = todos.find((a) => a.id === 111 || a.id === 112 || a.id === 113);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 252 || stepId === 253 || stepId === 254) {\n const currentToDo = todos.find((a) => a.id === 252 || a.id === 253 || a.id === 254);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 255 || stepId === 256 || stepId === 257) {\n const currentToDo = todos.find((a) => a.id === 255 || a.id === 256 || a.id === 257);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 800 || stepId === 810 || stepId === 815 || stepId === 820) {\n const currentToDo = todos.find(\n (a) => a.id === 800 || a.id === 810 || a.id === 815 || a.id === 820\n );\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n }\n }\n }\n return retVal;\n };\n\n getStepMapping = (id) => {\n let retVal = '';\n switch (id) {\n case 101:\n retVal = 'Welcome';\n break;\n case 102:\n retVal = 'ForbearanceP1';\n break;\n case 103:\n case 104:\n case 105:\n retVal = 'Consolidation';\n break;\n case 106:\n case 107:\n case 108:\n retVal = 'EmpCert';\n break;\n case 109:\n retVal = 'ForbearanceP2';\n break;\n case 110:\n retVal = 'Taxes';\n break;\n case 111:\n case 112:\n case 113:\n retVal = 'IDR';\n break;\n case 209:\n retVal = 'ProfileVerification';\n break;\n case 201:\n retVal = 'Questionnaire';\n break;\n case 203:\n retVal = 'Meeting';\n break;\n case 204:\n case 250:\n retVal = 'Fee';\n break;\n case 251:\n retVal = 'Forbearance';\n break;\n case 252:\n case 253:\n case 254:\n retVal = 'EmpCert';\n break;\n case 206:\n case 255:\n case 256:\n case 257:\n retVal = 'IDR';\n break;\n case 800:\n retVal = 'GenerateEnterpriseEmpcert';\n break;\n case 801:\n case 810:\n retVal = 'SubmitEnterpriseEmpcert';\n break;\n case 815:\n retVal = 'CheckEnterpriseEmpcert';\n break;\n case 820:\n retVal = 'CompleteEnterpriseEmpcert';\n break;\n default:\n retVal = 'Overview';\n break;\n }\n return retVal;\n };\n\n checkNotYetAtStep = () => {\n const { stepId, permissions, todos } = this.props;\n const stepMapping = this.getStepMapping(stepId);\n const forgivenessStep = permissions.forgivenessSteps\n ? permissions.forgivenessSteps.find((a) => a.id === stepMapping)\n : permissions.reducedIdrSteps.find((a) => a.id === stepMapping)\n ? permissions.reducedIdrSteps.find((a) => a.id === stepMapping)\n : permissions.reducedIdrSteps.find((a) => a.id === 'EmpCert');\n const currentStep = permissions.forgivenessSteps\n ? permissions.forgivenessSteps.find((a) => a.stepCurrent)\n : permissions.reducedIdrSteps.find((a) => a.stepCurrent);\n\n let retVal = false;\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n currentStep !== undefined &&\n currentStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (forgivenessStep.id === currentStep.id) {\n if (stepId === 103 || stepId === 104 || stepId === 105) {\n const currentToDo = todos.find((a) => a.id === 103 || a.id === 104 || a.id === 105);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (stepId === 106 || stepId === 107 || stepId === 108) {\n const currentToDo = todos.find((a) => a.id === 106 || a.id === 107 || a.id === 108);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (stepId === 111 || stepId === 112 || stepId === 113) {\n const currentToDo = todos.find((a) => a.id === 111 || a.id === 112 || a.id === 113);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (\n stepId === 252 ||\n stepId === 253 ||\n stepId === 254 ||\n stepId === 800 ||\n stepId === 810 ||\n stepId === 815 ||\n stepId === 820 ||\n stepId === 1601 ||\n stepId === 1605\n ) {\n const currentToDo = todos.find(\n (a) =>\n a.id === 252 ||\n a.id === 253 ||\n a.id === 254 ||\n a.id === 800 ||\n a.id === 810 ||\n a.id === 815 ||\n a.id === 820 ||\n a.id === 1601 ||\n a.id === 1605\n );\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (stepId === 255 || stepId === 256 || stepId === 257) {\n const currentToDo = todos.find((a) => a.id === 255 || a.id === 256 || a.id === 257);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n }\n } else {\n retVal = !forgivenessStep.stepComplete && !forgivenessStep.stepCurrent;\n }\n }\n return retVal;\n };\n\n getCurrentToDo = () => {\n const { permissions, todos, forReducedIDR } = this.props;\n let currentToDo;\n\n if (permissions.forgivenessSteps !== undefined && permissions.forgivenessSteps !== null) {\n const forgivenessSteps = permissions.forgivenessSteps.filter((a) => a.stepCurrent);\n let forgivenessStep = permissions.forgivenessSteps.find((a) => a.stepCurrent);\n\n if (\n forgivenessSteps !== undefined &&\n forgivenessSteps !== null &&\n forgivenessSteps.length > 1 &&\n forgivenessSteps.find((a) => window.location.pathname.includes(a.stepPath))\n ) {\n forgivenessStep = forgivenessSteps.find((a) =>\n window.location.pathname.includes(a.stepPath)\n );\n }\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n currentToDo = todos.find(\n (a) =>\n (forgivenessStep.id === 'Consolidation' &&\n (a.id === 103 || a.id === 104 || a.id === 105)) ||\n (forgivenessStep.id === 'EmpCert' &&\n (a.id === 106 ||\n a.id === 107 ||\n a.id === 108 ||\n a.id === 252 ||\n a.id === 253 ||\n a.id === 254)) ||\n (forgivenessStep.id === 'IDR' &&\n (a.id === 111 ||\n a.id === 112 ||\n a.id === 113 ||\n a.id === 255 ||\n a.id === 256 ||\n a.id === 257))\n );\n }\n }\n\n if (\n permissions.enterpriseEmpcertSteps !== undefined &&\n permissions.enterpriseEmpcertSteps !== null\n ) {\n const enterpriseEmpCertSteps = permissions.enterpriseEmpcertSteps.filter(\n (a) => a.stepCurrent\n );\n let enterpriseEmpCertStep = permissions.enterpriseEmpcertSteps.find((a) => a.stepCurrent);\n\n if (\n enterpriseEmpCertSteps !== undefined &&\n enterpriseEmpCertSteps !== null &&\n enterpriseEmpCertSteps.length > 1 &&\n enterpriseEmpCertSteps.find((a) => window.location.pathname.includes(a.stepPath))\n ) {\n enterpriseEmpCertStep = enterpriseEmpCertSteps.find((a) =>\n window.location.pathname.includes(a.stepPath)\n );\n }\n if (\n enterpriseEmpCertStep !== undefined &&\n enterpriseEmpCertStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n currentToDo = todos.find(\n (a) =>\n a.id === 800 ||\n a.id === 801 ||\n a.id === 805 ||\n a.id === 810 ||\n a.id === 815 ||\n a.id === 820\n );\n }\n }\n\n if (permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null) {\n const reducedIdrSteps = permissions.reducedIdrSteps.filter((a) => a.stepCurrent);\n let reducedIdrStep = permissions.reducedIdrSteps.find((a) => a.stepCurrent);\n\n if (\n reducedIdrSteps !== undefined &&\n reducedIdrSteps !== null &&\n reducedIdrSteps.length > 1 &&\n reducedIdrSteps.find((a) => window.location.pathname.includes(a.stepPath))\n ) {\n reducedIdrStep = reducedIdrSteps.find((a) => window.location.pathname.includes(a.stepPath));\n }\n if (\n // forReducedIDR &&\n reducedIdrStep !== undefined &&\n reducedIdrStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n currentToDo = todos.find(\n (a) =>\n a.id === 1100 ||\n a.id === 1200 ||\n a.id === 1300 ||\n a.id === 1400 ||\n a.id === 1500 ||\n a.id === 1600 ||\n a.id === 1610 ||\n a.id === 1620 ||\n a.id === 1630 ||\n a.id === 800 ||\n a.id === 801 ||\n a.id === 805 ||\n a.id === 810 ||\n a.id === 815 ||\n a.id === 820\n );\n }\n }\n\n return currentToDo;\n };\n\n goToCurrentStep = () => {\n const { permissions, todos } = this.props;\n let retVal = '/benefits/forgiveness/overview';\n\n if (permissions.forgivenessSteps !== undefined && permissions.forgivenessSteps !== null) {\n const forgivenessSteps = permissions.forgivenessSteps.filter((a) => a.stepCurrent);\n let forgivenessStep = permissions.forgivenessSteps.find((a) => a.stepCurrent);\n\n if (\n forgivenessSteps !== undefined &&\n forgivenessSteps !== null &&\n forgivenessSteps.length > 1 &&\n forgivenessSteps.find((a) => window.location.pathname.includes(a.stepPath))\n ) {\n forgivenessStep = forgivenessSteps.find((a) =>\n window.location.pathname.includes(a.stepPath)\n );\n }\n\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (forgivenessStep.id === 'EmpCert' || forgivenessStep.id === 'IDR') {\n retVal = '/benefits/forgiveness' + forgivenessStep.stepPath;\n const currentToDo = todos.find(\n (a) =>\n (forgivenessStep.id === 'Consolidation' &&\n (a.id === 103 || a.id === 104 || a.id === 105)) ||\n (forgivenessStep.id === 'EmpCert' &&\n (a.id === 106 ||\n a.id === 107 ||\n a.id === 108 ||\n a.id === 252 ||\n a.id === 253 ||\n a.id === 254)) ||\n (forgivenessStep.id === 'IDR' &&\n (a.id === 111 ||\n a.id === 112 ||\n a.id === 113 ||\n a.id === 255 ||\n a.id === 256 ||\n a.id === 257))\n );\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 103:\n case 106:\n case 111:\n case 252:\n case 255:\n retVal += '/step-1';\n break;\n case 104:\n case 107:\n case 112:\n case 253:\n case 256:\n retVal += '/step-2';\n break;\n case 105:\n case 108:\n case 113:\n case 254:\n case 257:\n retVal += '/step-3';\n break;\n default:\n break;\n }\n }\n }\n } else {\n retVal = '/benefits/forgiveness' + forgivenessStep.stepPath;\n }\n }\n\n if (\n permissions.enterpriseEmpcertSteps !== undefined &&\n permissions.enterpriseEmpcertSteps !== null\n ) {\n let enterpriseEmpCertStep = permissions.enterpriseEmpcertSteps.find((a) => a.stepCurrent);\n if (\n enterpriseEmpCertStep !== undefined &&\n enterpriseEmpCertStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n const currentToDo = todos.find(\n (a) => a.id === 800 || a.id === 801 || a.id === 805 || a.id === 810 || a.id === 820\n );\n\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 800:\n retVal = '/benefits/empcert/generate';\n break;\n case 801:\n case 810:\n retVal = '/benefits/empcert/submit';\n break;\n case 805:\n retVal = '/benefits/empcert/correction';\n break;\n case 815:\n retVal = '/benefits/empcert/check';\n break;\n case 820:\n retVal = '/benefits/empcert/complete';\n break;\n }\n }\n }\n }\n\n if (permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null) {\n const reducedIDRStep = permissions.reducedIdrSteps.find((a) => a.stepCurrent);\n if (\n reducedIDRStep !== undefined &&\n reducedIDRStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (reducedIDRStep.id === 'IDRReducedIDR') {\n retVal = '/benefits/reducedidr' + reducedIDRStep.stepPath;\n const currentToDo = todos.find(\n (a) =>\n reducedIDRStep.id === 'IDRReducedIDR' &&\n (a.id === 1200 ||\n a.id === 1300 ||\n a.id === 1400 ||\n a.id === 1600 ||\n a.id === 1610 ||\n a.id === 1620 ||\n a.id === 800 ||\n a.id === 801 ||\n a.id === 805 ||\n a.id === 810 ||\n a.id === 820)\n );\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 1200:\n case 1600:\n case 800:\n retVal += '/step-1';\n break;\n case 1300:\n case 1610:\n case 801:\n case 810:\n case 805:\n retVal += '/step-2';\n break;\n case 1400:\n case 1620:\n case 815:\n case 820:\n retVal += '/step-3';\n break;\n default:\n break;\n }\n }\n } else {\n retVal = '/benefits/reducedidr' + reducedIDRStep.stepPath;\n }\n }\n }\n\n this.setState({ ...this.state, redirectURI: retVal });\n };\n\n showDocument = (documentId, status) => {\n const { permissions } = this.props;\n if (status === 'S' && permissions.electronicEmpcertEnabled) {\n this.setState({ ...this.state, showForm: false, showNewForm: true, documentId: documentId });\n } else {\n this.setState({ ...this.state, showForm: true, showNewForm: false, documentId: documentId });\n }\n };\n\n handleChange = debounce((formState, id, attributes) => {\n this.setState({ ...this.state, showCheckbox: !this.state.showCheckbox });\n }, 250);\n\n getDocumentList = () => {\n const { documents = [], permissions } = this.props;\n\n let documentBody = [];\n\n if (documents['current'] !== undefined) {\n Object.keys(documents['current']).forEach((a) => {\n let disabled =\n documents['current'][a].fileData === undefined ||\n documents['current'][a].fileData === null ||\n documents['current'][a].fileData === '';\n\n let paymentNeeded = false;\n\n let documentStatus = documents['current'][a].status;\n\n let documentStatusString = '';\n if (documentStatus !== null || documentStatus !== undefined) {\n switch (documentStatus) {\n case 'A':\n //Bug 3301 - Full service client could still submit Emp Cert on first visit without paying fee;\n documentStatusString = '';\n if (\n !permissions.subscriptionActive &&\n documents['current'][a].additionalData === 'Payment Needed'\n ) {\n disabled = true;\n paymentNeeded = true;\n documentStatusString = ' (Payment Needed)';\n }\n break;\n case 'G':\n //documentStatusString = ' (Signed by Approver and Ready for Client Fax Approval)';\n documentStatusString = '';\n if (\n !permissions.subscriptionActive &&\n documents['current'][a].additionalData === 'Payment Needed'\n ) {\n disabled = true;\n documentStatusString = ' (Payment Needed)';\n }\n break;\n case 'X':\n documentStatusString = ' (Signed and Sent to Authorized Official)';\n disabled = true;\n break;\n case 'R':\n documentStatusString = ' (Employer Marked as Unqualified)';\n disabled = true;\n break;\n case 'M':\n //documentStatusString = ' (Marked as Manual mode)';\n if (\n !permissions.subscriptionActive &&\n documents['current'][a].additionalData === 'Payment Needed' &&\n documents['current'][a].uploadedToFiducius\n ) {\n disabled = true;\n documentStatusString = ' (Payment Needed)';\n paymentNeeded = true;\n } else {\n documentStatusString = '';\n }\n break;\n default:\n documentStatusString = '';\n }\n }\n\n documents['current'][a].status !== 'E' &&\n documentBody.push(\n <>\n <ButtonSpacer>\n <Button\n brand={\n documents['current'][a].sentToServicer || documents['current'][a].readyToSend\n ? 'success'\n : disabled\n ? 'danger'\n : 'info'\n }\n disabled={disabled}\n onClick={() => this.showDocument(a, documents['current'][a].status)}\n >\n View {documents['current'][a].description}\n {documentStatusString}{' '}\n {disabled === true &&\n !paymentNeeded &&\n documents['current'][a].employmentHistoryId !== null &&\n documents['current'][a].status !== 'X' &&\n documents['current'][a].status !== 'R' &&\n documents['current'][a].status !== 'G' &&\n '(Not Yet Uploaded)'}\n </Button>\n </ButtonSpacer>\n </>\n );\n documents['current'][a].status === 'E' &&\n documentBody.push(\n <>\n <ButtonSpacer>\n <Button\n brand={\n documents['current'][a].sentToServicer || documents['current'][a].readyToSend\n ? 'success'\n : disabled\n ? 'danger'\n : 'info'\n }\n onClick={() => this.onUpdateDocumentStatus(documents['current'][a].id, 'resend')}\n >\n Approval Expired - Resend Email to Authorized Official for{' '}\n {documents['current'][a].description}\n {documentStatusString}{' '}\n </Button>\n {' '}\n {!permissions.hasEnterpriseEmpCert ||\n ((permissions.enterpriseEmpcertSteps === undefined ||\n permissions.enterpriseEmpcertSteps === null) && (\n <Button\n brand={\n documents['current'][a].sentToServicer ||\n documents['current'][a].readyToSend\n ? 'success'\n : disabled\n ? 'danger'\n : 'info'\n }\n onClick={() =>\n this.onUpdateDocumentStatus(documents['current'][a].id, 'manual')\n }\n >\n Complete Physical Form for {documents['current'][a].description}\n {documentStatusString}{' '}\n </Button>\n ))}\n </ButtonSpacer>\n </>\n );\n });\n }\n return documentBody;\n };\n\n closeForm = async (reloadDocs) => {\n if (reloadDocs) {\n const { reload, stepId } = this.props;\n await reload(stepId);\n\n this.setState({\n ...this.state,\n showForm: false,\n showNewForm: false,\n documentId: '',\n });\n } else {\n this.setState({\n ...this.state,\n showForm: false,\n showNewForm: false,\n documentId: '',\n });\n }\n };\n\n showConfirmation = () => {\n const { documents = [] } = this.props;\n\n let allowedConfirm = true;\n if (documents['current'] !== undefined) {\n if (Object.keys(documents['current']).length === 0) {\n allowedConfirm = false;\n } else {\n Object.keys(documents['current']).forEach((a) => {\n if (!(documents['current'][a].sentToServicer || documents['current'][a].readyToSend)) {\n allowedConfirm = false;\n }\n });\n }\n }\n return allowedConfirm;\n };\n\n showGoToNextStep = () => {\n const { documents = [] } = this.props;\n\n let allowedConfirm = true;\n if (documents['current'] !== undefined) {\n if (Object.keys(documents['current']).length === 0) {\n allowedConfirm = false;\n } else {\n Object.keys(documents['current']).forEach((a) => {\n if (!documents['current'][a].sentToServicer) {\n allowedConfirm = false;\n }\n });\n }\n }\n return allowedConfirm;\n };\n\n faxesInProcessing = () => {\n const { documents = [] } = this.props;\n\n let inProcessing = false;\n if (documents['current'] !== undefined) {\n if (Object.keys(documents['current']).length === 0) {\n inProcessing = false;\n } else {\n Object.keys(documents['current']).forEach((a) => {\n if (documents['current'][a].processing) {\n inProcessing = true;\n }\n });\n }\n }\n return inProcessing;\n };\n\n getTodaysDate = () => {\n var today = new Date();\n var dd = String(today.getDate()).padStart(2, '0');\n var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!\n var yyyy = today.getFullYear();\n\n return (today = yyyy + '-' + mm + '-' + dd + 'T00:00:00');\n };\n\n getDateToSend = () => {\n const { documents = [] } = this.props;\n const customRelativeLocale = {\n lastWeek: \"'last\",\n yesterday: \"'yesterday\",\n today: \"'today\",\n tomorrow: \"'tomorrow\",\n nextWeek: 'eeee',\n other: 'MMMM do',\n };\n let retVal;\n\n const customLocale = {\n ...englishDefault,\n formatRelative: (token, date, baseDate, options) => customRelativeLocale[token],\n };\n\n Object.keys(documents['current']).forEach((a) => {\n if (documents['current'][a].dateToSend !== undefined) {\n let dateToSend = new Date(documents['current'][a].dateToSend);\n let todayDate = new Date();\n\n if (todayDate < dateToSend) {\n retVal = documents['current'][a].dateToSend;\n } else {\n //return 'today' if the date to send is in the past.\n retVal = this.getTodaysDate();\n }\n }\n });\n\n if (retVal !== undefined) {\n retVal = formatRelative(this.adjustedMeetingTime(retVal), new Date(), {\n addSuffix: false,\n locale: customLocale,\n });\n }\n\n return retVal;\n };\n\n adjustedMeetingTime = (time) => {\n return parseISO(time);\n };\n\n render() {\n const { documents, stepId, permissions, forReducedIDR } = this.props;\n\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\n return <Redirect to={this.state.redirectURI} />;\n } else {\n return (\n <>\n <AsyncLoader request={this.props.request}>\n <CardBody>\n <CardText>\n {this.faxesInProcessing() &&\n stepId !== 256 &&\n stepId !== 112 &&\n stepId !== 1300 &&\n stepId !== 1610 && (\n <p>\n Your fax is currently being processed. You will be notified when it has been\n sent.\n </p>\n )}\n {this.faxesInProcessing() &&\n (stepId === 256 || stepId === 112 || stepId === 1300 || stepId === 1610) && (\n <p>\n Your IDR application is scheduled to fax {this.getDateToSend()}\n {this.getDateToSend() === 'today' &&\n '. You will be notified when it has been sent.'}\n {this.getDateToSend() !== 'today' && (\n <ul>\n <li>\n The fax is scheduled for a future date to ensure your IDR application is\n not submitted too early, which could potentially cause issues\n </li>\n </ul>\n )}\n </p>\n )}\n {!this.faxesInProcessing() && (\n <>\n {documents['current'] !== undefined &&\n permissions.electronicEmpcertEnabled &&\n Object.keys(documents['current']).length > 0 && (\n <>\n <p>Below are the document(s) that you need to approve.</p>\n <p>{this.getDocumentList()}</p>\n </>\n )}\n {documents['current'] !== undefined &&\n !permissions.electronicEmpcertEnabled &&\n Object.keys(documents['current']).length > 0 && (\n <>\n <p>\n Below are the document(s) that you need to approve as ready to be faxed\n to your servicer.\n </p>\n <FlexBetween>{this.getDocumentList()}</FlexBetween>\n </>\n )}\n {documents['current'] !== undefined &&\n Object.keys(documents['current']).length === 0 && (\n <>\n There's no document for you to approve to fax here. That could be for one\n of the following reasons:\n <ul>\n <li>You have documents that need electronically signed</li>\n <li>You have documents that need uploaded</li>\n <li>\n You requested help from Fiducius because an electronically signed\n document looked incorrect\n </li>\n </ul>\n </>\n )}\n\n {documents['current'] !== undefined &&\n Object.keys(documents['current']).length === 0 &&\n forReducedIDR && (\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button\n brand=\"info\"\n onClick={() => {\n this.setState({ ...this.state, redirectURI: '/documents' });\n }}\n >\n {'Go to My Documents'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n )}\n </>\n )}\n </CardText>\n </CardBody>\n {this.showGoToNextStep() && (\n <div className=\"row col-12\">\n <div className=\"col-8\">\n <InputWrapper>\n <InputLabel>You've completed this step.</InputLabel>\n </InputWrapper>\n </div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\n {'Go to current step'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n )}\n {this.showConfirmation() && !this.showGoToNextStep() && !this.faxesInProcessing() && (\n <>\n <div className=\"row col-12\">\n <div className=\"col-12\">\n <InputWrapper2>\n <InputCheckbox\n name=\"allowConfirmation\"\n label=\"I am ready to confirm that I have followed all of the above steps and am ready to continue.\"\n onChange={(e) =>\n this.handleChange(\n { allowConfirmation: e.target.value },\n 'allowConfirmation',\n 'allowConfirmation'\n )\n }\n ></InputCheckbox>\n </InputWrapper2>\n </div>\n </div>\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button\n id={'confirm'}\n brand={'primary'}\n onClick={this.onConfirm}\n disabled={!this.state.showCheckbox}\n >\n {'Confirm'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </>\n )}\n </AsyncLoader>\n {this.state.showForm && (\n <FaxApproval\n isOpen={this.state.showForm}\n onSubmit={() => {}}\n documentId={this.state.documentId}\n closeForm={this.closeForm}\n stepId={this.getCurrentToDo()}\n />\n )}\n {this.state.showNewForm && (\n <EmpcertClientApproval\n isOpen={this.state.showNewForm}\n onSubmit={() => {}}\n documentId={this.state.documentId}\n closeForm={this.closeForm}\n stepId={this.getCurrentToDo()}\n />\n )}\n </>\n );\n }\n }\n}\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n state.todos.requests.loadCollection,\n state.selfServiceDocument.requests.updateResource,\n state.selfServiceDocument.requests.loadCollection,\n ]),\n todos: Object.values(state.todos.cache),\n documents: safeAccess(state, 'selfServiceDocument.cache'),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n load: async (id) => {\n await dispatch(selfServiceDocumentLoadDocuments(id));\n },\n updateToDosAndLoad: async (id) => {\n await dispatch(selfServiceDocumentLoadDocuments(id));\n await dispatch(todosLoadCollection());\n },\n reload: async (id) => {\n dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n await dispatch(selfServiceDocumentLoadDocuments(id));\n },\n confirm: async (id) => {\n if (id === 107 || id === 253 || id === 810) {\n await dispatch(selfServiceDocumentUpdateAll());\n } else {\n await dispatch(selfServiceDocumentUpdateParentFile());\n }\n await dispatch(selfServiceDocumentLoadDocuments(id));\n dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n updateDocumentStatus: async (id) => {\n await dispatch(selfServiceDocumentUpdateResource(id));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(StandardFax));\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n AsyncLoader,\n Button,\n InputWrapper,\n InputCheckbox,\n CardText,\n CardBody,\n Header4,\n} from 'fiducius-ui';\nimport { Redirect } from 'react-router-dom';\n\nimport { safeAccess, debounce, mergeRequestStatuses } from '../../../utils';\n\nimport { withPermissions } from '../../../routing';\n\nimport { authLoadPermissions } from '../../../auth';\nimport styled from 'styled-components';\n\nimport { todosLoadCollection, todosUpdateResource } from '../../../todos/redux/operations';\n\nimport { idrSaveComplete } from '../../../workflows/idr/redux/operations';\nimport StandardFax from './standard-fax';\n\nconst InputWrapper2 = styled(InputWrapper)`\n color: ${(p) => p.theme.textPrimary};\n`;\n\nconst StyledHeader4 = styled(Header4)`\n color: ${(p) => p.theme.textSecondary};\n`;\n\nclass StandardConfirmation extends React.Component {\n static propTypes = {\n confirm: t.func.isRequired,\n idrConfirm: t.func.isRequired,\n permissions: t.object.isRequired,\n request: t.object.isRequired,\n stepId: t.number.isRequired,\n todos: t.array,\n additionalInfoNeeded: t.bool,\n handleChange: t.func,\n forReducedIDR: t.bool,\n };\n\n constructor(props) {\n super(props);\n this.state = { showCheckbox: false, redirectURI: '', goToInfo: false };\n this.onConfirm = this.onConfirm.bind(this);\n this.goToInfo = this.goToInfo.bind(this);\n }\n componentDidMount() {}\n\n componentDidUpdate(prevProps, prevState) {}\n\n onConfirm = async () => {\n if (this.props.stepId === 113) {\n await this.props.idrConfirm(this.props.stepId);\n\n if (this.props.permissions.showContribution) {\n window.location.href = '/benefits/forgiveness/contribution-ss';\n } else {\n window.location.href = '/benefits/forgiveness/complete';\n }\n\n //this.setState({ ...this.state, redirectURL: '/benefits/forgiveness/overview' });\n } else if (this.props.stepId === 1400) {\n await this.props.idrConfirm(this.props.stepId);\n window.location.href = '/benefits/reducedidr/complete';\n } else if (this.props.stepId === 1620) {\n await this.props.idrConfirm(this.props.stepId);\n window.location.href = '/benefits/reducedidr/completerenewal';\n } else {\n await this.props.confirm(this.props.stepId);\n this.goToCurrentStep();\n }\n };\n\n goToInfo(e) {\n this.props.handleChange(e.type);\n }\n\n checkStepCompleted = () => {\n const { forReducedIDR } = this.props;\n if (forReducedIDR !== undefined && forReducedIDR !== null && forReducedIDR) {\n return this.checkStepCompletedReducedIDR();\n } else {\n return this.checkStepCompletedForgive();\n }\n };\n\n checkStepCompletedReducedIDR = () => {\n const { stepId, permissions, todos } = this.props;\n const stepMapping = this.getStepMapping(stepId);\n const reducedIDRStep = permissions.reducedIdrSteps.find((a) => a.id === stepMapping);\n\n let retVal = false;\n if (\n reducedIDRStep !== undefined &&\n reducedIDRStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n retVal = reducedIDRStep.stepComplete;\n if (!retVal) {\n if (stepId === 1100) {\n const currentToDo = todos.find((a) => a.id === 1100);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (\n stepId === 1200 ||\n stepId === 1300 ||\n stepId === 1400 ||\n stepId === 1600 ||\n stepId === 1610 ||\n stepId === 1620\n ) {\n const currentToDo = todos.find(\n (a) =>\n a.id === 1200 ||\n a.id === 1300 ||\n a.id === 1400 ||\n a.id === 1600 ||\n a.id === 1610 ||\n a.id === 1620\n );\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 1500 || stepId === 1630) {\n const currentToDo = todos.find((a) => a.id === 1500 || a.id === 1630);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n }\n }\n }\n return retVal;\n };\n\n checkStepCompletedForgive = () => {\n const { stepId, permissions, todos } = this.props;\n const stepMapping = this.getStepMapping(stepId);\n const forgivenessStep = permissions.forgivenessSteps.find((a) => a.id === stepMapping);\n\n let retVal = false;\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n retVal = forgivenessStep.stepComplete;\n if (!retVal) {\n if (stepId === 103 || stepId === 104 || stepId === 105) {\n const currentToDo = todos.find((a) => a.id === 103 || a.id === 104 || a.id === 105);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 106 || stepId === 107 || stepId === 108) {\n const currentToDo = todos.find((a) => a.id === 106 || a.id === 107 || a.id === 108);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 111 || stepId === 112 || stepId === 113) {\n const currentToDo = todos.find((a) => a.id === 111 || a.id === 112 || a.id === 113);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n }\n }\n }\n return retVal;\n };\n\n getStepMapping = (id) => {\n let retVal = '';\n switch (id) {\n case 101:\n retVal = 'Welcome';\n break;\n case 102:\n retVal = 'ForbearanceP1';\n break;\n case 103:\n case 104:\n case 105:\n retVal = 'Consolidation';\n break;\n case 106:\n case 107:\n case 108:\n retVal = 'EmpCert';\n break;\n case 109:\n retVal = 'ForbearanceP2';\n break;\n case 110:\n retVal = 'Taxes';\n break;\n case 111:\n case 112:\n case 113:\n retVal = 'IDR';\n break;\n case 114:\n case 115:\n retVal = 'Contribution';\n break;\n case 150:\n retVal = 'BtsQuestionnaire';\n break;\n case 1100:\n retVal = 'WelcomeReducedIDR';\n break;\n case 1200:\n case 1300:\n case 1400:\n case 1600:\n case 1610:\n case 1620:\n retVal = 'IDRReducedIDR';\n break;\n case 1500:\n case 1630:\n retVal = 'CompleteReducedIDR';\n break;\n default:\n retVal = 'Welcome';\n break;\n }\n return retVal;\n };\n\n checkNotYetAtStep = () => {\n const { forReducedIDR } = this.props;\n if (forReducedIDR !== undefined && forReducedIDR !== null && forReducedIDR) {\n return this.checkNotYetAtStepReducedIDR();\n } else {\n return this.checkNotYetAtStepForgive();\n }\n };\n\n checkNotYetAtStepForgive = () => {\n const { stepId, permissions, todos } = this.props;\n const stepMapping = this.getStepMapping(stepId);\n const forgivenessStep = permissions.forgivenessSteps.find((a) => a.id === stepMapping);\n const currentStep = permissions.forgivenessSteps.find((a) => a.stepCurrent);\n\n let retVal = false;\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n currentStep !== undefined &&\n currentStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (forgivenessStep.id === currentStep.id) {\n if (stepId === 103 || stepId === 104 || stepId === 105) {\n const currentToDo = todos.find((a) => a.id === 103 || a.id === 104 || a.id === 105);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (stepId === 106 || stepId === 107 || stepId === 108) {\n const currentToDo = todos.find((a) => a.id === 106 || a.id === 107 || a.id === 108);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (stepId === 111 || stepId === 112 || stepId === 113) {\n const currentToDo = todos.find((a) => a.id === 111 || a.id === 112 || a.id === 113);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (stepId === 114 || stepId === 115) {\n const currentToDo = todos.find((a) => a.id === 114 || a.id === 115);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n }\n } else {\n retVal = !forgivenessStep.stepComplete && !forgivenessStep.stepCurrent;\n }\n }\n return retVal;\n };\n\n checkNotYetAtStepReducedIDR = () => {\n const { stepId, permissions, todos } = this.props;\n const stepMapping = this.getStepMapping(stepId);\n const reducedIDRStep = permissions.reducedIdrSteps.find((a) => a.id === stepMapping);\n const currentStep = permissions.reducedIdrSteps.find(\n (a) => a.stepCurrent && a.id.includes('IDR')\n );\n\n let retVal = false;\n if (\n reducedIDRStep !== undefined &&\n reducedIDRStep !== null &&\n currentStep !== undefined &&\n currentStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (reducedIDRStep.id === currentStep.id) {\n if (stepId === 1100) {\n const currentToDo = todos.find((a) => a.id === 1100);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (\n stepId === 1200 ||\n stepId === 1300 ||\n stepId === 1400 ||\n stepId === 1600 ||\n stepId === 1610 ||\n stepId === 1620\n ) {\n const currentToDo = todos.find(\n (a) =>\n a.id === 1200 ||\n a.id === 1300 ||\n a.id === 1400 ||\n a.id === 1600 ||\n a.id === 1610 ||\n a.id === 1620\n );\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (stepId === 1500 || stepId === 1630) {\n const currentToDo = todos.find((a) => a.id === 1500 || a.id === 1630);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n }\n } else {\n retVal = !reducedIDRStep.stepComplete && !reducedIDRStep.stepCurrent;\n }\n }\n return retVal;\n };\n\n checkLockedForLWO = (stepId) => {\n const { permissions, todos } = this.props;\n if (permissions.enrolledLwo && (stepId === 106 || stepId === 107)) {\n const lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\n\n if (lwoStep !== undefined && lwoStep !== null) {\n const currentToDo = todos.find((a) => a.id > 600 && a.id < 608);\n\n if (currentToDo !== undefined && currentToDo !== null) {\n return true;\n }\n }\n }\n return false;\n };\n\n goToCurrentStep = () => {\n const { forReducedIDR } = this.props;\n if (forReducedIDR !== undefined && forReducedIDR !== null && forReducedIDR) {\n return this.goToCurrentStepReducedIDR();\n } else {\n return this.goToCurrentStepForgive();\n }\n };\n\n goToCurrentStepForgive = () => {\n const { permissions, todos } = this.props;\n const forgivenessStep = permissions.forgivenessSteps.find((a) => a.stepCurrent);\n let retVal = '/benefits/forgiveness/overview';\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (\n forgivenessStep.id === 'Consolidation' ||\n forgivenessStep.id === 'EmpCert' ||\n forgivenessStep.id === 'IDR' ||\n forgivenessStep.id === 'Contribution'\n ) {\n retVal = '/benefits/forgiveness' + forgivenessStep.stepPath;\n const currentToDo = todos.find(\n (a) =>\n (forgivenessStep.id === 'Consolidation' &&\n (a.id === 103 || a.id === 104 || a.id === 105)) ||\n (forgivenessStep.id === 'EmpCert' &&\n (a.id === 106 ||\n a.id === 107 ||\n a.id === 108 ||\n a.id === 252 ||\n a.id === 253 ||\n a.id === 254)) ||\n (forgivenessStep.id === 'IDR' &&\n (a.id === 111 ||\n a.id === 112 ||\n a.id === 113 ||\n a.id === 255 ||\n a.id === 256 ||\n a.id === 257)) ||\n (forgivenessStep.id === 'Contribution' && (a.id === 114 || a.id === 115))\n );\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 103:\n case 106:\n case 111:\n case 114:\n retVal += '/step-1';\n break;\n case 104:\n case 107:\n case 112:\n case 115:\n retVal += '/step-2';\n break;\n case 105:\n case 108:\n case 113:\n retVal += '/step-3';\n break;\n default:\n break;\n }\n }\n } else {\n retVal = '/benefits/forgiveness' + forgivenessStep.stepPath;\n }\n }\n this.setState({ ...this.state, redirectURI: retVal });\n };\n\n goToCurrentStepReducedIDR = () => {\n const { permissions, todos } = this.props;\n const reducedIDRStep = permissions.reducedIdrSteps.find(\n (a) => a.stepCurrent && (a.id === 'EmpCertEmploymentInformation' || a.id.includes('IDR'))\n );\n let retVal = '/benefits/reducedidr/overview';\n if (\n reducedIDRStep !== undefined &&\n reducedIDRStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (reducedIDRStep.id === 'IDRReducedIDR') {\n retVal = '/benefits/reducedidr' + reducedIDRStep.stepPath;\n const currentToDo = todos.find(\n (a) =>\n reducedIDRStep.id === 'IDRReducedIDR' &&\n (a.id === 1200 ||\n a.id === 1300 ||\n a.id === 1400 ||\n a.id === 1600 ||\n a.id === 1610 ||\n a.id === 1620)\n );\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 1200:\n case 1600:\n retVal += '/step-1';\n break;\n case 1300:\n case 1610:\n retVal += '/step-2';\n break;\n case 1400:\n case 1620:\n retVal += '/step-3';\n break;\n default:\n break;\n }\n }\n } else if (reducedIDRStep.id === 'EmpCertEmploymentInformation') {\n retVal = '/benefits/reducedidr/employmenthistory';\n } else {\n retVal = '/benefits/reducedidr' + reducedIDRStep.stepPath;\n }\n }\n this.setState({ ...this.state, redirectURI: retVal });\n };\n\n needsDocumentsGenerated = () => {\n const { stepId } = this.props;\n let retVal = false;\n if (stepId === 103 || stepId === 106 || stepId === 111 || stepId === 1200 || stepId === 1600) {\n retVal = true;\n }\n return retVal;\n };\n\n redirectForInSchoolQuestionnaire = () => {\n this.setState({ ...this.state, redirectURI: '/bts' });\n };\n\n redirectForDocumentGeneration = () => {\n const { stepId, permissions } = this.props;\n let retVal = '';\n if (this.props.stepId === 113 || this.props.stepId === 1500 || this.props.stepId === 1630) {\n this.props.idrConfirm(this.props.stepId).then((a) => {\n if (stepId === 103) {\n retVal = '/fulfillment/13';\n } else if (stepId === 106) {\n if (permissions.electronicEmpcertEnabled) {\n retVal = '/benefits/forgiveness/empcert-ss/step-2';\n } else {\n retVal = '/documents';\n }\n } else if (stepId === 111 || stepId === 1200 || stepId === 1600) {\n retVal = '/idr';\n }\n this.setState({ ...this.state, redirectURI: retVal });\n //window.location.href = retVal;\n });\n } else if (stepId === 114) {\n retVal = '/documents';\n this.setState({ ...this.state, redirectURI: retVal });\n } else {\n this.props.confirm(this.props.stepId).then((a) => {\n if (stepId === 103) {\n retVal = '/fulfillment/13';\n } else if (stepId === 106) {\n if (permissions.electronicEmpcertEnabled) {\n retVal = '/benefits/forgiveness/empcert/step-2';\n } else {\n retVal = '/documents';\n }\n } else if (stepId === 111 || stepId === 1200 || stepId === 1600) {\n retVal = '/idr';\n }\n this.setState({ ...this.state, redirectURI: retVal });\n //window.location.href = retVal;\n });\n }\n };\n\n redirectForLWO = () => {\n const { permissions, todos } = this.props;\n const lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\n let retVal = '/benefits/limited-waiver-opportunity' + lwoStep.stepPath;\n\n if (lwoStep !== undefined && lwoStep !== null) {\n const currentToDo = todos.find((a) => a.id > 600 && a.id < 608);\n\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 606:\n retVal += '/step-1';\n break;\n case 607:\n retVal += '/step-2';\n break;\n default:\n break;\n }\n }\n }\n\n this.setState({ ...this.state, redirectURI: retVal });\n };\n\n handleChange = debounce((formState, id, attributes) => {\n this.setState({ ...this.state, showCheckbox: !this.state.showCheckbox });\n }, 250);\n\n render() {\n const { stepId, forReducedIDR } = this.props;\n\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\n //alert(this.state.redirectURI);\n return <Redirect to={this.state.redirectURI} />;\n } else {\n if (this.checkNotYetAtStep()) {\n return (\n <AsyncLoader request={this.props.request}>\n <CardBody>\n <CardText>\n <div className=\"row col-12\">\n <div className=\"col-8\">\n <StyledHeader4>You haven't reached this step yet.</StyledHeader4>\n </div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\n {'Go to current step'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </AsyncLoader>\n );\n } else if (this.checkStepCompleted()) {\n return (\n <AsyncLoader request={this.props.request}>\n <CardBody>\n <CardText>\n <div className=\"row col-12\">\n <div className=\"col-8\">\n <StyledHeader4>You've completed this step.</StyledHeader4>\n </div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\n {'Go to current step'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </AsyncLoader>\n );\n } else if (this.needsDocumentsGenerated()) {\n if (this.checkLockedForLWO(stepId)) {\n return (\n <AsyncLoader request={this.props.request}>\n <CardBody>\n <CardText>\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForLWO}>\n Go to Assure℠\n </Button>\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </AsyncLoader>\n );\n } else {\n return (\n <AsyncLoader request={this.props.request}>\n <CardBody>\n <CardText>\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForDocumentGeneration}>\n {'Generate my document(s)'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </AsyncLoader>\n );\n }\n } else {\n if (\n stepId === 104 ||\n stepId === 107 ||\n stepId === 112 ||\n stepId === 1300 ||\n stepId === 1610\n ) {\n if (this.checkLockedForLWO(stepId)) {\n return (\n <AsyncLoader request={this.props.request}>\n <CardBody>\n <CardText>\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForLWO}>\n Go to Assure℠\n </Button>\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </AsyncLoader>\n );\n } else {\n return <StandardFax stepId={stepId} forReducedIDR={forReducedIDR} />;\n }\n } else if (stepId === 150) {\n return (\n <AsyncLoader request={this.props.request}>\n <CardBody>\n <CardText>\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForInSchoolQuestionnaire}>\n {'Go to Questionnaire'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </AsyncLoader>\n );\n } else if (stepId === 114) {\n return (\n <AsyncLoader request={this.props.request}>\n <CardBody>\n <CardText>\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForDocumentGeneration}>\n {'Repayment Details Needed'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </AsyncLoader>\n );\n } else {\n return (\n <AsyncLoader request={this.props.request}>\n <CardBody>\n <CardText>\n <div className=\"row col-12\">\n <div className=\"col-12\">\n <InputWrapper2>\n <InputCheckbox\n name=\"allowConfirmation\"\n label=\"I am ready to confirm that I have followed all of the above steps and am ready to continue.\"\n onChange={(e) =>\n this.handleChange(\n { allowConfirmation: e.target.value },\n 'allowConfirmation',\n 'allowConfirmation'\n )\n }\n ></InputCheckbox>\n </InputWrapper2>\n </div>\n </div>\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n {this.props.additionalInfoNeeded === false ||\n this.props.additionalInfoNeeded === undefined ? (\n <>\n <Button\n id={'confirm'}\n brand={'primary'}\n onClick={this.onConfirm}\n disabled={!this.state.showCheckbox}\n >\n {'Confirm'}\n </Button>\n </>\n ) : (\n <Button brand={'primary'} id={'update'} onClick={this.goToInfo}>\n Update Missing Step Info\n </Button>\n )}\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </AsyncLoader>\n );\n }\n }\n }\n }\n}\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n state.todos.requests.loadCollection,\n ]),\n todos: Object.values(state.todos.cache),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n confirm: async (id) => {\n await dispatch(todosUpdateResource(id));\n dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n idrConfirm: async (id) => {\n await dispatch(idrSaveComplete(id));\n await dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(StandardConfirmation));\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport StepDisplay from '../components/step-display';\r\nimport StandardConfirmation from '../components/standard-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nclass ForbearancePhaseOne extends React.Component {\r\n static propTypes = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection title=\"Request General Forbearance - Phase 1\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <StepDisplay title={'Step 1 – Login to your current loan servicer(s) account(s)'}>\r\n <ul>\r\n <li>\r\n Request <strong>general</strong> forbearance on any loan(s) that have a\r\n payment due.{' '}\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> You will want to remove any direct debit that\r\n is currently placed on these loans. If a payment is due within the next\r\n week, you may want to contact your bank to ensure the payment is not drawn\r\n from your account.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 2 – Confirm you have requested forbearance.'}>\r\n <ul>\r\n <li>\r\n I confirm I have submitted a forbearance request at my current loan\r\n servicer(s) to place my current loan payment(s) on hold. We recommend you\r\n request general forbearance for approximately <strong>four months</strong>{' '}\r\n to allow enough time to complete the remaining steps.\r\n </li>\r\n <li>\r\n Forbearance requests typically take up to two weeks to process and any\r\n payment made while in forbearance may not qualify.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> If you have used more than 36 months of\r\n general forbearance, your request may be denied by the loan servicer.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StandardConfirmation stepId={102} />\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ForbearancePhaseOne));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardText, DashboardSection, Header3 } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nclass ForbearancePhaseOneFS extends React.Component {\r\n static propTypes = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection title=\"Forbearance\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header3>Forberance Request</Header3>\r\n <ul>\r\n <li>\r\n Your loan payments will be put on hold if you have forbearance time\r\n available.\r\n </li>\r\n <li>\r\n Cancel any automatic payments currently in place for these loans unless\r\n otherwise directed.\r\n </li>\r\n <li>\r\n If you receive a bill or any information regarding your loans, please upload\r\n to your Documents page.\r\n </li>\r\n <li>You can submit a Contact Us request if you have any questions.</li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ForbearancePhaseOneFS));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, DashboardSection } from 'fiducius-ui';\r\n\r\nimport StepDisplay from '../components/step-display';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport StandardConfirmation from '../components/standard-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nclass ForbearancePhaseTwo extends React.Component {\r\n static propTypes = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection title=\"Request General Forbearance - Phase 2\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <StepDisplay title={'Step 1 – Login to your account at Federal Student Aid.'}>\r\n <ul>\r\n <li>\r\n Request general forbearance for <strong>twelve months</strong>.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> You may not use the entire length of your\r\n request. Your forbearance request will end once the correct income-driven\r\n repayment is complete in a future step.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 2 – Confirm you have requested forbearance.'}>\r\n <ul>\r\n <li>\r\n I confirm I have submitted a forbearance request at Federal Student Aid to\r\n place my current loan payments on hold.\r\n </li>\r\n <li>\r\n Forbearance requests typically take up to two weeks to process and any\r\n payment made while in forbearance may not qualify.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> If you have used more than 36 months of\r\n general forbearance, your request may be denied by the loan servicer.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StandardConfirmation stepId={109} />\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ForbearancePhaseTwo));\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('employmentHistory');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('employmentHistory', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n CardText,\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n Modal,\r\n InputRadio,\r\n InputHelp,\r\n InputMask,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../root';\r\nimport { safeAccess, stringIsNullOrEmpty, convertIsoToSlash } from '../../utils';\r\nimport { Fade } from '../../routing';\r\nimport { connect } from 'react-redux';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nclass EmploymentHistoryForm extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.modalRef = React.createRef();\r\n this.firstInput = React.createRef();\r\n }\r\n\r\n componentDidUpdate(prevProps) {}\r\n\r\n getForm() {\r\n const { data, errors, onChange, onSubmit } = this.props;\r\n\r\n return (\r\n <Form defaults={data} handleChange={onChange} id={data.id || 'create'} onSubmit={onSubmit}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.employerName}>\r\n <InputLabel htmlFor={'employerName'}>Employer Name</InputLabel>\r\n <InputError>{safeAccess(errors, 'employerName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'employerName'} defaultValue={safeAccess(data, 'employerName')} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.jobTitle}>\r\n <InputLabel htmlFor={'jobTitle'}>Job Title</InputLabel>\r\n <InputError>{safeAccess(errors, 'jobTitle.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'jobTitle'} defaultValue={data.jobTitle} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.startDate}>\r\n <InputLabel htmlFor={'startDate'}>Start Date</InputLabel>\r\n <InputError>{safeAccess(errors, 'startDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.startDate)}\r\n mask=\"##/##/####\"\r\n name={'startDate'}\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.endDate}>\r\n <InputLabel htmlFor={'endDate'}>End Date</InputLabel>\r\n <InputError>{safeAccess(errors, 'endDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.endDate)}\r\n mask=\"##/##/####\"\r\n name={'endDate'}\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n <InputHelp>If you are still employed, please leave this field blank.</InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <CardText>\r\n <InputWrapper error={!!errors.employmentClassification}>\r\n <InputLabel htmlFor={'employmentClassification'}>\r\n Is this employer not-for-profit?\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentClassification.detail')}</InputError>\r\n <InputRadio\r\n name={'employmentClassification'}\r\n value=\"NPROF\"\r\n label=\"Yes\"\r\n defaultChecked={data.employmentClassification === 'NPROF'}\r\n />\r\n <InputRadio\r\n name={'employmentClassification'}\r\n value=\"PROF\"\r\n label=\"No\"\r\n defaultChecked={data.employmentClassification === 'PROF'}\r\n />\r\n </InputWrapper>\r\n </CardText>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <CardText>\r\n <InputWrapper error={!!errors.employmentType}>\r\n <InputLabel htmlFor={'employmentType'}>Are you working there full-time?</InputLabel>\r\n <InputError>{safeAccess(errors, 'employmentType.detail')}</InputError>\r\n <InputRadio\r\n name={'employmentType'}\r\n value=\"FULL\"\r\n label=\"Yes\"\r\n defaultChecked={data.employmentType === 'FULL'}\r\n />\r\n <InputRadio\r\n name={'employmentType'}\r\n value=\"PART\"\r\n label=\"No\"\r\n defaultChecked={data.employmentType === 'PART'}\r\n />\r\n <InputWrapper>\r\n <InputHelp>\r\n Working full time for the program's requirements means you are currently\r\n considered full time by your employer, and work an average of 30 or more hours\r\n per week.\r\n </InputHelp>\r\n </InputWrapper>\r\n </InputWrapper>\r\n </CardText>\r\n </div>\r\n <div className=\"col-12\">\r\n {data.employmentClassification === 'NPROF' && (\r\n <Alert brand=\"info\">\r\n Please keep in mind, loan payments made during an employment lapse, between a\r\n previous and current employer, will not count as qualifying payments towards the\r\n Public Service Loan Forgiveness Program. If you know you are going to experience an\r\n employment lapse in the future, please contact us.\r\n </Alert>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.ein}>\r\n <InputLabel htmlFor={'ein'}>Federal Employer Identification Number (FEIN)</InputLabel>\r\n <InputError>{safeAccess(errors, 'ein.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'ein'} defaultValue={safeAccess(data, 'ein')} />\r\n </InputGroup>\r\n <InputWrapper>\r\n <InputHelp>\r\n You can find your employer's FEIN number in box B of your most recent W-2.\r\n </InputHelp>\r\n </InputWrapper>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-3\">\r\n <InputWrapper error={!!errors.payPeriods}>\r\n <InputLabel htmlFor={'payPeriods'}>Pay Periods</InputLabel>\r\n <InputError>{safeAccess(errors, 'payPeriods.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'payPeriods'} defaultValue={safeAccess(data, 'payPeriods')} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-3\">\r\n <InputWrapper error={!!errors.hours}>\r\n <InputLabel htmlFor={'hours'}>Hours</InputLabel>\r\n <InputError>{safeAccess(errors, 'hours.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'hours'} defaultValue={safeAccess(data, 'hours')} />\r\n </InputGroup>\r\n <InputWrapper>\r\n {' '}\r\n <InputHelp>Average hours per week</InputHelp>\r\n </InputWrapper>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <InputWrapper error={!!errors.address1}>\r\n <InputLabel htmlFor={'address1'}>Address Line 1</InputLabel>\r\n <InputError>{safeAccess(errors, 'address1.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'address1'} defaultValue={safeAccess(data, 'address1')} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.address2}>\r\n <InputLabel htmlFor={'address2'} optional>\r\n Address Line 2\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'address2.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'address2'} defaultValue={safeAccess(data, 'address2')} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.city}>\r\n <InputLabel htmlFor={'city'}>City</InputLabel>\r\n <InputError>{safeAccess(errors, 'city.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'city'} defaultValue={safeAccess(data, 'city')} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.state}>\r\n <InputLabel htmlFor={'state'}>State</InputLabel>\r\n <InputError>{safeAccess(errors, 'state.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name={'state'}\r\n defaultValue={safeAccess(data, 'state')}\r\n options={[\r\n '',\r\n 'AL',\r\n 'AK',\r\n 'AR',\r\n 'AZ',\r\n 'CA',\r\n 'CO',\r\n 'CT',\r\n 'DC',\r\n 'DE',\r\n 'FL',\r\n 'GA',\r\n 'HI',\r\n 'IA',\r\n 'ID',\r\n 'IL',\r\n 'IN',\r\n 'KS',\r\n 'KY',\r\n 'LA',\r\n 'MA',\r\n 'MD',\r\n 'ME',\r\n 'MI',\r\n 'MN',\r\n 'MO',\r\n 'MS',\r\n 'MT',\r\n 'NC',\r\n 'NE',\r\n 'NH',\r\n 'NJ',\r\n 'NM',\r\n 'NV',\r\n 'NY',\r\n 'ND',\r\n 'OH',\r\n 'OK',\r\n 'OR',\r\n 'PA',\r\n 'PR',\r\n 'RI',\r\n 'SC',\r\n 'SD',\r\n 'TN',\r\n 'TX',\r\n 'UT',\r\n 'VT',\r\n 'VA',\r\n 'WA',\r\n 'WI',\r\n 'WV',\r\n 'WY',\r\n ]}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.zip}>\r\n <InputLabel htmlFor={'zip'}>Zip Code</InputLabel>\r\n <InputError>{safeAccess(errors, 'zip.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'zip'} defaultValue={safeAccess(data, 'zip')} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n }\r\n\r\n enableSubmit = () => {\r\n return this.checkNoMissingData() && this.checkNoErrors();\r\n };\r\n\r\n checkNoMissingData = () => {\r\n const { data = {} } = this.props;\r\n return true;\r\n };\r\n\r\n checkNoErrors = () => {\r\n const { errors = {} } = this.props;\r\n\r\n let retVal =\r\n (!errors.employerName || errors.employerName.detail === undefined) &&\r\n (!errors.jobTitle || errors.jobTitle.detail === undefined) &&\r\n !errors.startDate &&\r\n !errors.endDate &&\r\n !errors.ein &&\r\n !errors.payPeriods &&\r\n (!errors.hours || errors.hours.detail === undefined) &&\r\n (!errors.address1 || errors.address1.detail === undefined) &&\r\n (!errors.city || errors.city.detail === undefined) &&\r\n (!errors.state || errors.state.detail === undefined) &&\r\n (!errors.zip || errors.zip.detail === undefined);\r\n return retVal;\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (!this.props.isLoading) {\r\n this.props.onSubmit();\r\n }\r\n };\r\n\r\n render() {\r\n const { action, closeForm, errors = {}, isLoading, isOpen } = this.props;\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={true}>\r\n <Card\r\n brand={errors.generalErrors || action.toUpperCase() === 'DELETE' ? 'danger' : undefined}\r\n >\r\n <CardHeader>{action} Employer</CardHeader>\r\n <CardBody>\r\n {errors.generalErrors &&\r\n errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n\r\n <TextLeft>{this.getForm()}</TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Fade show={this.enableSubmit()}>\r\n <Button\r\n brand={action.toUpperCase() === 'DELETE' ? 'danger' : 'success'}\r\n onClick={(e) => this.submit(e)}\r\n >\r\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : action + ' employer'}\r\n </Button>\r\n </Fade>\r\n <Fade show={!isLoading && !this.checkNoMissingData()}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade show={!isLoading && this.checkNoMissingData() && !this.checkNoErrors()}>\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {};\r\n};\r\n\r\nexport default connect(mapStateToProps)(EmploymentHistoryForm);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Button, Table } from 'fiducius-ui';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\r\n\r\nimport { convertIsoToSlash, startCase } from '../../utils';\r\nimport { faTrash } from '@fortawesome/pro-regular-svg-icons';\r\n\r\nconst EmploymentHistoryTable = ({\r\n employers = {},\r\n onEditEmployer,\r\n onDeleteEmployer,\r\n showEdit,\r\n showDelete,\r\n}) => {\r\n if (Object.keys(employers).length === 0) {\r\n return null;\r\n }\r\n\r\n const deleteButtonPos = showEdit ? 7 : 6;\r\n const headers = ['id', 'employerName', 'startDate', 'endDate', 'employmentType', 'hours'];\r\n const displayHeaders = ['Employer', 'Start Date', 'End Date', 'FT/PT', 'Hours'];\r\n const columns = [\r\n {},\r\n { sortable: true },\r\n { sortable: true, renderer: convertIsoToSlash },\r\n { sortable: true, renderer: convertIsoToSlash },\r\n { sortable: true },\r\n { sortable: true },\r\n ];\r\n if (showEdit) {\r\n headers.push('edit');\r\n displayHeaders.push('Edit');\r\n columns.push({ width: '10%' });\r\n }\r\n if (showDelete) {\r\n headers.push('delete');\r\n displayHeaders.push('Delete');\r\n columns.push({ width: '10%' });\r\n }\r\n\r\n let body = Object.values(employers).map((a) => headers.map((h) => a[h]));\r\n\r\n body.forEach((row) => {\r\n const id = row[0];\r\n row[4] = row[4] === 'FULL' ? 'FT' : row[4] === 'PART' ? 'PT' : '';\r\n if (showEdit) {\r\n row[6] = (\r\n <Button invert brand=\"secondary\" onClick={() => onEditEmployer(id)}>\r\n <FontAwesomeIcon icon={faEdit} fixedWidth />\r\n </Button>\r\n );\r\n }\r\n\r\n if (showDelete) {\r\n row[deleteButtonPos] = (\r\n <Button\r\n invert\r\n brand=\"danger\"\r\n onClick={() => onDeleteEmployer(id)}\r\n disabled={!employers[id].deletable}\r\n title={\r\n !employers[id].deletable\r\n ? 'You are unable to delete an employer that you previously submitted an Employment Certification for.'\r\n : ''\r\n }\r\n >\r\n <FontAwesomeIcon icon={faTrash} fixedWidth />\r\n </Button>\r\n );\r\n }\r\n\r\n delete row[0];\r\n });\r\n\r\n return <Table body={body} columns={columns} header={displayHeaders} />;\r\n};\r\n\r\nEmploymentHistoryTable.propTypes = {\r\n employers: t.object,\r\n onEditEmployer: t.func,\r\n onDeleteEmployer: t.func,\r\n showEdit: t.bool,\r\n showDelete: t.bool,\r\n};\r\n\r\nexport default EmploymentHistoryTable;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('employmentHistory', types);\r\n","import actions from './actions';\r\nimport { keyById, normalize, patchApi, resourceOperationsGenerator } from '../../utils';\r\nimport { getToken } from '../../auth';\r\nimport { EmploymentHistoryValidator } from './validators';\r\n\r\nconst employmentHistoryValidator = new EmploymentHistoryValidator();\r\n\r\nconst endpointHandler = {\r\n endpoint: '/employment-history',\r\n customResponseHandler: null,\r\n resourceType: 'employment-history',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'employmentHistory',\r\n actions,\r\n null,\r\n employmentHistoryValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n employmentHistoryClearForm,\r\n employmentHistoryCopyResourceToForm,\r\n employmentHistoryHandleFormChange,\r\n employmentHistoryLoadResource,\r\n employmentHistoryLoadCollection,\r\n employmentHistoryCreateResource,\r\n employmentHistoryDeleteResource,\r\n} = operations;\r\n\r\nconst employmentCreateResource = () => async (dispatch, getState) => {\r\n const addedId = await dispatch(employmentHistoryCreateResource());\r\n //await dispatch(employmentHistoryLoadCollection());\r\n return addedId;\r\n};\r\n\r\nconst employmentUpdateResource = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n try {\r\n dispatch(actions.employmentHistoryUpdateResourceRequest());\r\n\r\n const patchData = normalize('employment-history', state.employmentHistory.form, id);\r\n let data = await patchApi(getToken(state), `/employment-history/${id}`, patchData);\r\n\r\n dispatch(actions.employmentHistoryUpdateResourceResponse());\r\n\r\n let newData = {};\r\n newData[id] = data[0];\r\n\r\n const cache = { ...state.employmentHistory.cache, ...newData };\r\n await dispatch(operations.employmentHistoryHandleCacheChange(cache));\r\n\r\n dispatch(actions.employmentHistoryUpdateResourceSuccess());\r\n } catch (error) {\r\n dispatch(operations.employmentHistoryHandleError(error));\r\n dispatch(actions.employmentHistoryUpdateResourceFailure(error));\r\n }\r\n};\r\n\r\nconst empcertSaveApproverInfo = (stepState) => async (dispatch, getState) => {\r\n const state = getState();\r\n let form = state.employmentHistory.form;\r\n let employmentHistoryCache = state.employmentHistory.cache;\r\n\r\n Object.keys(form).forEach((data) => {\r\n let id = data.substring(data.indexOf('_') + 1);\r\n let attribute = data.substring(0, data.indexOf('_'));\r\n\r\n let attributeObject = {};\r\n attributeObject['' + attribute] = form[data];\r\n\r\n if (attributeObject.empcertApproverEmail !== undefined) {\r\n employmentHistoryCache[id].empcertApproverEmail = attributeObject.empcertApproverEmail;\r\n }\r\n\r\n if (attributeObject.empcertApproverUnknown !== undefined) {\r\n employmentHistoryCache[id].empcertApproverUnknown = attributeObject.empcertApproverUnknown;\r\n }\r\n });\r\n\r\n // Send each needed employer update to the API\r\n Object.keys(employmentHistoryCache).forEach((e) => {\r\n if (employmentHistoryCache[e].empcertNeeded) {\r\n try {\r\n employmentHistoryCache[e].updatingApprover = true;\r\n dispatch(actions.employmentHistoryUpdateResourceRequest());\r\n\r\n const patchData = normalize('employment-history', employmentHistoryCache[e], e);\r\n let data = patchApi(getToken(state), `/employment-history/${e}`, patchData);\r\n\r\n dispatch(actions.employmentHistoryUpdateResourceResponse());\r\n\r\n let newData = {};\r\n newData[e] = data[0];\r\n\r\n const cache = { ...state.employmentHistory.cache, ...newData };\r\n dispatch(operations.employmentHistoryHandleCacheChange(cache));\r\n\r\n dispatch(actions.employmentHistoryUpdateResourceSuccess());\r\n stepState();\r\n } catch (error) {\r\n dispatch(operations.employmentHistoryHandleError(error));\r\n dispatch(actions.employmentHistoryUpdateResourceFailure(error));\r\n }\r\n }\r\n });\r\n};\r\n\r\nconst employmentDeleteResource = (id) => async (dispatch) => {\r\n await dispatch(employmentHistoryDeleteResource(id));\r\n //await dispatch(employmentHistoryLoadCollection());\r\n};\r\n\r\nexport {\r\n employmentHistoryClearForm,\r\n employmentHistoryCopyResourceToForm,\r\n employmentHistoryHandleFormChange,\r\n employmentHistoryLoadResource,\r\n employmentHistoryLoadCollection,\r\n employmentCreateResource,\r\n employmentDeleteResource,\r\n employmentUpdateResource,\r\n empcertSaveApproverInfo,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class EmploymentHistoryValidator extends FormValidator {\r\n employmentClassification(validator, state) {\r\n validator.isRequired();\r\n }\r\n\r\n employmentType(validator, state) {\r\n validator.isRequired();\r\n }\r\n\r\n employerName(validator, state) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n }\r\n\r\n jobTitle(validator, state) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n\r\n startDate(validator, state) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n }\r\n }\r\n\r\n endDate(validator, state) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validDate();\r\n validator.isAfterDate('10/01/2007');\r\n }\r\n }\r\n\r\n ein(validator, state) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(/(^$[0-9]{2}|-[0-9]{7}$)/g, 'must be formatted as ##-#######');\r\n }\r\n }\r\n\r\n payPeriods(validator, state) {\r\n if (validator.value !== undefined && validator.value !== '') {\r\n validator.validNumber();\r\n }\r\n }\r\n\r\n hours(validator, state) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n validator.isGreaterThanOrEqualTo(1);\r\n }\r\n\r\n address1(validator, state) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n address2(validator, state) {\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n city(validator, state) {\r\n validator.isRequired();\r\n validator.hasMaxLength(30);\r\n }\r\n\r\n state(validator, state) {\r\n validator.isRequired();\r\n validator.hasMaxLength(2);\r\n }\r\n\r\n zip(validator, state) {\r\n validator.isRequired();\r\n validator.hasMaxLength(10);\r\n validator.matchesRegex(\r\n /^[0-9]{5}($|-[0-9]{4}$)/g,\r\n 'must be formatted as either ##### or #####-####'\r\n );\r\n }\r\n}\r\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlusCircle } from '@fortawesome/pro-solid-svg-icons/faPlusCircle';\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\n\nimport {\n AsyncLoader,\n Badge,\n Button,\n Card,\n CardBody,\n CardTitle,\n CardText,\n Modal,\n CardFooter,\n Lede,\n} from 'fiducius-ui';\n\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../utils';\nimport { todosLoadCollection } from '../../todos';\nimport { withPermissions } from '../../routing';\nimport { getUserId } from '../../auth';\n\nimport EmploymentHistoryForm from '../components/employment-history-form';\nimport EmploymentHistoryTable from '../components/employment-history-table';\nimport {\n employmentHistoryClearForm,\n employmentHistoryCopyResourceToForm,\n employmentDeleteResource,\n employmentUpdateResource,\n employmentHistoryHandleFormChange,\n employmentCreateResource,\n employmentHistoryLoadCollection,\n} from '../redux/operations';\n\nconst StyledButton = styled(Button)`\n margin-right: 1em;\n margin-top: 1em;\n`;\n\nconst PaddedIcon = styled(FontAwesomeIcon)`\n margin-right: 0.45em;\n`;\n\nconst PaddedBadge = styled(Badge)`\n margin-right: 0.45em;\n font-size: 0.75em;\n top: -0.75rem;\n`;\n\nconst FlexRow = styled.div`\n display: flex;\n justify-content: space-between;\n margin: 0.5em;\n`;\n\nconst StyledLede = styled(Lede)`\n color: ${(p) => (p.theme.themeName === 'greenlight' ? p.theme.textPrimary : 'inherit')};\n`;\n\nconst AlignTextLeft = styled.div`\n text-align: left;\n`;\n\nclass Employers extends React.Component {\n static propTypes = {\n id: t.string.isRequired,\n employers: t.object,\n actionRequest: t.object,\n requests: t.object,\n clearForm: t.func.isRequired,\n createEmployer: t.func.isRequired,\n checkQualification: t.func.isRequired,\n deleteEmployer: t.func.isRequired,\n errors: t.object,\n form: t.object,\n handleForm: t.func.isRequired,\n hydrateForm: t.func.isRequired,\n reload: t.func.isRequired,\n reloadWithTodos: t.func.isRequired,\n request: t.object,\n updateEmployer: t.func.isRequired,\n permissions: t.object,\n toDos: t.object,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n formId: null,\n showForm: false,\n action: '',\n openPartTimeEmpModal: false,\n };\n this.handlePartTimeEmpModal = this.handlePartTimeEmpModal.bind(this);\n }\n\n componentDidMount() {}\n\n componentDidUpdate(prevProps, prevState) {\n const action = prevState.action;\n const createLoading = prevProps.requests.createResource.isLoading;\n const updateLoading = prevProps.requests.updateResource.isLoading;\n const deleteLoading = prevProps.requests.deleteResource.isLoading;\n\n const create = this.props.requests.createResource;\n const update = this.props.requests.updateResource;\n const deleteR = this.props.requests.deleteResource;\n\n let processCloseForm = false;\n switch (action) {\n case 'Add':\n processCloseForm = this.checkCloseForm(createLoading, create);\n\n break;\n case 'Update':\n processCloseForm = this.checkCloseForm(updateLoading, update);\n break;\n case 'Delete':\n processCloseForm = this.checkCloseForm(deleteLoading, deleteR);\n break;\n default:\n break;\n }\n\n if (processCloseForm) {\n this.setState({ ...this.state, showForm: false, action: '' }, () =>\n this.props.reloadWithTodos()\n );\n }\n }\n\n checkCloseForm = (prevRequestLoading, currentRequest) => {\n return prevRequestLoading && !currentRequest.isLoading && !currentRequest.hasFailed;\n };\n\n closeForm = () => {\n this.props.clearForm();\n this.setState({ ...this.state, showForm: false });\n };\n\n onAddEmployer = () => this.setState({ formId: null, showForm: true, action: 'Add' });\n\n onEditEmployer = (id) => {\n this.props.hydrateForm(id);\n this.setState({ formId: id, showForm: true, action: 'Update' });\n };\n\n onDeleteEmployer = (id) => {\n this.props.hydrateForm(id);\n this.setState({ formId: id, showForm: true, action: 'Delete' });\n };\n\n onChange = debounce((employer, id, attributes) => {\n if (attributes === 'endDate' && employer.endDate === '') {\n employer.endDate = null;\n }\n this.props.handleForm({ ...this.props.form, ...employer }, [attributes]);\n }, 250);\n\n onCreate = () => this.props.createEmployer();\n\n onUpdateOrDelete = () => {\n if (this.state.action === 'Update') {\n this.props.updateEmployer(this.props.form.id);\n } else if (this.state.action === 'Delete') {\n this.props.deleteEmployer(this.props.form.id);\n }\n };\n\n getIconForAdd() {\n const { toDos } = this.props;\n /*if (\n Object.keys(toDos).includes('403') ||\n Object.keys(toDos).includes('13') ||\n Object.keys(toDos).includes('502')\n ) {\n return (\n <PaddedBadge brand=\"primary\">\n <FontAwesomeIcon icon={faSolidExclamation} />\n </PaddedBadge>\n );\n } else {*/\n return <PaddedIcon icon={faPlusCircle} fixedWidth />;\n //}\n }\n\n handlePartTimeEmpModal() {\n this.setState({ ...this.state, openPartTimeEmpModal: !this.state.openPartTimeEmpModal });\n }\n\n partTimeEmpModalContent() {\n return (\n <Modal isOpen={this.state.openPartTimeEmpModal} fullWidth={true}>\n <Card>\n <CardBody>\n <CardText>\n <CardTitle>Part-time Employment</CardTitle>\n <AlignTextLeft>\n <FlexRow>\n <StyledLede>\n You can provide part-time employment if you worked at more than one employer\n during the same period and worked an average of at least 30 hours per week, per\n PSLF requirements.\n </StyledLede>\n </FlexRow>\n </AlignTextLeft>\n </CardText>\n </CardBody>\n <CardFooter>\n <Button brand=\"lowContrast\" onClick={this.handlePartTimeEmpModal}>\n Close\n </Button>\n </CardFooter>\n </Card>\n </Modal>\n );\n }\n\n render() {\n const {\n employers,\n actionRequest,\n errors,\n form,\n request,\n checkQualification,\n id,\n permissions,\n } = this.props;\n const { formId, showForm } = this.state;\n const forReducedIDR =\n permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null;\n const showEdit =\n forReducedIDR ||\n ['Questionnaire', 'Agreement', 'NoQpComplete'].includes(\n permissions.lwoSteps.find((a) => a.stepCurrent).id\n )\n ? true\n : false;\n const showDelete =\n forReducedIDR ||\n ['Questionnaire', 'Agreement', 'NoQpComplete'].includes(\n permissions.lwoSteps.find((a) => a.stepCurrent).id\n )\n ? true\n : false;\n return (\n <>\n <div className=\"row\">\n <div className=\"col\">\n {showEdit && (\n <StyledButton brand=\"primary\" onClick={this.onAddEmployer}>\n {this.getIconForAdd()}Add Employer\n </StyledButton>\n )}\n {!forReducedIDR && (\n <StyledButton brand=\"primary\" onClick={this.handlePartTimeEmpModal}>\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\n Part-time Employment\n </StyledButton>\n )}\n </div>\n </div>\n\n <AsyncLoader request={request} emptyMessage={'You have no Employers on file.'}>\n {employers && (\n <>\n <EmploymentHistoryTable\n employers={employers}\n onEditEmployer={this.onEditEmployer}\n onDeleteEmployer={this.onDeleteEmployer}\n showDelete={showDelete}\n showEdit={showEdit}\n />\n {Object.keys(employers).length == 0 && <p> There aren't any employers </p>}\n {showEdit && !forReducedIDR && (\n <div className=\"row\">\n <div className=\"col-12\">\n <StyledButton\n brand=\"primary\"\n onClick={() => {\n checkQualification(id);\n }}\n >\n Calculate My Results\n </StyledButton>\n </div>\n </div>\n )}\n </>\n )}\n </AsyncLoader>\n {this.partTimeEmpModalContent()}\n {showForm && (\n <EmploymentHistoryForm\n action={formId ? this.state.action : 'Create'}\n closeForm={this.closeForm}\n data={form}\n errors={errors}\n isLoading={actionRequest.isLoading}\n isOpen={showForm}\n onChange={this.onChange}\n onSubmit={formId ? this.onUpdateOrDelete : this.onCreate}\n />\n )}\n </>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const { cache, errors, form, requests } = state.employmentHistory;\n\n return {\n id: getUserId(state),\n employers: cache,\n actionRequest: mergeRequestStatuses([\n requests.createResource,\n requests.updateResource,\n requests.deleteResource,\n ]),\n errors: errors,\n form: form,\n request: mergeRequestStatuses([requests.loadCollection, requests.updateResource]),\n requests: requests,\n toDos: safeAccess(state, 'todos.cache', {}),\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n clearForm: () => dispatch(employmentHistoryClearForm()),\n createEmployer: async () => {\n await dispatch(employmentCreateResource());\n },\n reload: () => dispatch(employmentHistoryLoadCollection()),\n reloadWithTodos: () => {\n dispatch(employmentHistoryClearForm());\n dispatch(employmentHistoryLoadCollection());\n dispatch(todosLoadCollection());\n },\n handleForm: (employer, attributes) =>\n dispatch(employmentHistoryHandleFormChange(employer, attributes)),\n hydrateForm: async (id) => await dispatch(employmentHistoryCopyResourceToForm(id)),\n updateEmployer: async (id) => {\n await dispatch(employmentUpdateResource(id));\n },\n deleteEmployer: async (id) => {\n await dispatch(employmentDeleteResource(id));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Employers));\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardHeader,\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n InputCheckbox,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../root';\r\nimport { Fade } from '../../routing';\r\nimport { connect } from 'react-redux';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst StyledCheckbox = styled.div`\r\n & > label.input-checkbox {\r\n margin-bottom: 0;\r\n color: ${(p) => p.theme.textPrimary};\r\n }\r\n`;\r\n\r\nconst EmploymentApproverForm = ({\r\n data = {},\r\n errors = {},\r\n onChange,\r\n onSubmit,\r\n isLoading,\r\n employers = {},\r\n stepState,\r\n isReducedIDREmpCert,\r\n}) => {\r\n const getForm = () => {\r\n return (\r\n <Form defaults={data} handleChange={onChange} id={data.id || 'create'} onSubmit={onSubmit}>\r\n {Object.keys(employers).map((key) => {\r\n return (\r\n <div key={key}>\r\n {employers[key].empcertNeeded && (\r\n <div className=\"row\" key={key}>\r\n <div className=\"col-12 col-md-12\">\r\n {approverEmailFromEligFile(key) && (\r\n <p>\r\n {' '}\r\n This authorized official was provided from an eligibility file. Click Save\r\n to continue.{' '}\r\n </p>\r\n )}\r\n {!approverEmailFromEligFile(key) && approverEmailFromPartnerSetup(key) && (\r\n <p>\r\n {' '}\r\n This authorized official was provided within the partnership setup. Click\r\n Save to continue.{' '}\r\n </p>\r\n )}\r\n </div>\r\n <div className=\"col-12 col-md-12\">\r\n <InputWrapper\r\n error={\r\n errors &&\r\n (errors[`empcertApproverEmail_${key}`] ||\r\n errors[`empcertApproverClientEmail_${key}`])\r\n }\r\n >\r\n <InputLabel htmlFor={`empcertApproverEmail_${key}`}>\r\n Authorized Official's Email for <b>{employers[key].employerName}</b>\r\n </InputLabel>\r\n {errors && errors[`empcertApproverEmail_${key}`] && (\r\n <InputError>Please enter a valid email address</InputError>\r\n )}\r\n {errors && errors[`empcertApproverClientEmail_${key}`] && (\r\n <InputError>The email address cannot be your own</InputError>\r\n )}\r\n <InputGroup>\r\n <InputText\r\n name={`empcertApproverEmail_${key}`}\r\n defaultValue={getEmpcertApproverEmail(key)}\r\n disabled={\r\n approverEmailFromEligFile(key) || approverEmailFromPartnerSetup(key)\r\n }\r\n />\r\n </InputGroup>\r\n <StyledCheckbox>\r\n <InputCheckbox\r\n name={`empcertApproverUnknown_${key}`}\r\n defaultChecked={employers[key].empcertApproverUnknown}\r\n label=\"I do not know my authorized official's email\"\r\n disabled={\r\n approverEmailFromEligFile(key) || approverEmailFromPartnerSetup(key)\r\n }\r\n />\r\n </StyledCheckbox>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </Form>\r\n );\r\n };\r\n\r\n const enableSubmit = () => {\r\n return !foundErrors();\r\n };\r\n\r\n const foundErrors = () => {\r\n var errorCount = 0;\r\n\r\n // input text box must be email address OR checkbox is checked and email field is null\r\n Object.keys(employers).forEach((key) => {\r\n if (\r\n errors[`empcertApproverEmail_${key}`] === true ||\r\n errors[`empcertApproverClientEmail_${key}`] === true\r\n ) {\r\n errorCount++;\r\n }\r\n });\r\n\r\n return errorCount > 0;\r\n };\r\n\r\n const submit = (e) => {\r\n e.preventDefault();\r\n if (!isLoading) {\r\n onSubmit(stepState);\r\n }\r\n };\r\n\r\n const approverEmailFromEligFile = (key) => {\r\n return employers[key].eligfileEmpcertApproverEmail != null;\r\n };\r\n\r\n const approverEmailFromPartnerSetup = (key) => {\r\n return isReducedIDREmpCert && employers[key].emplifyAuthorizedOfficialEmail != null;\r\n };\r\n\r\n const getEmpcertApproverEmail = (key) => {\r\n let empcertApproverEmail = '';\r\n\r\n if (employers) {\r\n if (employers[key].eligfileEmpcertApproverEmail !== null) {\r\n empcertApproverEmail = employers[key].eligfileEmpcertApproverEmail;\r\n } else if (employers[key].emplifyAuthorizedOfficialEmail !== null) {\r\n empcertApproverEmail = employers[key].emplifyAuthorizedOfficialEmail;\r\n } else {\r\n empcertApproverEmail =\r\n employers[key].empcertApproverEmail === null ? '' : employers[key].empcertApproverEmail;\r\n }\r\n\r\n return empcertApproverEmail;\r\n }\r\n\r\n return empcertApproverEmail;\r\n };\r\n\r\n return (\r\n <Card brand={errors.generalErrors || undefined}>\r\n <CardHeader>Employer List</CardHeader>\r\n <CardBody>\r\n {errors.generalErrors &&\r\n errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n\r\n <TextLeft>{getForm()}</TextLeft>\r\n\r\n <FlexBetween>\r\n <Fade id=\"loading_fade\" show={enableSubmit()}>\r\n <Button brand={'success'} onClick={(e) => submit(e)}>\r\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Save'}\r\n </Button>\r\n </Fade>\r\n <Fade id=\"show_fade\" show={!isLoading && foundErrors()}>\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardBody>\r\n </Card>\r\n );\r\n};\r\n\r\nEmploymentApproverForm.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n isReducedIDREmpCert: t.bool,\r\n};\r\nconst mapStateToProps = (state) => {\r\n return {};\r\n};\r\n\r\nexport default connect(mapStateToProps)(EmploymentApproverForm);\r\n","import React, { useState, useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { AsyncLoader } from 'fiducius-ui';\r\n\r\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../utils';\r\nimport { todosLoadCollection } from '../../todos';\r\nimport { withPermissions } from '../../routing';\r\nimport { getUserId } from '../../auth';\r\n\r\nimport EmploymentApproverForm from '../components/employment-approver-form';\r\n\r\nimport {\r\n employmentHistoryClearForm,\r\n employmentHistoryCopyResourceToForm,\r\n employmentDeleteResource,\r\n employmentUpdateResource,\r\n employmentHistoryHandleFormChange,\r\n employmentCreateResource,\r\n employmentHistoryLoadCollection,\r\n empcertSaveApproverInfo,\r\n} from '../redux/operations';\r\n\r\nconst EmployerApprovers = ({\r\n employers,\r\n request,\r\n form,\r\n handleForm,\r\n submit,\r\n stepState,\r\n isReducedIDREmpCert,\r\n}) => {\r\n const [errorState, setErrorState] = useState({});\r\n\r\n useEffect(() => {\r\n checkNoMissingData();\r\n }, []);\r\n\r\n const emailPattern = /^([a-zA-Z\\d!#$%&'*+\\-/=?^_`{}|]+[_+.-])*[a-zA-Z\\d!#$%&'*+\\-/=?^_`{}|']+@(\\w+[.-])*\\w{1,63}\\.[a-zA-Z]+$/g;\r\n const multipleEmailWithoutSemicolon = /^.+[^;][\\s]\\S+$/g;\r\n\r\n const isValidEmail = (value) => {\r\n if (value.includes(';') || value.match(multipleEmailWithoutSemicolon)) {\r\n let failure = false;\r\n let array = value.split(';');\r\n array.forEach((value) => {\r\n if ((value !== null && !value.trim().match(emailPattern)) || array.length === 1) {\r\n failure = true;\r\n }\r\n });\r\n\r\n if (failure) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n if (value !== null && !value.match(emailPattern)) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n };\r\n\r\n const handleChange = debounce((formState, attribute) => {\r\n const newData = { ...form, ...formState };\r\n\r\n validateForm(newData, attribute);\r\n handleForm(newData, Object.keys(newData));\r\n }, 500);\r\n\r\n const validateForm = (data) => {\r\n var formErrors = {};\r\n\r\n if (employers) {\r\n Object.keys(employers).forEach((key) => {\r\n if (employers[key].empcertNeeded) {\r\n // Verify that input is in valid email address format OR corresponding checkbox is checked\r\n var employerId = key;\r\n\r\n var isEmployerUnknown = data[`empcertApproverUnknown_${employerId}`];\r\n var empcertApproverEmail = data[`empcertApproverEmail_${employerId}`];\r\n var clientEmailAddress = employers[key].clientEmail;\r\n var clientUsername = employers[key].clientUsername;\r\n\r\n if (!isEmployerUnknown && empcertApproverEmail !== null) {\r\n if (empcertApproverEmail !== undefined && !isValidEmail(empcertApproverEmail)) {\r\n let newError = { ...formErrors };\r\n newError[`empcertApproverEmail_${employerId}`] = true;\r\n formErrors = newError;\r\n }\r\n // check to make sure the email isn't the client's email here\r\n else if (\r\n empcertApproverEmail !== undefined &&\r\n isClientEmailAddress(empcertApproverEmail, clientEmailAddress, clientUsername)\r\n ) {\r\n let newError = { ...formErrors };\r\n newError[`empcertApproverClientEmail_${employerId}`] = true;\r\n formErrors = newError;\r\n } else {\r\n let newError = { ...formErrors };\r\n newError[`empcertApproverEmail_${employerId}`] = false;\r\n formErrors = newError;\r\n }\r\n } else {\r\n let newError = { ...formErrors };\r\n newError[`empcertApproverEmail_${employerId}`] = false;\r\n formErrors = newError;\r\n }\r\n }\r\n });\r\n }\r\n\r\n setErrorState(formErrors);\r\n };\r\n\r\n const isClientEmailAddress = (emailAddressValue, clientEmailAddress, clientUsername) => {\r\n // If the email address is found, return true. Split on comma and semicolon\r\n var emailList = clientEmailAddress.split(/[;,]+/).map((e) => e.toLowerCase().trim());\r\n emailList.push(clientUsername);\r\n\r\n if (emailList.includes(emailAddressValue.toLowerCase())) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const getEmpcertApproverEmail = (key) => {\r\n let empcertApproverEmail = '';\r\n\r\n if (employers) {\r\n if (employers[key].eligfileEmpcertApproverEmail !== null) {\r\n empcertApproverEmail = employers[key].eligfileEmpcertApproverEmail;\r\n } else if (employers[key].emplifyAuthorizedOfficialEmail !== null) {\r\n empcertApproverEmail = employers[key].emplifyAuthorizedOfficialEmail;\r\n } else {\r\n empcertApproverEmail =\r\n employers[key].empcertApproverEmail === null ? '' : employers[key].empcertApproverEmail;\r\n }\r\n\r\n return empcertApproverEmail;\r\n }\r\n\r\n return empcertApproverEmail;\r\n };\r\n\r\n const checkNoMissingData = () => {\r\n var formErrors = {};\r\n\r\n if (employers) {\r\n Object.keys(employers).forEach((key) => {\r\n if (employers[key].empcertNeeded) {\r\n //Load dynamic data into form\r\n let newFormData = { ...form };\r\n var approverEmail = getEmpcertApproverEmail(key);\r\n var approverUnknown =\r\n employers[key].empcertApproverUnknown === null\r\n ? ''\r\n : employers[key].empcertApproverUnknown;\r\n newFormData[`empcertApproverEmail_${key}`] = approverEmail;\r\n newFormData[`empcertApproverUnknown_${key}`] = approverUnknown;\r\n\r\n form = newFormData;\r\n handleForm(form, Object.keys(form));\r\n\r\n if (approverEmail.length === 0 && employers[key].empcertApproverUnknown !== true) {\r\n // create new error\r\n var newError = { ...formErrors };\r\n newError[`empcertApproverEmail_${key}`] = true;\r\n formErrors = newError;\r\n }\r\n }\r\n });\r\n }\r\n\r\n setErrorState(formErrors);\r\n };\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request} emptyMessage={'You have no Employers on file.'}>\r\n {employers && (\r\n <>\r\n <EmploymentApproverForm\r\n employers={employers}\r\n onChange={handleChange}\r\n onSubmit={submit}\r\n errors={errorState}\r\n stepState={stepState}\r\n isReducedIDREmpCert={isReducedIDREmpCert}\r\n />\r\n </>\r\n )}\r\n </AsyncLoader>\r\n </>\r\n );\r\n};\r\n\r\nEmployerApprovers.propTypes = {\r\n id: t.string.isRequired,\r\n employers: t.object,\r\n actionRequest: t.object,\r\n requests: t.object,\r\n clearForm: t.func.isRequired,\r\n createEmployer: t.func.isRequired,\r\n checkQualification: t.func.isRequired,\r\n deleteEmployer: t.func.isRequired,\r\n errors: t.object,\r\n form: t.object,\r\n handleForm: t.func.isRequired,\r\n hydrateForm: t.func.isRequired,\r\n reload: t.func.isRequired,\r\n reloadWithTodos: t.func.isRequired,\r\n request: t.object,\r\n updateEmployer: t.func.isRequired,\r\n permissions: t.object,\r\n toDos: t.object,\r\n isReducedIDREmpCert: t.bool,\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cache, errors, form, requests } = state.employmentHistory;\r\n\r\n return {\r\n id: getUserId(state),\r\n employers: cache,\r\n actionRequest: mergeRequestStatuses([\r\n requests.createResource,\r\n requests.updateResource,\r\n requests.deleteResource,\r\n ]),\r\n errors: errors,\r\n form: form,\r\n request: mergeRequestStatuses([requests.loadCollection, requests.updateResource]),\r\n requests: requests,\r\n toDos: safeAccess(state, 'todos.cache', {}),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n clearForm: () => dispatch(employmentHistoryClearForm()),\r\n createEmployer: async () => {\r\n await dispatch(employmentCreateResource());\r\n },\r\n reload: () => dispatch(employmentHistoryLoadCollection()),\r\n reloadWithTodos: () => {\r\n dispatch(employmentHistoryClearForm());\r\n dispatch(employmentHistoryLoadCollection());\r\n dispatch(todosLoadCollection());\r\n },\r\n handleForm: (employer, attributes) =>\r\n dispatch(employmentHistoryHandleFormChange(employer, attributes)),\r\n hydrateForm: async (id) => await dispatch(employmentHistoryCopyResourceToForm(id)),\r\n updateEmployer: async (id) => {\r\n await dispatch(employmentUpdateResource(id));\r\n },\r\n submit: async (stepState) => {\r\n await dispatch(empcertSaveApproverInfo(stepState));\r\n },\r\n deleteEmployer: async (id) => {\r\n await dispatch(employmentDeleteResource(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmployerApprovers));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Button,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport StandardConfirmation from '../components/standard-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport StepDisplay from '../components/step-display';\r\nimport { EmployerApprovers, employmentHistoryLoadCollection } from '../../../employment-history';\r\n\r\nclass EmpCert extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showStep1: false, showStep1b: false, showStep2: false, showStep3: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load();\r\n const pathName = window.location.pathname;\r\n if (pathName.includes('/step')) {\r\n this.setState({\r\n ...this.state,\r\n showStep1: pathName.includes('/step-1'),\r\n showStep2: pathName.includes('/step-2'),\r\n showStep3: pathName.includes('/step-3'),\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n handleStep1Click = () => {\r\n this.handleSectionClick('step1');\r\n };\r\n handleStep2Click = () => {\r\n this.handleSectionClick('step2');\r\n };\r\n handleStep3Click = () => {\r\n this.handleSectionClick('step3');\r\n };\r\n\r\n handleSectionClick = (sectionName) => {\r\n if (sectionName === 'step1') {\r\n this.setState(\r\n {\r\n showStep1: true,\r\n showStep2: false,\r\n showStep3: false,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n } else if (sectionName === 'step2') {\r\n this.setState(\r\n {\r\n showStep1: false,\r\n showStep2: true,\r\n showStep3: false,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n } else if (sectionName === 'step3') {\r\n this.setState(\r\n {\r\n showStep1: false,\r\n showStep2: false,\r\n showStep3: true,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n }\r\n };\r\n\r\n scrollToStep(section) {\r\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n getStep1Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'EmpCert');\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 106);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n } else {\r\n const nextToDo = todos.find((a) => a.id === 107 || a.id === 108);\r\n if (nextToDo !== undefined && nextToDo !== null) {\r\n retVal = 'success';\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStep2Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'EmpCert');\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 107);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n } else {\r\n const nextToDo = todos.find((a) => a.id === 108);\r\n if (nextToDo !== undefined && nextToDo !== null) {\r\n retVal = 'success';\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStep3Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'EmpCert');\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 108);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStep3RestrictionDate = () => {\r\n let retVal = undefined;\r\n const { permissions } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'EmpCert');\r\n if (empCertStep.stepDateRestriction !== undefined) {\r\n let stepRestriction = new Date(empCertStep.stepDateRestriction);\r\n retVal =\r\n (stepRestriction.getMonth() + 1).toString() +\r\n '/' +\r\n stepRestriction.getDate() +\r\n '/' +\r\n stepRestriction.getFullYear();\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { permissions } = this.props;\r\n const electronicEmpCertApprovalEnabled = permissions.electronicEmpcertEnabled;\r\n const step1Complete = this.getStep1Brand() === 'success';\r\n\r\n const restrictionDate = this.getStep3RestrictionDate();\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Employment Certification</CardTitle>\r\n <CardText>\r\n <p>Completing this step will certify your employment and previous loan payments.</p>\r\n <div className=\"row col-12\">\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button brand={this.getStep1Brand()} onClick={this.handleStep1Click}>\r\n Generate\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button brand={this.getStep2Brand()} onClick={this.handleStep2Click}>\r\n Submit\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button brand={this.getStep3Brand()} onClick={this.handleStep3Click}>\r\n Review\r\n </Button>\r\n </Lede>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n {this.state.showStep1 && !electronicEmpCertApprovalEnabled && (\r\n <div id=\"step1Section\">\r\n <DashboardSection title=\"Generate your Employment Certification\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay\r\n title={'Step 1 - Generate and Download Employment Certification form'}\r\n >\r\n <ul>\r\n <li>\r\n Please click the button below to generate your Employment Certification\r\n Form.\r\n </li>\r\n <li>\r\n After clicking the button, you will be taken to your My Documents page\r\n where you can download the file.\r\n </li>\r\n <li>\r\n Once you have downloaded the document, you can continue to follow the\r\n steps on this page.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n <StandardConfirmation stepId={106} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n\r\n {this.state.showStep1 && electronicEmpCertApprovalEnabled && (\r\n <div id=\"step1Section\">\r\n <DashboardSection title=\"Generate your Employment Certification\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 - Provide Your Authorized Official(s)'}>\r\n <ul>\r\n <li>\r\n Please provide the email of the authorized official for each employer\r\n listed below. If you do not know the email, please select \"I do not know\r\n my authorized official's email.\"\r\n </li>\r\n </ul>\r\n\r\n {(this.state.showStep1b || step1Complete) && (\r\n <p>You've completed this step.</p>\r\n )}\r\n\r\n {!this.state.showStep1b && !step1Complete && (\r\n <EmployerApprovers\r\n stepState={() => this.setState({ ...this.state, showStep1b: true })}\r\n checkQualification={() => {}}\r\n />\r\n )}\r\n </StepDisplay>\r\n </AsyncLoader>\r\n {(this.state.showStep1b || step1Complete) && (\r\n <>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay\r\n title={'Step 2 – Generate and Complete Employment Certification form'}\r\n >\r\n <ul>\r\n <li>\r\n Please click the button below to generate your Employment\r\n Certification form(s).\r\n </li>\r\n <li>\r\n After clicking the button, you will be directed to sign the first page\r\n of the form and an email will be sent to the authorized official(s)\r\n you provided to complete the second page of the form.\r\n </li>\r\n <li>\r\n If you selected \"I do not know my authorized official's email,\" you\r\n will be required to download the file from your{' '}\r\n <strong>My Documents</strong> page.\r\n <ul>\r\n <li>\r\n The first page will need to be completed with a hand-written\r\n signature at the bottom.\r\n </li>\r\n <li>\r\n You will need to provide the second page of the form to your\r\n employer for completion. Please check with your employer to\r\n determine who is authorized to complete the form.\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n <StandardConfirmation stepId={106} />\r\n </>\r\n )}\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n\r\n {this.state.showStep2 && !electronicEmpCertApprovalEnabled && (\r\n <div id=\"step2Section\">\r\n <DashboardSection title=\"Submit your Employment Certification\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 – Complete and send Employment Certification form'}>\r\n <ul>\r\n <li>\r\n Print the Employment Certification form in the My Documents section of\r\n your MyFiducius portal and <strong>hand sign</strong> page 1.\r\n </li>\r\n <li>\r\n Your employer must complete and <strong>hand sign</strong> the second\r\n page.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> The Department of Education does not accept\r\n electronic signatures on this document.\r\n </li>\r\n <li>\r\n Please verify your Social Security Number is on the first three pages of\r\n your Employment Certification(s) before submitting it.\r\n </li>\r\n <li>\r\n Questions 1 through 9 <strong>must</strong> be completed. Please read the\r\n answer to question 9 to determine if following questions need a response.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 2 – Upload the form(s) to your Fiducius account'}>\r\n <ul>\r\n <li>\r\n Upload the form under <strong>My Documents</strong>.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n <StandardConfirmation stepId={107} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep2 && electronicEmpCertApprovalEnabled && (\r\n <div id=\"step2Section\">\r\n <DashboardSection title=\"Submit your Employment Certification\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 – Complete and send Employment Certification form'}>\r\n <ul>\r\n <li>\r\n If you provided an authorized official's email, you will be required to\r\n complete the first page of the form electronically by selecting your\r\n employer(s) below.\r\n <ul>\r\n <li>\r\n The second page of the form will be sent to your employer for\r\n completion.\r\n </li>\r\n </ul>\r\n </li>\r\n <li>\r\n If you selected \"I do not know my authorized official's email,\" you will\r\n be required to download the file from your <strong>My Documents</strong>{' '}\r\n page and complete it in its entirety.\r\n </li>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on the first two\r\n pages of your employment certification(s) before submitting.\r\n </li>\r\n <li>\r\n The first page will need to be completed with a hand-written signature\r\n at the bottom.\r\n </li>\r\n <li>\r\n You will need to provide the second page of the form to your employer\r\n for completion. Please check with your employer to determine who is\r\n authorized to complete the form.\r\n </li>\r\n <li>\r\n Completed form(s) must be uploaded under your{' '}\r\n <strong>My Documents</strong> page.\r\n </li>\r\n </ul>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n <StandardConfirmation stepId={107} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep3 && (\r\n <div id=\"step3Section\">\r\n <DashboardSection title=\"Check on your Employment Certification\">\r\n <Card\r\n overlayCard={restrictionDate !== undefined && !permissions.isEmpcertCheckPaused}\r\n >\r\n {!permissions.isEmpcertCheckPaused && (\r\n <CardBody overlayCard hideOverlay={restrictionDate === undefined}>\r\n {restrictionDate !== undefined && (\r\n <>\r\n <CardTitle overlayCard>Wait for PSLF Application Results letter</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n Based on the average processing time for this document, it will be\r\n processed by your loan servicer on {restrictionDate} at the earliest*.\r\n You will not be able to confirm completion of this step until that date.\r\n </p>\r\n <p>\r\n *Please note: Your document is not guaranteed to be processed by this\r\n date. It is important to follow your steps closely.\r\n </p>\r\n </CardText>\r\n </>\r\n )}\r\n </CardBody>\r\n )}\r\n {permissions.isEmpcertCheckPaused && (\r\n <>\r\n <CardBody overlayCard>\r\n <>\r\n <CardTitle overlayCard>Application Pause</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n This step can not be completed at this time. Beginning{' '}\r\n <b>May 1, 2024</b>, the Department of Education changed how it processes\r\n the Public Service Loan Forgiveness Program documentation. As a result,\r\n the processing of Employment Certification documentation is paused{' '}\r\n <b>until July 2024</b>. Please return to your MyFiducius portal and\r\n complete it once Fiducius notifies you that the Department of Education\r\n has resumed processing, projected for <b>July 2024</b>.\r\n </p>\r\n </CardText>\r\n </>\r\n </CardBody>\r\n </>\r\n )}\r\n <CardBody\r\n disableChildren={\r\n restrictionDate !== undefined || permissions.isEmpcertCheckPaused\r\n }\r\n >\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay\r\n title={'Step 1 – Wait for Employment Certification approval letter'}\r\n >\r\n <ul>\r\n <li>This letter states your form was accepted.</li>\r\n <li>\r\n This typically arrives <strong>three to four weeks</strong> after the form\r\n is submitted.\r\n </li>\r\n <li>\r\n The letter typically arrives via U.S. mail; however, you may receive an\r\n email notification too.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 2 – Check on the status of the form'}>\r\n <ul>\r\n <li>\r\n Create or Login to your account at{' '}\r\n <a\r\n href=\"https://studentaid.gov\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Federal Student Aid\r\n </a>\r\n </li>\r\n <li>\r\n You should be able to complete this step{' '}\r\n <strong>six to seven weeks</strong> from your submission.\r\n </li>\r\n <li>\r\n Once you have received the initial confirmation letter, you can create an\r\n online account with Federal Student Aid.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay\r\n title={\r\n 'Step 3 – Loan(s) will transfer to Federal Student Aid (check every two to three weeks once you receive the approval letter)'\r\n }\r\n >\r\n <ul>\r\n <li>\r\n The transfer typically completes <strong>three to four months</strong>{' '}\r\n after the submission.\r\n </li>\r\n <li>\r\n Your entire Federal loan balance and repayment plan will transfer to\r\n Federal Student Aid.\r\n </li>\r\n <li>\r\n Confirm the total loan balance is $0 at your previous loan servicer(s).\r\n </li>\r\n <li>\r\n Go to your{' '}\r\n <a\r\n href=\"https://studentaid.gov\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n {' '}\r\n FSA\r\n </a>{' '}\r\n account to confirm that your loans are now showing.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 4 – Confirm completion'}>\r\n <ul>\r\n <li>\r\n Confirm the entire loan balance shown at your previous loan servicer(s)\r\n has been transferred to{' '}\r\n <a\r\n href=\"https://studentaid.gov\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n FSA\r\n </a>\r\n </li>\r\n <li>\r\n Please remember your employment certification form can take up to three\r\n months to process.\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have verified the transfer is\r\n complete.\r\n </strong>\r\n <br />\r\n <br />\r\n <strong>\r\n If you submitted your Employment Certification form more than three months\r\n ago and your loan balance has not transferred, please submit a Contact Us\r\n request on the left side of your portal. We will reply to your request after\r\n researching your account.\r\n </strong>\r\n </StepDisplay>\r\n {/*If you submitted your employment certification form more than three months ago and your loan\r\n balance has not transferred, contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a>{' '}\r\n option: 2.*/}\r\n </AsyncLoader>\r\n {!permissions.isEmpcertCheckPaused && <StandardConfirmation stepId={108} />}\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.selfServiceDocument.requests.updateResource,\r\n state.selfServiceDocument.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async () => {\r\n dispatch(employmentHistoryLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmpCert));\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('implementationResults');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n endpoint: '/implementation-information',\r\n customResponseHandler: null,\r\n resourceType: 'implementation-information',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'implementationResults',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null,\r\n null\r\n);\r\n\r\nconst { implementationResultsLoadResource, implementationResultsUpdateResource } = operations;\r\n\r\nexport { implementationResultsLoadResource, implementationResultsUpdateResource };\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('implementationResults', types);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('implementationResults', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nimport { implementationResultsLoadResource } from '../../../implementation-results';\r\n\r\nclass EmpCertFS extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n render() {\r\n const { data, request } = this.props;\r\n return (\r\n <div>\r\n <ForgivenessProgress />\r\n <AsyncLoader request={request}>\r\n {data.empCertReceived === false && (\r\n <DashboardSection>\r\n <Card>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n Step 1 – Complete and Return Employment Certification Form\r\n </CardTitle>\r\n <CardText>\r\n <ul>\r\n <li>\r\n Print the Employment Certification form found in the My Documents section\r\n of your MyFiducius portal and hand-sign page one.\r\n </li>\r\n <li>Your employer must complete and sign the second page.</li>\r\n <li>\r\n Please verify your Social Security Number is present on the first two\r\n pages of your employment certification(s) prior to re-uploading to your\r\n Documents page.\r\n </li>\r\n <li>\r\n Questions 1 through 9 <strong>must</strong> be completed. Please read the\r\n answer to question 9 to determine if succeeding questions require an\r\n answer.\r\n </li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n {data.empCertReceived === true && (\r\n <DashboardSection>\r\n <Card>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Step 2 – Employment Certification form is being processed</CardTitle>\r\n <CardText>\r\n <ul>\r\n <li>\r\n We are evaluating the form that was provided and will submit it to the\r\n loan servicer.\r\n </li>\r\n <li>\r\n The loan servicer will process the documentation to get your loans in\r\n compliance with program regulations.\r\n </li>\r\n <li>\r\n If you receive a bill or any information regarding your loans, please\r\n upload to your Documents page.\r\n </li>\r\n <li>This documentation can take several months to process.</li>\r\n <li>You can submit a Contact Us request if you have any questions.</li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </AsyncLoader>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `implementationResults.cache[${getUserId(state)}]`) || {},\r\n request: state.implementationResults.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: (id) => dispatch(implementationResultsLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmpCertFS));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Button,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport StandardConfirmation from '../components/standard-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport StepDisplay from '../components/step-display';\r\nimport { MessageTile } from '../../../messages';\r\nimport { MessageDiv } from '../../../messages';\r\n\r\nclass Consolidation extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showStep1: false, showStep2: false, showStep3: false };\r\n }\r\n\r\n componentDidMount() {\r\n const pathName = window.location.pathname;\r\n if (pathName.includes('/step')) {\r\n this.setState({\r\n ...this.state,\r\n showStep1: pathName.includes('/step-1'),\r\n showStep2: pathName.includes('/step-2'),\r\n showStep3: pathName.includes('/step-3'),\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n handleStep1Click = () => {\r\n this.handleSectionClick('step1');\r\n };\r\n handleStep2Click = () => {\r\n this.handleSectionClick('step2');\r\n };\r\n handleStep3Click = () => {\r\n this.handleSectionClick('step3');\r\n };\r\n\r\n handleSectionClick = (sectionName) => {\r\n if (sectionName === 'step1') {\r\n this.setState(\r\n {\r\n showStep1: true,\r\n showStep2: false,\r\n showStep3: false,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n } else if (sectionName === 'step2') {\r\n this.setState(\r\n {\r\n showStep1: false,\r\n showStep2: true,\r\n showStep3: false,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n } else if (sectionName === 'step3') {\r\n this.setState(\r\n {\r\n showStep1: false,\r\n showStep2: false,\r\n showStep3: true,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n }\r\n };\r\n\r\n scrollToStep(section) {\r\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n getStep1Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'Consolidation');\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 103);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n } else {\r\n const nextToDo = todos.find((a) => a.id === 104 || a.id === 105);\r\n if (nextToDo !== undefined && nextToDo !== null) {\r\n retVal = 'success';\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStep2Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'Consolidation');\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 104);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n } else {\r\n const nextToDo = todos.find((a) => a.id === 105);\r\n if (nextToDo !== undefined && nextToDo !== null) {\r\n retVal = 'success';\r\n }\r\n }\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n getStep3Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'Consolidation');\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 105);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStep3RestrictionDate = () => {\r\n let retVal = undefined;\r\n const { permissions } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'Consolidation');\r\n if (empCertStep.stepDateRestriction !== undefined) {\r\n let stepRestriction = new Date(empCertStep.stepDateRestriction);\r\n retVal =\r\n (stepRestriction.getMonth() + 1).toString() +\r\n '/' +\r\n stepRestriction.getDate() +\r\n '/' +\r\n stepRestriction.getFullYear();\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { permissions } = this.props;\r\n const restrictionDate = this.getStep3RestrictionDate();\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Consolidate Loans</CardTitle>\r\n <CardText>\r\n <p>Completing this step will align your loans for the program.</p>\r\n <p>\r\n <MessageDiv messageType={'Consolidation_Tab'} />\r\n </p>\r\n <div className=\"row col-12\">\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button brand={this.getStep1Brand()} onClick={this.handleStep1Click}>\r\n Generate\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button brand={this.getStep2Brand()} onClick={this.handleStep2Click}>\r\n Submit\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button brand={this.getStep3Brand()} onClick={this.handleStep3Click}>\r\n Review\r\n </Button>\r\n </Lede>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n {this.state.showStep1 && (\r\n <div id=\"step1Section\">\r\n <DashboardSection title=\"Generate your Consolidation Application\">\r\n <div id=\"messageSection\">\r\n <MessageTile messageType={'Consolidation_Generate'} />\r\n </div>\r\n <Card>\r\n {permissions.isConsolidationSubmitGeneratePaused && (\r\n <>\r\n <CardBody overlayCard>\r\n <>\r\n <CardTitle overlayCard>Consolidation Pause</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n Effective <b>April 16, 2024</b>, consolidation applications will be\r\n temporarily paused due to updates from the Department of Education in\r\n preparation for new initiatives anticipated in <b>July 2024</b>. Please\r\n be advised that initiating a consolidation during this period may have\r\n negative consequences. Wait for Fiducius to notify you when it is time\r\n to consolidate your loans before starting your consolidation.\r\n </p>\r\n </CardText>\r\n </>\r\n </CardBody>\r\n </>\r\n )}\r\n <CardBody disableChildren={permissions.isConsolidationSubmitGeneratePaused}>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 - Sign Consolidation Application'}>\r\n <ul>\r\n <li>\r\n Please click the button below to generate your Consolidation Application.\r\n </li>\r\n <li>Electronically sign the application.</li>\r\n <li>\r\n After electronically signing your application, you will be taken to your\r\n My Documents page where you can download the file.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n {!permissions.isConsolidationSubmitGeneratePaused && (\r\n <StandardConfirmation stepId={103} />\r\n )}\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep2 && (\r\n <div id=\"step2Section\">\r\n <DashboardSection title=\"Submit your Consolidation Application\">\r\n <div id=\"messageSection\">\r\n <MessageTile messageType={'Consolidation_Submit'} />\r\n </div>\r\n <Card>\r\n {permissions.isConsolidationSubmitGeneratePaused && (\r\n <>\r\n <CardBody overlayCard>\r\n <>\r\n <CardTitle overlayCard>Consolidation Pause</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n This step <b>can not</b> be completed at this time. Please return to\r\n your MyFiducius portal and complete it once you are notified that the\r\n consolidation pause is over, projected for <b>July 2024</b>.\r\n </p>\r\n </CardText>\r\n </>\r\n </CardBody>\r\n </>\r\n )}\r\n <CardBody disableChildren={permissions.isConsolidationSubmitGeneratePaused}>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 – Verify Consolidation Application Information'}>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on all pages up to\r\n the signature page.\r\n </li>{' '}\r\n <li>Please verify that your address on line #9 is not a P.O. box.</li>\r\n <li>\r\n Please verify that your references at the bottom of page one have\r\n different home addresses and phone numbers from both you and each other.{' '}\r\n </li>{' '}\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 2 – Access your loan servicer account(s)'}>\r\n <ul>\r\n <li>Login to your loan servicer account(s).</li>\r\n <li>\r\n Verify the number of loans on your consolidation application matches the\r\n number of loans with an outstanding balance at your servicer(s).\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 3 – Confirm the status of your loan(s)'}>\r\n <ul>\r\n <li>\r\n Do not submit your application if your loans appear in the following\r\n statuses:\r\n </li>\r\n <ul>\r\n <li>In-school</li>\r\n <li>Deferment</li>\r\n <li>Default</li>\r\n <ul>\r\n <li>\r\n If your loans are currently in any of these statuses, please contact\r\n us.\r\n </li>\r\n </ul>\r\n </ul>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n {!permissions.isConsolidationSubmitGeneratePaused && (\r\n <StandardConfirmation stepId={104} />\r\n )}\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep3 && (\r\n <div id=\"step3Section\">\r\n <DashboardSection title=\"Check on your Consolidation Application\">\r\n <div id=\"messageSection\">\r\n <MessageTile messageType={'Consolidation_Review'} />\r\n </div>\r\n <Card\r\n overlayCard={\r\n restrictionDate !== undefined && !permissions.isConsolidationCheckPaused\r\n }\r\n >\r\n {!permissions.isConsolidationCheckPaused && (\r\n <CardBody overlayCard hideOverlay={restrictionDate === undefined}>\r\n {restrictionDate !== undefined && (\r\n <>\r\n <CardTitle overlayCard>Wait for Consolidation Completion</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n Based on the average processing time for this document, it will be\r\n processed by your loan servicer on {restrictionDate} at the earliest*.\r\n You will not be able to confirm completion of this step until that date.\r\n </p>\r\n <p>\r\n *Please note: Your document is not guaranteed to be processed by this\r\n date. It is important to follow your steps closely.\r\n </p>\r\n </CardText>\r\n </>\r\n )}\r\n </CardBody>\r\n )}\r\n {permissions.isConsolidationCheckPaused && (\r\n <>\r\n <CardBody overlayCard>\r\n <>\r\n <CardTitle overlayCard>Consolidation Pause</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n This step <b>can not</b> be completed at this time. Please return to\r\n your MyFiducius portal and complete it once you are notified that the\r\n consolidation pause is over, projected for <b>July 2024</b>.\r\n </p>\r\n </CardText>\r\n </>\r\n </CardBody>\r\n </>\r\n )}\r\n <CardBody\r\n disableChildren={\r\n restrictionDate !== undefined || permissions.isConsolidationCheckPaused\r\n }\r\n >\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 – Access your AIDVANTAGE Servicing account'}>\r\n <ul>\r\n <li>\r\n Create or Login to your account at{' '}\r\n <a\r\n href=\"https://aidvantage.studentaid.gov/\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n AIDVANTAGE\r\n </a>\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> You will be able to create an account with\r\n AIDVANTAGE Servicing approximately three weeks after the application is\r\n submitted.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 2 – Check on the status of the consolidation'}>\r\n <ul>\r\n <li>\r\n Check your AIDVANTAGE inbox for any correspondence regarding your\r\n consolidation.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> It typically takes{' '}\r\n <strong>four to six weeks</strong> for the consolidation to process. The\r\n first correspondence is sent to you approximately three weeks after you\r\n submit the form.\r\n </li>\r\n <li>What are you looking for? Examples include:</li>\r\n <ul>\r\n <li>Consolidation Application Received</li>\r\n <li>Consolidation Request Almost Complete</li>\r\n <li>We Completed Your Consolidation!</li>\r\n <li>\r\n <strong>Please note:</strong> The letter may have a different title than\r\n the list above. If you have any questions about the letters in your\r\n inbox with AIDVANTAGE, please submit a Contact Us request.\r\n </li>\r\n </ul>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 3 – Confirm completion'}>\r\n <ul>\r\n <li>\r\n You will receive a letter in your AIDVANTAGE inbox confirming the\r\n completion of your consolidation. Once received, confirm the number of\r\n loans on the letter matches the number of loans on your consolidation\r\n application.\r\n </li>\r\n <li>\r\n Confirm the entire loan balance shown on your consolidation application is\r\n now at AIDVANTAGE.\r\n </li>\r\n <li>\r\n Confirm all loans included in the consolidation have a $0.00 balance at\r\n your previous loan servicer(s).\r\n </li>\r\n <li>\r\n <strong>Please Note:</strong> your consolidation application can take up\r\n to two months to process.\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is done until you have verified the transfer is\r\n complete.\r\n </strong>\r\n <br />\r\n If you submitted your consolidation application more than eight weeks ago and\r\n did not include all your loans, or your previous loan servicer(s) still show a\r\n balance, please submit a Contact Us request on the left side of your portal.\r\n We will reply to your request after researching your account.\r\n </StepDisplay>\r\n {/* contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2. */}\r\n </AsyncLoader>\r\n {!permissions.isConsolidationCheckPaused && <StandardConfirmation stepId={105} />}\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.selfServiceDocument.requests.updateResource,\r\n state.selfServiceDocument.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Consolidation));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nimport { implementationResultsLoadResource } from '../../../implementation-results';\r\n\r\nclass ConsolidationFS extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n render() {\r\n const { data, request } = this.props;\r\n return (\r\n <div>\r\n <ForgivenessProgress />\r\n <AsyncLoader request={request}>\r\n {data.consolidationAppSigned === false && (\r\n <DashboardSection>\r\n <Card>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Step 1 - Sign Consolidation Application</CardTitle>\r\n <CardText>\r\n <ul>\r\n <li>Electronically sign the application.</li>\r\n <li>\r\n Please verify your Social Security Number is present on all pages up to\r\n the signature page.\r\n </li>\r\n <li>Please verify your address on line #9 is not a P.O. box.</li>\r\n <li>\r\n Please verify your References at the bottom of page one contain different\r\n home addresses and phone numbers from both you and each other.\r\n </li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n {data.consolidationAppSigned === true && (\r\n <DashboardSection>\r\n <Card>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Step 2 – Consolidation Application Processing</CardTitle>\r\n <CardText>\r\n <ul>\r\n <li>\r\n We are evaluating the form that was provided and will submit it to the\r\n loan servicer.\r\n </li>\r\n <li>\r\n The loan servicer will process the documentation to get your loans in\r\n compliance with program regulations.\r\n </li>\r\n <li>\r\n If you receive a bill or any information regarding your loans, please\r\n upload it to your Documents page.\r\n </li>\r\n <li>This documentation can take several months to process.</li>\r\n <li>You can submit a Contact Us request if you have any questions.</li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </AsyncLoader>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `implementationResults.cache[${getUserId(state)}]`) || {},\r\n request: state.implementationResults.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: (id) => dispatch(implementationResultsLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ConsolidationFS));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Lede,\r\n Button,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, mergeRequestStatuses, flatten } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport StandardConfirmation from '../components/standard-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nclass ContributionSS extends React.Component {\r\n static propTypes = {\r\n data: t.object.isRequired,\r\n form: t.object.isRequired,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n updateForm: t.func.isRequired,\r\n onLoad: t.func.isRequired,\r\n action: t.func.isRequired,\r\n isMarried: t.bool.isRequired,\r\n errors: t.object,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showStep1: false,\r\n showStep2: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n //this.props.onLoad();\r\n const pathName = window.location.pathname;\r\n if (pathName.includes('/step')) {\r\n this.setState({\r\n ...this.state,\r\n showStep1: pathName.includes('/step-1'),\r\n showStep2: pathName.includes('/step-2'),\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n handleStep1Click = () => {\r\n this.handleSectionClick('step1');\r\n };\r\n handleStep2Click = () => {\r\n this.handleSectionClick('step2');\r\n };\r\n\r\n handleSectionClick = (sectionName) => {\r\n if (sectionName === 'step1') {\r\n this.setState(\r\n {\r\n showStep1: true,\r\n showStep2: false,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n } else if (sectionName === 'step2') {\r\n this.setState(\r\n {\r\n showStep1: false,\r\n showStep2: true,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n }\r\n };\r\n\r\n getCurrentStep = () => {\r\n const { todos, permissions } = this.props;\r\n const forgivenessSteps = flatten(permissions.forgivenessSteps.filter((a) => a.stepCurrent));\r\n\r\n let CurrentToDo = todos.find(\r\n (a) => forgivenessSteps.id === 'Contribution' && (a.id === 114 || a.id === 115)\r\n );\r\n\r\n if (CurrentToDo === undefined || CurrentToDo === null) {\r\n CurrentToDo = 0;\r\n } else {\r\n CurrentToDo = CurrentToDo.id;\r\n }\r\n\r\n return CurrentToDo;\r\n };\r\n\r\n getStep1Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'Contribution');\r\n if (empCertStep !== undefined && empCertStep !== null) {\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 114);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStep2Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'Contribution');\r\n if (empCertStep !== undefined && empCertStep !== null) {\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 115);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n scrollToStep(section) {\r\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n disableButtons = () => {\r\n let retVal = false;\r\n const { todos } = this.props;\r\n\r\n if (todos.find((a) => a.id === 504)) {\r\n retVal = true;\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { request } = this.props;\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Contribution</CardTitle>\r\n <CardText>\r\n <p>\r\n If the two options below are locked, please review your To-do List and complete\r\n the \"Select Accounts for Contribution\" step. All steps must be completed\r\n properly to set-up your employer contribution for this year.\r\n </p>\r\n <div className=\"row col-12\">\r\n <div className=\"col-2\" />\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button\r\n brand={this.getStep1Brand()}\r\n onClick={this.handleStep1Click}\r\n disabled={this.disableButtons()}\r\n >\r\n Submit\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button\r\n brand={this.getStep1Brand()}\r\n onClick={this.handleStep2Click}\r\n disabled={this.disableButtons()}\r\n >\r\n Review\r\n </Button>\r\n </Lede>\r\n </div>\r\n </div>\r\n <div className=\"col-2\" />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n {this.state.showStep1 && (\r\n <div id=\"step1Section\">\r\n <DashboardSection title=\"Submit Repayment Details\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request} loading={<></>}>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <ul>\r\n <li>\r\n The next step of the process is for you to provide your repayment\r\n details for verification.\r\n <ul>\r\n <li>\r\n As a reminder, your repayment details can be found in your MOHELA\r\n Account Inbox.\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n <StandardConfirmation stepId={114} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep2 && (\r\n <div id=\"step2Section\">\r\n <DashboardSection title=\"Repayment Details Review\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request} loading={<></>}>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <ul>\r\n <li>\r\n We are validating your income-driven repayment and employer\r\n contribution. The review can take up to 45 days to complete.\r\n </li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const userId = getUserId(state);\r\n let data = safeAccess(state, `idr.cache[${userId}]`, {});\r\n let form = safeAccess(state, 'idr.form', {});\r\n form.actualRepaymentType = data.projectedRepaymentType;\r\n form.projectedRepaymentType = data.projectedRepaymentType;\r\n\r\n return {\r\n data: data,\r\n form: form,\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.idr.requests.updateResource,\r\n ]),\r\n isMarried: safeAccess(state, 'auth.cache.permissions.married', false),\r\n errors: safeAccess(state, 'idr.errors', {}),\r\n todos: Object.values(state.todos.cache),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ContributionSS));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faAngleDown } from '@fortawesome/pro-solid-svg-icons/faAngleDown';\r\nimport { faAngleRight } from '@fortawesome/pro-solid-svg-icons/faAngleRight';\r\n\r\nimport { Card, CardBody, CardTitle } from 'fiducius-ui';\r\n\r\nclass ComponentStepDisplay extends React.Component {\r\n static propTypes = {\r\n title: t.string.isRequired,\r\n show: t.bool,\r\n };\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showBody: false,\r\n showProp: false,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n componentDidUpdate() {\r\n let props = this.props;\r\n if (this.state.showProp !== props.show) {\r\n this.setState({\r\n showProp: props.show,\r\n });\r\n }\r\n if (\r\n this.props.show !== undefined &&\r\n this.state.showBody === false &&\r\n this.state.showBody !== this.state.showProp\r\n ) {\r\n this.handleShowProp();\r\n }\r\n }\r\n\r\n handleClick = () => {\r\n this.setState({\r\n showBody: !this.state.showBody,\r\n });\r\n };\r\n\r\n handleShowProp = () => {\r\n this.setState({\r\n showBody: this.props.show,\r\n });\r\n };\r\n\r\n render() {\r\n let props = this.props;\r\n\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n <CardTitle onClick={this.handleClick}>\r\n <FontAwesomeIcon icon={this.state.showBody ? faAngleDown : faAngleRight} fixedWidth />\r\n {props.title}\r\n </CardTitle>\r\n {this.state.showBody && props.children}\r\n </CardBody>\r\n </Card>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nexport default ComponentStepDisplay;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { AsyncLoader, Button, Header5, Header6, InputWrapper } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { documentsLoadCollection } from '../../../documents';\r\n\r\nclass DocsNeededForRSUpload extends React.Component {\r\n static propTypes = {\r\n docsNeeded: t.object,\r\n loadDocs: t.func,\r\n documentButton: t.bool,\r\n request: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '' };\r\n }\r\n\r\n componentDidMount() {\r\n if (Object.entries(this.props.docsNeeded).length < 1) {\r\n this.props.loadDocs();\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n redirectToDocuments = () => {\r\n this.setState({ redirectURI: '/documents' });\r\n };\r\n\r\n render() {\r\n const { request, docsNeeded, documentButton, permissions } = this.props;\r\n let docArray = Object.entries(docsNeeded);\r\n let taxesNeeded = false;\r\n let spouseTaxesNeeded = false;\r\n let paycheckNeeded = false;\r\n let spousepaycheckNeeded = false;\r\n let EmploymentCertificationNeeded = false;\r\n let pretaxLetterNeeded = false;\r\n let wtwoNeeded = false;\r\n let clientNSLDSNeeded = false;\r\n let spouseNSLDSNeeded = false;\r\n let driversLicenseNeeded = false;\r\n let fedLoanAuthNeeded = false;\r\n\r\n let documentsNeeded = true;\r\n //let allowedDownload = false;\r\n\r\n let taxText = '';\r\n let paystubText = '';\r\n\r\n if (docArray.length > 0) {\r\n docArray.forEach(([key, value]) => {\r\n let docArray2 = Object.entries(value);\r\n\r\n docArray2.sort();\r\n //checks to see if the name key has a value. sends back a string name,[value]\r\n let name = docArray2[10];\r\n let allowedDownload = docArray2[0];\r\n if (name[1] === '' && allowedDownload[1] === false) {\r\n docArray2.forEach(([key2, value2]) => {\r\n if (key2 === 'fileTypeCd') {\r\n if (value2 === 'TXS') {\r\n taxesNeeded = true;\r\n } else if (value2.includes('SECF')) {\r\n if (permissions.electronicEmpcertEnabled) {\r\n EmploymentCertificationNeeded = false;\r\n } else {\r\n EmploymentCertificationNeeded = true;\r\n }\r\n } else if (value2 === 'PYCHK') {\r\n paycheckNeeded = true;\r\n } else if (value2 === 'LNDT') {\r\n clientNSLDSNeeded = true;\r\n } else if (value2 === 'STXS') {\r\n spouseTaxesNeeded = true;\r\n } else if (value2 === 'SPYCK') {\r\n spousepaycheckNeeded = true;\r\n } else if (value2 === 'PTLH') {\r\n pretaxLetterNeeded = true;\r\n } else if (value2 === 'W2') {\r\n wtwoNeeded = true;\r\n } else if (value2 === 'SNLDS') {\r\n spouseNSLDSNeeded = true;\r\n } else if (value2 === 'DL') {\r\n driversLicenseNeeded = true;\r\n } else if (value2 === 'FlA') {\r\n fedLoanAuthNeeded = true;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (\r\n !taxesNeeded &&\r\n !spouseTaxesNeeded &&\r\n !paycheckNeeded &&\r\n !spousepaycheckNeeded &&\r\n !EmploymentCertificationNeeded\r\n ) {\r\n documentsNeeded = false;\r\n }\r\n\r\n if (taxesNeeded && spouseTaxesNeeded) {\r\n taxText = \"The first two pages of you and your spouse's most recent Federal 1040\";\r\n } else if (taxesNeeded && !spouseTaxesNeeded) {\r\n taxText = 'The first two pages of your most recent Federal 1040';\r\n } else if (!taxesNeeded && spouseTaxesNeeded) {\r\n taxText = \"The first two pages of your spouse's most recent Federal 1040\";\r\n }\r\n\r\n if (paycheckNeeded && spousepaycheckNeeded) {\r\n paystubText = \"You and your spouse's most recent paychecks\";\r\n } else if (paycheckNeeded && !spousepaycheckNeeded) {\r\n paystubText = 'Your most recent paychecks';\r\n } else if (!paycheckNeeded && spousepaycheckNeeded) {\r\n paystubText = \"Your spouse's most recent paychecks\";\r\n }\r\n\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n return (\r\n <AsyncLoader request={request}>\r\n <Header5>\r\n {documentsNeeded && 'The following documentation is needed:'}\r\n <p />\r\n <ul>\r\n {taxText !== '' && <li>{taxText}</li>}\r\n {paystubText !== '' && <li>{paystubText}</li>}\r\n\r\n {EmploymentCertificationNeeded && (\r\n <li>\r\n The Employment Certification\r\n <Header6>\r\n <ul>\r\n <li>1st page signed by you</li>\r\n <li>\r\n 2nd page completed in its entirety and signed by an authorized official at\r\n your public service/non-profit organization\r\n </li>\r\n </ul>\r\n </Header6>\r\n </li>\r\n )}\r\n\r\n {wtwoNeeded && <li>A copy of your most recently received W-2(s)</li>}\r\n\r\n {driversLicenseNeeded && <li>A copy of your driver's license</li>}\r\n\r\n {pretaxLetterNeeded && (\r\n <li>\r\n A pre-tax deduction detter\r\n <Header6>\r\n <ul>\r\n <li>A template of the letter can be found under the My Documents section.</li>\r\n <li>\r\n Please forward the template to a member of your HR or Payroll department to\r\n complete.\r\n </li>\r\n </ul>\r\n </Header6>\r\n </li>\r\n )}\r\n\r\n {clientNSLDSNeeded && (\r\n <li>\r\n National Student Loan Data System (NSLDS) summary page\r\n <Header6>\r\n <ul>\r\n <li>\r\n Instructions for this document can be found at the bottom of the My\r\n Documents section of your account\r\n </li>\r\n </ul>\r\n </Header6>\r\n </li>\r\n )}\r\n\r\n {spouseNSLDSNeeded && (\r\n <li>\r\n Your spouse's National Student Loan Data System (NSLDS) summary page\r\n <Header6>\r\n <ul>\r\n <li>\r\n Instructions for this document can be found at the bottom of the My\r\n Documents section of your account\r\n </li>\r\n </ul>\r\n </Header6>\r\n </li>\r\n )}\r\n\r\n {fedLoanAuthNeeded && <li>FedLoan Servicing Authorization Form</li>}\r\n </ul>\r\n </Header5>\r\n {documentButton && documentsNeeded && (\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\"></div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n <Button id={'goToDocuments'} brand={'primary'} onClick={this.redirectToDocuments}>\r\n {'Upload Documents'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n )}\r\n </AsyncLoader>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n docsNeeded: state.documents.cache,\r\n request: state.documents.requests.loadCollection,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadDocs: () => {\r\n dispatch(documentsLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(DocsNeededForRSUpload));\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n AsyncLoader,\n Button,\n InputWrapper,\n InputCheckbox,\n InputLabel,\n Card,\n CardBody,\n CardFooter,\n CardHeader,\n Modal,\n} from 'fiducius-ui';\nimport { Redirect } from 'react-router-dom';\nimport { FlexBetween } from '../../../root';\n\nimport { safeAccess, debounce, mergeRequestStatuses } from '../../../utils';\nimport { renewalResultsLoadResource, renewalResultsUpdateResource } from '../../../renewal-results';\nimport DocsNeededForRSUpload from '../components/docs-upload-needed';\n\nimport { getUserId } from '../../../auth';\nimport { withPermissions } from '../../../routing';\n\nimport { authLoadPermissions } from '../../../auth';\nimport { paymentSetTypeRenewal } from '../../../payment';\n\nimport {\n todosLoadCollection,\n todosUpdateResource,\n todosSendDenied,\n todosSendUpdate,\n} from '../../../todos/redux/operations';\n\nimport { idrSaveComplete } from '../../../workflows/idr/redux/operations';\nimport StandardFax from './standard-fax';\nimport styled from 'styled-components';\nconst InputWrapper2 = styled(InputWrapper)`\n color: ${(p) => p.theme.textPrimary};\n`;\n\nconst InputLabel2 = styled(InputLabel)`\n color: ${(p) => p.theme.textPrimary};\n`;\n\nconst TextLeft = styled.div`\n text-align: left;\n`;\n\nclass RenewalConfirmation extends React.Component {\n static propTypes = {\n acknowledgeRsFeeCredits: t.func.isRequired,\n confirm: t.func.isRequired,\n idrConfirm: t.func.isRequired,\n confirmDenied: t.func.isRequired,\n confirmEmploymentHistory: t.func.isRequired,\n permissions: t.object.isRequired,\n request: t.object.isRequired,\n stepId: t.number.isRequired,\n todos: t.array,\n setPaymentType: t.func.isRequired,\n additionalInfoNeeded: t.bool,\n handleChange: t.func,\n zeroBalance: t.bool,\n id: t.string,\n };\n\n constructor(props) {\n super(props);\n this.state = { showCheckbox: false, redirectURI: '', empCertDeniedModal: false };\n this.onConfirm = this.onConfirm.bind(this);\n this.onConfirmDenied = this.onConfirmDenied.bind(this);\n this.goToCurrentStep = this.goToCurrentStep.bind(this);\n this.goToInfo = this.goToInfo.bind(this);\n }\n\n componentDidMount() {}\n\n componentDidUpdate(prevProps, prevState) {}\n\n onConfirm = async () => {\n if (this.props.stepId === 257) {\n await this.props.idrConfirm(this.props.stepId);\n let path = this.getNextStepPath();\n window.location.href = path;\n } else if (this.props.stepId === 1606) {\n await this.props.confirmEmploymentHistory(this.props.stepId);\n this.goToCurrentStep();\n } else {\n await this.props.confirm(this.props.stepId);\n this.goToCurrentStep();\n }\n };\n\n onConfirmDenied = async () => {\n await this.props.confirmDenied(this.props.stepId);\n this.goToCurrentStep();\n };\n\n toggleEmpCertDeniedModal = () => {\n this.setState({ ...this.state, empCertDeniedModal: !this.state.empCertDeniedModal });\n };\n\n rsCreditProcess = async () => {\n await this.props.acknowledgeRsFeeCredits(this.props.id);\n this.goToCurrentStep();\n };\n\n goToInfo(e) {\n this.props.handleChange(e.type);\n }\n\n checkStepCompleted = () => {\n const { stepId, permissions, todos } = this.props;\n const stepMapping = this.getStepMapping(stepId);\n let retVal = false;\n if (\n (permissions.forgivenessSteps !== undefined && permissions.forgivenessSteps !== null) ||\n (permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null)\n ) {\n const forgivenessStep = permissions.forgivenessSteps\n ? permissions.forgivenessSteps.find((a) => a.id === stepMapping)\n : permissions.reducedIdrSteps.find((a) => a.id === stepMapping)\n ? permissions.reducedIdrSteps.find((a) => a.id === stepMapping)\n : permissions.reducedIdrSteps.find((a) => a.id === 'EmpCert');\n\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n retVal = forgivenessStep.stepComplete;\n if (!retVal) {\n if (\n stepId === 252 ||\n stepId === 253 ||\n stepId === 254 ||\n stepId === 800 ||\n stepId === 810 ||\n stepId === 815 ||\n stepId === 820 ||\n stepId === 1601 ||\n stepId === 1605\n ) {\n const currentToDo = todos.find(\n (a) =>\n a.id === 252 ||\n a.id === 253 ||\n a.id === 254 ||\n a.id === 800 ||\n a.id === 810 ||\n a.id === 815 ||\n a.id === 820 ||\n a.id === 1601 ||\n a.id === 1605\n );\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 255 || stepId === 256 || stepId === 257) {\n const currentToDo = todos.find((a) => a.id === 255 || a.id === 256 || a.id === 257);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n } else if (stepId === 260 || stepId === 261) {\n const currentToDo = todos.find((a) => a.id === 260 || a.id === 261);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n }\n }\n }\n }\n\n if (\n permissions.enterpriseEmpcertSteps !== undefined &&\n permissions.enterpriseEmpcertSteps !== null\n ) {\n const enterpriseEmpCertStep = permissions.enterpriseEmpcertSteps.find(\n (a) => a.id === stepMapping\n );\n if (\n enterpriseEmpCertStep !== undefined &&\n enterpriseEmpCertStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n retVal = enterpriseEmpCertStep.stepComplete;\n if (!retVal) {\n if (\n stepId === 800 ||\n stepId === 801 ||\n stepId === 805 ||\n stepId === 810 ||\n stepId === 815\n ) {\n const currentToDo = todos.find(\n (a) => a.id === 800 || a.id === 801 || a.id === 805 || a.id === 810 || a.id === 815\n );\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\n }\n }\n }\n }\n\n return retVal;\n };\n\n getStepMapping = (id) => {\n let retVal = '';\n switch (id) {\n case 209:\n retVal = 'ProfileVerification';\n break;\n case 201:\n retVal = 'Questionnaire';\n break;\n case 202:\n retVal = 'DocsNeeded';\n break;\n case 203:\n retVal = 'Meeting';\n break;\n case 204:\n case 250:\n retVal = 'Fee';\n break;\n case 251:\n retVal = 'Forbearance';\n break;\n case 252:\n case 253:\n case 254:\n retVal = 'EmpCert';\n break;\n case 206:\n case 255:\n case 256:\n case 257:\n retVal = 'IDR';\n break;\n case 259:\n retVal = 'Extension';\n break;\n case 260:\n case 261:\n retVal = 'Contribution';\n break;\n case 351:\n retVal = 'NSLDSUploadNeeded';\n break;\n case 800:\n retVal = 'GenerateEnterpriseEmpcert';\n break;\n case 801:\n case 810:\n retVal = 'SubmitEnterpriseEmpcert';\n break;\n case 815:\n retVal = 'CheckEnterpriseEmpcert';\n break;\n case 820:\n retVal = 'CompleteEnterpriseEmpcert';\n break;\n case 1601:\n retVal = 'ProfileReducedIDR';\n break;\n case 1605:\n retVal = 'QuestionnaireReducedIDR';\n break;\n case 1606:\n retVal = 'EmpCertEmploymentInformation';\n break;\n default:\n retVal = 'Overview';\n break;\n }\n return retVal;\n };\n\n checkNotYetAtStep = () => {\n const { stepId, permissions, todos } = this.props;\n const stepMapping = this.getStepMapping(stepId);\n let retVal = false;\n\n if (\n (permissions.forgivenessSteps !== undefined && permissions.forgivenessSteps !== null) ||\n (permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null)\n ) {\n //if StepID is 1601, or 1605, use step current, otherwise use 'EmpCert'\n const forgivenessStep = permissions.forgivenessSteps\n ? permissions.forgivenessSteps.find((a) => a.id === stepMapping)\n : permissions.reducedIdrSteps.find((a) => a.id === stepMapping)\n ? permissions.reducedIdrSteps.find((a) => a.id === stepMapping)\n : permissions.reducedIdrSteps.find((a) => a.id === 'EmpCert');\n const currentStep = permissions.forgivenessSteps\n ? permissions.forgivenessSteps.find((a) => a.stepCurrent)\n : permissions.reducedIdrSteps.find((a) => a.stepCurrent);\n\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n currentStep !== undefined &&\n currentStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (forgivenessStep.id === currentStep.id) {\n if (stepId === 1601 || stepId === 1605) {\n const currentToDo = todos.find((a) => a.id === 1601 || a.id === 1605);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (\n stepId === 252 ||\n stepId === 253 ||\n stepId === 254 ||\n stepId === 800 ||\n stepId === 810 ||\n stepId === 815 ||\n stepId === 820\n ) {\n const currentToDo = todos.find(\n (a) =>\n a.id === 252 ||\n a.id === 253 ||\n a.id === 254 ||\n a.id === 800 ||\n a.id === 810 ||\n a.id === 815 ||\n a.id === 820\n );\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (stepId === 255 || stepId === 256 || stepId === 257) {\n const currentToDo = todos.find((a) => a.id === 255 || a.id === 256 || a.id === 257);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n }\n } else if (forgivenessStep.id === 'IDR' && currentStep.id === 'EmpCert') {\n const currentToDo = todos.find(\n (a) =>\n a.id === 255 ||\n a.id === 256 ||\n a.id === 257 ||\n a.id === 800 ||\n a.id === 810 ||\n a.id === 815\n );\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else if (forgivenessStep.id === 'EmpCert' && currentStep.id === 'Fee') {\n const currentToDo = todos.find((a) => a.id === 252 || a.id === 253 || a.id === 254);\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n } else {\n retVal = !forgivenessStep.stepComplete && !forgivenessStep.stepCurrent;\n }\n }\n }\n\n if (\n permissions.enterpriseEmpcertSteps !== undefined &&\n permissions.enterpriseEmpcertSteps !== null\n ) {\n //enterpriseEmpcertSteps\n const enterpriseEmpcertStep = permissions.enterpriseEmpcertSteps.find(\n (a) => a.id === stepMapping\n );\n const currentStep = permissions.enterpriseEmpcertSteps.find((a) => a.stepCurrent);\n\n if (\n enterpriseEmpcertStep !== undefined &&\n enterpriseEmpcertStep !== null &&\n currentStep !== undefined &&\n currentStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (enterpriseEmpcertStep.id === currentStep.id) {\n if (\n stepId === 800 ||\n stepId === 805 ||\n stepId === 810 ||\n stepId == 815 ||\n stepId == 820\n ) {\n const currentToDo = todos.find(\n (a) => a.id === 800 || a.id === 805 || a.id === 810 || a.id === 815 || a.id === 820\n );\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\n }\n } else {\n retVal = !enterpriseEmpcertStep.stepComplete && !enterpriseEmpcertStep.stepCurrent;\n }\n }\n }\n\n return retVal;\n };\n\n goToCurrentStep = () => {\n let path = this.getNextStepPath();\n this.setState({ ...this.state, redirectURI: path });\n };\n\n getNextStepPath = () => {\n const { permissions, todos } = this.props;\n let retVal = '/benefits/forgiveness/overview';\n if (\n (permissions.forgivenessSteps !== undefined && permissions.forgivenessSteps !== null) ||\n (permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null)\n ) {\n const forgivenessSteps = permissions.forgivenessSteps\n ? permissions.forgivenessSteps.filter((a) => a.stepCurrent)\n : permissions.reducedIdrSteps.filter((a) => a.stepCurrent);\n let forgivenessStep = permissions.forgivenessSteps\n ? permissions.forgivenessSteps.find((a) => a.stepCurrent)\n : permissions.reducedIdrSteps.find((a) => a.stepCurrent);\n\n if (\n forgivenessSteps !== undefined &&\n forgivenessSteps !== null &&\n forgivenessSteps.length > 1 &&\n forgivenessSteps.find((a) => window.location.pathname.includes(a.stepPath))\n ) {\n forgivenessStep = forgivenessSteps.find((a) =>\n window.location.pathname.includes(a.stepPath)\n );\n }\n\n if (\n forgivenessStep !== undefined &&\n forgivenessStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (\n forgivenessStep.id === 'EmpCert' ||\n forgivenessStep.id === 'IDR' ||\n forgivenessStep.id === 'Extension'\n ) {\n if (permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null) {\n retVal = '/benefits/reducedidr' + forgivenessStep.stepPath;\n } else {\n retVal = '/benefits/forgiveness' + forgivenessStep.stepPath;\n }\n const currentToDo = todos.find(\n (a) =>\n (forgivenessStep.id === 'Extension' && a.id === 259) ||\n (forgivenessStep.id === 'EmpCert' &&\n (a.id === 106 ||\n a.id === 107 ||\n a.id === 108 ||\n a.id === 252 ||\n a.id === 253 ||\n a.id === 254 ||\n a.id === 254 ||\n a.id === 800 ||\n a.id === 805 ||\n a.id === 810 ||\n a.id == 815 ||\n a.id == 820)) ||\n (forgivenessStep.id === 'IDR' &&\n (a.id === 111 ||\n a.id === 112 ||\n a.id === 113 ||\n a.id === 255 ||\n a.id === 256 ||\n a.id === 257))\n );\n\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 252:\n case 255:\n case 800:\n retVal += '/step-1';\n break;\n case 253:\n case 256:\n case 810:\n retVal += '/step-2';\n break;\n case 254:\n case 257:\n case 815:\n retVal += '/step-3';\n break;\n default:\n break;\n }\n }\n } else if (\n forgivenessStep.id === 'QuestionnaireReducedIDR' ||\n forgivenessStep.id === 'ProfileReducedIDR' ||\n forgivenessStep.id === 'IDRReducedIDR' ||\n forgivenessStep.id === 'WelcomeReducedIDR'\n ) {\n retVal = '/benefits/reducedidr' + forgivenessStep.stepPath;\n } else if (forgivenessStep.id === 'EmpCertEmploymentInformation') {\n retVal = '/benefits/reducedidr/employmenthistory';\n } else {\n retVal = '/benefits/forgiveness' + forgivenessStep.stepPath;\n }\n }\n }\n\n if (\n permissions.enterpriseEmpcertSteps !== undefined &&\n permissions.enterpriseEmpcertSteps !== null\n ) {\n let enterpriseEmpCertStep = permissions.enterpriseEmpcertSteps.find((a) => a.stepCurrent);\n if (\n enterpriseEmpCertStep !== undefined &&\n enterpriseEmpCertStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (enterpriseEmpCertStep.id == 'CompleteEnterpriseEmpcert') {\n retVal = '/benefits/empcert/complete';\n }\n\n const currentToDo = todos.find(\n (a) =>\n a.id === 800 ||\n a.id === 801 ||\n a.id === 805 ||\n a.id === 810 ||\n a.id === 815 ||\n a.id === 820\n );\n\n let isReducedIDR =\n permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null;\n\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 800:\n retVal = isReducedIDR\n ? '/benefits/reducedidr/empcert-ss/step-1'\n : '/benefits/empcert/generate';\n break;\n case 801:\n case 810:\n retVal = '/benefits/empcert/submit';\n break;\n case 805:\n retVal = '/benefits/empcert/correction';\n break;\n case 815:\n retVal = '/benefits/empcert/check';\n break;\n case 820:\n retVal = '/benefits/empcert/complete';\n break;\n }\n }\n }\n }\n return retVal;\n };\n\n checkLockedForLWO = (stepId) => {\n const { permissions, todos } = this.props;\n\n if (permissions.enrolledLwo && (stepId === 252 || stepId === 253)) {\n const lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\n\n if (lwoStep !== undefined && lwoStep !== null) {\n const currentToDo = todos.find((a) => a.id > 600 && a.id < 608);\n\n if (currentToDo !== undefined && currentToDo !== null) {\n return true;\n }\n }\n }\n return false;\n };\n\n needsDocumentsGenerated = () => {\n const { stepId } = this.props;\n let retVal = false;\n if (stepId === 252 || stepId === 255 || stepId === 800) {\n retVal = true;\n }\n return retVal;\n };\n\n redirectForDocumentGeneration = () => {\n const { stepId, permissions } = this.props;\n let retVal = '';\n let isReducedIDR =\n permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null;\n if (this.props.stepId === 113) {\n this.props.idrConfirm(this.props.stepId).then((a) => {\n if (stepId === 252) {\n if (permissions.electronicEmpcertEnabled) {\n retVal = '/benefits/forgiveness/empcert-ss/step-2';\n } else {\n retVal = '/documents';\n }\n } else if (stepId === 255) {\n retVal = '/idr';\n }\n this.setState({ ...this.state, redirectURI: retVal });\n //window.location.href = retVal;\n });\n } else if (stepId === 260) {\n retVal = '/documents';\n this.setState({ ...this.state, redirectURI: retVal });\n } else {\n this.props.confirm(this.props.stepId).then((a) => {\n if (stepId === 252) {\n if (permissions.electronicEmpcertEnabled) {\n retVal = '/benefits/forgiveness/empcert-ss/step-2';\n } else {\n retVal = '/documents';\n }\n } else if (stepId === 255) {\n retVal = '/idr';\n } else if (stepId === 800) {\n retVal = isReducedIDR\n ? '/benefits/reducedidr/empcert-ss/step-2'\n : '/benefits/empcert/generate';\n } else if (stepId === 815 && isReducedIDR) {\n retVal = '/benefits/reducedidr/empcert-ss';\n }\n this.setState({ ...this.state, redirectURI: retVal });\n //window.location.href = retVal;\n });\n }\n };\n\n redirectForDocumentUploadOrSign = () => {\n this.setState({ ...this.state, redirectURI: '/documents' });\n };\n\n redirectForProfileVerification = () => {\n this.setState({ ...this.state, redirectURI: '/profile' });\n };\n\n redirectForQuestionnaire = () => {\n this.setState({ ...this.state, redirectURI: '/renewal' });\n };\n\n redirectForRenewalPayment = () => {\n this.props.setPaymentType().then(() => {\n this.setState({ ...this.state, redirectURI: '/payment' });\n });\n };\n\n redirectForNSLDSUpload = () => {\n this.props.setPaymentType().then(() => {\n this.setState({ ...this.state, redirectURI: '/nslds' });\n });\n };\n\n redirectForLWO = () => {\n const { permissions, todos } = this.props;\n const lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\n\n let retVal = '/benefits/limited-waiver-opportunity' + lwoStep.stepPath;\n\n if (lwoStep !== undefined && lwoStep !== null) {\n const currentToDo = todos.find((a) => a.id > 600 && a.id < 608);\n\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 606:\n retVal += '/step-1';\n break;\n case 607:\n retVal += '/step-2';\n break;\n default:\n break;\n }\n }\n }\n\n this.setState({ ...this.state, redirectURI: retVal });\n };\n\n getResources = (resourceType) => {\n return (\n <>\n <div className=\"row col-12\">\n <div className=\"col-8\">\n {resourceType === 'stepCompleted' && (\n <InputWrapper>\n <InputLabel2>You've completed this step.</InputLabel2>\n </InputWrapper>\n )}\n {resourceType === 'notAtStep' && (\n <InputWrapper>\n <InputLabel2>You haven't reached this step yet.</InputLabel2>\n </InputWrapper>\n )}\n {resourceType === 'documents' && (\n <InputWrapper2>\n <InputLabel2>You've completed this step.</InputLabel2>\n </InputWrapper2>\n )}\n </div>\n <div className=\"col-4\">\n {(resourceType === 'stepCompleted' || resourceType === 'notAtStep') && (\n <InputWrapper>\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\n {'Go to current step'}\n </Button>\n </InputWrapper>\n )}\n {resourceType === 'generateDoc' && (\n <InputWrapper>\n <Button brand=\"success\" onClick={this.redirectForDocumentGeneration}>\n {'Generate my document(s)'}\n </Button>\n </InputWrapper>\n )}\n {resourceType === 'documentUpload' && (\n <InputWrapper>\n <Button brand=\"success\" onClick={this.redirectForDocumentUploadOrSign}>\n {'Generate my document(s)'}\n </Button>\n </InputWrapper>\n )}\n {resourceType === 'profileVerification' && (\n <InputWrapper>\n <Button brand=\"Primary\" onClick={this.redirectForProfileVerification}>\n {'Go to My Profile'}\n </Button>\n </InputWrapper>\n )}\n {resourceType === 'questionnaire' && (\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForQuestionnaire}>\n {'Go to Renewal Questionnaire'}\n </Button>\n </InputWrapper>\n )}\n {resourceType === 'renewalPayment' && (\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForRenewalPayment}>\n {'Pay Renewal Fee'}\n </Button>\n </InputWrapper>\n )}\n {resourceType === 'renewalCredit' && (\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.rsCreditProcess}>\n {'Acknowledge'}\n </Button>\n </InputWrapper>\n )}\n {resourceType === 'documents' && (\n <InputWrapper>\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\n {'Go to current step'}\n </Button>\n </InputWrapper>\n )}\n {resourceType === 'nsldsupload' && (\n <InputWrapper>\n <Button brand=\"info\" onClick={this.redirectForNSLDSUpload}>\n {'Go to current step'}\n </Button>\n </InputWrapper>\n )}\n </div>\n </div>\n </>\n );\n };\n\n handleChange = debounce((formState, id, attributes) => {\n this.setState({ ...this.state, showCheckbox: !this.state.showCheckbox });\n }, 250);\n\n render() {\n const { stepId, permissions } = this.props;\n let atCompleteStep = false;\n\n if (permissions.forgivenessSteps != undefined) {\n const completeStep = permissions.forgivenessSteps.find((a) => a.id === 'Complete');\n atCompleteStep = completeStep && completeStep.stepCurrent;\n }\n\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\n return <Redirect to={this.state.redirectURI} />;\n } else {\n if (this.checkNotYetAtStep()) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('notAtStep') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\">\n <InputWrapper>\n <InputLabel>You haven't reached this step yet.</InputLabel>\n </InputWrapper>\n </div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\n {'Go to current step'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else if (this.checkStepCompleted()) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('stepCompleted') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\">\n <InputWrapper>\n <InputLabel2>You've completed this step.</InputLabel2>\n </InputWrapper>\n </div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\n {'Go to current step'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else if (this.needsDocumentsGenerated()) {\n if (this.checkLockedForLWO(stepId)) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('generateDoc') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForLWO}>\n Go to Assure℠\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('generateDoc') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n {!atCompleteStep && (\n <Button brand=\"success\" onClick={this.redirectForDocumentGeneration}>\n {'Generate my document(s)'}\n </Button>\n )}\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n }\n } else {\n if (stepId === 209 || stepId === 1601) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('profileVerification') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForProfileVerification}>\n {'Go to My Profile'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else if (stepId === 202) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('documents') : null}\n >\n <DocsNeededForRSUpload />\n\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"success\" onClick={this.redirectForDocumentUploadOrSign}>\n {'Upload Documents'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else if (stepId === 201 || stepId === 1605) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('questionnaire') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForQuestionnaire}>\n {'Go to Renewal Questionnaire'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else if ((stepId === 204 || stepId === 250) && this.props.zeroBalance === false) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('renewalPayment') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForRenewalPayment}>\n {'Pay Renewal Fee'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else if (stepId === 250 && this.props.zeroBalance === true) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('renewalCredit') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.rsCreditProcess}>\n {'Acknowledge'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else if (stepId === 260) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('documentUpload') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForDocumentUploadOrSign}>\n {'Repayment Details Needed'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else {\n if (\n stepId === 253 ||\n stepId === 256 ||\n stepId === 801 ||\n stepId == 805 ||\n stepId === 810\n ) {\n if (this.checkLockedForLWO(stepId)) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('generateDoc') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForLWO}>\n Go to Assure℠\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else {\n return <StandardFax stepId={stepId} />;\n }\n } else if (stepId === 351) {\n return (\n <AsyncLoader\n request={this.props.request}\n empty={this.props.request.isEmpty ? this.getResources('nsldsupload') : null}\n >\n <div className=\"row col-12\">\n <div className=\"col-8\"></div>\n <div className=\"col-4\">\n <InputWrapper>\n <Button brand=\"primary\" onClick={this.redirectForNSLDSUpload}>\n {'Upload NSLDS'}\n </Button>\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n );\n } else {\n return (\n <>\n <Modal ref={this.modalRef} isOpen={this.state.empCertDeniedModal} fullWidth={false}>\n <Card>\n <CardHeader>Confirm Employment Certification Denied</CardHeader>\n <CardBody>\n <TextLeft>\n <p>\n By selecting Confirm, you are confirming your employment certification\n form was denied and a member of your Fiducius team will be contact within\n 3 business days to address the issue.\n </p>\n </TextLeft>\n </CardBody>\n <CardFooter>\n <FlexBetween>\n <Button brand=\"lowContrast\" onClick={this.toggleEmpCertDeniedModal}>\n Cancel\n </Button>\n <Button brand=\"danger\" onClick={this.onConfirmDenied}>\n {'Confirm'}\n </Button>\n </FlexBetween>\n </CardFooter>\n </Card>\n </Modal>\n <AsyncLoader request={this.props.request}>\n <div className=\"row col-12\">\n <div className=\"col-12\">\n <InputWrapper2>\n <InputCheckbox\n name=\"allowConfirmation\"\n label=\"I am ready to confirm that I have followed all of the above steps and am ready to continue.\"\n onChange={(e) =>\n this.handleChange(\n { allowConfirmation: e.target.value },\n 'allowConfirmation',\n 'allowConfirmation'\n )\n }\n ></InputCheckbox>\n </InputWrapper2>\n </div>\n </div>\n <div className=\"row col-12\">\n <div className=\"col-8\">\n {stepId === 815 && (\n <Button brand=\"danger\" onClick={this.toggleEmpCertDeniedModal}>\n {'Employment Certification Denied'}\n </Button>\n )}\n </div>\n <div className=\"col-4\">\n <InputWrapper>\n {this.props.additionalInfoNeeded === false ||\n this.props.additionalInfoNeeded === undefined ? (\n <Button\n id={'confirm'}\n brand={'primary'}\n onClick={this.onConfirm}\n disabled={!this.state.showCheckbox}\n >\n {'Confirm'}\n </Button>\n ) : (\n <Button brand={'primary'} id={'update'} onClick={this.goToInfo}>\n Update Missing Step Info\n </Button>\n )}\n </InputWrapper>\n </div>\n </div>\n </AsyncLoader>\n </>\n );\n }\n }\n }\n }\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n id: getUserId(state),\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n state.todos.requests.loadCollection,\n state.payment.requests.loadResource,\n state.renewalResults.requests.loadResource,\n state.renewalResults.requests.updateResource,\n ]),\n todos: Object.values(state.todos.cache),\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n confirm: async (id) => {\n await dispatch(todosUpdateResource(id));\n await dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n idrConfirm: async (id) => {\n await dispatch(idrSaveComplete(id));\n await dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n acknowledgeRsFeeCredits: async (id) => {\n await dispatch(renewalResultsUpdateResource(id));\n dispatch(authLoadPermissions());\n dispatch(renewalResultsLoadResource(id));\n await dispatch(todosLoadCollection());\n },\n setPaymentType: async () => await dispatch(paymentSetTypeRenewal()),\n confirmDenied: async (id) => {\n await dispatch(todosSendDenied(816));\n await dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n confirmEmploymentHistory: async (id) => {\n await dispatch(todosSendUpdate(1606));\n await dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(RenewalConfirmation));\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { safeAccess, debounce, mergeRequestStatuses, flatten } from '../../../utils';\r\nimport ComponentStepDisplay from '../components/component-step-display';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport RenewalConfirmation from '../components/renewal-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport StepDisplay from '../components/step-display';\r\n\r\nclass ContributionRSSS extends React.Component {\r\n static propTypes = {\r\n data: t.object.isRequired,\r\n form: t.object.isRequired,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n updateForm: t.func.isRequired,\r\n onLoad: t.func.isRequired,\r\n action: t.func.isRequired,\r\n isMarried: t.bool.isRequired,\r\n errors: t.object,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showStep1: false,\r\n showStep2: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n //this.props.onLoad();\r\n const pathName = window.location.pathname;\r\n if (pathName.includes('/step')) {\r\n this.setState({\r\n ...this.state,\r\n showStep1: pathName.includes('/step-1'),\r\n showStep2: pathName.includes('/step-2'),\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n this.props.updateForm({ ...this.props.form, ...formState }, [attribute]);\r\n }, 250);\r\n\r\n getCurrentStep = () => {\r\n const { todos, permissions } = this.props;\r\n const forgivenessSteps = flatten(permissions.forgivenessSteps.filter((a) => a.stepCurrent));\r\n\r\n let CurrentToDo = todos.find(\r\n (a) => forgivenessSteps.id === 'Contribution' && (a.id === 260 || a.id === 261)\r\n );\r\n\r\n if (CurrentToDo === undefined || CurrentToDo === null) {\r\n CurrentToDo = 0;\r\n } else {\r\n CurrentToDo = CurrentToDo.id;\r\n }\r\n\r\n return CurrentToDo;\r\n };\r\n\r\n render() {\r\n const { todos } = this.props;\r\n let currentToDo = 0;\r\n\r\n if (Object.entries(todos).length > 0) {\r\n currentToDo = this.getCurrentStep();\r\n }\r\n\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request}>\r\n <CardTitle>Contribution</CardTitle>\r\n <CardText>\r\n Completing this step will allow you to set-up your employer contribution for this\r\n year.\r\n </CardText>\r\n <ComponentStepDisplay\r\n title={'Step 1 – Upload your repayment details'}\r\n show={this.state.showStep1}\r\n >\r\n <CardText>\r\n <ul>\r\n <li>\r\n The next step of the process is for you to provide your repayment details\r\n for verification.\r\n </li>\r\n </ul>\r\n\r\n {currentToDo === 260 && <RenewalConfirmation stepId={260} />}\r\n </CardText>\r\n </ComponentStepDisplay>\r\n <StepDisplay title={'Step 2 – Repayment details review'}>\r\n <ul>\r\n <li>\r\n We are validating your income-driven repayment and employer contribution. The\r\n review can take up to 45 days to complete.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const userId = getUserId(state);\r\n let data = safeAccess(state, `idr.cache[${userId}]`, {});\r\n let form = safeAccess(state, 'idr.form', {});\r\n form.actualRepaymentType = data.projectedRepaymentType;\r\n form.projectedRepaymentType = data.projectedRepaymentType;\r\n\r\n return {\r\n data: data,\r\n form: form,\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ContributionRSSS));\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n AsyncLoader,\n Card,\n CardBody,\n CardTitle,\n CardText,\n DashboardSection,\n Button,\n InputWrapper,\n InputLabel,\n InputGroup,\n InputError,\n InputMask,\n InputNumeric,\n InputAddon,\n Form,\n Lede,\n} from 'fiducius-ui';\n\nimport {\n safeAccess,\n debounce,\n formatAsMoney,\n convertIsoToSlash,\n mergeRequestStatuses,\n} from '../../../utils';\n\nimport { getUserId } from '../../../auth';\nimport { withPermissions } from '../../../routing';\n\nimport StandardConfirmation from '../components/standard-confirmation';\nimport ForgivenessProgress from '../components/forgiveness-progress';\nimport StepDisplay from '../components/step-display';\nimport ComponentStepDisplay from '../components/component-step-display';\nimport { MessageTile } from '../../../messages';\nimport { MessageDiv } from '../../../messages';\n\nimport {\n idrCopyCompleteToForm,\n idrLoadComplete,\n idrHandleFormChange,\n} from '../../../workflows/idr/redux/operations';\n\nclass Idr extends React.Component {\n static propTypes = {\n data: t.object.isRequired,\n form: t.object.isRequired,\n repayTypeName: t.string.isRequired,\n permissions: t.object.isRequired,\n request: t.object.isRequired,\n updateForm: t.func.isRequired,\n onLoad: t.func.isRequired,\n action: t.func.isRequired,\n isMarried: t.bool.isRequired,\n errors: t.object,\n todos: t.array,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n showStep1: false,\n showStep2: false,\n showStep3: false,\n customStep3Show: false,\n goToStep3: false,\n };\n }\n\n componentDidMount() {\n this.props.onLoad();\n const pathName = window.location.pathname;\n if (pathName.includes('/step')) {\n this.setState({\n ...this.state,\n showStep1: pathName.includes('/step-1'),\n showStep2: pathName.includes('/step-2'),\n showStep3: pathName.includes('/step-3'),\n });\n }\n }\n\n componentDidUpdate() {}\n\n handleChange = debounce((formState, id, attribute) => {\n this.props.updateForm({ ...this.props.form, ...formState }, [attribute]);\n }, 250);\n\n goToStep3 = () => {\n this.setState({ customStep3Show: true }, () => {\n this.scrollToStep('customStep3');\n });\n };\n\n handleStep1Click = () => {\n this.handleSectionClick('step1');\n };\n handleStep2Click = () => {\n this.handleSectionClick('step2');\n };\n handleStep3Click = () => {\n this.handleSectionClick('step3');\n };\n\n handleSectionClick = (sectionName) => {\n if (sectionName === 'step1') {\n this.setState(\n {\n showStep1: true,\n showStep2: false,\n showStep3: false,\n },\n () => {\n this.scrollToStep(sectionName);\n }\n );\n } else if (sectionName === 'step2') {\n this.setState(\n {\n showStep1: false,\n showStep2: true,\n showStep3: false,\n },\n () => {\n this.scrollToStep(sectionName);\n }\n );\n } else if (sectionName === 'step3') {\n this.setState(\n {\n showStep1: false,\n showStep2: false,\n showStep3: true,\n },\n () => {\n this.scrollToStep(sectionName);\n }\n );\n }\n };\n\n scrollToStep(section) {\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\n }\n\n getStep1Brand = () => {\n let retVal = 'warning';\n const { permissions, todos } = this.props;\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'IDR');\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n retVal = 'success';\n } else {\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 111);\n if (currentToDo !== undefined && currentToDo !== null) {\n retVal = 'info';\n } else {\n const nextToDo = todos.find((a) => a.id === 112 || a.id === 113);\n if (nextToDo !== undefined && nextToDo !== null) {\n retVal = 'success';\n }\n }\n }\n }\n }\n\n return retVal;\n };\n\n getStep2Brand = () => {\n let retVal = 'warning';\n const { permissions, todos } = this.props;\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'IDR');\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n retVal = 'success';\n } else {\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 112);\n if (currentToDo !== undefined && currentToDo !== null) {\n retVal = 'info';\n } else {\n const nextToDo = todos.find((a) => a.id === 113);\n if (nextToDo !== undefined && nextToDo !== null) {\n retVal = 'success';\n }\n }\n }\n }\n }\n\n return retVal;\n };\n\n getStep3Brand = () => {\n let retVal = 'warning';\n const { permissions, todos } = this.props;\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'IDR');\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n retVal = 'success';\n } else {\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 113);\n if (currentToDo !== undefined && currentToDo !== null) {\n retVal = 'info';\n }\n }\n }\n }\n\n return retVal;\n };\n\n getStep3RestrictionDate = () => {\n let retVal = undefined;\n const { permissions } = this.props;\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'IDR');\n if (empCertStep.stepDateRestriction !== undefined) {\n let stepRestriction = new Date(empCertStep.stepDateRestriction);\n retVal =\n (stepRestriction.getMonth() + 1).toString() +\n '/' +\n stepRestriction.getDate() +\n '/' +\n stepRestriction.getFullYear();\n }\n return retVal;\n };\n\n getServicerNames = () => {\n const { form } = this.props;\n return (\n <>\n <ul>\n {form.servicerNames.map((item, i) => (\n <>\n <li key={i}>{item}</li>\n </>\n ))}\n </ul>\n </>\n );\n };\n\n render() {\n const { errors, isMarried, repayTypeName, form, permissions, data } = this.props;\n const restrictionDate = this.getStep3RestrictionDate();\n\n let isMarriedText = <></>;\n if (isMarried) {\n isMarriedText = (\n <>\n <li>\n Please verify your spouse's Social Security Number is present on Question 9 (page 2).\n <ul>\n <li>This is only necessary if your spouse has a federal student loan balance.</li>\n </ul>\n </li>\n </>\n );\n }\n\n let repaymentPlanTypeInfo;\n if (repayTypeName !== undefined && repayTypeName !== null && repayTypeName !== '') {\n repaymentPlanTypeInfo = (\n <>\n Your repayment plan type should be <strong>{repayTypeName.toString()}</strong>.\n </>\n );\n } else {\n repaymentPlanTypeInfo = (\n <strong>\n Your repayment plan type isn't set. Please visit the Contact Us button on the left of your\n portal to reach out to us regarding this.\n </strong>\n );\n }\n\n let repaymentPlanAmountInfo;\n if (\n form.projectedIdr !== undefined &&\n form.projectedIdr !== null &&\n !isNaN(form.projectedIdr)\n ) {\n repaymentPlanAmountInfo = (\n <>\n Your repayment amount should be <strong>{formatAsMoney(form.projectedIdr)}</strong>.\n </>\n );\n } else {\n repaymentPlanAmountInfo = (\n <strong>\n Your repayment amount isn't set. Please visit the Contact Us button on the left of your\n portal to reach out to us regarding this.\n </strong>\n );\n }\n\n let planChangingInfo;\n let projectedRepaymentPlanType = data.projectedRepaymentType;\n\n if (projectedRepaymentPlanType === 'REPAY') {\n projectedRepaymentPlanType = 'REPAYE';\n }\n\n switch (data.planChangingCode) {\n case 1:\n planChangingInfo = (\n <li>\n Note: Due to the changes you reported with your marital and/or tax filing status, you\n will be changing to the {projectedRepaymentPlanType} plan this year to maximum your\n financial wellness.\n </li>\n );\n break;\n default:\n break;\n }\n\n return (\n <>\n <ForgivenessProgress />\n <DashboardSection>\n <Card brand=\"primary\">\n <CardBody>\n <CardTitle>Repayment Application</CardTitle>\n <CardText>\n <p>\n Completing this step will submit your application to set up your new Income-Driven\n Repayment (IDR) for this year.\n </p>\n <p>\n <MessageDiv messageType={'IDR_Tab'} />\n </p>\n <div className=\"row col-12\">\n <div className=\"col-4\">\n <Lede>\n <Button brand={this.getStep1Brand()} onClick={this.handleStep1Click}>\n Generate\n </Button>\n </Lede>\n </div>\n <div className=\"col-4\">\n <Lede>\n <Button brand={this.getStep2Brand()} onClick={this.handleStep2Click}>\n Submit\n </Button>\n </Lede>\n </div>\n <div className=\"col-4\">\n <Lede>\n <Button brand={this.getStep3Brand()} onClick={this.handleStep3Click}>\n Review\n </Button>\n </Lede>\n </div>\n </div>\n </CardText>\n </CardBody>\n </Card>\n </DashboardSection>\n {this.state.showStep1 && (\n <div id=\"step1Section\">\n <DashboardSection title=\"Generate your Repayment Application\">\n <div id=\"messageSection\">\n <MessageTile messageType={'IDR_Generate'} />\n </div>\n <Card>\n <CardBody disableChildren={data.planChangingCode === 2}>\n <AsyncLoader request={this.props.request} loading={<></>}>\n <StepDisplay title={'Step 1 - Sign Repayment Application'}>\n <ul>\n <li>\n Please click the button below to generate your Repayment Application.\n </li>\n <li>Complete the short questionnaire.</li>\n <li>Electronically sign the application.</li>\n <li>\n After electronically signing your application, you will be taken to your\n My Documents page where you can download the file.\n </li>\n {planChangingInfo}\n </ul>\n </StepDisplay>\n </AsyncLoader>\n <StandardConfirmation stepId={111} />\n </CardBody>\n {data.planChangingCode === 2 && (\n <>\n <CardBody overlayCard>\n <>\n <CardTitle overlayCard>\n Income-Driven Repayment (IDR) Application Hold\n </CardTitle>\n <CardText overlayCard>\n <p>\n Recent federal modifications have created several changes to the Public\n Service Loan Forgiveness (PSLF) program that prevent the proper\n generation and submission of the IDR application for your situation at\n this time.\n </p>\n <p>\n We are monitoring the modifications and will notify you as soon as the\n proper application can be generated.\n </p>\n </CardText>\n </>\n </CardBody>\n </>\n )}\n </Card>\n </DashboardSection>\n </div>\n )}\n {this.state.showStep2 && (\n <div id=\"step2Section\">\n <DashboardSection title=\"Submit your Repayment Application\">\n <div id=\"messageSection\">\n <MessageTile messageType={'IDR_Submit'} />\n </div>\n <div className=\"row\">\n <div className=\"col-12\">\n <Card>\n <CardBody>\n <AsyncLoader request={this.props.request} loading={<></>}>\n <StepDisplay title={'Step 1 – Verify Repayment Application Information'}>\n <ul>\n <li>\n Please verify your Social Security Number is present on the first six\n pages of your application prior to submitting it.\n </li>{' '}\n {isMarriedText}\n {planChangingInfo}\n </ul>\n </StepDisplay>\n {/*{data.incomeDocToInclude != null && (\n <Alert brand=\"warning\">{data.incomeDocToInclude}</Alert>\n )}*/}\n </AsyncLoader>\n <StandardConfirmation stepId={112} />\n </CardBody>\n </Card>\n </div>\n </div>\n </DashboardSection>\n </div>\n )}\n {this.state.showStep3 && (\n <div id=\"step3Section\">\n <DashboardSection title=\"Check on your Repayment Application\">\n <div id=\"messageSection\">\n <MessageTile messageType={'IDR_Review'} />\n </div>\n <Card overlayCard={restrictionDate !== undefined}>\n <CardBody overlayCard hideOverlay={restrictionDate === undefined}>\n {restrictionDate !== undefined && (\n <>\n <CardTitle overlayCard>\n Wait for income-driven repayment to finalize\n </CardTitle>\n <CardText overlayCard>\n <p>\n Based on the average processing time for this document, it will be\n processed by your loan servicer on {restrictionDate} at the earliest*. You\n will not be able to confirm completion of this step until that date.\n </p>\n <p>\n *Please note: Your document is not guaranteed to be processed by this\n date. It is important to follow your steps closely.\n </p>\n </CardText>\n </>\n )}\n </CardBody>\n <CardBody disableChildren={restrictionDate !== undefined}>\n <AsyncLoader request={this.props.request} loading={<></>}>\n <StepDisplay title={'Step 1 – Access loan servicer account'}>\n <ul>\n <li>Login to your account at the following loan servicer(s):</li>\n {form.servicerNames && this.getServicerNames()}\n </ul>\n </StepDisplay>\n <StepDisplay\n title={\n 'Step 2 – Check the status of the income-driven repayment (Every seven days)'\n }\n >\n <ul>\n <li>Check your Loan Details for the \"In Repayment\" status.</li>\n <li>\n <strong>Please note:</strong> It typically takes{' '}\n <strong>four to eight weeks</strong> for a repayment application to\n process.\n </li>\n <li>\n Check your Inbox/Documentation at your loan servicer for an approval\n statement.\n </li>\n <li>What are you looking for?</li>\n <ul>\n <li>{repaymentPlanAmountInfo}</li>\n </ul>\n </ul>\n </StepDisplay>\n {/*Contact us at{' '}\n<a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2.*/}\n <div id=\"customStep3Section\">\n <Form id=\"idrComplete\" handleChange={this.handleChange} defaults={form}>\n <ComponentStepDisplay\n title={'Step 3 – Provide repayment details'}\n show={this.state.customStep3Show}\n >\n <CardText>\n <ul>\n <li>\n <InputWrapper error={!!errors.doeRepayDate}>\n <InputLabel htmlFor=\"doeRepayDate\">\n My repayment plan begins on\n </InputLabel>\n <InputError>\n {safeAccess(errors, 'doeRepayDate.detail')}\n </InputError>\n <InputGroup affordance=\"medium\">\n <InputMask\n defaultValue={convertIsoToSlash(form.doeRepayDate)}\n mask=\"##/##/####\"\n name=\"doeRepayDate\"\n placeholder=\"MM/DD/YYYY\"\n />\n </InputGroup>\n </InputWrapper>\n </li>\n <li>\n {/* TODO: This needs to be an input field for actual-idr*/}\n <InputWrapper error={!!errors.actualIdr}>\n <InputLabel htmlFor=\"actualIdr\">\n My repayment amount is\n </InputLabel>\n <InputError>{safeAccess(errors, 'actualIdr.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputAddon>$</InputAddon>\n <InputNumeric\n name=\"actualIdr\"\n step=\"0.01\"\n defaultValue={form.actualIdr}\n />\n </InputGroup>\n </InputWrapper>\n </li>\n </ul>\n <ul>\n <li>\n If your repayment details reflect a higher repayment amount than the\n one shown on your Fiducius account, please visit the Contact Us\n button on the left of your portal to reach out to us regarding this.\n {/*contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2.*/}\n </li>\n </ul>\n </CardText>\n </ComponentStepDisplay>\n </Form>\n </div>\n <StepDisplay title={'Step 4 – Confirm completion'}>\n <ul>\n <li>Confirm your correct income-driven repayment has been set up.</li>\n <ul>\n <li>\n The plan type on your repayment details should match the repayment plan\n type on your Fiducius account.\n </li>\n <li>\n We recommend you save a copy of your repayment details to keep a\n physical history of your repayments.\n {permissions.showContribution && (\n <>\n Your repayment details will also be needed in the next step for\n verification of your repayment to establish your employer\n contribution.\n </>\n )}\n </li>\n </ul>\n </ul>\n </StepDisplay>\n </AsyncLoader>\n {form.doeRepayDate !== null &&\n errors.doeRepayDate === false &&\n form.actualIdr !== null &&\n errors.actualIdr === false ? (\n <>\n <StandardConfirmation stepId={113} additionalInfoNeeded={false} />\n </>\n ) : (\n <StandardConfirmation\n stepId={113}\n additionalInfoNeeded={true}\n handleChange={this.goToStep3.bind(this)}\n />\n )}\n </CardBody>\n </Card>\n </DashboardSection>\n </div>\n )}\n </>\n );\n }\n}\n\nconst mapRepaymentType = (type) => {\n switch (type) {\n case 'PAYE':\n return 'Pay as you earn';\n case 'REPAY':\n return 'Revised pay as you earn';\n case 'IBR':\n return 'Income based repayment';\n case 'ICR':\n return 'Income contingent repayment';\n case 'SAVE':\n return 'Saving on a Valuable Education';\n default:\n return 'Other';\n }\n};\n\nconst mapStateToProps = (state) => {\n const userId = getUserId(state);\n let data = safeAccess(state, `idr.cache[${userId}]`, {});\n let form = safeAccess(state, 'idr.form', {});\n form.actualRepaymentType = data.projectedRepaymentType;\n form.projectedRepaymentType = data.projectedRepaymentType;\n\n return {\n data: data,\n form: form,\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n state.todos.requests.loadCollection,\n state.idr.requests.updateResource,\n state.selfServiceDocument.requests.updateResource,\n state.selfServiceDocument.requests.loadCollection,\n ]),\n isMarried: safeAccess(state, 'auth.cache.permissions.married', false),\n repayTypeName: mapRepaymentType(data.projectedRepaymentType),\n errors: safeAccess(state, 'idr.errors', {}),\n todos: Object.values(state.todos.cache),\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n updateForm: (state, attributes) => dispatch(idrHandleFormChange(state, attributes)),\n onLoad: async () => {\n await dispatch(idrLoadComplete(ownProps.id));\n dispatch(idrCopyCompleteToForm());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Idr));\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\n\nimport { connect } from 'react-redux';\nimport {\n Card,\n CardBody,\n CardText,\n DashboardSection,\n Button,\n Header2,\n Header4,\n InputWrapper,\n ProgressBar,\n} from 'fiducius-ui';\nimport { Redirect } from 'react-router-dom';\n\nimport { safeAccess, mergeRequestStatuses } from '../../../utils';\n\nimport { withPermissions } from '../../../routing';\n\nconst StyleBar = styled(ProgressBar)`\n margin-bottom: 2rem;\n`;\n\nclass ReducedIDRProgress extends React.Component {\n static propTypes = {\n permissions: t.object.isRequired,\n request: t.object.isRequired,\n todos: t.array,\n removeContainer: t.bool,\n };\n\n constructor(props) {\n super(props);\n this.state = { redirectURI: '', fullServiceSteps: 9, currentURI: '' };\n }\n\n componentDidMount() {\n this.setState({ ...this.state, currentURI: window.location.pathname });\n }\n\n componentDidUpdate() {}\n\n goToCurrentStep = () => {\n const { permissions, todos } = this.props;\n let retVal = '/dashboard';\n if (permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null) {\n let reducedIDRStep = permissions.reducedIdrSteps.find((a) => a.stepCurrent);\n if (\n reducedIDRStep !== undefined &&\n reducedIDRStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (reducedIDRStep.id === 'CompleteReducedIDR') {\n retVal = '/benefits/reducedidr' + reducedIDRStep.stepPath;\n }\n\n if (reducedIDRStep.id === 'QuestionnaireReducedIDR') {\n retVal = '/benefits/reducedidr' + reducedIDRStep.stepPath;\n } else if (reducedIDRStep.id === 'EmpCertEmploymentInformation') {\n retVal = '/benefits/reducedidr' + reducedIDRStep.stepPath;\n } else {\n const currentToDo = todos.find(\n (a) =>\n a.id === 800 ||\n a.id === 801 ||\n a.id === 805 ||\n a.id === 810 ||\n a.id === 815 ||\n a.id === 816 ||\n a.id === 820 ||\n a.id === 1100 ||\n a.id === 1200 ||\n a.id === 1300 ||\n a.id === 1400 ||\n a.id === 1500 ||\n a.id === 1600 ||\n a.id === 1601 ||\n a.id === 1605 ||\n a.id === 1606 ||\n a.id === 1610 ||\n a.id === 1620 ||\n a.id === 1630\n );\n\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 800:\n case 801:\n case 805:\n case 810:\n case 815:\n case 816:\n case 820:\n retVal = '/benefits/reducedidr/empcert-ss';\n break;\n case 1100:\n retVal = '/benefits/reducedidr/welcome';\n break;\n case 1200:\n retVal = '/benefits/reducedidr/idr';\n break;\n case 1300:\n retVal = '/benefits/reducedidr/idr';\n break;\n case 1400:\n retVal = '/benefits/reducedidr/idr';\n break;\n case 1500:\n retVal = '/benefits/reducedidr/complete';\n break;\n case 1600:\n retVal = '/benefits/reducedidr/idrrenewal';\n break;\n case 1601:\n retVal = '/benefits/reducedidr/profile';\n break;\n case 1605:\n retVal = '/benefits/reducedidr/questionnaire';\n break;\n case 1606:\n retVal = '/benefits/reducedidr/employmenthistory';\n break;\n case 1610:\n retVal = '/benefits/reducedidr/idrrenewal';\n break;\n case 1620:\n retVal = '/benefits/reducedidr/idrrenewal';\n break;\n case 1630:\n retVal = '/benefits/reducedidr/completerenewal';\n break;\n }\n }\n }\n }\n }\n\n this.setState({ ...this.state, redirectURI: retVal });\n };\n\n getCurrentStepText = () => {\n const { permissions, todos } = this.props;\n const reducedIdrSteps = permissions.reducedIdrSteps.filter((a) => a.stepCurrent);\n let reducedIDRStep = permissions.reducedIdrSteps.find((a) => a.stepCurrent);\n if (\n reducedIdrSteps !== undefined &&\n reducedIdrSteps !== null &&\n reducedIdrSteps.length > 1 &&\n reducedIdrSteps.find((a) => window.location.pathname.includes(a.stepPath))\n ) {\n reducedIDRStep = reducedIdrSteps.find((a) => window.location.pathname.includes(a.stepPath));\n }\n\n let retVal = '';\n if (\n reducedIDRStep !== undefined &&\n reducedIDRStep !== null &&\n todos !== undefined &&\n todos !== null\n ) {\n if (\n reducedIDRStep.id === 'WelcomeReducedIDR' ||\n reducedIDRStep.id === 'IDRReducedIDR' ||\n reducedIDRStep.id === 'CompleteReducedIDR' ||\n reducedIDRStep.id === 'QuestionnaireReducedIDR' ||\n reducedIDRStep.id === 'ProfileReducedIDR'\n ) {\n retVal = reducedIDRStep.stepText;\n const currentToDo = todos.find(\n (a) =>\n (reducedIDRStep.id === 'WelcomeReducedIDR' && a.id === 1100) ||\n ((reducedIDRStep.id === 'IDRReducedIDR' ||\n reducedIDRStep.id === 'ProfileReducedIDR' ||\n reducedIDRStep.id === 'QuestionnaireReducedIDR') &&\n (a.id === 1200 ||\n a.id === 1300 ||\n a.id === 1400 ||\n a.id === 1600 ||\n a.id === 1601 ||\n a.id === 1605 ||\n a.id === 1610 ||\n a.id === 1620)) ||\n (reducedIDRStep.id === 'CompleteReducedIDR' && a.id === 1500 && a.id === 1630)\n );\n\n if (currentToDo !== undefined && currentToDo !== null) {\n switch (currentToDo.id) {\n case 1100:\n retVal += '';\n break;\n case 1200:\n retVal += ' Implementation - Generate';\n break;\n case 1300:\n retVal += ' Implementation - Submit';\n break;\n case 1400:\n retVal += ' Implementation - Review';\n break;\n case 1500:\n retVal += '';\n break;\n case 1600:\n retVal += ' Renewal - Generate';\n break;\n case 1601:\n retVal = 'Renewal - Profile Verification';\n break;\n case 1605:\n retVal = 'Renewal - Questionnaire';\n break;\n case 1610:\n retVal += ' Renewal - Submit';\n break;\n case 1620:\n retVal += ' Renewal - Review';\n break;\n case 1630:\n retVal += '';\n break;\n\n default:\n break;\n }\n } else {\n if (\n reducedIDRStep.id === 'CompleteReducedIDR' &&\n reducedIDRStep.stepPath === '/completerenewal'\n ) {\n retVal = 'Renewal - ' + reducedIDRStep.stepText;\n } else if (reducedIDRStep.id === 'CompleteReducedIDR') {\n retVal = 'Implementation - ' + reducedIDRStep.stepText;\n } else {\n retVal = reducedIDRStep.stepText;\n }\n }\n } else {\n retVal = reducedIDRStep.stepText;\n }\n }\n\n return retVal;\n };\n\n getTotalSteps = () => {\n const { permissions } = this.props;\n const reducedIdrSteps = permissions.reducedIdrSteps.filter(\n (a) => a.id !== 'OverviewReducedIDR'\n );\n return reducedIdrSteps.length;\n };\n\n getCompletedSteps = (normalized) => {\n const { permissions } = this.props;\n const reducedIdrSteps = permissions.reducedIdrSteps.filter(\n (a) => a.id !== 'OverviewReducedIDR'\n );\n const completedSteps = reducedIdrSteps.filter((a) => a.stepComplete);\n if (normalized) {\n return 100.0 * (completedSteps.length / reducedIdrSteps.length);\n } else {\n return Math.min(completedSteps.length + 1, reducedIdrSteps.length);\n }\n };\n\n getCurrentStep = () => {\n const { permissions } = this.props;\n const reducedIdrSteps = permissions.reducedIdrSteps.filter(\n (a) => a.id !== 'OverviewReducedIDR'\n );\n const currentSteps = permissions.reducedIdrSteps.filter(\n (a) => a.id !== 'OverviewReducedIDR' && a.stepCurrent\n );\n const allStepsCompleted = permissions.reducedIdrSteps.filter(\n (a) => a.id === 'CompleteReducedIDR' && a.stepComplete\n );\n\n if (allStepsCompleted.length > 0) {\n return 0;\n } else {\n return 100.0 * (currentSteps.length / reducedIdrSteps.length);\n }\n };\n\n getCurrentStepPath = () => {\n const { permissions } = this.props;\n\n const currentSteps = permissions.reducedIdrSteps.filter(\n (a) => a.id !== 'OverviewReducedIDR' && a.stepCurrent\n );\n\n let stepPaths = [];\n currentSteps.forEach((step) => {\n stepPaths.push(step.stepPath);\n });\n //return an array since we can have multiple current steps.\n return stepPaths;\n };\n\n onCurrentStep = () => {\n let steps = this.getCurrentStepPath();\n var retVal = false;\n steps.forEach((step) => {\n if (retVal === false) {\n retVal = this.state.currentURI.includes(step);\n }\n });\n return retVal;\n };\n\n getLockedSteps = () => {\n return 100.0 - this.getCompletedSteps(true) - this.getCurrentStep();\n };\n\n render() {\n const { permissions, removeContainer } = this.props;\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\n return <Redirect to={this.state.redirectURI} />;\n } else {\n if (\n safeAccess(permissions, 'reducedIdrSteps') &&\n safeAccess(permissions, 'reducedIdrSteps').length > 1\n ) {\n return (\n <>\n {removeContainer && (\n <Card>\n <CardBody>\n <CardText>\n <Header2>\n Your Reduced IDR Progress : {this.getCompletedSteps(false)} /{' '}\n {this.getTotalSteps()}\n </Header2>\n\n <StyleBar\n categories={[\n {\n brand: 'success',\n name: 'success',\n title: 'Completed',\n value: this.getCompletedSteps(true),\n },\n\n {\n brand: 'info',\n name: 'info',\n title: 'Current',\n value: this.getCurrentStep(),\n },\n {\n brand: 'warning',\n name: 'warning',\n title: 'Locked',\n value: this.getLockedSteps(),\n },\n ]}\n />\n <div className=\"row col-12\">\n <div className=\"col-8 col-xl-8 col-lg-8 col-md-8 col-sm-12 col-xs-12\">\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\n </div>\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-4 col-sm-12 col-xs-12\">\n <InputWrapper>\n {!this.onCurrentStep() && (\n <Button brand=\"primary\" onClick={this.goToCurrentStep}>\n {'Go to current step'}\n </Button>\n )}\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </Card>\n )}\n {!removeContainer && (\n <DashboardSection>\n <Card>\n <CardBody>\n <CardText>\n <Header2>\n Your Reduced IDR Progress : {this.getCompletedSteps(false)} /{' '}\n {this.getTotalSteps()}\n </Header2>\n <StyleBar\n categories={[\n {\n brand: 'success',\n name: 'success',\n title: 'Completed',\n value: this.getCompletedSteps(true),\n },\n\n {\n brand: 'info',\n name: 'info',\n title: 'Current',\n value: this.getCurrentStep(),\n },\n {\n brand: 'warning',\n name: 'warning',\n title: 'Locked',\n value: this.getLockedSteps(),\n },\n ]}\n />\n <div className=\"row col-12\">\n <div className=\"col-8\">\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\n </div>\n <div className=\"col-4\">\n <InputWrapper>\n {!this.onCurrentStep() && (\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\n {'Go to current step'}\n </Button>\n )}\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n </Card>\n </DashboardSection>\n )}\n </>\n );\n } else {\n return <></>;\n }\n }\n }\n}\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n state.todos.requests.loadCollection,\n ]),\n todos: Object.values(state.todos.cache),\n});\n\nconst mapDispatchToProps = (dispatch) => ({});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ReducedIDRProgress));\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n AsyncLoader,\n Card,\n CardBody,\n CardTitle,\n CardText,\n DashboardSection,\n Button,\n InputWrapper,\n InputLabel,\n InputGroup,\n InputError,\n InputMask,\n InputNumeric,\n InputAddon,\n Form,\n Lede,\n} from 'fiducius-ui';\n\nimport {\n safeAccess,\n debounce,\n formatAsMoney,\n convertIsoToSlash,\n mergeRequestStatuses,\n} from '../../../utils';\n\nimport { getUserId, benefits } from '../../../auth';\nimport { withPermissions } from '../../../routing';\n\nimport StandardConfirmation from '../components/standard-confirmation';\nimport ReducedIDRProgress from '../../reducedidr/components/reduced-idr-progress';\nimport StepDisplay from '../components/step-display';\nimport ComponentStepDisplay from '../components/component-step-display';\n\nimport {\n idrCopyCompleteToForm,\n idrLoadComplete,\n idrHandleFormChange,\n} from '../../../workflows/idr/redux/operations';\nimport { benefitStatuses } from '../../../auth/redux/benefits';\n\nclass IdrReduced extends React.Component {\n static propTypes = {\n data: t.object.isRequired,\n form: t.object.isRequired,\n repayTypeName: t.string.isRequired,\n permissions: t.object.isRequired,\n request: t.object.isRequired,\n updateForm: t.func.isRequired,\n onLoad: t.func.isRequired,\n action: t.func.isRequired,\n isMarried: t.bool.isRequired,\n errors: t.object,\n todos: t.array,\n renewal: t.bool,\n benefitData: t.object,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n showStep1: false,\n showStep2: false,\n showStep3: false,\n customStep3Show: false,\n goToStep3: false,\n };\n }\n\n componentDidMount() {\n this.props.onLoad();\n const pathName = window.location.pathname;\n if (pathName.includes('/step')) {\n this.setState({\n ...this.state,\n showStep1: pathName.includes('/step-1'),\n showStep2: pathName.includes('/step-2'),\n showStep3: pathName.includes('/step-3'),\n });\n }\n }\n\n componentDidUpdate() {}\n\n handleChange = debounce((formState, id, attribute) => {\n this.props.updateForm({ ...this.props.form, ...formState }, [attribute]);\n }, 250);\n\n goToStep3 = () => {\n this.setState({ customStep3Show: true }, () => {\n this.scrollToStep('customStep3');\n });\n };\n\n getStepId = (inStepId) => {\n const { renewal } = this.props;\n let retStepId = inStepId;\n\n if (renewal) {\n switch (inStepId) {\n case 1200:\n retStepId = 1600;\n break;\n case 1300:\n retStepId = 1610;\n break;\n case 1400:\n retStepId = 1620;\n break;\n case 1500:\n retStepId = 1630;\n break;\n }\n }\n\n return retStepId;\n };\n\n handleStep1Click = () => {\n this.handleSectionClick('step1');\n };\n handleStep2Click = () => {\n this.handleSectionClick('step2');\n };\n handleStep3Click = () => {\n this.handleSectionClick('step3');\n };\n\n handleSectionClick = (sectionName) => {\n if (sectionName === 'step1') {\n this.setState(\n {\n showStep1: true,\n showStep2: false,\n showStep3: false,\n },\n () => {\n this.scrollToStep(sectionName);\n }\n );\n } else if (sectionName === 'step2') {\n this.setState(\n {\n showStep1: false,\n showStep2: true,\n showStep3: false,\n },\n () => {\n this.scrollToStep(sectionName);\n }\n );\n } else if (sectionName === 'step3') {\n this.setState(\n {\n showStep1: false,\n showStep2: false,\n showStep3: true,\n },\n () => {\n this.scrollToStep(sectionName);\n }\n );\n }\n };\n\n scrollToStep(section) {\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\n }\n\n getStep1Brand = () => {\n let retVal = 'warning';\n const { permissions, todos } = this.props;\n const empCertStep = permissions.reducedIdrSteps.find((a) => a.id === 'IDRReducedIDR');\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n retVal = 'success';\n } else {\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === this.getStepId(1200));\n if (currentToDo !== undefined && currentToDo !== null) {\n retVal = 'info';\n } else {\n const nextToDo = todos.find(\n (a) =>\n a.id === this.getStepId(1300) ||\n a.id === this.getStepId(1400) ||\n a.id === this.getStepId(1500)\n );\n if (nextToDo !== undefined && nextToDo !== null) {\n retVal = 'success';\n }\n }\n }\n }\n }\n\n return retVal;\n };\n\n getStep2Brand = () => {\n let retVal = 'warning';\n const { permissions, todos } = this.props;\n const empCertStep = permissions.reducedIdrSteps.find((a) => a.id === 'IDRReducedIDR');\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n retVal = 'success';\n } else {\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === this.getStepId(1300));\n if (currentToDo !== undefined && currentToDo !== null) {\n retVal = 'info';\n } else {\n const nextToDo = todos.find(\n (a) => a.id === this.getStepId(1400) || a.id === this.getStepId(1500)\n );\n if (nextToDo !== undefined && nextToDo !== null) {\n retVal = 'success';\n }\n }\n }\n }\n }\n\n return retVal;\n };\n\n getStep3Brand = () => {\n let retVal = 'warning';\n const { permissions, todos } = this.props;\n const empCertStep = permissions.reducedIdrSteps.find((a) => a.id === 'IDRReducedIDR');\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n retVal = 'success';\n } else {\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === this.getStepId(1400));\n if (currentToDo !== undefined && currentToDo !== null) {\n retVal = 'info';\n }\n }\n }\n }\n\n return retVal;\n };\n\n getStep3RestrictionDate = () => {\n let retVal = undefined;\n const { permissions } = this.props;\n const empCertStep = permissions.reducedIdrSteps.find((a) => a.id === 'IDRReducedIDR');\n\n if (empCertStep.stepDateRestriction !== undefined) {\n let stepRestriction = new Date(empCertStep.stepDateRestriction);\n retVal =\n (stepRestriction.getMonth() + 1).toString() +\n '/' +\n stepRestriction.getDate() +\n '/' +\n stepRestriction.getFullYear();\n }\n return retVal;\n };\n\n getShowGracePeriodOverlay = () => {\n const { benefitData } = this.props;\n const benefit = benefitData[benefits.REDUCEDIDR];\n let retVal = false;\n\n if (\n benefit &&\n (benefit.benefitEnrollmentStatus === benefitStatuses.QUALIFIED ||\n benefit.benefitEnrollmentStatus === benefitStatuses.ENROLLING ||\n benefit.benefitEnrollmentStatus === benefitStatuses.ENROLLED)\n ) {\n if (benefit.startDate && new Date(benefit.startDate) > new Date()) {\n retVal = true;\n }\n }\n\n return retVal;\n };\n\n getGracePeriodEndDate = () => {\n const { benefitData } = this.props;\n const benefit = benefitData[benefits.REDUCEDIDR];\n return convertIsoToSlash(benefit.startDate);\n };\n\n getServicerNames = () => {\n const { form } = this.props;\n return (\n <>\n <ul>\n {form.servicerNames.map((item, i) => (\n <>\n <li key={i}>{item}</li>\n </>\n ))}\n </ul>\n </>\n );\n };\n\n render() {\n const { errors, isMarried, repayTypeName, form, permissions, renewal, data } = this.props;\n const restrictionDate = this.getStep3RestrictionDate();\n\n let isMarriedText = <></>;\n let isMarriedRenewalText = <></>;\n if (isMarried) {\n isMarriedText = (\n <>\n <li>\n Please verify your spouse's Social Security Number is present on Question 9 (page 2).\n <ul>\n <li>This is only necessary if your spouse has a federal student loan balance.</li>\n </ul>\n </li>\n </>\n );\n isMarriedRenewalText = (\n <>\n <li>\n Verify that your spouse's Social Security number is present and correct on the\n application.\n <ul>\n <li>\n <i>This is only needed if your spouse has federal student loans.</i>\n </li>\n </ul>\n </li>\n </>\n );\n }\n\n let repaymentPlanLabelText = '';\n if (!!!renewal) {\n repaymentPlanLabelText = 'My repayment plan begins on';\n } else {\n repaymentPlanLabelText = 'My new repayment plan begins:';\n }\n\n let repaymentAmountLabelText = '';\n if (!!!renewal) {\n repaymentAmountLabelText = 'My repayment amount is';\n } else {\n repaymentAmountLabelText = 'My new repayment amount is:';\n }\n\n let repaymentPlanTypeInfo;\n if (repayTypeName !== undefined && repayTypeName !== null && repayTypeName !== '') {\n repaymentPlanTypeInfo = (\n <>\n Your repayment plan type should be <strong>{repayTypeName.toString()}</strong>.\n </>\n );\n } else {\n repaymentPlanTypeInfo = (\n <strong>\n Your repayment plan type isn't set. Please visit the Contact Us button on the left of your\n portal to reach out to us regarding this.\n </strong>\n );\n }\n\n let repaymentPlanAmountInfo;\n if (\n form.projectedIdr !== undefined &&\n form.projectedIdr !== null &&\n !isNaN(form.projectedIdr)\n ) {\n repaymentPlanAmountInfo = (\n <>\n Your repayment amount should be <strong>{formatAsMoney(form.projectedIdr)}</strong>.\n </>\n );\n } else {\n repaymentPlanAmountInfo = (\n <strong>\n Your repayment amount isn't set. Please visit the Contact Us button on the left of your\n portal to reach out to us regarding this.\n </strong>\n );\n }\n\n let planChangingInfo;\n let projectedRepaymentPlanType = data.projectedRepaymentType;\n\n if (projectedRepaymentPlanType === 'REPAY') {\n projectedRepaymentPlanType = 'REPAYE';\n }\n\n switch (data.planChangingCode) {\n case 1:\n planChangingInfo = (\n <li>\n Note: Due to the changes you reported with your marital and/or tax filing status, you\n will be changing to the {projectedRepaymentPlanType} plan this year to maximum your\n financial wellness.\n </li>\n );\n break;\n default:\n break;\n }\n\n return (\n <>\n <ReducedIDRProgress />\n <DashboardSection>\n <Card brand=\"primary\">\n <CardBody>\n <CardTitle>Repayment Application</CardTitle>\n <CardText>\n <p>\n Completing this step will submit your application to set up your new Income-Driven\n Repayment (IDR) for this year.\n </p>\n <div className=\"row col-12\">\n <div className=\"col-4\">\n <Lede>\n <Button brand={this.getStep1Brand()} onClick={this.handleStep1Click}>\n Generate\n </Button>\n </Lede>\n </div>\n <div className=\"col-4\">\n <Lede>\n <Button brand={this.getStep2Brand()} onClick={this.handleStep2Click}>\n Submit\n </Button>\n </Lede>\n </div>\n <div className=\"col-4\">\n <Lede>\n <Button brand={this.getStep3Brand()} onClick={this.handleStep3Click}>\n Review\n </Button>\n </Lede>\n </div>\n </div>\n </CardText>\n </CardBody>\n </Card>\n </DashboardSection>\n {this.state.showStep1 && (\n <div id=\"step1Section\">\n <DashboardSection title=\"Generate your Repayment Application\">\n <Card>\n <CardBody\n disableChildren={data.planChangingCode === 2 || this.getShowGracePeriodOverlay()}\n >\n <AsyncLoader request={this.props.request} loading={<></>}>\n {!!renewal && (\n <CardText>\n Click \"Generate\" to begin the Repayment Application Steps for the Reduced\n IDR benefit. You will submit this application annually while participating\n in the benefit\n </CardText>\n )}\n <StepDisplay title={'Step 1 - Sign Repayment Application'}>\n {!!!renewal && (\n <ul>\n <li>\n Please click the button below to generate your Repayment Application.\n </li>\n <li>Complete the short questionnaire.</li>\n <li>Electronically sign the application.</li>\n <li>\n After electronically signing your application, you will be taken to your\n My Documents page where you can download the file.\n </li>\n {planChangingInfo}\n </ul>\n )}\n {!!renewal && (\n <ul>\n <li>\n Please generate your Repayment Application by clicking the button below\n and completing a short questionnaire.\n </li>\n <li>\n Once you electronically sign the application, you will be directed to\n your My Documents page, where you can view and download a copy for your\n records (if you wish).\n </li>\n <li>\n Then, click \"Submit Your Repayment Application\" from your To-Do steps or\n by clicking IDR under My Benefits on the left-hand side of your portal.\n </li>\n {planChangingInfo}\n </ul>\n )}\n </StepDisplay>\n </AsyncLoader>\n <StandardConfirmation stepId={this.getStepId(1200)} forReducedIDR={true} />\n </CardBody>\n {data.planChangingCode === 2 && (\n <>\n <CardBody overlayCard>\n <>\n <CardTitle overlayCard>\n Income-Driven Repayment (IDR) Application Hold\n </CardTitle>\n <CardText overlayCard>\n <p>\n Recent federal modifications have created several changes to the Public\n Service Loan Forgiveness (PSLF) program that prevent the proper\n generation and submission of the IDR application for your situation at\n this time.\n </p>\n <p>\n We are monitoring the modifications and will notify you as soon as the\n proper application can be generated.\n </p>\n </CardText>\n </>\n </CardBody>\n </>\n )}\n {this.getShowGracePeriodOverlay() && (\n <>\n <CardBody overlayCard>\n <>\n <CardTitle overlayCard>\n Income-Driven Repayment (IDR) Application Hold For Grace Period\n </CardTitle>\n <CardText overlayCard>\n <p>\n Based on your NSLDS text file, your federal student loan(s) are in a\n grace period. An Income-Driven Repayment (IDR) application cannot be\n submitted until the grace period has ended on{' '}\n {this.getGracePeriodEndDate()}.\n </p>\n </CardText>\n </>\n </CardBody>\n </>\n )}\n </Card>\n </DashboardSection>\n </div>\n )}\n {this.state.showStep2 && (\n <div id=\"step2Section\">\n <DashboardSection title=\"Submit your Repayment Application\">\n <div className=\"row\">\n <div className=\"col-12\">\n <Card>\n <CardBody>\n <AsyncLoader request={this.props.request} loading={<></>}>\n {!!!renewal && (\n <StepDisplay title={'Step 1 – Verify Repayment Application Information'}>\n <ul>\n <li>\n Please verify your Social Security Number is present on the first\n four pages of your application prior to submitting it.\n </li>{' '}\n {isMarriedText}\n {planChangingInfo}\n </ul>\n </StepDisplay>\n )}\n {!!renewal && (\n <StepDisplay\n title={\n 'Step 1 - Verify that Your Repayment Application Information is correct.'\n }\n >\n <ul>\n <li>\n Please verify that your Social Security number is present and\n correct on your application's first six pages by clicking \"View\n Income-Driven Application.\"\n </li>{' '}\n {isMarriedRenewalText}\n {planChangingInfo}\n <li>Then please click the green button, \"Form is correct.\"</li>\n <li>\n Next, verify that the document for your income verification is\n correct. You can do this by clicking \"View Taxes\" or \"View Paycheck\"\n and then clicking \"Form is correct\" to approve the document.\n </li>\n <li>\n You will then be prompted to submit your application electronically.\n </li>\n </ul>\n </StepDisplay>\n )}\n {/*{data.incomeDocToInclude != null && (\n <Alert brand=\"warning\">{data.incomeDocToInclude}</Alert>\n )}*/}\n </AsyncLoader>\n <StandardConfirmation stepId={this.getStepId(1300)} forReducedIDR={true} />\n </CardBody>\n </Card>\n </div>\n </div>\n </DashboardSection>\n </div>\n )}\n {this.state.showStep3 && (\n <div id=\"step3Section\">\n <DashboardSection title=\"Check on your Repayment Application\">\n <Card overlayCard={restrictionDate !== undefined}>\n <CardBody overlayCard hideOverlay={restrictionDate === undefined}>\n {restrictionDate !== undefined && (\n <>\n <CardTitle overlayCard>\n Wait for income-driven repayment to finalize\n </CardTitle>\n <CardText overlayCard>\n <p>\n Based on the average processing time for this document, it will be\n processed by your loan servicer on {restrictionDate} at the earliest*. You\n will not be able to confirm completion of this step until that date.\n </p>\n <p>\n *Please note: Your document is not guaranteed to be processed by this\n date. It is important to follow your steps closely.\n </p>\n </CardText>\n </>\n )}\n </CardBody>\n <CardBody disableChildren={restrictionDate !== undefined}>\n <AsyncLoader request={this.props.request} loading={<></>}>\n <StepDisplay title={'Step 1 – Access loan servicer account'}>\n <ul>\n <li>Login to your account at the following loan servicer(s):</li>\n {form.servicerNames && this.getServicerNames()}\n </ul>\n </StepDisplay>\n {!!!renewal && (\n <StepDisplay\n title={\n 'Step 2 – Check the status of the income-driven repayment (Every seven days)'\n }\n >\n <ul>\n <li>Check your Loan Details for the \"In Repayment\" status.</li>\n <li>\n <strong>Please note:</strong> It typically takes{' '}\n <strong>four to eight weeks</strong> for a repayment application to\n process.\n </li>\n <li>\n Check your Inbox/Documentation at your loan servicer for an approval\n statement.\n </li>\n <li>What are you looking for?</li>\n <ul>\n {/* <li>{repaymentPlanTypeInfo}</li> */}\n <li>{repaymentPlanAmountInfo}</li>\n </ul>\n </ul>\n </StepDisplay>\n )}\n {!!renewal && (\n <StepDisplay\n title={\n 'Step 2 – Check the status of your new income-driven repayment (we suggest weekly until updated.)'\n }\n >\n <p>\n <strong>Please note:</strong> A repayment application typically takes four\n to eight weeks to process.\n </p>\n <ul>\n <li>\n Check your Inbox/Documentation at your loan servicer for a new approval\n letter.\n </li>\n <li>\n The letter includes important information regarding your new repayment\n plan.\n </li>\n <ul>\n {/* <li>{repaymentPlanTypeInfo}</li> */}\n <li>{repaymentPlanAmountInfo}</li>\n <li>\n Pay close attention to the start date for the new repayment amount.\n </li>\n <li>\n Unless your loans are in forbearance, you will continue to pay your\n current IDR monthly payment until the new one begins.\n </li>\n </ul>\n </ul>\n </StepDisplay>\n )}\n {/*Contact us at{' '}\n<a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2.*/}\n <div id=\"customStep3Section\">\n <Form id=\"idrComplete\" handleChange={this.handleChange} defaults={form}>\n <ComponentStepDisplay\n title={'Step 3 – Provide repayment details'}\n show={this.state.customStep3Show}\n >\n <CardText>\n <ul>\n <li>\n <InputWrapper error={!!errors.doeRepayDate}>\n <InputLabel htmlFor=\"doeRepayDate\">\n {repaymentPlanLabelText}\n </InputLabel>\n <InputError>\n {safeAccess(errors, 'doeRepayDate.detail')}\n </InputError>\n <InputGroup affordance=\"medium\">\n <InputMask\n defaultValue={convertIsoToSlash(form.doeRepayDate)}\n mask=\"##/##/####\"\n name=\"doeRepayDate\"\n placeholder=\"MM/DD/YYYY\"\n />\n </InputGroup>\n </InputWrapper>\n </li>\n <li>\n {/* TODO: This needs to be an input field for actual-idr*/}\n <InputWrapper error={!!errors.actualIdr}>\n <InputLabel htmlFor=\"actualIdr\">\n {repaymentAmountLabelText}\n </InputLabel>\n <InputError>{safeAccess(errors, 'actualIdr.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputAddon>$</InputAddon>\n <InputNumeric\n name=\"actualIdr\"\n step=\"0.01\"\n defaultValue={form.actualIdr}\n />\n </InputGroup>\n </InputWrapper>\n </li>\n </ul>\n {!!!renewal && (\n <ul>\n <li>\n If your repayment details reflect a higher repayment amount than\n the one shown on your Fiducius account, please visit the Contact\n Us button on the left of your portal to reach out to us regarding\n this.\n {/*contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2.*/}\n </li>\n </ul>\n )}\n {!!renewal && (\n <ul>\n <li>\n If your repayment details reflect a higher payment amount OR your\n repayment plan type differs from the one shown in Step 2, please\n select the <strong>Contact Us</strong> button on the left of your\n portal to let us know.\n </li>\n </ul>\n )}\n </CardText>\n </ComponentStepDisplay>\n </Form>\n </div>\n <StepDisplay title={'Step 4 – Confirm completion'}>\n {!!!renewal && (\n <ul>\n <li>Confirm your correct income-driven repayment has been set up.</li>\n <ul>\n <li>\n The plan type on your repayment details should match the repayment\n plan type on your Fiducius account.\n </li>\n <li>\n We recommend you save a copy of your repayment details to keep a\n physical history of your repayments.\n {permissions.showContribution && (\n <>\n Your repayment details will also be needed in the next step for\n verification of your repayment to establish your employer\n contribution.\n </>\n )}\n </li>\n </ul>\n </ul>\n )}\n {!!renewal && (\n <ul>\n <li>Confirm that your correct income-driven repayment is calculated.</li>\n <ul>\n <li>\n We recommend you save a copy of your repayment details to keep a\n physical history of your repayments.\n {permissions.showContribution && (\n <>\n Your repayment details will also be needed in the next step for\n verification of your repayment to establish your employer\n contribution.\n </>\n )}\n </li>\n <li>\n If your repayment details reflect a higher payment amount OR your\n repayment plan type differs from the one shown in Step 2, please\n select the <strong>Contact Us</strong> button on the left of your\n portal to let us know.\n </li>\n <li>Check the box to confirm that your new payment is calculated.</li>\n </ul>\n </ul>\n )}\n </StepDisplay>\n </AsyncLoader>\n {form.doeRepayDate !== null &&\n errors.doeRepayDate === false &&\n form.actualIdr !== null &&\n errors.actualIdr === false ? (\n <>\n <StandardConfirmation\n stepId={this.getStepId(1400)}\n forReducedIDR={true}\n additionalInfoNeeded={false}\n />\n </>\n ) : (\n <StandardConfirmation\n stepId={this.getStepId(1400)}\n forReducedIDR={true}\n additionalInfoNeeded={true}\n handleChange={this.goToStep3.bind(this)}\n />\n )}\n </CardBody>\n </Card>\n </DashboardSection>\n </div>\n )}\n </>\n );\n }\n}\n\nconst mapRepaymentType = (type) => {\n switch (type) {\n case 'PAYE':\n return 'Pay as you earn';\n case 'REPAY':\n return 'Revised pay as you earn';\n case 'IBR':\n return 'Income based repayment';\n case 'ICR':\n return 'Income contingent repayment';\n case 'SAVE':\n return 'Saving on a Valuable Education';\n default:\n return 'Other';\n }\n};\n\nconst mapStateToProps = (state) => {\n const userId = getUserId(state);\n let data = safeAccess(state, `idr.cache[${userId}]`, {});\n let form = safeAccess(state, 'idr.form', {});\n form.actualRepaymentType = data.projectedRepaymentType;\n form.projectedRepaymentType = data.projectedRepaymentType;\n\n return {\n data: data,\n form: form,\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n state.todos.requests.loadCollection,\n state.idr.requests.updateResource,\n state.selfServiceDocument.requests.updateResource,\n state.selfServiceDocument.requests.loadCollection,\n ]),\n isMarried: safeAccess(state, 'auth.cache.permissions.married', false),\n repayTypeName: mapRepaymentType(data.projectedRepaymentType),\n errors: safeAccess(state, 'idr.errors', {}),\n todos: Object.values(state.todos.cache),\n benefitData: safeAccess(state, 'auth.cache.permissions.benefits'),\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n updateForm: (state, attributes) => dispatch(idrHandleFormChange(state, attributes)),\n onLoad: async () => {\n await dispatch(idrLoadComplete(ownProps.id));\n dispatch(idrCopyCompleteToForm());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(IdrReduced));\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\n\nimport { safeAccess } from '../../../utils';\n\nimport { getUserId } from '../../../auth';\nimport { withPermissions } from '../../../routing';\n\nimport ForgivenessProgress from '../components/forgiveness-progress';\n\nimport { implementationResultsLoadResource } from '../../../implementation-results';\n\nclass IDRFS extends React.Component {\n static propTypes = {\n request: t.object.isRequired,\n data: t.object,\n loadData: t.func.isRequired,\n permissions: t.object.isRequired,\n id: t.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n componentDidMount() {\n this.props.loadData(this.props.id);\n }\n\n render() {\n const { data, request, permissions } = this.props;\n return (\n <div>\n <ForgivenessProgress />\n <AsyncLoader request={request}>\n {data.repaymentAppSigned === false && (\n <DashboardSection>\n <Card>\n <Card>\n <CardBody>\n <CardTitle>Step 1 - Sign Your Application</CardTitle>\n <CardText>\n <ul>\n <li>\n Click on “Income-Driven Repayment Application\" in My Documents section of\n your portal.\n </li>\n <li>Complete the short questionnaire.</li>\n <li>Electronically sign the application.</li>\n <li>\n Verify your Social Security number is present on the first six pages of\n your application prior to signing.\n </li>\n </ul>\n </CardText>\n </CardBody>\n </Card>\n </Card>\n </DashboardSection>\n )}\n {data.repaymentAppSigned === true && (\n <DashboardSection>\n <Card>\n <Card>\n <CardBody>\n <CardTitle>Step 2 – Income Driven Repayment Application Processing</CardTitle>\n <CardText>\n <ul>\n <li>\n We are evaluating the form that was provided and will submit it to the\n loan servicer.\n </li>\n <li>\n The loan servicer will process your documentation to obtain your lowered,\n monthly student loan payment.\n </li>\n <li>\n We will notify you once the correct amount is in place and ready to be\n paid.\n </li>\n <li>Once we confirm the correct amount is implemented:</li>\n <ul>\n <li>Payments must be paid in the exact amount due.</li>\n <li>\n Payments must be made on time or up to 15 days after the due date.\n </li>\n {!permissions.showContribution && (\n <li>\n You may set-up automatic payments through your bank (recommended) or\n your loan servicer.\n </li>\n )}\n {permissions.showContribution && (\n <li>\n If your student loan payment is greater than your employer's\n contribution, your portion of the payment will be automatically\n updated as a payroll deduction to ensure that the full payment is met\n each month.\n </li>\n )}\n </ul>\n </ul>\n </CardText>\n </CardBody>\n </Card>\n </Card>\n </DashboardSection>\n )}\n </AsyncLoader>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n id: getUserId(state),\n data: safeAccess(state, `implementationResults.cache[${getUserId(state)}]`) || {},\n request: state.implementationResults.requests.loadResource,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n loadData: (id) => dispatch(implementationResultsLoadResource(id)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(IDRFS));\n","import React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardHeader,\r\n CardText,\r\n DashboardSection,\r\n Link,\r\n Header4,\r\n Lede,\r\n Button,\r\n} from 'fiducius-ui';\r\n\r\nimport { MyReferences } from '../../../references';\r\nimport { withPermissions } from '../../../routing';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { authLoadPermissions } from '../../../auth';\r\n\r\nimport StandardConfirmation from '../components/standard-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nimport { todosLoadCollection } from '../../../todos/redux/operations';\r\n\r\nimport { legalHandleFormChange, legalUpdateResource } from '../../../legal/redux/operations';\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-around;\r\n align-items: center;\r\n margin: 1.5rem 0 3rem 0;\r\n`;\r\n\r\nconst TextLeftList = styled.ul`\r\n text-align: left;\r\n`;\r\n\r\nconst TextLeft = styled.p`\r\n text-align: left;\r\n`;\r\n\r\nconst AUTH_KEY = 'AUTH';\r\n\r\nclass Welcome extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n consent: t.func.isRequired,\r\n reload: t.func.isRequired,\r\n load: t.func.isRequired,\r\n permissions: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showProfile: false,\r\n showReferences: false,\r\n showServicers: false,\r\n showAuthorizedUse: false,\r\n authUseCompleted: false,\r\n referencesCompleted: false,\r\n redirect: '',\r\n CurrentForgivenessStep: '',\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n const { permissions, load } = this.props;\r\n await load();\r\n\r\n let forgivenessStep = permissions.forgivenessSteps.find((a) => a.stepCurrent);\r\n if (forgivenessStep !== undefined) {\r\n this.setState({\r\n ...this.state,\r\n authUseCompleted: this.checkAuthorizedUseCompleted(),\r\n referencesCompleted: this.checkReferencesCompleted(),\r\n CurrentForgivenessStep: forgivenessStep.stepPath,\r\n });\r\n }\r\n }\r\n\r\n handleProfileClick = () => {\r\n this.handleSectionClick('profile');\r\n };\r\n handleReferencesClick = () => {\r\n this.handleSectionClick('references');\r\n };\r\n handleServicersClick = () => {\r\n this.handleSectionClick('servicers');\r\n };\r\n handleAuthorizedUseClick = () => {\r\n this.handleSectionClick('authorizedUse');\r\n };\r\n\r\n handleSectionClick = (sectionName) => {\r\n if (sectionName === 'profile') {\r\n this.setState(\r\n {\r\n showProfile: true,\r\n showReferences: false,\r\n showServicers: false,\r\n showAuthorizedUse: false,\r\n },\r\n this.handleProfileScroll\r\n );\r\n } else if (sectionName === 'references') {\r\n this.setState(\r\n {\r\n showProfile: false,\r\n showReferences: true,\r\n showServicers: false,\r\n showAuthorizedUse: false,\r\n },\r\n this.handleReferenceScroll\r\n );\r\n } else if (sectionName === 'servicers') {\r\n this.setState(\r\n {\r\n showProfile: false,\r\n showReferences: false,\r\n showServicers: true,\r\n showAuthorizedUse: false,\r\n },\r\n this.handleServicerScroll\r\n );\r\n } else if (sectionName === 'authorizedUse') {\r\n this.setState(\r\n {\r\n showProfile: false,\r\n showReferences: false,\r\n showServicers: false,\r\n showAuthorizedUse: true,\r\n },\r\n this.handleAuthorizedUseScroll\r\n );\r\n }\r\n };\r\n\r\n scrollToStep(section) {\r\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n handleProfileScroll = () => {\r\n document.getElementById('profileSection').scrollIntoView({ behavior: 'smooth' });\r\n };\r\n handleReferenceScroll = () => {\r\n document.getElementById('referenceSection').scrollIntoView({ behavior: 'smooth' });\r\n };\r\n handleServicerScroll = () => {\r\n document.getElementById('servicerSection').scrollIntoView({ behavior: 'smooth' });\r\n };\r\n handleAuthorizedUseScroll = () => {\r\n document.getElementById('authorizedUseSection').scrollIntoView({ behavior: 'smooth' });\r\n };\r\n\r\n componentDidUpdate() {\r\n const { todos, permissions, reload } = this.props;\r\n const prevState = this.state;\r\n\r\n if (this.state.CurrentForgivenessStep !== '') {\r\n if (this.state.referencesCompleted !== this.checkReferencesCompleted()) {\r\n reload();\r\n this.setState({ ...this.state, referencesCompleted: !prevState.referencesCompleted });\r\n }\r\n\r\n if (this.state.authUseCompleted !== this.checkAuthorizedUseCompleted()) {\r\n reload();\r\n this.setState({ ...this.state, authUseCompleted: !prevState.authUseCompleted });\r\n }\r\n let forgivenessStep = permissions.forgivenessSteps.find((a) => a.stepCurrent);\r\n if (\r\n this.state.redirect === '' &&\r\n this.state.CurrentForgivenessStep !== forgivenessStep.stepPath\r\n ) {\r\n if (\r\n forgivenessStep !== undefined &&\r\n forgivenessStep !== null &&\r\n todos !== undefined &&\r\n todos !== null &&\r\n forgivenessStep.stepPath.toLowerCase() !== '/welcome' &&\r\n forgivenessStep.stepPath.toLowerCase() !== ''\r\n ) {\r\n this.setState({\r\n ...this.state,\r\n redirect: '/benefits/forgiveness' + forgivenessStep.stepPath,\r\n CurrentForgivenessStep: forgivenessStep.stepPath,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n checkProfileCompleted = () => {\r\n let retVal = false;\r\n const { todos } = this.props;\r\n\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 10);\r\n if (currentToDo === undefined || currentToDo === null) {\r\n retVal = true;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n checkReferencesCompleted = () => {\r\n let retVal = false;\r\n const { todos } = this.props;\r\n\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 12);\r\n if (currentToDo === undefined || currentToDo === null) {\r\n retVal = true;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n checkServicersCompleted = () => {\r\n let retVal = false;\r\n const { todos } = this.props;\r\n\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 11);\r\n if (currentToDo === undefined || currentToDo === null) {\r\n retVal = true;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n checkAuthorizedUseCompleted = () => {\r\n let retVal = false;\r\n const { todos } = this.props;\r\n\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 7);\r\n if (currentToDo === undefined || currentToDo === null) {\r\n retVal = true;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n getForbearanceText = () => {\r\n return (\r\n <div>\r\n <p>\r\n Your team of experts are working very hard ensuring your payments are on hold and\r\n analyzing your account to provide next steps. They will reach out with further direction\r\n once the analysis is complete.\r\n </p>\r\n\r\n <ul>\r\n <li>Your loan payments will be put on hold if you have forbearance time available.</li>\r\n <li>\r\n Cancel any automatic payments currently in place for these loans unless otherwise\r\n directed.\r\n </li>\r\n <li>\r\n If you receive a bill or any information regarding your loans, please upload it to your\r\n Documents page.\r\n </li>\r\n <li>You can submit a Contact Us request if you have any questions.</li>\r\n </ul>\r\n </div>\r\n );\r\n };\r\n\r\n getResource = () => {\r\n return (\r\n <CardBody>\r\n <CardTitle>Welcome to Forgiveness!</CardTitle>\r\n <CardText>\r\n <p>Thank you for providing your information.</p>\r\n {this.getForbearanceText()}\r\n </CardText>\r\n </CardBody>\r\n );\r\n };\r\n\r\n render() {\r\n const { request, permissions } = this.props;\r\n\r\n if (this.state.redirect && this.state.redirect.length > 0) {\r\n return <Redirect to={this.state.redirect} />;\r\n } else {\r\n return (\r\n <>\r\n <div>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <AsyncLoader request={request} empty={request.isEmpty ? this.getResource() : null}>\r\n <CardBody>\r\n <CardTitle>Welcome to Forgiveness!</CardTitle>\r\n <CardText>\r\n <p>\r\n Congratulations on taking the first step to improve your student loan\r\n situation! We have customized step by step instructions to help you achieve\r\n financial wellness. Use the buttons below to complete some information to\r\n continue with the process.\r\n </p>\r\n <div className=\"row col-12\">\r\n <div className=\"col-3\">\r\n <Lede>\r\n <Button\r\n brand={this.checkProfileCompleted() ? 'success' : 'info'}\r\n onClick={this.handleProfileClick}\r\n >\r\n Profile\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-3\">\r\n <Lede>\r\n <Button\r\n brand={this.checkReferencesCompleted() ? 'success' : 'info'}\r\n onClick={this.handleReferencesClick}\r\n >\r\n References\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-3\">\r\n <Lede>\r\n <Button\r\n brand={this.checkAuthorizedUseCompleted() ? 'success' : 'info'}\r\n onClick={this.handleAuthorizedUseClick}\r\n >\r\n Authorized Use Consent\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-3\">\r\n <Lede>\r\n <Button\r\n brand={this.checkServicersCompleted() ? 'success' : 'info'}\r\n onClick={this.handleServicersClick}\r\n >\r\n Servicers\r\n </Button>\r\n </Lede>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n {this.checkProfileCompleted() &&\r\n this.checkReferencesCompleted() &&\r\n this.checkServicersCompleted() &&\r\n this.checkAuthorizedUseCompleted() &&\r\n permissions.isFullService && (\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <p>Thank you for providing your information.</p>\r\n <p>{this.getForbearanceText()}</p>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n </AsyncLoader>\r\n {this.checkProfileCompleted() &&\r\n this.checkReferencesCompleted() &&\r\n this.checkServicersCompleted() &&\r\n this.checkAuthorizedUseCompleted() &&\r\n !permissions.isFullService && <StandardConfirmation stepId={101} />}\r\n </Card>\r\n </DashboardSection>\r\n\r\n {this.state.showProfile && (\r\n <DashboardSection>\r\n <AsyncLoader request={request} empty={request.isEmpty ? null : null} loading={null}>\r\n <Card id=\"profileSection\">\r\n <CardBody>\r\n <CardTitle>Profile</CardTitle>\r\n <CardText>\r\n <p>\r\n We need you to make sure that your profile information is up to date. You\r\n can go to your profile using the link below. Your profile is always\r\n available by clicking the icon in the top right and selecting \"My Profile\"\r\n from the list.{' '}\r\n </p>\r\n <Link to=\"/profile\">Go to My Profile</Link>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n )}\r\n {this.state.showReferences && (\r\n <DashboardSection>\r\n <AsyncLoader request={request} empty={request.isEmpty ? null : null} loading={null}>\r\n <Card id=\"referenceSection\">\r\n <CardBody>\r\n <CardTitle>References</CardTitle>\r\n <MyReferences />\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n )}\r\n {this.state.showServicers && (\r\n <DashboardSection>\r\n <AsyncLoader request={request} empty={request.isEmpty ? null : null} loading={null}>\r\n <Card id=\"servicerSection\">\r\n <CardBody>\r\n <CardTitle>Servicers</CardTitle>\r\n <CardText>\r\n <p>\r\n We need you to make sure that your servicer information is up to date. You\r\n can view your servicers using the link below. Your servicer information is\r\n always available by clicking \"My Accounts\" in the left navigation pane.{' '}\r\n </p>\r\n <Link to=\"/accounts\">Go to My Accounts</Link>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n )}\r\n {this.state.showAuthorizedUse && (\r\n <DashboardSection>\r\n <AsyncLoader request={request} empty={request.isEmpty ? null : null} loading={null}>\r\n <Card brand={request.hasFailed ? 'danger' : 'primary'} id=\"authorizedUseSection\">\r\n {request.hasFailed && <CardHeader>Saving Authorized Use Failure</CardHeader>}\r\n <CardBody>\r\n <CardTitle>Authorized Use Consent</CardTitle>\r\n <CardText>\r\n <Header4>What am I authorizing?</Header4>\r\n <TextLeft>Your signature authorizes Fiducius to:</TextLeft>\r\n <TextLeftList>\r\n <li>\r\n Properly align your student loans and establish the correct repayment\r\n plan with The Department of Education for loan forgiveness.\r\n </li>\r\n <li>\r\n Create and/or access your student loan service(s) account(s) to manage\r\n the loan forgiveness program on your behalf.\r\n </li>\r\n <li>\r\n Submit pre-filled consolidation application on your behalf at the loan\r\n servicer of your choice.\r\n </li>\r\n <li>\r\n Put your loan(s) in forbearance if that's part of your financial plan\r\n built by your advisor.\r\n </li>\r\n <li>We will not utilize your FSA ID to access your account.</li>\r\n </TextLeftList>\r\n </CardText>\r\n </CardBody>\r\n <ButtonWrapper>\r\n {this.checkAuthorizedUseCompleted() && (\r\n <CardBody>\r\n <CardText>\r\n <p>\r\n You've already consented to the items listed above. Please submit a\r\n Contact Us request if you would like this changed.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n )}\r\n {!this.checkAuthorizedUseCompleted() && (\r\n <Button brand=\"primary\" size=\"lg\" onClick={this.props.consent}>\r\n I agree\r\n </Button>\r\n )}\r\n </ButtonWrapper>\r\n </Card>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n )}\r\n </div>\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.loadCollection,\r\n state.legal.requests.updateResource,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n reload: async () => {\r\n dispatch(authLoadPermissions());\r\n await dispatch(todosLoadCollection());\r\n },\r\n\r\n load: async () => {\r\n await dispatch(todosLoadCollection());\r\n },\r\n consent: async () => {\r\n await dispatch(legalHandleFormChange({ id: AUTH_KEY, customerAuthorization: true }, []));\r\n await dispatch(legalUpdateResource(AUTH_KEY, AUTH_KEY));\r\n dispatch(authLoadPermissions());\r\n await dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Welcome));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport StandardConfirmation from '../components/standard-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport StepDisplay from '../components/step-display';\r\n\r\nclass Taxes extends React.Component {\r\n static propTypes = {\r\n permissions: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n getStep3RestrictionDate = () => {\r\n let retVal = undefined;\r\n const { permissions } = this.props;\r\n const taxesStep = permissions.forgivenessSteps.find((a) => a.id === 'Taxes');\r\n if (taxesStep.stepDateRestriction !== undefined) {\r\n let stepRestriction = new Date(taxesStep.stepDateRestriction);\r\n retVal =\r\n (stepRestriction.getMonth() + 1).toString() +\r\n '/' +\r\n stepRestriction.getDate() +\r\n '/' +\r\n stepRestriction.getFullYear();\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { permissions } = this.props;\r\n const restrictionDate = this.getStep3RestrictionDate();\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection title=\"Taxes\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n {permissions.isFullService === false && (\r\n <Card overlayCard={restrictionDate !== undefined}>\r\n <CardBody overlayCard hideOverlay={restrictionDate === undefined}>\r\n {restrictionDate !== undefined && (\r\n <>\r\n <CardTitle overlayCard>Wait for tax filing</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n Based on the normal date tax forms are received for filing, the earliest\r\n you will be able to complete this step is {restrictionDate}.\r\n </p>\r\n </CardText>\r\n </>\r\n )}\r\n </CardBody>\r\n <CardBody disableChildren={restrictionDate !== undefined}>\r\n <StepDisplay title={'Step 1 – Confirm taxes filed correctly'}>\r\n <ul>\r\n <li>\r\n Confirm that you have filed your most recent tax return as outlined in\r\n your Financial Wellness Plan to maximize the benefit of this program.\r\n </li>\r\n <li>\r\n If your marital status has changed since speaking with your advisor,\r\n please visit the Contact Us button on the left of your portal to reach out\r\n to us.\r\n </li>\r\n <li>\r\n Haven't filed your taxes yet? Another benefit of being a client of ours is\r\n you (and your spouse) can utilize our national partner, TurboTax and\r\n receive a discounted rate to file. Visit{' '}\r\n <a href=\"http://www.jdoqocy.com/click-8973232-13149824\">TurboTax</a> to\r\n start filing.\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have filed your taxes in\r\n accordance with your Financial Wellness Plan{' '}\r\n </strong>\r\n </StepDisplay>\r\n <StandardConfirmation stepId={110} />\r\n </CardBody>\r\n </Card>\r\n )}\r\n {permissions.isFullService && (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>File Your Taxes</CardTitle>\r\n <CardText>\r\n <ul>\r\n <li>\r\n Confirm that you have filed your most recent tax return as outlined in\r\n your Financial Wellness Plan to maximize the benefit of this program.\r\n </li>\r\n <li>\r\n If your marital status has changed since speaking with your advisor,\r\n please visit the Contact Us button on the left of your portal to reach out\r\n to us.\r\n </li>\r\n <li>\r\n Haven't filed your taxes yet? As a Fiducius client, you (and your spouse)\r\n can take advantage of our national partnership with{' '}\r\n <a href=\"http://www.jdoqocy.com/click-8973232-13149824\">TurboTax</a>.\r\n </li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Taxes));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nimport { implementationResultsLoadResource } from '../../../implementation-results';\r\n\r\nclass OHGraduation extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n render() {\r\n const { data, request } = this.props;\r\n return (\r\n <div>\r\n <ForgivenessProgress />\r\n <AsyncLoader request={request}>\r\n <DashboardSection>\r\n <Card>\r\n <Card>\r\n <CardBody>\r\n {data.clientGraduated === false && (\r\n <div>\r\n <CardTitle>Continuing Education</CardTitle>\r\n <CardText>\r\n <p>\r\n Our records indicate you are currently in school or returning to school in\r\n the near future. Please keep the following in mind while you complete your\r\n education:\r\n </p>\r\n <ul>\r\n <li>\r\n Do not make payments on your loans. Notify us through Contact Us if you\r\n receive a bill.\r\n </li>\r\n <li>\r\n Inform us of any major life events that occur including, but not limited\r\n to: marriage, change in household size, change in school start or end\r\n date, etc.\r\n </li>\r\n <li>Submit a Contact Us request once you have graduated.</li>\r\n </ul>\r\n </CardText>\r\n </div>\r\n )}\r\n\r\n {data.clientGraduated && !data.gradReadyForStrategy && (\r\n <CardText>\r\n <CardTitle>Congratulations on Completing Your Schooling!</CardTitle>\r\n\r\n <p>There are a few documents required to move forward:</p>\r\n <ul>\r\n <li>\r\n <strong>\r\n Provide the National Student Loan Data System (NSLDS) Summary page\r\n </strong>\r\n </li>\r\n <ul>\r\n <li>\r\n To access your National Student Loan Data System (NSLDS) Summary Text\r\n document:{' '}\r\n </li>\r\n <ul>\r\n <li>\r\n Visit <a href=\"http://studentaid.gov/\">studentaid.gov</a>{' '}\r\n </li>\r\n <li>\r\n Click <strong>Log In</strong> if you have an FSA ID or{' '}\r\n <strong>Create Account</strong> to create one\r\n </li>\r\n <li>\r\n Select <strong>VIEW DETAILS</strong> in the My Aid section of your\r\n dashboard in the middle of the page\r\n </li>\r\n <li>\r\n On the Aid Summary page, click on{' '}\r\n <strong>Download My Aid Data</strong> on the right side of page\r\n </li>\r\n <li>\r\n Click on <strong>Continue</strong>\r\n </li>\r\n <li>\r\n <strong>Save File</strong> as \"Text Document\" to your computer\r\n </li>\r\n <li>\r\n Upload to your Fiducius Documents page under the .txt file option\r\n </li>\r\n </ul>\r\n </ul>\r\n <li>\r\n <strong>Complete Exit Counseling</strong>\r\n </li>\r\n <ul>\r\n <li>\r\n Go to <a href=\"http://www.studentloans.gov\">studentaid.gov</a> and login{' '}\r\n <strong>using your FSA ID</strong>\r\n </li>\r\n <li>\r\n Click on “Complete Loan Counseling (Entrance, Financial Awareness,\r\n Exit)â€\r\n </li>\r\n <li>Select “Exit Counselingâ€</li>\r\n <li>\r\n When you are completing the application, please select the “Standard\r\n Repayment†option\r\n </li>\r\n <ul>\r\n <li>\r\n <strong>\r\n Do not worry, you will not make any payments under this amount\r\n </strong>\r\n </li>\r\n <li>\r\n Once any deferment is removed, we will get the correct Income-Driven\r\n Repayment amount established\r\n </li>\r\n </ul>\r\n </ul>\r\n <li>\r\n <strong>Upload Documents to your MyFiducius portal</strong>\r\n </li>\r\n <ul>\r\n <li>Your most recent 1040 tax forms</li>\r\n <li>Spouse's most recent 1040 tax forms (if applicable)</li>\r\n <li>Your most recent paystub</li>\r\n </ul>\r\n </ul>\r\n </CardText>\r\n )}\r\n {data.gradReadyForStrategy && (\r\n <CardText>\r\n <CardTitle>Thank You for Providing Your Information!</CardTitle>\r\n <p>\r\n Your team of experts are working very hard ensuring your payments are on\r\n hold and analyzing your account to provide next steps. They will reach out\r\n with further direction once the analysis is complete.\r\n </p>\r\n\r\n <ul>\r\n <li>\r\n Your loan payments will be put on hold if you have forbearance time\r\n available.\r\n </li>\r\n <li>\r\n Cancel any automatic payments currently in place for these loans unless\r\n otherwise directed.\r\n </li>\r\n <li>\r\n If you receive a bill or any information regarding your loans, please\r\n upload it to your Documents page.\r\n </li>\r\n <li>You can submit a Contact Us request if you have any questions.</li>\r\n </ul>\r\n </CardText>\r\n )}\r\n </CardBody>\r\n </Card>\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `implementationResults.cache[${getUserId(state)}]`) || {},\r\n request: state.implementationResults.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: (id) => dispatch(implementationResultsLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(OHGraduation));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { renewalResultsLoadResource } from '../../../renewal-results';\r\n\r\nclass Complete extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n getFailedInfo = () => {\r\n return (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Complete Your Forgiveness Steps</CardTitle>\r\n <CardText>\r\n <div>\r\n <p>\r\n Once all of your steps have been successfully completed, we will provide important\r\n instructions to ensure you properly navigate making your qualifying payments.\r\n </p>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n };\r\n\r\n render() {\r\n const { data, request } = this.props;\r\n return (\r\n <>\r\n {(data.inRecert === undefined || data.inRecert === true) && <ForgivenessProgress />}\r\n <DashboardSection title=\"Complete\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <AsyncLoader\r\n request={request}\r\n failed={request.hasFailed ? this.getFailedInfo() : null}\r\n >\r\n <CardBody>\r\n <CardText>\r\n {/*data.AnnualRecertDate > date.today && ()*/}\r\n {(data.inRecert || data.inRecert === null) && (\r\n <div>\r\n <CardTitle>Complete Your Forgiveness Steps</CardTitle>\r\n <p>\r\n Once all of your steps have been successfully completed we will provide\r\n important instructions to ensure you properly navigate making your\r\n qualifying payments.\r\n </p>\r\n </div>\r\n )}\r\n {!data.inRecert && data.inRecert !== null && (\r\n <div>\r\n <CardTitle>Make Payments</CardTitle>\r\n <ul>\r\n <li>\r\n Payments <strong>must</strong> be paid in the exact amount due to your\r\n loan servicer\r\n </li>\r\n <li>\r\n Payments <strong>must</strong> be made on time or up to 15 days after\r\n the due date\r\n </li>\r\n <li>\r\n You may set-up automatic payments through your bank (recommended) or\r\n your loan servicer\r\n </li>\r\n </ul>\r\n\r\n <CardTitle>Notify Us of Life Changes</CardTitle>\r\n <ul>\r\n <li>Significant increase/decrease in income</li>\r\n <li>Change in employment</li>\r\n <li>Addition/Subtraction of household size</li>\r\n </ul>\r\n </div>\r\n )}\r\n </CardText>\r\n </CardBody>\r\n </AsyncLoader>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n request: state.renewalResults.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: (id) => dispatch(renewalResultsLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Complete));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { safeAccess, mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { renewalResultsLoadResource } from '../../../renewal-results';\r\n\r\nimport RenewalConfirmation from '../components/renewal-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nclass ProfileVerification extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.number.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n const { request } = this.props;\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Profile Verification</CardTitle>\r\n <CardText>\r\n <p>\r\n To start your renewal process, we need you to verify your contact information\r\n saved in your profile.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <RenewalConfirmation stepId={209} />\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { todos } = state;\r\n\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n request: mergeRequestStatuses([\r\n safeAccess(todos, 'length') > 0\r\n ? (state.todos.requests.loadCollection, state.renewalResults.requests.loadResource)\r\n : state.renewalResults.requests.loadResource,\r\n ]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n dispatch(renewalResultsLoadResource(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ProfileVerification));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { renewalResultsLoadResource } from '../../../renewal-results';\r\n\r\nimport RenewalConfirmation from '../components/renewal-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nclass RenewalQuestionnaire extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.number.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n const { request } = this.props;\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Renewal Questionnaire</CardTitle>\r\n <CardText>\r\n <p>\r\n In order to determine what steps are required to complete your renewal, please\r\n fill out and submit the renewal questionnaire.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <RenewalConfirmation stepId={201} />\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n request: state.renewalResults.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n dispatch(renewalResultsLoadResource(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(RenewalQuestionnaire));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { renewalResultsLoadResource } from '../../../renewal-results';\r\n\r\nimport RenewalConfirmation from '../components/renewal-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nclass RenewalExtension extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n const { request } = this.props;\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Renewal Extension</CardTitle>\r\n <CardText>\r\n <p>Thank you for trusting Fiducius to help with your renewal!</p>\r\n <p>\r\n Your team at Fiducius is committed to helping you get the best financial return\r\n from using the Public Service Loan Forgiveness (PSLF) program. We constantly\r\n monitor all policy changes or procedural updates regarding the program and\r\n update our renewal tools accordingly. Thanks to our work, all you need to do is\r\n follow the guidance we provide.\r\n </p>\r\n\r\n <p>\r\n Temporary opportunities have been created in regard to the PSLF program as a\r\n result of various changes across the student loan landscape. While some changes\r\n apply to all borrowers, others should only be utilized by a select group based\r\n on their situation. Don't worry. Fiducius will help you make the right decision!\r\n </p>\r\n\r\n <p>\r\n Based on our analysis of the information you provided, we recommend that you\r\n take advantage of a temporary program change. Maintaining your current repayment\r\n plan for the next 12 months is in your best financial interest. If you submit a\r\n new income-driven repayment application now, it will result in a higher monthly\r\n payment.\r\n </p>\r\n\r\n <p>\r\n This unique opportunity is available to you due to changes resulting from the\r\n pandemic. Your \"To-Do\" list already reflects any actions necessary for your\r\n situation, so please complete them as directed.\r\n </p>\r\n\r\n <p>\r\n We will continue to monitor PSLF program changes and check in with you prior to\r\n your next renewal period to again assess your options. In the meantime, be on\r\n the lookout for our new tool, the Fiducius Benefit Modeler™, which will\r\n help you make employee benefit choices to lower your payment even further!\r\n </p>\r\n\r\n <p>\r\n <b>\r\n If you receive a notification from your loan servicer that your payment amount\r\n is increasing due to your application not being submitted or that it is time\r\n to recertify, please submit a Contact Us request using the \"Repayment\" subject\r\n on your MyFiducius portal.\r\n </b>\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <RenewalConfirmation stepId={259} />\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n request: state.renewalResults.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n dispatch(renewalResultsLoadResource(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(RenewalExtension));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, CardText, DashboardSection, Header5 } from 'fiducius-ui';\r\n\r\nimport { safeAccess, mergeRequestStatuses, formatAsMoney } from '../../../utils';\r\n\r\nimport { getUserId, authLoadPermissions } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport RenewalConfirmation from '../components/renewal-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport { renewalResultsLoadResource, renewalResultsUpdateResource } from '../../../renewal-results';\r\nimport DocsNeededForRSUpload from '../components/docs-upload-needed';\r\nimport {\r\n getForgivenessData,\r\n getPastYearSavings,\r\n getCurrentYearSavings,\r\n getSAVEPlanSavings,\r\n} from '../redux/selectors';\r\nimport { forgivenessLoadResource } from '../redux/operations';\r\n\r\nclass FeeRS extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n permissions: t.object.isRequired,\r\n loadForgiveness: t.func.isRequired,\r\n pastYearSavings: t.object,\r\n currentYearSavings: t.object,\r\n saveProgramSavings: t.object,\r\n forgivenessData: t.object,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n acknowledgeRsFeeCredits: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { feePaid: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n this.setState({ feePaid: false });\r\n const { id, loadForgiveness, forgivenessData, permissions } = this.props;\r\n if (permissions.hasForgiveness && Object.keys(forgivenessData).length == 0) {\r\n loadForgiveness(id);\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n if (\r\n this.state.feePaid !== this.props.data.paymentReceived &&\r\n this.props.data.paymentReceived !== undefined\r\n ) {\r\n this.setState({ feePaid: true });\r\n this.props.loadData(this.props.id);\r\n }\r\n }\r\n\r\n acknowledgeFee = async () => {\r\n await this.props.acknowledgeRsFeeCredits(this.props.id);\r\n this.props.loadData(this.props.id);\r\n };\r\n\r\n getFeeText = () => {\r\n const {\r\n data,\r\n pastYearSavings,\r\n currentYearSavings,\r\n saveProgramSavings,\r\n forgivenessData,\r\n } = this.props;\r\n if (data !== undefined && data !== null) {\r\n if (data.renewalBalance > 0 && !data.paymentReceived) {\r\n const showSavingsText = pastYearSavings > 0 && currentYearSavings > 0;\r\n const showSAVESavingsText = saveProgramSavings > 0;\r\n const showIncreaseText = forgivenessData.islsIdrPayment > 0;\r\n let savingsAmountText =\r\n 'We anticipate you could save approximately ' +\r\n formatAsMoney(saveProgramSavings) +\r\n ' under the new plan.';\r\n\r\n return (\r\n <>\r\n <p>The next step of the renewal process is to pay your renewal fee.</p>\r\n {showSavingsText && !showSAVESavingsText && (\r\n <p>\r\n You had estimated savings of approximately {formatAsMoney(pastYearSavings)} this\r\n past year and we anticipate you'll save {formatAsMoney(currentYearSavings)} after\r\n completing your renewal for this year.\r\n </p>\r\n )}\r\n {showSavingsText && showSAVESavingsText && (\r\n <p>\r\n You had estimated savings of approximately {formatAsMoney(pastYearSavings)} this\r\n past year and we anticipate you'll save {formatAsMoney(currentYearSavings)} after\r\n completing your renewal for this year. And with the recent announcement of the SAVE\r\n Repayment plan, your savings could increase! {showIncreaseText && savingsAmountText}\r\n </p>\r\n )}\r\n <p>{!data.selfService && <DocsNeededForRSUpload documentButton={true} />}</p>\r\n </>\r\n );\r\n } else if (data.hasEmployerPaidRenewal) {\r\n return (\r\n <>\r\n <p>Your renewal fee is paid for by your employer.</p>\r\n </>\r\n );\r\n } else if (data.renewalBalance === 0 && !data.paymentReceived) {\r\n return (\r\n <>\r\n <p>\r\n Your renewal fee of {formatAsMoney(data.serviceFee)} is paid in full due to renewal\r\n credits applied to your account\r\n </p>\r\n </>\r\n );\r\n } else if (data.paymentReceived) {\r\n return (\r\n <>\r\n <p>\r\n Your renewal fee of {formatAsMoney(data.serviceFee)} has been set up and received.\r\n </p>\r\n </>\r\n );\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n const { data } = this.props;\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Renewal Fee</CardTitle>\r\n <CardText>\r\n <Header5>{data && this.getFeeText()}</Header5>\r\n </CardText>\r\n </CardBody>\r\n <RenewalConfirmation\r\n stepId={250}\r\n zeroBalance={data && data.renewalBalance === 0 && !data.paymentReceived}\r\n />\r\n </Card>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n request: mergeRequestStatuses([\r\n state.renewalResults.requests.loadResource,\r\n state.renewalResults.requests.updateResource,\r\n ]),\r\n forgivenessData: getForgivenessData(state),\r\n pastYearSavings: getPastYearSavings(state),\r\n currentYearSavings: getCurrentYearSavings(state),\r\n saveProgramSavings: getSAVEPlanSavings(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n dispatch(renewalResultsLoadResource(id));\r\n },\r\n acknowledgeRsFeeCredits: async (id) => {\r\n await dispatch(renewalResultsUpdateResource(id));\r\n dispatch(authLoadPermissions());\r\n },\r\n loadForgiveness: (id) => dispatch(forgivenessLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(FeeRS));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport RenewalConfirmation from '../components/renewal-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport StepDisplay from '../components/step-display';\r\n\r\nclass ForbearanceRS extends React.Component {\r\n static propTypes = { request: t.object.isRequired };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Request Forbearance</CardTitle>\r\n\r\n <StepDisplay title={'Step 1 - Login to your current loan servicer(s) account(s)'}>\r\n <ul>\r\n <li>\r\n Request general forbearance on any federal loan(s) that have a payment due. We\r\n recommend you request general forbearance for{' '}\r\n <strong>at least one month</strong> to allow enough time to complete the\r\n remaining steps.{' '}\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> If you have any Income-Driven Repayments showing\r\n due for your previous year, you will want to make those payments, if qualifying,\r\n prior to submitting a forbearance request.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 2 – Confirm you have requested general forbearance'}>\r\n <ul>\r\n <li>\r\n I confirm I have submitted a forbearance request at my current loan servicer(s)\r\n to place my current loan payment(s) on hold.{' '}\r\n </li>\r\n <li>\r\n Forbearance requests typically take up to two weeks to process and any payment\r\n made while in forbearance may not qualify.{' '}\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> If you have used more than 36 months of general\r\n forbearance, your request may be denied by the loan servicer.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </CardBody>\r\n <RenewalConfirmation stepId={251} />\r\n </Card>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.loadCollection,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ForbearanceRS));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Button,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport RenewalConfirmation from '../components/renewal-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport ReducedIDRProgress from '../../reducedidr/components/reduced-idr-progress';\r\nimport StepDisplay from '../components/step-display';\r\nimport { EmployerApprovers, employmentHistoryLoadCollection } from '../../../employment-history';\r\nimport { MessageTile } from '../../../messages';\r\nimport { MessageDiv } from '../../../messages';\r\n\r\nclass EmpCertSS extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showStep1: false, showStep1b: false, showStep2: false, showStep3: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load();\r\n\r\n const pathName = window.location.pathname;\r\n if (pathName.includes('/step')) {\r\n this.setState({\r\n ...this.state,\r\n showStep1: pathName.includes('/step-1'),\r\n showStep2: pathName.includes('/step-2'),\r\n showStep3: pathName.includes('/step-3'),\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n handleStep1Click = () => {\r\n this.handleSectionClick('step1');\r\n };\r\n handleStep2Click = () => {\r\n this.handleSectionClick('step2');\r\n };\r\n handleStep3Click = () => {\r\n this.handleSectionClick('step3');\r\n };\r\n\r\n handleSectionClick = (sectionName) => {\r\n if (sectionName === 'step1') {\r\n this.setState(\r\n {\r\n showStep1: true,\r\n showStep2: false,\r\n showStep3: false,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n } else if (sectionName === 'step2') {\r\n this.setState(\r\n {\r\n showStep1: false,\r\n showStep2: true,\r\n showStep3: false,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n } else if (sectionName === 'step3') {\r\n this.setState(\r\n {\r\n showStep1: false,\r\n showStep2: false,\r\n showStep3: true,\r\n },\r\n () => {\r\n this.scrollToStep(sectionName);\r\n }\r\n );\r\n }\r\n };\r\n\r\n scrollToStep(section) {\r\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n getStep1Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps\r\n ? permissions.forgivenessSteps.find((a) => a.id === 'EmpCert')\r\n : permissions.reducedIdrSteps.find((a) => a.id === 'EmpCert');\r\n if (empCertStep !== undefined && empCertStep !== null) {\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 252 || a.id === 800);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n } else {\r\n const nextToDo = todos.find(\r\n (a) => a.id === 253 || a.id === 254 || a.id === 810 || a.id === 815\r\n );\r\n if (nextToDo !== undefined && nextToDo !== null) {\r\n retVal = 'success';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStep2Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps\r\n ? permissions.forgivenessSteps.find((a) => a.id === 'EmpCert')\r\n : permissions.reducedIdrSteps.find((a) => a.id === 'EmpCert');\r\n if (empCertStep !== undefined && empCertStep !== null) {\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 253 || a.id === 810);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n } else {\r\n const nextToDo = todos.find((a) => a.id === 254 || a.id === 815);\r\n if (nextToDo !== undefined && nextToDo !== null) {\r\n retVal = 'success';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStep3Brand = () => {\r\n let retVal = 'warning';\r\n const { permissions, todos } = this.props;\r\n const empCertStep = permissions.forgivenessSteps\r\n ? permissions.forgivenessSteps.find((a) => a.id === 'EmpCert')\r\n : permissions.reducedIdrSteps.find((a) => a.id === 'EmpCert');\r\n if (empCertStep !== undefined && empCertStep !== null) {\r\n if (empCertStep.stepComplete) {\r\n retVal = 'success';\r\n } else {\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 254 || a.id === 815);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = 'info';\r\n }\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStep3RestrictionDate = () => {\r\n let retVal = undefined;\r\n const { permissions } = this.props;\r\n const empCertStep = permissions.forgivenessSteps\r\n ? permissions.forgivenessSteps.find((a) => a.id === 'EmpCert')\r\n : permissions.reducedIdrSteps.find((a) => a.id === 'EmpCert');\r\n if (empCertStep && empCertStep.stepDateRestriction !== undefined) {\r\n let stepRestriction = new Date(empCertStep.stepDateRestriction);\r\n retVal =\r\n (stepRestriction.getMonth() + 1).toString() +\r\n '/' +\r\n stepRestriction.getDate() +\r\n '/' +\r\n stepRestriction.getFullYear();\r\n }\r\n return retVal;\r\n };\r\n\r\n checkForCorrectionStep = () => {\r\n const { todos } = this.props;\r\n let retVal = false;\r\n if (todos !== undefined && todos !== null) {\r\n const currentToDo = todos.find((a) => a.id === 805);\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n retVal = true;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { request, permissions } = this.props;\r\n const restrictionDate = this.getStep3RestrictionDate();\r\n const electronicEmpCertApprovalEnabled = permissions.electronicEmpcertEnabled;\r\n const step1Complete = this.getStep1Brand() === 'success';\r\n const isReducedIDREmpCert = permissions.forgivenessSteps ? false : true;\r\n const correctionStepRedirect = this.checkForCorrectionStep();\r\n\r\n return (\r\n <>\r\n {correctionStepRedirect && (\r\n <>\r\n <Redirect to={'/benefits/reducedidr/correction'} />\r\n </>\r\n )}\r\n <AsyncLoader request={request}>\r\n <ForgivenessProgress />\r\n <ReducedIDRProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Employment Certification</CardTitle>\r\n <CardText>\r\n <p>\r\n Completing this step will certify your employment and previous loan payments.\r\n </p>\r\n <p>\r\n <MessageDiv messageType={'EmpCert_Tab'} />\r\n </p>\r\n <div className=\"row col-12\">\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button brand={this.getStep1Brand()} onClick={this.handleStep1Click}>\r\n Generate\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button brand={this.getStep2Brand()} onClick={this.handleStep2Click}>\r\n Submit\r\n </Button>\r\n </Lede>\r\n </div>\r\n <div className=\"col-4\">\r\n <Lede>\r\n <Button brand={this.getStep3Brand()} onClick={this.handleStep3Click}>\r\n Review\r\n </Button>\r\n </Lede>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n {this.state.showStep1 && !electronicEmpCertApprovalEnabled && (\r\n <div id=\"step1Section\">\r\n <DashboardSection title=\"Generate your Employment Certification\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay\r\n title={'Step 1 - Generate and Download Employment Certification form'}\r\n >\r\n <ul>\r\n <li>\r\n Please click the button below to generate your Employment Certification\r\n Form.\r\n </li>\r\n <li>\r\n After clicking the button, it will take you to your My Documents page,\r\n where you can download the file.\r\n </li>\r\n <li>\r\n Once you've downloaded the document, you can continue following the\r\n instructions on this page.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n <RenewalConfirmation stepId={252} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n\r\n {this.state.showStep1 && electronicEmpCertApprovalEnabled && (\r\n <div id=\"step1Section\">\r\n <DashboardSection title=\"Generate your Employment Certification\">\r\n <div id=\"messageSection\">\r\n <MessageTile messageType={'EmpCert_Generate'} />\r\n </div>\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 - Provide Your Authorized Official(s)'}>\r\n <ul>\r\n <li>\r\n Please provide the email of the authorized official for each employer\r\n listed below. If you do not know the email, please select \"I do not know\r\n my authorized official's email.\"\r\n </li>\r\n </ul>\r\n\r\n {(this.state.showStep1b || step1Complete) && (\r\n <p>You've completed this step.</p>\r\n )}\r\n\r\n {!this.state.showStep1b && !step1Complete && (\r\n <EmployerApprovers\r\n stepState={() => this.setState({ ...this.state, showStep1b: true })}\r\n isReducedIDREmpCert={isReducedIDREmpCert}\r\n checkQualification={() => {}}\r\n />\r\n )}\r\n </StepDisplay>\r\n </AsyncLoader>\r\n {(this.state.showStep1b || step1Complete) && (\r\n <>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay\r\n title={'Step 2 – Generate and Complete Employment Certification form'}\r\n >\r\n <ul>\r\n <li>\r\n Please click the button below to generate your Employment\r\n Certification form(s).\r\n </li>\r\n <li>\r\n After clicking the button, you will be directed to sign the first page\r\n of the form and an email will be sent to the authorized official(s)\r\n you provided to complete the second page of the form.\r\n </li>\r\n <li>\r\n If you selected \"I do not know my authorized official's email,\" you\r\n will be required to download the file from your{' '}\r\n <strong>My Documents</strong> page.\r\n <ul>\r\n <li>\r\n The first page will need to be completed with a hand-written\r\n signature at the bottom.\r\n </li>\r\n <li>\r\n You will need to provide the second page of the form to your\r\n employer for completion. Please check with your employer to\r\n determine who is authorized to complete the form.\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n {isReducedIDREmpCert && <RenewalConfirmation stepId={800} />}\r\n {!isReducedIDREmpCert && <RenewalConfirmation stepId={252} />}\r\n </>\r\n )}\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep2 && !electronicEmpCertApprovalEnabled && (\r\n <div id=\"step2Section\">\r\n <DashboardSection title=\"Submit your Employment Certification\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 – Complete and send Employment Certification form'}>\r\n <ul>\r\n <li>\r\n Print the Employment Certification form in the My Documents section of\r\n your MyFiducius portal and <strong>hand sign</strong> page 1.\r\n </li>\r\n <li>\r\n Your employer must complete and <strong>hand sign</strong> the second\r\n page.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> The Department of Education does not accept\r\n electronic signatures on this document.\r\n </li>\r\n <li>\r\n Please verify your Social Security Number is present on the first two\r\n pages of your employment certification(s) before submitting.\r\n </li>\r\n <li>\r\n Questions 1 through 9 <strong>must</strong> be completed. Please read the\r\n answer to question 9 to determine if the following questions need a\r\n response.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 2 – Upload the form(s) to your Fiducius account'}>\r\n <ul>\r\n <li>\r\n Upload the form under <strong>My Documents</strong>.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n <RenewalConfirmation stepId={253} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep2 && electronicEmpCertApprovalEnabled && (\r\n <div id=\"step2Section\">\r\n <DashboardSection title=\"Submit your Employment Certification\">\r\n <div id=\"messageSection\">\r\n <MessageTile messageType={'EmpCert_Submit'} />\r\n </div>\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 – Complete and send Employment Certification form'}>\r\n <ul>\r\n <li>\r\n If you provided an authorized official's email, you will be required to\r\n complete the first page of the form electronically by selecting your\r\n employer(s) below.\r\n <ul>\r\n <li>\r\n The second page of the form will be sent to your employer for\r\n completion.\r\n </li>\r\n </ul>\r\n </li>\r\n <li>\r\n If you selected \"I do not know my authorized official's email,\" you will\r\n be required to download the file from your <strong>My Documents</strong>{' '}\r\n page and complete it in its entirety.\r\n </li>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on the first two\r\n pages of your employment certification(s) before submitting.\r\n </li>\r\n <li>\r\n The first page will need to be completed with a hand-written signature\r\n at the bottom.\r\n </li>\r\n <li>\r\n You will need to provide the second page of the form to your employer\r\n for completion. Please check with your employer to determine who is\r\n authorized to complete the form.\r\n </li>\r\n <li>\r\n Completed form(s) must be uploaded under your{' '}\r\n <strong>My Documents</strong> page.\r\n </li>\r\n </ul>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n {isReducedIDREmpCert && <RenewalConfirmation stepId={810} />}\r\n {!isReducedIDREmpCert && <RenewalConfirmation stepId={253} />}\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep3 && (\r\n <div id=\"step3Section\">\r\n <DashboardSection title=\"Check on your Employment Certification\">\r\n <div id=\"messageSection\">\r\n <MessageTile messageType={'EmpCert_Review'} />\r\n </div>\r\n <Card\r\n overlayCard={restrictionDate !== undefined && !permissions.isEmpcertCheckPaused}\r\n >\r\n {!permissions.isEmpcertCheckPaused && (\r\n <CardBody overlayCard hideOverlay={restrictionDate === undefined}>\r\n {restrictionDate !== undefined && (\r\n <>\r\n <CardTitle overlayCard>Wait for PSLF Application Results letter</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n Based on the average processing time for this document, it will be\r\n processed by your loan servicer on {restrictionDate} at the earliest*.\r\n You will not be able to confirm completion of this step until that date.\r\n </p>\r\n <p>\r\n *Please note: Your document is not guaranteed to be processed by this\r\n date. It is important to follow your steps closely.\r\n </p>\r\n </CardText>\r\n </>\r\n )}\r\n </CardBody>\r\n )}\r\n {permissions.isEmpcertCheckPaused && (\r\n <>\r\n <CardBody overlayCard>\r\n <>\r\n <CardTitle overlayCard>Application Pause</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n This step can not be completed at this time. Beginning{' '}\r\n <b>May 1, 2024</b>, the Department of Education changed how it processes\r\n the Public Service Loan Forgiveness Program documentation. As a result,\r\n the processing of Employment Certification documentation is paused{' '}\r\n <b>until July 2024</b>. Please return to your MyFiducius portal and\r\n complete it once Fiducius notifies you that the Department of Education\r\n has resumed processing, projected for <b>July 2024</b>.\r\n </p>\r\n </CardText>\r\n </>\r\n </CardBody>\r\n </>\r\n )}\r\n <CardBody\r\n disableChildren={\r\n restrictionDate !== undefined || permissions.isEmpcertCheckPaused\r\n }\r\n >\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay\r\n title={'Step 1 – Wait for PSLF Application Results from Federal Student Aid.'}\r\n >\r\n <ul>\r\n <li>The approval letter states your form has been accepted.</li>\r\n <li>\r\n There may also be an additional update letter which provides your number\r\n of qualifying payments towards the Public Service Loan Forgiveness program\r\n up to the date your employer signed your Employment Certification form.\r\n </li>\r\n <li>\r\n These typically arrive <strong>one to two months</strong> after the form\r\n is submitted.{' '}\r\n </li>\r\n {isReducedIDREmpCert && (\r\n <li>\r\n If your employment certification form is denied by your loan servicer,\r\n please select <strong>Employment Certification Denied</strong> below. A\r\n member of your Fiducius team will be contact within 3 business days to\r\n address the issue.\r\n </li>\r\n )}\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have received both the PSLF\r\n Application Results and Qualifying Payment update letters.\r\n </strong>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n {!permissions.isEmpcertCheckPaused && isReducedIDREmpCert && (\r\n <RenewalConfirmation stepId={815} />\r\n )}\r\n {!permissions.isEmpcertCheckPaused && !isReducedIDREmpCert && (\r\n <RenewalConfirmation stepId={254} />\r\n )}\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async () => {\r\n dispatch(employmentHistoryLoadCollection());\r\n },\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmpCertSS));\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n AsyncLoader,\n Card,\n CardBody,\n CardTitle,\n CardText,\n DashboardSection,\n Button,\n InputWrapper,\n InputHelp,\n InputLabel,\n InputGroup,\n InputError,\n InputMask,\n InputNumeric,\n InputAddon,\n Form,\n Lede,\n} from 'fiducius-ui';\n\nimport {\n safeAccess,\n debounce,\n formatAsMoney,\n convertIsoToSlash,\n mergeRequestStatuses,\n} from '../../../utils';\n\nimport { getUserId } from '../../../auth';\nimport { withPermissions } from '../../../routing';\n\nimport RenewalConfirmation from '../components/renewal-confirmation';\nimport ForgivenessProgress from '../components/forgiveness-progress';\nimport StepDisplay from '../components/step-display';\nimport ComponentStepDisplay from '../components/component-step-display';\nimport { MessageTile } from '../../../messages';\nimport { MessageDiv } from '../../../messages';\n\nimport {\n idrCopyCompleteToForm,\n idrLoadComplete,\n idrHandleFormChange,\n} from '../../../workflows/idr/redux/operations';\n\nclass IDRSS extends React.Component {\n static propTypes = {\n data: t.object.isRequired,\n form: t.object.isRequired,\n repayTypeName: t.string.isRequired,\n permissions: t.object.isRequired,\n request: t.object.isRequired,\n updateForm: t.func.isRequired,\n onLoad: t.func.isRequired,\n action: t.func.isRequired,\n isMarried: t.bool.isRequired,\n errors: t.object,\n todos: t.array,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n showStep1: false,\n showStep2: false,\n showStep3: false,\n customStep3Show: false,\n goToStep3: false,\n };\n }\n\n componentDidMount() {\n this.props.onLoad();\n const pathName = window.location.pathname;\n if (pathName.includes('/step')) {\n this.setState({\n ...this.state,\n showStep1: pathName.includes('/step-1'),\n showStep2: pathName.includes('/step-2'),\n showStep3: pathName.includes('/step-3'),\n });\n }\n }\n\n componentDidUpdate() {}\n\n handleChange = debounce((formState, id, attribute) => {\n this.props.updateForm({ ...this.props.form, ...formState }, [attribute]);\n }, 250);\n\n goToStep3 = () => {\n this.setState({ customStep3Show: true }, () => {\n this.scrollToStep('customStep3');\n });\n };\n\n handleStep1Click = () => {\n this.handleSectionClick('step1');\n };\n handleStep2Click = () => {\n this.handleSectionClick('step2');\n };\n handleStep3Click = () => {\n this.handleSectionClick('step3');\n };\n\n handleSectionClick = (sectionName) => {\n if (sectionName === 'step1') {\n this.setState(\n {\n showStep1: true,\n showStep2: false,\n showStep3: false,\n },\n () => {\n this.scrollToStep(sectionName);\n }\n );\n } else if (sectionName === 'step2') {\n this.setState(\n {\n showStep1: false,\n showStep2: true,\n showStep3: false,\n },\n () => {\n this.scrollToStep(sectionName);\n }\n );\n } else if (sectionName === 'step3') {\n this.setState(\n {\n showStep1: false,\n showStep2: false,\n showStep3: true,\n },\n () => {\n this.scrollToStep(sectionName);\n }\n );\n }\n };\n\n getStep1Brand = () => {\n let retVal = 'warning';\n const { permissions, todos } = this.props;\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'IDR');\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n retVal = 'success';\n } else {\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 255);\n if (currentToDo !== undefined && currentToDo !== null) {\n retVal = 'info';\n } else {\n const nextToDo = todos.find((a) => a.id === 256 || a.id === 257);\n if (nextToDo !== undefined && nextToDo !== null) {\n retVal = 'success';\n }\n }\n }\n }\n }\n\n return retVal;\n };\n\n getStep2Brand = () => {\n let retVal = 'warning';\n const { permissions, todos } = this.props;\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'IDR');\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n retVal = 'success';\n } else {\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 256);\n if (currentToDo !== undefined && currentToDo !== null) {\n retVal = 'info';\n } else {\n const nextToDo = todos.find((a) => a.id === 257);\n if (nextToDo !== undefined && nextToDo !== null) {\n retVal = 'success';\n }\n }\n }\n }\n }\n\n return retVal;\n };\n\n getStep3Brand = () => {\n let retVal = 'warning';\n const { permissions, todos } = this.props;\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'IDR');\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n retVal = 'success';\n } else {\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 257);\n if (currentToDo !== undefined && currentToDo !== null) {\n retVal = 'info';\n }\n }\n }\n }\n\n return retVal;\n };\n\n scrollToStep(section) {\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\n }\n\n getStep3RestrictionDate = () => {\n let retVal = undefined;\n const { permissions } = this.props;\n const empCertStep = permissions.forgivenessSteps.find((a) => a.id === 'IDR');\n if (empCertStep !== undefined && empCertStep.stepDateRestriction !== undefined) {\n let stepRestriction = new Date(empCertStep.stepDateRestriction);\n retVal =\n (stepRestriction.getMonth() + 1).toString() +\n '/' +\n stepRestriction.getDate() +\n '/' +\n stepRestriction.getFullYear();\n }\n return retVal;\n };\n\n getServicerNames = () => {\n const { form } = this.props;\n return (\n <>\n <ul>\n {form.servicerNames.map((item, i) => (\n <>\n <li key={i}>{item}</li>\n </>\n ))}\n </ul>\n </>\n );\n };\n\n render() {\n const { errors, isMarried, repayTypeName, form, permissions, data } = this.props;\n const restrictionDate = this.getStep3RestrictionDate();\n\n let isMarriedText = <></>;\n if (isMarried) {\n isMarriedText = (\n <>\n <li>\n Please verify your spouse's Social Security Number is present on Question 9 (page 2).\n <ul>\n <li>This is only necessary if your spouse has a federal student loan balance.</li>\n </ul>\n </li>\n </>\n );\n }\n\n let startDate = new Date(form.doeRepayDate);\n let endDate = new Date(form.doeRepayEndDate);\n\n let repaymentPlanTypeInfo;\n if (repayTypeName !== undefined && repayTypeName !== null && repayTypeName !== '') {\n repaymentPlanTypeInfo = (\n <>\n Your repayment plan type should be <strong>{repayTypeName.toString()}</strong>.\n </>\n );\n } else {\n repaymentPlanTypeInfo = (\n <strong>\n Your repayment plan type isn't set. Please visit the Contac Us button on the left of your\n portal to reach out to us regarding.\n </strong>\n );\n }\n\n let repaymentPlanAmountInfo;\n if (\n form.projectedIdr !== undefined &&\n form.projectedIdr !== null &&\n !isNaN(form.projectedIdr)\n ) {\n repaymentPlanAmountInfo = (\n <>\n Your repayment amount should be <strong>{formatAsMoney(form.projectedIdr)}</strong>.\n </>\n );\n } else {\n repaymentPlanAmountInfo = (\n <strong>\n Your repayment amount isn't set. Please visit the Contact Us button on the left of your\n portal to reach out to us regarding.\n </strong>\n );\n }\n\n let planChangingInfo;\n let projectedRepaymentPlanType = data.projectedRepaymentType;\n\n if (projectedRepaymentPlanType === 'REPAY') {\n projectedRepaymentPlanType = 'REPAYE';\n }\n\n switch (data.planChangingCode) {\n case 1:\n planChangingInfo = (\n <li>\n Note: Due to the changes you reported with your marital and/or tax filing status, you\n will be changing to the {projectedRepaymentPlanType} plan this year to maximum your\n financial wellness.\n </li>\n );\n break;\n default:\n break;\n }\n\n return (\n <>\n <ForgivenessProgress />\n <DashboardSection>\n <Card brand=\"primary\">\n <CardBody>\n <CardTitle>Repayment Application</CardTitle>\n <CardText>\n <p>\n Completing this step will submit your application to set up your new Income-Driven\n Repayment (IDR) for your next year.\n </p>\n <p>\n <MessageDiv messageType={'IDR_Tab'} />\n </p>\n <div className=\"row col-12\">\n <div className=\"col-4\">\n <Lede>\n <Button brand={this.getStep1Brand()} onClick={this.handleStep1Click}>\n Generate\n </Button>\n </Lede>\n </div>\n <div className=\"col-4\">\n <Lede>\n <Button brand={this.getStep2Brand()} onClick={this.handleStep2Click}>\n Submit\n </Button>\n </Lede>\n </div>\n <div className=\"col-4\">\n <Lede>\n <Button brand={this.getStep3Brand()} onClick={this.handleStep3Click}>\n Review\n </Button>\n </Lede>\n </div>\n </div>\n </CardText>\n </CardBody>\n </Card>\n </DashboardSection>\n {this.state.showStep1 && (\n <div id=\"step1Section\">\n <DashboardSection title=\"Generate your Repayment Application\">\n <div id=\"messageSection\">\n <MessageTile messageType={'IDR_Generate'} />\n </div>\n <Card>\n <CardBody disableChildren={data.planChangingCode === 2}>\n <AsyncLoader request={this.props.request} loading={<></>}>\n <StepDisplay title={'Step 1 - Sign Repayment Application'}>\n <ul>\n <li>\n Please click the button below to generate your Repayment Application.\n </li>\n <li>Complete the short questionnaire.</li>\n <li>Electronically sign the application.</li>\n <li>\n After electronically signing your application, you will be taken to your\n My Documents page where you can download the file.\n </li>\n {planChangingInfo}\n </ul>\n </StepDisplay>\n </AsyncLoader>\n <RenewalConfirmation stepId={255} />\n </CardBody>\n {data.planChangingCode === 2 && (\n <>\n <CardBody overlayCard>\n <>\n <CardTitle overlayCard>\n Income-Driven Repayment (IDR) Application Hold\n </CardTitle>\n <CardText overlayCard>\n <p>\n Recent federal modifications have created several changes to the Public\n Service Loan Forgiveness (PSLF) program that prevent the proper\n generation and submission of the IDR application for your situation at\n this time.\n </p>\n <p>\n We are monitoring the modifications and will notify you as soon as the\n proper application can be generated.\n </p>\n </CardText>\n </>\n </CardBody>\n </>\n )}\n </Card>\n </DashboardSection>\n </div>\n )}\n {this.state.showStep2 && (\n <div id=\"step2Section\">\n <DashboardSection title=\"Submit your Repayment Application\">\n <div id=\"messageSection\">\n <MessageTile messageType={'IDR_Submit'} />\n </div>\n <div className=\"row\">\n <div className=\"col-12\">\n <Card>\n <CardBody>\n <AsyncLoader request={this.props.request} loading={<></>}>\n <StepDisplay title={'Step 1 – Verify Repayment Application Information'}>\n <ul>\n <li>\n Please verify your Social Security Number is present on the first six\n pages of your application prior to submitting it.\n </li>\n {isMarriedText}\n {planChangingInfo}\n </ul>\n </StepDisplay>\n {/*{data.incomeDocToInclude != null && (\n <Alert brand=\"warning\">{data.incomeDocToInclude}</Alert>\n )}*/}\n </AsyncLoader>\n </CardBody>\n <RenewalConfirmation stepId={256} />\n </Card>\n </div>\n </div>\n </DashboardSection>\n </div>\n )}\n {this.state.showStep3 && (\n <div id=\"step3Section\">\n <DashboardSection title=\"Check on your Repayment Application\">\n <div id=\"messageSection\">\n <MessageTile messageType={'IDR_Review'} />\n </div>\n <Card overlayCard={restrictionDate !== undefined}>\n <CardBody overlayCard hideOverlay={restrictionDate === undefined}>\n {restrictionDate !== undefined && (\n <>\n <CardTitle overlayCard>\n Wait for income-driven repayment to finalize\n </CardTitle>\n <CardText overlayCard>\n <p>\n Based on the average processing time for this document, it will be\n processed by your loan servicer on {restrictionDate} at the earliest*. You\n will not be able to confirm completion of this step until that date.\n </p>\n <p>\n *Please note: Your document is not guaranteed to be processed by this\n date. It is important to follow your steps closely.\n </p>\n </CardText>\n </>\n )}\n </CardBody>\n <CardBody disableChildren={restrictionDate !== undefined}>\n <AsyncLoader request={this.props.request} loading={<></>}>\n <StepDisplay title={'Step 1 – Access loan servicer account'}>\n <ul>\n <li>Login to your account at the following loan servicer(s):</li>\n {form.servicerNames && this.getServicerNames()}\n </ul>\n </StepDisplay>\n <StepDisplay\n title={\n 'Step 2 – Check the status of your new income-driven repayment (we suggest weekly until updated.)'\n }\n >\n <p>\n <strong>Please note:</strong> A repayment application typically takes four\n to eight weeks to process.\n </p>\n <ul>\n <li>\n Check your Inbox/Documentation at your loan servicer for a new approval\n letter.\n </li>\n <li>\n The letter includes important information regarding your new repayment\n plan.\n </li>\n <ul>\n {/* <li>{repaymentPlanTypeInfo}</li> */}\n <li>{repaymentPlanAmountInfo}</li>\n <li>\n Pay close attention to the start date for the new repayment amount.\n </li>\n <li>\n Unless your loans are in forbearance, you will continue to pay your\n current IDR monthly payment until the new one begins.\n </li>\n </ul>\n </ul>\n </StepDisplay>\n {/*Contact us at{' '}\n<a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2.*/}\n <div id=\"customStep3Section\">\n <Form id=\"idrComplete\" handleChange={this.handleChange} defaults={form}>\n <ComponentStepDisplay\n title={'Step 3 – Provide repayment details'}\n show={this.state.customStep3Show}\n >\n <CardText>\n <ul>\n <li>\n <InputWrapper error={!!errors.doeRepayDate}>\n <InputLabel htmlFor=\"doeRepayDate\">\n My repayment plan begins on\n </InputLabel>\n <InputError>\n {safeAccess(errors, 'doeRepayDate.detail')}\n </InputError>\n <InputGroup affordance=\"medium\">\n <InputMask\n defaultValue={convertIsoToSlash(form.doeRepayDate)}\n mask=\"##/##/####\"\n name=\"doeRepayDate\"\n placeholder=\"MM/DD/YYYY\"\n />\n </InputGroup>\n </InputWrapper>\n </li>\n <li>\n <InputWrapper error={!!errors.doeRepayDate}>\n <InputLabel htmlFor=\"doeRepayEndDate\">\n My repayment plan ends on\n </InputLabel>\n <InputError>\n {safeAccess(errors, 'doeRepayEndDate.detail')}\n </InputError>\n <InputGroup affordance=\"medium\">\n <InputMask\n defaultValue={convertIsoToSlash(form.doeRepayEndDate)}\n mask=\"##/##/####\"\n name=\"doeRepayEndDate\"\n placeholder=\"MM/DD/YYYY\"\n />\n </InputGroup>\n {form.doeRepayEndDate !== null && endDate <= startDate && (\n <InputHelp brand=\"danger\">\n The end date must be after the start date.\n </InputHelp>\n )}\n </InputWrapper>\n </li>\n <li>\n {/* TODO: This needs to be an input field for actual-idr*/}\n <InputWrapper error={!!errors.actualIdr}>\n <InputLabel htmlFor=\"actualIdr\">\n My repayment amount is\n </InputLabel>\n <InputError>{safeAccess(errors, 'actualIdr.detail')}</InputError>\n <InputGroup affordance=\"medium\">\n <InputAddon>$</InputAddon>\n <InputNumeric\n name=\"actualIdr\"\n step=\"0.01\"\n defaultValue={form.actualIdr}\n />\n </InputGroup>\n </InputWrapper>\n </li>\n </ul>\n <ul>\n <li>\n If your repayment details reflect a higher repayment amount than the\n one shown on your Fiducius account, please visit the Contact Us\n button on the left of your portal to reach out to us regarding this.\n </li>\n </ul>\n </CardText>\n </ComponentStepDisplay>\n </Form>\n </div>\n <StepDisplay title={'Step 4 – Confirm completion'}>\n <ul>\n <li>Confirm that your correct income-driven repayment is calculated.</li>\n <ul>\n <li>\n We recommend you save a copy of your repayment details to keep a\n physical history of your repayments.{' '}\n {permissions.showContribution && (\n <>\n Your repayment details will also be needed in the next step for\n verification of your repayment to establish your employer\n contribution.\n </>\n )}\n </li>\n <li>\n If your repayment details reflect a higher payment amount OR your\n repayment plan type differs from the one shown in Step 2, please select\n the <strong>Contact Us</strong> button on the left of your portal to let\n us know.\n </li>\n <li>Check the box to confirm that your new payment is calculated.</li>\n </ul>\n </ul>\n </StepDisplay>\n </AsyncLoader>\n {form.doeRepayDate !== null &&\n errors.doeRepayDate === false &&\n form.doeRepayEndDate !== null &&\n endDate > startDate &&\n errors.doeRepayEndDate === false &&\n form.actualIdr !== null &&\n errors.actualIdr === false ? (\n <>\n <RenewalConfirmation stepId={257} additionalInfoNeeded={false} />\n </>\n ) : (\n <RenewalConfirmation\n stepId={257}\n additionalInfoNeeded={true}\n handleChange={this.goToStep3.bind(this)}\n />\n )}\n </CardBody>\n </Card>\n </DashboardSection>\n </div>\n )}\n </>\n );\n }\n}\n\nconst mapRepaymentType = (type) => {\n switch (type) {\n case 'PAYE':\n return 'Pay as you earn';\n case 'REPAY':\n return 'Revised pay as you earn';\n case 'IBR':\n return 'Income based repayment';\n case 'ICR':\n return 'Income contingent repayment';\n case 'SAVE':\n return 'Saving on a Valuable Education';\n default:\n return 'Other';\n }\n};\n\nconst mapStateToProps = (state) => {\n const userId = getUserId(state);\n let data = safeAccess(state, `idr.cache[${userId}]`, {});\n let form = safeAccess(state, 'idr.form', {});\n form.actualRepaymentType = data.projectedRepaymentType;\n form.projectedRepaymentType = data.projectedRepaymentType;\n\n return {\n data: data,\n form: form,\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n state.todos.requests.loadCollection,\n state.idr.requests.updateResource,\n ]),\n isMarried: safeAccess(state, 'auth.cache.permissions.married', false),\n repayTypeName: mapRepaymentType(data.projectedRepaymentType),\n errors: safeAccess(state, 'idr.errors', {}),\n todos: Object.values(state.todos.cache),\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n updateForm: (state, attributes) => dispatch(idrHandleFormChange(state, attributes)),\n onLoad: async () => {\n await dispatch(idrLoadComplete(ownProps.id));\n dispatch(idrCopyCompleteToForm());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(IDRSS));\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, CardText, DashboardSection, Header5 } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport RenewalConfirmation from '../components/renewal-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nclass DocNeededRSFS extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n docsNeeded: t.object,\r\n loadDocs: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Documentation Needed</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>\r\n We are waiting for you to return documents to continue your renewal process.\r\n Please go to the “My Documents†page to determine what documents are still\r\n needed.\r\n </p>\r\n <p>\r\n {/*<DocsNeededForRSUpload documentButton={true} />*/}\r\n <RenewalConfirmation stepId={202} />\r\n </p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n docsNeeded: state.documents.cache,\r\n //request: state.todos.requests.loadCollection,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(DocNeededRSFS));\r\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport { withPermissions } from '../../routing';\nimport { faTrashAlt } from '@fortawesome/pro-regular-svg-icons';\nimport {\n BrandColor,\n Button,\n Card,\n CardBody,\n CardText,\n Header4,\n Header5,\n Loader,\n} from 'fiducius-ui';\nimport { formatRelative, parseISO } from 'date-fns';\nimport englishDefault from 'date-fns/locale/en-US/index';\n\nimport { ActionIcon } from '../../routing';\n\nimport Scheduler from '../containers/scheduler';\n\n// TODO: meeting type 9 is onsite, room-name becomes the name for the room and then phone for the\n// other meeting types\n\nconst StyledMeetingCard = styled(Card)`\n box-shadow: ${(p) => p.theme.boxShadow};\n transition: box-shadow 200ms ease-in-out;\n &:hover {\n box-shadow: ${(p) => p.theme.boxShadowLarge};\n }\n`;\n\nconst StyledFooter = styled.div`\n display: flex;\n justify-content: center;\n & > button {\n margin: 0 0.15rem;\n }\n`;\n\nconst customRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"MMMM do, yyyy 'at' p\",\n};\n\nconst customLocale = {\n ...englishDefault,\n formatRelative: (token, date, baseDate, options) => customRelativeLocale[token],\n};\n\nconst adjustedMeetingTime = (time) => {\n // TODO: fix API to return ISO 8601 with TZ.\n // TODO: THIS IS BROKEN FOR DAYLIGHT SAVINGS CHANGES\n // Everything in the database is EST (UTC-5)\n //return parseISO(time + '-0400');\n return parseISO(time);\n};\n\nconst isMeetingPast = (meeting) => {\n let retVal = new Date() > adjustedMeetingTime(meeting.meetingStartTime);\n return retVal;\n};\n\nconst Meeting = ({ cancelMeeting, isLoading, meeting, permissions }) => (\n <StyledMeetingCard brand=\"secondary\">\n <CardBody>\n <CardText>\n {isLoading ? (\n <Loader variant=\"push\" />\n ) : (\n <>\n <Header4>\n <BrandColor brand=\"textPrimary\">{meeting.advisorName}</BrandColor>\n </Header4>\n <Header5>\n <BrandColor brand=\"textPrimary\">\n {formatRelative(adjustedMeetingTime(meeting.meetingStartTime), new Date(), {\n addSuffix: true,\n locale: customLocale,\n })}\n </BrandColor>\n </Header5>\n {!isMeetingPast(meeting) && (\n <StyledFooter>\n {permissions.clientStatus !== 'PLAN' && (\n <Scheduler buttonText=\"Reschedule\" rescheduleID={{ meetingid: meeting.id }} />\n )}\n <Button brand=\"primary\" onClick={cancelMeeting}>\n Cancel\n </Button>\n </StyledFooter>\n )}\n </>\n )}\n </CardText>\n </CardBody>\n </StyledMeetingCard>\n);\n\nMeeting.propTypes = {\n cancelMeeting: t.func.isRequired,\n isLoading: t.bool,\n meeting: t.object,\n permissions: t.object,\n};\n\nexport default withPermissions(Meeting);\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Header4 } from 'fiducius-ui';\r\nimport styled from 'styled-components';\r\n\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport Meeting from './meeting';\r\n\r\nconst Wrapper = styled.div`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nconst StyledHeader4 = styled(Header4)`\r\n color: ${(p) => (p.theme.themeName === 'greenlight' ? p.theme.textTertiary : 'inherit')};\r\n`;\r\n\r\nconst MeetingList = ({ cancelMeeting, meetings, request }) => (\r\n <Wrapper className=\"meeting-list\">\r\n {safeAccess(meetings, 'length', 0) > 0 ? (\r\n meetings.map((m) => (\r\n <Meeting\r\n key={m.id}\r\n meeting={m}\r\n isLoading={request.key === m.id ? request.isLoading : false}\r\n cancelMeeting={() => cancelMeeting(m.id)}\r\n />\r\n ))\r\n ) : (\r\n <StyledHeader4>You don't have any upcoming meetings</StyledHeader4>\r\n )}\r\n </Wrapper>\r\n);\r\n\r\nMeetingList.propTypes = {\r\n cancelMeeting: t.func.isRequired,\r\n meetings: t.array,\r\n request: t.object,\r\n};\r\n\r\nexport default MeetingList;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Header3 } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../routing';\r\nimport { todosLoadCollection } from '../../todos';\r\n\r\nimport Scheduler from './scheduler';\r\nimport MeetingList from '../components/meeting-list';\r\nimport { meetingsCancelMeeting, meetingsLoadMeetings } from '../redux/operations';\r\n\r\nconst StyledHeader3 = styled(Header3)`\r\n color: ${(p) => (p.theme.themeName === 'greenlight' ? p.theme.textTertiary : 'inherit')};\r\n`;\r\n\r\nconst Container = styled.div`\r\n padding: 1em;\r\n`;\r\n\r\nconst MyMeetingContainer = styled.div`\r\n padding: 1em 0 0 0;\r\n`;\r\n\r\nclass MyMeetings extends React.Component {\r\n static propTypes = {\r\n cancelMeeting: t.func.isRequired,\r\n deleteRequest: t.object.isRequired,\r\n loadMeetings: t.func.isRequired,\r\n myMeetings: t.object,\r\n permissions: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n schedulerIsOpen: false,\r\n shouldClose: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadMeetings();\r\n }\r\n\r\n render() {\r\n const { cancelMeeting, deleteRequest, myMeetings = {}, permissions } = this.props;\r\n return (\r\n <Container>\r\n {permissions.showScheduleMeeting && (\r\n <>\r\n <StyledHeader3>Schedule a meeting</StyledHeader3>\r\n <Scheduler />\r\n </>\r\n )}\r\n <MyMeetingContainer>\r\n <StyledHeader3>My Meetings</StyledHeader3>\r\n <MeetingList\r\n request={deleteRequest}\r\n cancelMeeting={cancelMeeting}\r\n meetings={Object.keys(myMeetings).reduce((m, k) => [...m, myMeetings[k]], [])}\r\n />\r\n </MyMeetingContainer>\r\n </Container>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n myMeetings: state.meetings.cache.current,\r\n deleteRequest: state.meetings.requests.deleteResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n cancelMeeting: async (id) => {\r\n await dispatch(meetingsCancelMeeting(id));\r\n dispatch(todosLoadCollection());\r\n },\r\n loadMeetings: () => dispatch(meetingsLoadMeetings()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(MyMeetings));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('meetings', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Header5,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\nimport { formatRelative, parseISO } from 'date-fns';\r\nimport englishDefault from 'date-fns/locale/en-US/index';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { Scheduler } from '../../../meetings';\r\n\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nimport { renewalResultsLoadResource } from '../../../renewal-results';\r\nimport DocsNeededForRSUpload from '../components/docs-upload-needed';\r\n\r\nimport { todosLoadCollection } from '../../../todos/redux/operations';\r\n\r\nclass MeetingRSFS extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.string,\r\n myMeetings: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { meetings: 0 };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id).then((response) => {\r\n let numMeetings = Object.entries(this.props.myMeetings).length;\r\n if (numMeetings > 0 && numMeetings !== undefined && numMeetings !== null) {\r\n this.setState({ meetings: numMeetings });\r\n }\r\n });\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.props.myMeetings !== undefined && this.state.meetings > 0) {\r\n if (Object.entries(this.props.myMeetings).length !== this.state.meetings) {\r\n this.props.loadData(this.props.id);\r\n this.setState({ meetings: Object.entries(this.props.myMeetings).length });\r\n }\r\n }\r\n }\r\n\r\n adjustedMeetingTime = (time) => {\r\n // TODO: fix API to return ISO 8601 with TZ.\r\n // TODO: THIS IS BROKEN FOR DAYLIGHT SAVINGS CHANGES\r\n // Everything in the database is EST (UTC-5)\r\n //return parseISO(time + '-0400');\r\n return parseISO(time);\r\n };\r\n\r\n render() {\r\n const { request, data } = this.props;\r\n const customRelativeLocale = {\r\n lastWeek: \"'last' eeee 'at' p\",\r\n yesterday: \"'yesterday at' p\",\r\n today: \"'today at' p\",\r\n tomorrow: \"'tomorrow at' p\",\r\n nextWeek: \"eeee 'at' p\",\r\n other: \"MMMM do 'at' p\",\r\n };\r\n\r\n const customLocale = {\r\n ...englishDefault,\r\n formatRelative: (token, date, baseDate, options) => customRelativeLocale[token],\r\n };\r\n\r\n let MeetingDateTime = null;\r\n if (data.meetingScheduledDate !== undefined && data.meetingScheduledDate !== null) {\r\n MeetingDateTime = formatRelative(\r\n this.adjustedMeetingTime(data.meetingScheduledDate),\r\n new Date(),\r\n {\r\n addSuffix: true,\r\n locale: customLocale,\r\n }\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <ForgivenessProgress />\r\n {(data.slotId === undefined || data.slotId === null || data.slotId === 0) && (\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Schedule Renewal Meeting</CardTitle>\r\n <CardText>\r\n <Header5>\r\n The next step of the renewal process is to schedule a meeting to speak with a\r\n Support Services Representative; times are available Monday through Friday\r\n 9:00AM to 5:00PM EST.\r\n </Header5>\r\n <p></p>\r\n <Header5>\r\n <DocsNeededForRSUpload documentButton={true} />\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\"></div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n <Scheduler />\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n {data.slotId !== undefined && data.slotId !== null && data.slotId !== 0 && (\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Renewal Meeting</CardTitle>\r\n <CardText>\r\n <Header5>\r\n Your renewal meeting is scheduled for <strong>{MeetingDateTime}</strong>\r\n </Header5>\r\n <p></p>\r\n <Header5>\r\n <DocsNeededForRSUpload documentButton={true} />\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n myMeetings: state.meetings.cache.current,\r\n request: state.renewalResults.requests.loadResource,\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n dispatch(renewalResultsLoadResource(id));\r\n await dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(MeetingRSFS));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Button,\r\n Header5,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport DocsNeededForRSUpload from '../components/docs-upload-needed';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nimport { renewalResultsLoadResource } from '../../../renewal-results';\r\nimport { fulfillmentLoadCollection } from '../../../fulfillment';\r\n\r\nclass IDRRSFS extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n docs: t.object,\r\n loadData: t.func.isRequired,\r\n loadDocs: t.func,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '' };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n if (Object.entries(this.props.docs).length < 1) {\r\n this.props.loadDocs();\r\n }\r\n }\r\n\r\n redirectForDocumentUploadOrSign = () => {\r\n this.setState({ ...this.state, redirectURI: '/documents' });\r\n };\r\n\r\n render() {\r\n const { data, request, docs } = this.props;\r\n\r\n let IDRAvailable = false;\r\n\r\n Object.entries(docs).forEach(([key, value]) => {\r\n let newArray = Object.entries(value);\r\n //doc type [3] - is doc signed? [5]\r\n if (newArray[3][1] === 11 && newArray[5][1] === false) {\r\n IDRAvailable = true;\r\n }\r\n });\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n return (\r\n <div>\r\n <ForgivenessProgress />\r\n {data.idrDelivered === false && (\r\n <DashboardSection title=\"Income-Driven Repayment Application Generation\">\r\n <Card>\r\n <AsyncLoader request={request}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Income-Driven Repayment Application Generation</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>\r\n We are reviewing your account and your Income-Driven Repayment (IDR)\r\n application will be shared in the next 1 to 3 business days.\r\n </p>\r\n <p>\r\n <DocsNeededForRSUpload documentButton={true} />\r\n </p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n {data.idrDelivered && IDRAvailable === true && (\r\n <DashboardSection title=\"Income-Driven Repayment Application Signature Required\">\r\n <AsyncLoader request={request}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Income-Driven Repayment Application Signature Required</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>\r\n The next step of your renewal process is to sign your Income-Driven\r\n Repayment (IDR) application. Please go to the “My Documents†page to sign\r\n your IDR application.\r\n </p>\r\n <p>\r\n <DocsNeededForRSUpload documentButton={false} />\r\n </p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\"></div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={this.redirectForDocumentUploadOrSign}>\r\n {'Sign Application'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Card>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n )}\r\n {data.idrDelivered && IDRAvailable === false && (\r\n <DashboardSection title=\"Income-Driven Repayment Application Signature Required\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Income-Driven Repayment Application Signature Received</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>\r\n Your document has been signed, we will review your document and reach out if\r\n we need anything additional.\r\n </p>\r\n <p>\r\n <DocsNeededForRSUpload documentButton={false} />\r\n </p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </div>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n docs: state.fulfillment.cache,\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n request: mergeRequestStatuses([\r\n state.renewalResults.requests.loadResource,\r\n state.fulfillment.requests.loadCollection,\r\n ]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: (id) => dispatch(renewalResultsLoadResource(id)),\r\n loadDocs: () => {\r\n dispatch(fulfillmentLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(IDRRSFS));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, CardText, DashboardSection, Header5 } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport DocsNeededForRSUpload from '../components/docs-upload-needed';\r\n\r\nclass AccountReviewRS extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n return (\r\n <div>\r\n <ForgivenessProgress />\r\n <DashboardSection title=\"Account Review\">\r\n <Card>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Account Review</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>\r\n We are reviewing your documentation to determine the optimal approach to\r\n submitting your recertification request.\r\n </p>\r\n <p>\r\n <DocsNeededForRSUpload documentButton={true} />\r\n </p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(AccountReviewRS));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport Moment from 'moment';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Header5,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport DocsNeededForRSUpload from '../components/docs-upload-needed';\r\n\r\nimport { renewalResultsLoadResource } from '../../../renewal-results';\r\n\r\nclass Recertification extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n permissions: t.object.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n render() {\r\n const { data, request, permissions } = this.props;\r\n return (\r\n <div>\r\n <ForgivenessProgress />\r\n {data.recertificationSubmitted === false && (\r\n <DashboardSection>\r\n <Card>\r\n <AsyncLoader request={request}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Recertification Submission Date Set</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>\r\n Your recertification request will be submitted to your loan servicer\r\n within 3 business days of{' '}\r\n {Moment(data.submissionToBeCompletedDate).format('MMMM Do')}.\r\n </p>\r\n <p>\r\n <DocsNeededForRSUpload documentButton={true} />\r\n </p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n\r\n {data.recertificationSubmitted && (\r\n <DashboardSection>\r\n <Card>\r\n <AsyncLoader request={request}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Recertification Submitted</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>\r\n Your recertification request was submitted on{' '}\r\n {Moment(data.recertificationSubmittedDate).format('MMMM Do')}.\r\n </p>\r\n <p>\r\n At this time, we are tracking the status of the recertification request at\r\n your loan servicer and will notify you of any updates.\r\n </p>\r\n <p>\r\n We are also tracking your Employment Certification form(s) to ensure your\r\n employment is verified and your loan payments, from this past year, are\r\n certified for your loan forgiveness.\r\n </p>\r\n <ul>\r\n <li>\r\n Please forward any information you receive from your loan servicer.\r\n </li>\r\n\r\n {permissions.showContribution && (\r\n <li>\r\n If your studdent loan payment is greater than your employer's\r\n contribution, your portion of the payment will be automatically\r\n updated as a payroll deduction to ensure that the full payment is met\r\n each month.\r\n </li>\r\n )}\r\n </ul>\r\n <p></p>\r\n <p></p>\r\n <p>\r\n <DocsNeededForRSUpload documentButton={true} />\r\n </p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n request: state.renewalResults.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: (id) => dispatch(renewalResultsLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Recertification));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Header5,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport DocsNeededForRSUpload from '../components/docs-upload-needed';\r\n\r\nimport { renewalResultsLoadResource } from '../../../renewal-results';\r\n\r\nclass EmpCertRSFS extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n render() {\r\n const { data, request } = this.props;\r\n\r\n return (\r\n <div>\r\n <ForgivenessProgress />\r\n {data.empCertReceived && data.empCertApproved === false && (\r\n <DashboardSection>\r\n <Card>\r\n <AsyncLoader request={request}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Employment Certification Tracking</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>\r\n We are tracking your Employment Certification form(s) to ensure your\r\n employment is verified and your loan payments, from this past year, are\r\n certified for your loan forgiveness.\r\n </p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n {data.empCertReceived === false && (\r\n <DashboardSection>\r\n <Card>\r\n <AsyncLoader request={request}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Employment Certification Tracking</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>\r\n Your Employment Certification form has not been received. If the document\r\n is not listed below, please contact us.{' '}\r\n </p>\r\n <p>\r\n <DocsNeededForRSUpload documentButton={true} />\r\n </p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n {data.empCertReceived && data.empCertApproved === true && (\r\n <DashboardSection>\r\n <Card>\r\n <AsyncLoader request={request}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Employment Certification Tracking</CardTitle>\r\n <CardText>\r\n <Header5>\r\n <p>Your Employment Certification was successfully processed.</p>\r\n </Header5>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </AsyncLoader>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n request: state.renewalResults.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: (id) => dispatch(renewalResultsLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmpCertRSFS));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Header5,\r\n Header3,\r\n Table,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, formatAsMoney, objToArray } from '../../../utils';\r\n\r\nimport styled from 'styled-components';\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport BtsBorrowingCompare from '../components/bts-borrowing-comparison';\r\n\r\nimport { questionnaireBtsLoadCollection } from '../../../workflows/questionnaire-bts/redux/operations';\r\n\r\nconst LeftContent = styled.div`\r\n margin-right: -1px;\r\n padding-right: 5px;\r\n`;\r\n\r\nconst RightContent = styled.div`\r\n margin-left: -1px;\r\n padding-right: 5px;\r\n`;\r\n\r\nconst StyledHeader5 = styled(Header5)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst BottomContent = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nconst VerticalLine = styled.div`\r\n @media (min-width: 768px) {\r\n border-left: 1px solid ${(p) => p.theme.textPrimary};\r\n }\r\n`;\r\n\r\nconst ButtonRight = styled(Button)`\r\n float: right;\r\n margin-top: 10px;\r\n margin-right: 5px;\r\n`;\r\n\r\nconst TabbedDD = styled.dd`\r\n margin-left: 15px;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nclass BtsReview extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n flatData: t.array,\r\n loadEducation: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { buttonType: '', monthly: true, showHistory: false, redirectUrl: '' };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadEducation(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {\r\n /*const { data, flatData } = this.props;\r\n if (this.state.buttonType.length > 0) {\r\n this.setState({ buttonType: '', redirectUrl: '' });\r\n }*/\r\n }\r\n\r\n educationCreditTaxesInfo = () => {\r\n return (\r\n <div className=\"col\">\r\n <CardTitle>\r\n <Header3>Education Credits and Taxes</Header3>\r\n </CardTitle>\r\n <p>\r\n An education credit is a type of tax credit available to students of a post-secondary\r\n educational institution, such as a college or university. If the credit reduces your tax\r\n to less than zero, you may receive a tax refund. You have two education credits available\r\n to utilize: American opportunity tax credit (AOTC) and the lifetime learning credit (LLC).\r\n </p>\r\n <p>\r\n <StyledHeader5>Basic Requirements:</StyledHeader5>\r\n </p>\r\n <ul>\r\n <li>\r\n You, your dependent, or a third party pays qualified education expenses for higher\r\n education\r\n <ul>\r\n <li>A third party is described as a relative or friend</li>\r\n </ul>\r\n </li>\r\n <li>To be eligible a student must be enrolled at an eligible educational institution</li>\r\n <li>\r\n You, your spouse, or your dependent listed on your tax return is the eligible student\r\n </li>\r\n </ul>\r\n <p>\r\n <StyledHeader5>More Information:</StyledHeader5>\r\n </p>\r\n <p>\r\n <ul>\r\n <li>\r\n <a\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n href=\"https://www.irs.gov/credits-deductions/individuals/education-credits-aotc-llc\"\r\n >\r\n Education Credits\r\n </a>{' '}\r\n as defined by the IRS\r\n </li>\r\n <li>\r\n <a\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n href=\"https://www.eitc.irs.gov/other-refundable-credits-toolkit/compare-education-credits/compare-education-credits\"\r\n >\r\n AOTC and LLC Comparison\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n href=\"https://www.irs.gov/help/ita/am-i-eligible-to-claim-an-education-credit\"\r\n >\r\n IRS Interactive Tax Assistant\r\n </a>\r\n </li>\r\n </ul>\r\n </p>\r\n </div>\r\n );\r\n };\r\n\r\n fafsaFinancialAidInfo = () => {\r\n return (\r\n <div className=\"col\">\r\n <CardTitle>\r\n <Header3>Financial Aid</Header3>\r\n </CardTitle>\r\n <p>\r\n Financial aid is classified as any funding that assists a student in paying for schooling\r\n through a post-secondary educational institution, such as a college or university. There\r\n are several forms of financial aid that you may be eligible for, those are the following:\r\n </p>\r\n <p>\r\n <StyledHeader5>Federal Student Loans:</StyledHeader5>\r\n </p>\r\n <p>\r\n Federal student loans are loans borrowed from federal loan servicers that must be paid\r\n back upon your graduation. The William D. Ford Federal Direct Loan Program is the current\r\n federal loan program and under this program any loan borrowed will be classified as a\r\n Direct loan. When borrowing, to meet our recommendations, the loans you will receive will\r\n be either a Direct Subsidized or Unsubsidized loan, but there are other types of federal\r\n student loans available, those include the following:\r\n </p>\r\n <p>\r\n <ul>\r\n <li>Direct Parent Plus loans</li>\r\n <li>\r\n Direct Graduate Plus loans\r\n <ul>\r\n <li>\r\n To determine your eligibility for this type of loan, you will need to contact your\r\n school's financial aid office\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </p>\r\n\r\n <p>\r\n <StyledHeader5>Grants:</StyledHeader5>\r\n </p>\r\n <p>\r\n A grant is a form of financial aid that does not have to be paid back as long as you\r\n maintain eligibility for the grant.\r\n </p>\r\n <p>\r\n <StyledHeader5>Scholarships:</StyledHeader5>\r\n </p>\r\n <p>\r\n Most colleges or universities offer scholarships to assist students in paying for tuition.\r\n </p>\r\n <p>\r\n <StyledHeader5>Work-study:</StyledHeader5>\r\n </p>\r\n <p>\r\n The Federal Work-Study Program allows you to work part-time and earn money to for your\r\n schooling.\r\n </p>\r\n <p>\r\n <StyledHeader5>Aid for Military Families:</StyledHeader5>\r\n </p>\r\n <p>\r\n Additional aid eligibility and special aid programs are available for serving in the\r\n military or for being the spouse or child of a veteran. Available aid includes the\r\n following:\r\n </p>\r\n\r\n <p>\r\n <ul>\r\n <li>Reserve Officers' Training Corps (ROTC) Scholarships</li>\r\n <li>Department of Veteran Affairs Education Benefits</li>\r\n <li>Iraq and Afghanistan Service Grant</li>\r\n <li>Federal Pell Grant</li>\r\n </ul>\r\n </p>\r\n </div>\r\n );\r\n };\r\n\r\n benefitsRetirementInfo = () => {\r\n return (\r\n <div className=\"col\">\r\n <CardTitle>\r\n <Header3>Benefits and Retirement</Header3>\r\n </CardTitle>\r\n <p>\r\n As you get closer to your graduation date and the start of your Income-Driven Repayment,\r\n you should consider reviewing the benefits offered by your employer and your retirement\r\n options.\r\n </p>\r\n <p>\r\n Certain retirement plans and benefits are classified as pre-tax deductions which lower\r\n your adjusted gross income. A lower adjusted gross income will result in a lower\r\n Income-Driven Repayment and, in turn, can increase your projected loan forgiveness.{' '}\r\n </p>\r\n\r\n <p>\r\n If you are curious about seeing the impact of making changes to your benefits or\r\n retirement, you can utilize the Fiducius{' '}\r\n <Link to=\"/tools/pretax-tool\">Pre-Tax Deduction</Link> and{' '}\r\n <Link to=\"/tools/retirement-tool\">Retirement Comparison</Link> tools under Benefit Tools\r\n in your left-navigation.\r\n </p>\r\n </div>\r\n );\r\n };\r\n\r\n removeEmptyEntries = (array) => {\r\n if (array.length > 0) {\r\n var retArray = [];\r\n for (let i = 0; i <= array.length; i++) {\r\n if (array[i] !== undefined) {\r\n array[i].forEach((a) => {\r\n if (a !== undefined && a !== '') retArray.push(a);\r\n });\r\n }\r\n }\r\n }\r\n return retArray;\r\n };\r\n\r\n handleEducationClick = (buttonType) => {\r\n this.setState({ ...this.state, buttonType: buttonType });\r\n };\r\n\r\n handleChartHistory = () => {\r\n this.setState({ ...this.state, showHistory: !this.state.showHistory });\r\n };\r\n\r\n handleRedirect = () => {\r\n this.setState({ redirectUrl: '/contact' });\r\n };\r\n\r\n handleYearlyMonthly = () => {\r\n this.setState({ ...this.state, monthly: !this.state.monthly });\r\n };\r\n\r\n getPrevYearBal = (initial, previous) => {\r\n if (initial !== undefined && initial.length > 0) {\r\n var retArray = [];\r\n for (let i = 0; i <= initial.length; i++) {\r\n if (initial[i] !== undefined) {\r\n if (i === 0) {\r\n retArray.push(initial[i]);\r\n } else {\r\n retArray.push(previous[i - 1]);\r\n }\r\n }\r\n }\r\n }\r\n return retArray;\r\n };\r\n\r\n pivotDataTable = (headers, body) => {\r\n if (body !== undefined && body.length > 0) {\r\n var retArray = [];\r\n\r\n for (let i = 0; i < headers.length; i++) {\r\n var oneDimArray = [];\r\n for (let j = 0; j <= body.length; j++) {\r\n if (j === 0) {\r\n oneDimArray.push(headers[i]);\r\n } else {\r\n oneDimArray.push(body[j - 1][i]);\r\n }\r\n }\r\n retArray.push(oneDimArray);\r\n }\r\n }\r\n return retArray;\r\n };\r\n\r\n getPivotHeaders = (body) => {\r\n let retArray = [];\r\n if (body !== undefined && body.length > 0) {\r\n for (let i = 0; i <= body.length; i++) {\r\n if (i === 0) {\r\n retArray.push(' ');\r\n } else if (i === body.length) {\r\n retArray.push('Current Snapshot');\r\n } else {\r\n retArray.push('Year ' + i);\r\n }\r\n }\r\n }\r\n return retArray;\r\n };\r\n\r\n getTuitionLeft = (\r\n livingExp,\r\n recommended,\r\n newLoanBalance,\r\n initialLoanBalance,\r\n livingExpensePercent,\r\n tuitionPercent\r\n ) => {\r\n let negativeLivingExp = 0;\r\n let tuitionBorrowed =\r\n (newLoanBalance[newLoanBalance.length - 1] - initialLoanBalance[0]) * tuitionPercent;\r\n let tuitionLeftToBorrow = recommended[0] - tuitionBorrowed;\r\n let livingExpBorrowed =\r\n (newLoanBalance[newLoanBalance.length - 1] - initialLoanBalance[0]) * livingExpensePercent;\r\n let livingExpLeftToBorrow = livingExp[0] - livingExpBorrowed;\r\n\r\n if (livingExpLeftToBorrow < 0) {\r\n negativeLivingExp = livingExpLeftToBorrow;\r\n }\r\n\r\n if (tuitionLeftToBorrow < 0) {\r\n return 0;\r\n } else {\r\n return tuitionLeftToBorrow + negativeLivingExp;\r\n }\r\n };\r\n\r\n getLivingExpLeft = (\r\n livingExp,\r\n recommended,\r\n newLoanBalance,\r\n initialLoanBalance,\r\n livingExpensePercent,\r\n tuitionPercent\r\n ) => {\r\n let negativeTuition = 0;\r\n let tuitionBorrowed =\r\n (newLoanBalance[newLoanBalance.length - 1] - initialLoanBalance[0]) * tuitionPercent;\r\n let tuitionLeftToBorrow = recommended[0] - tuitionBorrowed;\r\n let livingExpBorrowed =\r\n (newLoanBalance[newLoanBalance.length - 1] - initialLoanBalance[0]) * livingExpensePercent;\r\n let livingExpLeftToBorrow = livingExp[0] - livingExpBorrowed;\r\n\r\n if (tuitionLeftToBorrow < 0) {\r\n negativeTuition = tuitionLeftToBorrow;\r\n }\r\n\r\n if (livingExpLeftToBorrow < 0) {\r\n return 0;\r\n } else {\r\n return livingExpLeftToBorrow + negativeTuition;\r\n }\r\n };\r\n\r\n render() {\r\n const { data, request } = this.props;\r\n\r\n let recommendedBorrowingRemain = 0;\r\n let recommendedBorrowingRemainAddInfo = 0;\r\n\r\n const headers = [\r\n 'Starting Loan Balance',\r\n 'New Loan Balance Borrowed',\r\n 'Estimated New Loan Balance',\r\n 'Expected Income',\r\n 'Estimated Standard Payment',\r\n 'Estimated IDR',\r\n 'Estimated Savings',\r\n ];\r\n const tableVariables = [\r\n 'initialLoanBalance',\r\n 'newLoanAmtBorrowed',\r\n 'estimatedLoanBalance',\r\n 'graduationIncome',\r\n 'monthlyStandardPayment',\r\n 'estimatedIdr',\r\n 'monthlySavings',\r\n ];\r\n const variables = [\r\n 'id',\r\n 'initialLoanBalance',\r\n 'newLoanAmtBorrowed',\r\n 'estimatedLoanBalance',\r\n 'recommendedBorrowing',\r\n 'recommendedBorrowingTuition',\r\n 'recommendedBorrowingLivingExp',\r\n 'estimatedIdr',\r\n 'graduationIncome',\r\n 'monthlyStandardPayment',\r\n ];\r\n\r\n let body = Object.values(data).map((a) =>\r\n tableVariables.map((h) => (h === 'id' ? a[h] : formatAsMoney(a[h])))\r\n );\r\n let totalBorrowRec = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'recommendedBorrowing' ? a[h] : undefined))\r\n );\r\n let newLoanBalance = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'estimatedLoanBalance' ? a[h] : undefined))\r\n );\r\n let initLoanBalance = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'initialLoanBalance' ? a[h] : undefined))\r\n );\r\n let recTuitionToBorrow = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'recommendedBorrowingTuition' ? a[h] : undefined))\r\n );\r\n let recLivingExpToBorrow = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'recommendedBorrowingLivingExp' ? a[h] : undefined))\r\n );\r\n let newYearlyBorrowedAmt = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'newLoanAmtBorrowed' ? a[h] : undefined))\r\n );\r\n let EstIDR = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'estimatedIdr' ? a[h] : undefined))\r\n );\r\n let ExpectedIncome = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'graduationIncome' ? a[h] : undefined))\r\n );\r\n let EstStandard = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'monthlyStandardPayment' ? a[h] : undefined))\r\n );\r\n let loanTicks = Object.values(data).map((a) =>\r\n variables.map((h) => (h === 'id' ? a[h] : undefined))\r\n );\r\n\r\n newLoanBalance = this.removeEmptyEntries(newLoanBalance);\r\n initLoanBalance = this.removeEmptyEntries(initLoanBalance);\r\n loanTicks = this.removeEmptyEntries(loanTicks);\r\n totalBorrowRec = this.removeEmptyEntries(totalBorrowRec);\r\n recTuitionToBorrow = this.removeEmptyEntries(recTuitionToBorrow);\r\n recLivingExpToBorrow = this.removeEmptyEntries(recLivingExpToBorrow);\r\n newYearlyBorrowedAmt = this.removeEmptyEntries(newYearlyBorrowedAmt);\r\n EstIDR = this.removeEmptyEntries(EstIDR);\r\n EstStandard = this.removeEmptyEntries(EstStandard);\r\n ExpectedIncome = this.removeEmptyEntries(ExpectedIncome);\r\n\r\n let loanBalance = [];\r\n if (loanTicks !== undefined && !loanTicks.includes(0)) {\r\n loanTicks.unshift(0);\r\n }\r\n\r\n let tableData = this.pivotDataTable(headers, body);\r\n let pivotTableHeaders = this.getPivotHeaders(body);\r\n let prevYearLoanBalance = this.getPrevYearBal(initLoanBalance, newLoanBalance);\r\n\r\n let tuitionLeftToBorrow = 0;\r\n let livingExpLeftToBorrow = 0;\r\n let tuitionPercent = 0;\r\n let livingExpensePercent = 0;\r\n\r\n if (recLivingExpToBorrow !== undefined && recTuitionToBorrow !== undefined) {\r\n tuitionPercent = recTuitionToBorrow[0] / totalBorrowRec[0];\r\n livingExpensePercent = recLivingExpToBorrow[0] / totalBorrowRec[0];\r\n\r\n tuitionLeftToBorrow = this.getTuitionLeft(\r\n recLivingExpToBorrow,\r\n recTuitionToBorrow,\r\n newLoanBalance,\r\n initLoanBalance,\r\n livingExpensePercent,\r\n tuitionPercent\r\n );\r\n livingExpLeftToBorrow = this.getLivingExpLeft(\r\n recLivingExpToBorrow,\r\n recTuitionToBorrow,\r\n newLoanBalance,\r\n initLoanBalance,\r\n livingExpensePercent,\r\n tuitionPercent\r\n );\r\n }\r\n\r\n if (totalBorrowRec !== undefined) {\r\n recommendedBorrowingRemain =\r\n totalBorrowRec[totalBorrowRec.length - 1] -\r\n (newLoanBalance[newLoanBalance.length - 1] - initLoanBalance[0]);\r\n if (recommendedBorrowingRemain < 0) {\r\n recommendedBorrowingRemainAddInfo = 0;\r\n } else {\r\n recommendedBorrowingRemainAddInfo = recommendedBorrowingRemain;\r\n }\r\n }\r\n\r\n if (this.state.redirectUrl && this.state.redirectUrl.length > 0) {\r\n return <Redirect to={this.state.redirectUrl} />;\r\n } else {\r\n return (\r\n <div>\r\n {/*<ForgivenessProgress />*/}\r\n <DashboardSection title=\"StudentFORGIVE Snapshot\">\r\n <AsyncLoader request={request}>\r\n <CardBody>\r\n <div>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-5 col-xl-5 col-lg-12 col-md-12 col-sm-12 col-xs-12\">\r\n {initLoanBalance !== undefined && (\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <LeftContent className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <CardTitle>\r\n <span>Presented Plan</span>\r\n </CardTitle>\r\n <dl>\r\n <dt>Starting Loan Balance</dt>\r\n <dd>{' ' + formatAsMoney(initLoanBalance[0]) || '—'}</dd>\r\n <dt>Recommended Borrowing</dt>\r\n <dd>{' ' + formatAsMoney(totalBorrowRec[0]) || '—'}</dd>\r\n <TabbedDD>\r\n <dl>\r\n <>\r\n <dt>Tuition To Borrow</dt>\r\n <dd>{formatAsMoney(recTuitionToBorrow[0]) || '-'}</dd>\r\n </>\r\n <>\r\n <dt>Living Expenses To Borrow</dt>\r\n <dd>{formatAsMoney(recLivingExpToBorrow[0]) || '-'}</dd>\r\n </>\r\n </dl>\r\n </TabbedDD>\r\n <dt>Loan Balance After School</dt>\r\n <dd>\r\n {' ' +\r\n (formatAsMoney(initLoanBalance[0] + totalBorrowRec[0]) ||\r\n '-')}\r\n </dd>\r\n </dl>\r\n </LeftContent>\r\n <VerticalLine />\r\n <RightContent className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <CardTitle>\r\n <span>Current Snapshot</span>\r\n </CardTitle>\r\n <dl>\r\n {initLoanBalance.length === 1 && (\r\n <div>\r\n <dt>Starting Loan Balance</dt>{' '}\r\n <dd>{formatAsMoney(initLoanBalance[0])}</dd>\r\n </div>\r\n )}\r\n {initLoanBalance.length > 1 && (\r\n <div>\r\n <dt>Previous Snapshot's Loan Balance</dt>\r\n <dd>\r\n {formatAsMoney(\r\n prevYearLoanBalance[prevYearLoanBalance.length - 1]\r\n )}\r\n </dd>\r\n </div>\r\n )}\r\n <dt>New Borrowing</dt>\r\n <dd>\r\n {formatAsMoney(\r\n newYearlyBorrowedAmt[newYearlyBorrowedAmt.length - 1]\r\n )}\r\n </dd>\r\n <TabbedDD>\r\n <dl>\r\n <dt>Estimated Tuition Borrowed</dt>\r\n <dd>\r\n {formatAsMoney(\r\n newYearlyBorrowedAmt[newYearlyBorrowedAmt.length - 1] *\r\n tuitionPercent\r\n )}\r\n </dd>\r\n\r\n <dt>Estimated Living Expenses Borrowed</dt>\r\n <dd>\r\n {formatAsMoney(\r\n newYearlyBorrowedAmt[newYearlyBorrowedAmt.length - 1] *\r\n livingExpensePercent\r\n )}\r\n </dd>\r\n </dl>\r\n </TabbedDD>\r\n <dt>Estimated Loan Balance</dt>\r\n <dd>\r\n {formatAsMoney(newLoanBalance[newLoanBalance.length - 1])}\r\n </dd>\r\n </dl>\r\n </RightContent>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n )}\r\n </div>\r\n <div className=\"col-3 col-xl-3 col-lg-3 col-md-6 col-sm-12 col-xs-12\">\r\n {/*Expected Income/Payments Section*/}\r\n {ExpectedIncome !== undefined && (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Estimated Payments</CardTitle>\r\n <dl>\r\n <dt>Expected Income</dt>\r\n <dd>{formatAsMoney(ExpectedIncome[ExpectedIncome.length - 1])}</dd>\r\n {this.state.monthly === true && (\r\n <div>\r\n <dt>Estimated Monthly Standard Payment</dt>\r\n <dd>\r\n {EstStandard[EstStandard.length - 1] < 0\r\n ? '-'\r\n : formatAsMoney(EstStandard[EstStandard.length - 1])}\r\n </dd>\r\n <dt>Estimated Monthly IDR</dt>\r\n <dd>\r\n {EstIDR[EstIDR.length - 1] < 0\r\n ? '-'\r\n : formatAsMoney(EstIDR[EstIDR.length - 1])}\r\n </dd>\r\n <dt>Estimated Monthly Savings</dt>\r\n <dd>\r\n {EstStandard[EstStandard.length - 1] -\r\n EstIDR[EstIDR.length - 1] <\r\n 0\r\n ? '-'\r\n : formatAsMoney(\r\n EstStandard[EstStandard.length - 1] -\r\n EstIDR[EstIDR.length - 1]\r\n )}\r\n </dd>\r\n </div>\r\n )}\r\n {this.state.monthly === false && (\r\n <div>\r\n <dt>Estimated Yearly Standard Payment</dt>\r\n <dd>\r\n {EstStandard[EstStandard.length - 1] * 12 < 0\r\n ? '-'\r\n : formatAsMoney(EstStandard[EstStandard.length - 1] * 12)}\r\n </dd>\r\n <dt>Estimated Yearly IDR</dt>\r\n <dd>\r\n {EstIDR[EstIDR.length - 1] * 12 < 0\r\n ? 0\r\n : formatAsMoney(EstIDR[EstIDR.length - 1] * 12)}\r\n </dd>\r\n <dt>Estimated Yearly Savings</dt>\r\n <dd>\r\n {(EstStandard[EstStandard.length - 1] -\r\n EstIDR[EstIDR.length - 1]) *\r\n 12 <\r\n 0\r\n ? '-'\r\n : formatAsMoney(\r\n (EstStandard[EstStandard.length - 1] -\r\n EstIDR[EstIDR.length - 1]) *\r\n 12\r\n )}\r\n </dd>\r\n </div>\r\n )}\r\n <dt>Total Estimated Forgiveness</dt>\r\n <dd>\r\n {EstStandard[EstStandard.length - 1] * 120 -\r\n EstIDR[EstIDR.length - 1] * 120 <\r\n 0\r\n ? '-'\r\n : formatAsMoney(\r\n EstStandard[EstStandard.length - 1] * 120 -\r\n EstIDR[EstIDR.length - 1] * 120\r\n )}\r\n </dd>\r\n </dl>\r\n\r\n <Button brand={'primary'} onClick={() => this.handleYearlyMonthly()}>\r\n {this.state.monthly === true && 'Click to See Yearly Estimates'}\r\n {this.state.monthly === false && 'Click to See Monthly Estimates'}\r\n </Button>\r\n </CardBody>\r\n </Card>\r\n )}\r\n </div>\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-6 col-sm-12 col-xs-12\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <span>Additional Information</span>\r\n </CardTitle>\r\n <dl>\r\n <dt>Recommended Borrowing Remaining</dt>\r\n <dd>{' ' + formatAsMoney(recommendedBorrowingRemainAddInfo)}</dd>\r\n {recommendedBorrowingRemain >= 0 && (\r\n <TabbedDD>\r\n <dl>\r\n <dt>Tuition</dt>\r\n <dd>{formatAsMoney(tuitionLeftToBorrow)}</dd>\r\n\r\n <dt>Living Expenses</dt>\r\n <dd>{formatAsMoney(livingExpLeftToBorrow)}</dd>\r\n </dl>\r\n </TabbedDD>\r\n )}\r\n {recommendedBorrowingRemain < 0 && (\r\n <div>\r\n <dt>Balance Borrowed Over Recommended</dt>\r\n <dd>{formatAsMoney(Math.abs(recommendedBorrowingRemain))}</dd>\r\n <dd>\r\n You have borrowed over what was recommended in your presented\r\n plan. The good news is that this will not impact your projected\r\n Income-Driven Repayment and any additional loans borrowed over\r\n the recommended will likely increase your projected loan\r\n forgiveness.\r\n </dd>\r\n </div>\r\n )}\r\n </dl>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n {/*END Expected Income/Payments Section*/}\r\n\r\n {/*Start of Chart Section*/}\r\n {loanBalance !== undefined && loanTicks !== undefined && (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-8 col-xl-8 col-lg-12 col-md-12 col-sm-12 col-xs-12\">\r\n <Card>\r\n <CardBody>\r\n {this.state.showHistory && (\r\n <>\r\n <CardTitle>\r\n <span>Snapshot History</span>\r\n </CardTitle>\r\n {tableData !== undefined &&\r\n tableData[2][1] !== '$0.00' &&\r\n tableData.length > 0 && (\r\n <Table header={pivotTableHeaders} body={tableData} />\r\n )}\r\n </>\r\n )}\r\n\r\n {!this.state.showHistory && (\r\n <BtsBorrowingCompare\r\n requestData={false}\r\n showPreviousYears={true}\r\n />\r\n )}\r\n <ButtonRight\r\n brand=\"primary\"\r\n onClick={() => this.handleChartHistory()}\r\n >\r\n {this.state.showHistory\r\n ? 'Show Borrowing Comparison'\r\n : 'Show Snapshot History'}\r\n </ButtonRight>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-8 col-xl-8 col-lg-12 col-md-12 col-sm-12 col-xs-12\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <span>Other Helpful Insights</span>\r\n </CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n <Lede>\r\n <StyledButton\r\n brand={'primary'}\r\n invert={this.state.buttonType === 'taxes'}\r\n onClick={() => this.handleEducationClick('taxes')}\r\n >\r\n Education Credits and Taxes\r\n </StyledButton>\r\n </Lede>\r\n <Lede>\r\n <StyledButton\r\n brand={'primary'}\r\n invert={this.state.buttonType === 'fafsa'}\r\n onClick={() => this.handleEducationClick('fafsa')}\r\n >\r\n Financial Aid\r\n </StyledButton>\r\n </Lede>\r\n <Lede>\r\n <StyledButton\r\n brand={'primary'}\r\n invert={this.state.buttonType === 'retirement'}\r\n onClick={() => this.handleEducationClick('retirement')}\r\n >\r\n Benefits and Retirement\r\n </StyledButton>\r\n </Lede>\r\n </div>\r\n </div>\r\n <BottomContent className=\"row\">\r\n {this.state.buttonType === 'taxes' &&\r\n this.educationCreditTaxesInfo()}\r\n {this.state.buttonType === 'fafsa' &&\r\n this.fafsaFinancialAidInfo()}\r\n {this.state.buttonType === 'retirement' &&\r\n this.benefitsRetirementInfo()}\r\n </BottomContent>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </CardText>\r\n </div>\r\n </CardBody>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n </div>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.questionnaireBts;\r\n const formData = safeAccess(state.questionnaireBts, 'cache');\r\n return {\r\n id: getUserId(state),\r\n data: formData,\r\n flatData: objToArray(formData),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadEducation: async (id) => {\r\n await dispatch(questionnaireBtsLoadCollection(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(BtsReview));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\nimport StandardConfirmation from '../components/standard-confirmation';\r\n\r\nclass BtsQuestionnaire extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n showEmpty = (questNeeded) => {\r\n if (!questNeeded) {\r\n return (\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>StudentFORGIVE Snapshot Questionnaire</CardTitle>\r\n <CardText>\r\n <p>Thank you for completing your questionnaire. You may review your results now.</p>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n };\r\n\r\n render() {\r\n const { request, todos } = this.props;\r\n\r\n let questNeeded = todos.find((a) => a.id === 150);\r\n return (\r\n <>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <AsyncLoader request={request} empty={this.showEmpty(questNeeded)}>\r\n {questNeeded && (\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>StudentFORGIVE Snapshot Questionnaire</CardTitle>\r\n <CardText>\r\n <p>\r\n In order to determine if you are on track with your loan forgiveness plan,\r\n please fill out and submit the Snapshot Questionnaire.\r\n </p>\r\n <StandardConfirmation stepId={150} />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n {this.showEmpty(questNeeded)}\r\n </AsyncLoader>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(BtsQuestionnaire));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { renewalResultsLoadResource } from '../../../renewal-results';\r\n\r\nimport RenewalConfirmation from '../components/renewal-confirmation';\r\nimport ForgivenessProgress from '../components/forgiveness-progress';\r\n\r\nclass NSLDSUpload extends React.Component {\r\n static propTypes = {\r\n request: t.object.isRequired,\r\n data: t.object,\r\n loadData: t.func.isRequired,\r\n id: t.number.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n const { request } = this.props;\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <ForgivenessProgress />\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>NSLDS</CardTitle>\r\n <CardText>\r\n <p>Completing this step will allow us to re-evaluate your Forgiveness plan.</p>\r\n </CardText>\r\n </CardBody>\r\n <RenewalConfirmation stepId={351} />\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n data: safeAccess(state, `renewalResults.cache[${getUserId(state)}]`) || {},\r\n request: state.renewalResults.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n dispatch(renewalResultsLoadResource(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(NSLDSUpload));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('forgiveness', types);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('limitedWaiverOpportunity');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('limitedWaiverOpportunity', types);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { Card, CardBody, CardText, CardTitle, ChartPie } from 'fiducius-ui';\r\n\r\nconst StyledRow = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nconst QpPie = ({ qualifiedPayments, paymentsRemain, cutout = 0, bigTitle = false }) => (\r\n <Card>\r\n <CardBody>\r\n {bigTitle && <CardTitle>My Payment Breakdown</CardTitle>}\r\n <CardText>\r\n {!bigTitle && (\r\n <center>\r\n <strong>My Payment Breakdown</strong>\r\n </center>\r\n )}\r\n <StyledRow className=\"row\">\r\n <div className=\"col-12\">\r\n <ChartPie\r\n pie={{ data: [paymentsRemain, qualifiedPayments] }}\r\n config={{\r\n labels: ['Payments Remaining', 'Total Qualified Payments'],\r\n cutout: cutout,\r\n }}\r\n />\r\n </div>\r\n </StyledRow>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nQpPie.propTypes = {\r\n qualifiedPayments: t.number,\r\n paymentsRemain: t.number,\r\n cutout: t.number,\r\n bigTitle: t.bool,\r\n};\r\n\r\nexport default QpPie;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport QpPie from '../components/qualified-payment-pie';\r\nconst StyledCardText = styled(CardText)`\r\n text-align: left;\r\n`;\r\n\r\nclass AboutAssure extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n return (\r\n <DashboardSection>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n Fiducius will help you navigate the new Limited Waiver Opportunity\r\n </CardTitle>\r\n <CardText>\r\n <p>\r\n The new LWO from the Department of Education is an unprecedented opportunity for\r\n you to get more forgiveness through PSLF. This program has{' '}\r\n <u>\r\n <strong>temporarily waived</strong>\r\n </u>{' '}\r\n PSLF requirements until October 31, 2022:\r\n <StyledCardText>\r\n <ol>\r\n <li>Past payments made under any repayment plan type may qualify</li>\r\n <li>Past ineligible loan payments due to improper loan type may qualify</li>\r\n </ol>\r\n </StyledCardText>\r\n </p>\r\n <p>\r\n As a result of these waivers, some borrowers will receive more qualifying\r\n payments and move closer to forgiveness. Some will have all their loans forgiven\r\n immediately. By working with Fiducius, Jenna Webb from Pennsylvania just\r\n received her approval letter confirming $71,521 in loan forgiveness and reducing\r\n her repayment period by six years.\r\n </p>\r\n <p>\r\n If you have federal loans and meet all program requirements, this could be you.\r\n However, the Department of Education estimates that only 1.5% of federal\r\n borrowers are eligible for LWO. Because of this, it's important that you take\r\n steps to confirm whether or not you are among the fortunate few and exactly how\r\n many additional qualifying payments you should receive.\r\n </p>\r\n <p>\r\n As you might expect with a federal program, it's not straightforward and easy.\r\n To begin with, very few borrowers have done everything correctly to be qualified\r\n for forgiveness. That means you have work to do. Like a forensic accountant,\r\n you'll need to dig into your loan payment history and provide the correct\r\n supporting documentation. Even if you get it right, many borrowers tell us they\r\n don't fully trust the Department of Education or their lender to deliver as they\r\n should.\r\n </p>\r\n </CardText>\r\n\r\n <CardTitle>\r\n Assure℠… get all you deserve from the Limited Waiver Opportunity\r\n </CardTitle>\r\n <CardText>\r\n <p>\r\n Put all your doubts and frustrations aside. For more than 10 years, Fiducius has\r\n helped thousands of borrowers get the most out of PSLF. We're at it again, now\r\n providing the expertise and advocacy you need to tackle the LWO.\r\n </p>\r\n <p>\r\n Introducing Assure℠. It's the only solution of its kind, guaranteeing that\r\n borrowers like you receive all the additional qualifying payments and loan\r\n forgiveness you deserve:\r\n </p>\r\n\r\n <ul>\r\n <li>Step-by-step instructions ensure you meet all program requirements</li>\r\n <li>Accurate documentation to provide all mandatory information </li>\r\n <li>Dashboard to monitor and manage your progress</li>\r\n <li>Experienced support team you can trust if you have questions</li>\r\n </ul>\r\n <p>\r\n If you're not eligible for LWO and can't benefit from Assure℠, our free\r\n Student Loan Financial Planning service will quickly help you understand other\r\n options to take control of your student loans, including getting the most out of\r\n PSLF.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(AboutAssure));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { Button, Card, CardBody, CardHeader, CardText, Header5 } from 'fiducius-ui';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nclass LwoQualify extends React.Component {\r\n static propTypes = {\r\n showLwoButton: t.bool,\r\n redirectUri: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n render() {\r\n const { showLwoButton, redirectUri } = this.props;\r\n return (\r\n <Card brand=\"primary\">\r\n <CardHeader>Assure℠</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Am I eligible to get more qualifying payments?</Header5>\r\n <Spaced>\r\n With some PSLF requirements temporarily relaxed, you could receive more payments\r\n towards forgiveness.\r\n </Spaced>\r\n {showLwoButton && (\r\n <>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() =>\r\n redirectUri('/benefits/limited-waiver-opportunity/loan-information')\r\n }\r\n >\r\n Go To Assure℠\r\n </Button>\r\n </>\r\n )}\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nexport default LwoQualify;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n CardBody,\r\n CardText,\r\n DashboardSection,\r\n Button,\r\n Header2,\r\n Header4,\r\n InputWrapper,\r\n ProgressBar,\r\n} from 'fiducius-ui';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { safeAccess, mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nconst StyleBar = styled(ProgressBar)`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nclass LwoProgress extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n removeContainer: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '', currentURI: '' };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ ...this.state, currentURI: window.location.pathname });\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n goToCurrentStep = () => {\r\n const { permissions, todos } = this.props;\r\n const lwoSteps = permissions.lwoSteps.filter((a) => a.stepCurrent);\r\n let lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n if (\r\n lwoSteps !== undefined &&\r\n lwoSteps !== null &&\r\n lwoSteps.length > 1 &&\r\n lwoSteps.find((a) => window.location.pathname.includes(a.stepPath))\r\n ) {\r\n lwoStep = lwoSteps.find((a) => window.location.pathname.includes(a.stepPath));\r\n }\r\n let retVal = '/benefits/limited-waiver-opportunity/overview';\r\n if (lwoStep !== undefined && lwoStep !== null && todos !== undefined && todos !== null) {\r\n if (lwoStep.id === 'EmploymentCertification') {\r\n retVal = '/benefits/limited-waiver-opportunity' + lwoStep.stepPath;\r\n const currentToDo = todos.find(\r\n (a) =>\r\n lwoStep.id === 'EmploymentCertification' &&\r\n (a.id === 606 || a.id === 607 || a.id === 608)\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 606:\r\n retVal += '/step-1';\r\n break;\r\n case 607:\r\n retVal += '/step-2';\r\n break;\r\n case 608:\r\n retVal += '/step-3';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } else {\r\n retVal = '/benefits/limited-waiver-opportunity' + lwoStep.stepPath;\r\n }\r\n }\r\n this.setState({ ...this.state, redirectURI: retVal });\r\n };\r\n\r\n getCurrentStepText = () => {\r\n const { permissions, todos } = this.props;\r\n const lwoSteps = permissions.lwoSteps.filter((a) => a.stepCurrent);\r\n let lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n if (\r\n lwoSteps !== undefined &&\r\n lwoSteps !== null &&\r\n lwoSteps.length > 1 &&\r\n lwoSteps.find((a) => window.location.pathname.includes(a.stepPath))\r\n ) {\r\n lwoStep = lwoSteps.find((a) => window.location.pathname.includes(a.stepPath));\r\n }\r\n\r\n let retVal = '';\r\n if (lwoStep !== undefined && lwoStep !== null && todos !== undefined && todos !== null) {\r\n if (lwoStep.id === 'EmploymentCertification') {\r\n retVal = lwoStep.stepText;\r\n const currentToDo = todos.find(\r\n (a) =>\r\n lwoStep.id === 'EmploymentCertification' &&\r\n (a.id === 606 || a.id === 607 || a.id === 608)\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 606:\r\n retVal += ' - Generate';\r\n break;\r\n case 607:\r\n retVal += ' - Submit';\r\n break;\r\n case 608:\r\n retVal += ' - Review';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } else {\r\n retVal = lwoStep.stepText;\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getTotalSteps = () => {\r\n const { permissions } = this.props;\r\n const lwoStepsTotal = permissions.lwoSteps.filter(\r\n (a) => a.id !== 'Overview' && a.id !== 'About'\r\n );\r\n return lwoStepsTotal.length;\r\n };\r\n\r\n getCompletedSteps = (normalized) => {\r\n const { permissions } = this.props;\r\n const lwoStepsTotal = permissions.lwoSteps.filter(\r\n (a) => a.id !== 'Overview' && a.id !== 'About'\r\n );\r\n const completedSteps = lwoStepsTotal.filter((a) => a.stepComplete);\r\n if (normalized) {\r\n return 100.0 * (completedSteps.length / lwoStepsTotal.length);\r\n } else {\r\n return Math.min(completedSteps.length + 1, lwoStepsTotal.length);\r\n }\r\n };\r\n\r\n getCurrentStep = () => {\r\n const { permissions } = this.props;\r\n const currentLwoStep = permissions.lwoSteps.filter((a) => a.stepCurrent);\r\n const lwoStepsTotal = permissions.lwoSteps.filter(\r\n (a) => a.id !== 'Overview' && a.id !== 'About'\r\n );\r\n\r\n return 100.0 * (currentLwoStep.length / lwoStepsTotal.length);\r\n };\r\n\r\n getCurrentStepPath = () => {\r\n const { permissions } = this.props;\r\n\r\n const currentSteps = permissions.lwoSteps.filter(\r\n (a) => a.id !== 'Overview' && a.id !== 'About' && a.stepCurrent\r\n );\r\n\r\n let stepPaths = [];\r\n currentSteps.forEach((step) => {\r\n stepPaths.push(step.stepPath);\r\n });\r\n //return an array since we can have multiple current steps.\r\n return stepPaths;\r\n };\r\n\r\n onCurrentStep = () => {\r\n let steps = this.getCurrentStepPath();\r\n var retVal = false;\r\n steps.forEach((step) => {\r\n if (retVal === false) {\r\n retVal = this.state.currentURI.includes(step);\r\n }\r\n });\r\n return retVal;\r\n };\r\n\r\n getLockedSteps = () => {\r\n return 100.0 - this.getCompletedSteps(true) - this.getCurrentStep();\r\n };\r\n\r\n render() {\r\n const { permissions, removeContainer } = this.props;\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n if (safeAccess(permissions, 'lwoSteps') && safeAccess(permissions, 'lwoSteps').length > 1) {\r\n return (\r\n <>\r\n {removeContainer && (\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n Your Assure℠ Progress : {this.getCompletedSteps(false)} /{' '}\r\n {this.getTotalSteps()}\r\n </Header2>\r\n <StyleBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: this.getCompletedSteps(true),\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: this.getCurrentStep(),\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'Locked',\r\n value: this.getLockedSteps(),\r\n },\r\n ]}\r\n />\r\n <div className=\"row col-12\">\r\n <div className=\"col-8 col-xl-8 col-lg-8 col-md-8 col-sm-12 col-xs-12\">\r\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\r\n </div>\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-4 col-sm-12 col-xs-12\">\r\n <InputWrapper>\r\n {!this.onCurrentStep() && (\r\n <Button brand=\"primary\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n {!removeContainer && (\r\n <DashboardSection>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n Your Assure℠ Progress : {this.getCompletedSteps(false)} /{' '}\r\n {this.getTotalSteps()}\r\n </Header2>\r\n <StyleBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: this.getCompletedSteps(true),\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: this.getCurrentStep(),\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'Locked',\r\n value: this.getLockedSteps(),\r\n },\r\n ]}\r\n />\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\">\r\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\r\n </div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n {!this.onCurrentStep() && (\r\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoProgress));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport LwoProgress from '../components/lwo-progress';\r\n\r\nclass ConsolidationLwo extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n return (\r\n <DashboardSection title=\"More To Do\">\r\n <LwoProgress removeContainer={true} />\r\n\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Complete One or More Steps in the Loan Forgiveness Process</CardTitle>\r\n <CardText>\r\n <p>\r\n We'd like to tell you whether or not you could benefit from using Assure℠ to\r\n get all the qualifying payments you deserve! However, it appears that you must first\r\n complete some steps in the loan forgiveness process. Your \"To-Do\" list on your\r\n dashboard will tell you your next step.\r\n </p>\r\n <p>\r\n Note: Additional steps of the loan forgiveness process are required before we can\r\n determine your eligibility to use Assure℠.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ConsolidationLwo));\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/limited-waiver-opportunity',\r\n resourceType: 'limited-waiver-opportunity',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'limitedWaiverOpportunity',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n limitedWaiverOpportunityLoadResource,\r\n limitedWaiverOpportunityUpdateResource,\r\n limitedWaiverOpportunityCopyResourceToForm,\r\n} = operations;\r\n\r\nexport {\r\n limitedWaiverOpportunityLoadResource,\r\n limitedWaiverOpportunityUpdateResource,\r\n limitedWaiverOpportunityCopyResourceToForm,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('limitedWaiverOpportunity', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { Button, Card, CardBody, CardFooter, CardTitle, CardText, Modal } from 'fiducius-ui';\r\n\r\nconst StyledCardText = styled(CardText)`\r\n text-align: left;\r\n`;\r\n\r\nclass LwoOverviewModals extends React.Component {\r\n static propTypes = {\r\n modalOption: t.string.isRequired,\r\n resetModalOption: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showCalc: false,\r\n showConfirm: false,\r\n aModalIsOpen: false,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n handleClick = () => {\r\n this.setState({\r\n showCalc: false,\r\n showConfirm: false,\r\n aModalIsOpen: false,\r\n });\r\n this.props.resetModalOption();\r\n };\r\n\r\n componentDidUpdate() {\r\n const { modalOption } = this.props;\r\n if (this.state.aModalIsOpen === false && modalOption !== null) {\r\n switch (modalOption) {\r\n case 'qpCalc':\r\n this.setState({ ...this.state, showCalc: true, showConfirm: false, aModalIsOpen: true });\r\n break;\r\n case 'qpConfirm':\r\n this.setState({ ...this.state, showConfirm: true, showCalc: false, aModalIsOpen: true });\r\n break;\r\n default:\r\n this.setState({\r\n ...this.state,\r\n showBorrow: false,\r\n showTaxes: false,\r\n aModalIsOpen: false,\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <Modal isOpen={this.state.showCalc} fullWidth={true}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>How are the estimated qualifying payments calculated? </CardTitle>\r\n <StyledCardText>\r\n <p>\r\n Our estimate is conservative because it will take into account factors such as\r\n deferments and forbearance. Note: If any payments were missed or payments were not\r\n made on time they may not be considered qualifying payments by the Department of\r\n Education and would reduce the number of additional qualified payment estimated by\r\n Fiducius.\r\n </p>\r\n </StyledCardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={this.handleClick}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n <Modal isOpen={this.state.showConfirm}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>How will my additional qualifying payments be confirmed?</CardTitle>\r\n <StyledCardText>\r\n <p>\r\n Once your case has been reviewed by the Department of Education, you will be\r\n notified of your confirmed number of additional qualifying payments. If you're\r\n using Assure℠, at this point you will provide your updated NSLDS form, which\r\n will reflect the approved number of additional payments. Note: Given the number of\r\n borrowers in LWO, it's unclear how long the case review will take, but it could be\r\n anywhere from weeks to several months.\r\n </p>\r\n </StyledCardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={this.handleClick}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nexport default LwoOverviewModals;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Button, Table } from 'fiducius-ui';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\r\n\r\nimport { convertIsoToSlash, startCase } from '../../../utils';\r\n\r\nconst ResultsTable = ({ loans = [], showEstimated = true }) => {\r\n if (loans.length === 0) {\r\n return null;\r\n }\r\n let columns = [];\r\n let displayHeaders = [];\r\n const displayBody = [];\r\n if (showEstimated) {\r\n displayHeaders = [\r\n 'Loan Type',\r\n 'Current Qualified Payments',\r\n 'Estimated Additional Qualified Payments',\r\n ];\r\n columns = [{ sortable: true }, { sortable: true }, { sortable: true }];\r\n loans.forEach((row) => {\r\n displayBody.push([\r\n row.loan.loanTypeName,\r\n row.loan.loanPslfCumulativeMatchedMonths | 0,\r\n row.estimatedQps > 120 ? '120+' : row.estimatedQps || 0,\r\n ]);\r\n });\r\n } else {\r\n displayHeaders = ['Loan Type', 'Current Qualified Payments'];\r\n columns = [{ sortable: true }, { sortable: true }];\r\n loans.forEach((row) => {\r\n displayBody.push([row.loan.loanTypeName, row.loan.loanPslfCumulativeMatchedMonths | 0]);\r\n });\r\n }\r\n return (\r\n <Table\r\n meta={{\r\n pageSize: 5,\r\n }}\r\n body={displayBody}\r\n columns={columns}\r\n header={displayHeaders}\r\n />\r\n );\r\n};\r\n\r\nResultsTable.propTypes = {\r\n loans: t.array,\r\n showEstimated: t.bool,\r\n};\r\n\r\nexport default ResultsTable;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n} from 'fiducius-ui';\r\n\r\nimport {\r\n EmploymentHistoryTable,\r\n employmentHistoryLoadCollection,\r\n} from '../../../employment-history';\r\nimport { withPermissions } from '../../../routing';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport { limitedWaiverOpportunityLoadResource } from '../redux/operations';\r\n\r\nimport QpPie from '../components/qualified-payment-pie';\r\nimport LwoOverviewModals from '../components/lwo-overview-modals';\r\nimport ResultsTable from '../components/results-table';\r\nimport LwoProgress from '../components/lwo-progress';\r\n\r\nclass LwoOverview extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n employers: t.object,\r\n id: t.string.isRequired,\r\n load: t.func,\r\n loans: t.object,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modalToOpen: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n openModal = (modalToOpen) => {\r\n this.setState({ modalToOpen: modalToOpen });\r\n };\r\n\r\n render() {\r\n const { data = {}, employers, permissions, request } = this.props;\r\n let currentLwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n\r\n return (\r\n <DashboardSection title=\"Overview\">\r\n {currentLwoStep !== undefined && currentLwoStep.id !== 'Complete' && (\r\n <LwoProgress removeContainer={true} />\r\n )}\r\n <div className=\"row\">\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\">\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>My Summary</CardTitle>\r\n </div>\r\n </div>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <p>\r\n Using loan and employment information you provide as part of an initial\r\n assessment, we calculate the estimated number of additional qualifying\r\n payments you could expect to receive for each of your federal loans by\r\n participating in the Limited Waiver Opportunity. If your estimate indicates\r\n you could receive additional qualifying payments, then you'll want to use\r\n our new Assure℠ solution. You can be confident you will recieve all\r\n the additional qualifying payments and forgiveness you deserve.{' '}\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-lg-6 col-sm-12\">\r\n <Button brand=\"primary\" onClick={() => this.openModal('qpCalc')}>\r\n How are the estimated qualifying payments calculated?\r\n </Button>\r\n <p />\r\n </div>\r\n <div className=\"col-lg-6 col-sm-12\">\r\n <Button brand=\"primary\" onClick={() => this.openModal('qpConfirm')}>\r\n How will my additional qualifying payments be confirmed?\r\n </Button>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n {currentLwoStep !== undefined &&\r\n ['WaitPslf', 'LoanInformation', 'Questionnaire'].includes(currentLwoStep.id) && (\r\n <div className=\"col-12 col-lg-6\">\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Qualifying Payment Information</CardTitle>\r\n </div>\r\n </div>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <p>\r\n You will see this information once you provide the required student loan\r\n and employment details.\r\n </p>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n )}\r\n\r\n {currentLwoStep !== undefined &&\r\n !['WaitPslf', 'LoanInformation', 'Questionnaire', 'Complete'].includes(\r\n currentLwoStep.id\r\n ) && (\r\n <div className=\"col-12 col-lg-6\">\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Qualifying Payment Information</CardTitle>\r\n </div>\r\n </div>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <AsyncLoader request={request}>\r\n <ResultsTable loans={data.eligibleLoans} />\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n )}\r\n {currentLwoStep !== undefined && ['Complete'].includes(currentLwoStep.id) && (\r\n <>\r\n <div className=\"col-12 col-lg-6\">\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Estimated Qualifying Payment Information</CardTitle>\r\n </div>\r\n </div>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <AsyncLoader request={request}>\r\n <ResultsTable loans={data.eligibleLoans} />\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </>\r\n )}\r\n\r\n {permissions.inForgiveness && (\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\">\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>My Progress Towards Forgiveness</CardTitle>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <p>\r\n A total of 120 qualifying payments are required for you to receive loan\r\n forgiveness. Since you're already working with Fiducius, we're able to\r\n calculate how many more payments are needed before you reach 120\r\n qualifying payments.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n {currentLwoStep !== undefined &&\r\n !['WaitPslf', 'LoanInformation', 'Questionnaire'].includes(\r\n currentLwoStep.id\r\n ) && (\r\n <AsyncLoader\r\n request={request}\r\n emptyMessage={'You have no Employers on file.'}\r\n >\r\n {/*TODO: Update data dynamically pay remaing = 120 - qp*/}\r\n <EmploymentHistoryTable\r\n employers={employers}\r\n onEditEmployer={this.onEditEmployer}\r\n onDeleteEmployer={this.onDeleteEmployer}\r\n showDelete={false}\r\n showEdit={false}\r\n />\r\n <QpPie\r\n qualifiedPayments={data.qualifiedPayment / 1}\r\n paymentsRemain={120 - data.qualifiedPayment / 1}\r\n cutout={10}\r\n />\r\n </AsyncLoader>\r\n )}\r\n {currentLwoStep !== undefined &&\r\n ['WaitPslf', 'LoanInformation', 'Questionnaire'].includes(\r\n currentLwoStep.id\r\n ) && (\r\n <>\r\n <p>\r\n You will see this information once you provide the required student\r\n loan and employment details.\r\n </p>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n )}\r\n\r\n {currentLwoStep !== undefined && ['Complete'].includes(currentLwoStep.id) && (\r\n <div className=\"col-12 col-lg-6\">\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Actual Qualifying Payment Information</CardTitle>\r\n </div>\r\n </div>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <AsyncLoader request={request}>\r\n <ResultsTable loans={data.submittedLoans} showEstimated={false} />\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n )}\r\n </div>\r\n <LwoOverviewModals\r\n modalOption={this.state.modalToOpen}\r\n resetModalOption={() => this.openModal(null)}\r\n />\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const eHRequests = state.employmentHistory.requests;\r\n const lwoRequests = state.limitedWaiverOpportunity.requests;\r\n return {\r\n employers: state.employmentHistory.cache,\r\n id: getUserId(state),\r\n loans: state.limitedWaiverOpportunity.form.eligibleLoans,\r\n data: state.limitedWaiverOpportunity.cache[getUserId(state)],\r\n request: mergeRequestStatuses([eHRequests.loadCollection, lwoRequests.loadResource]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(limitedWaiverOpportunityLoadResource(id));\r\n dispatch(employmentHistoryLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoOverview));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport {\r\n AsyncLoader,\r\n ButtonCarousel,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Link,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport { limitedWaiverOpportunityLoadResource } from '../redux/operations';\r\n\r\nimport QpPie from './qualified-payment-pie';\r\nimport ResultsTable from './results-table';\r\nimport LwoProgress from './lwo-progress';\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nclass LwoSummary extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n id: t.string.isRequired,\r\n load: t.func,\r\n loans: t.object,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modalToOpen: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n openModal = (modalToOpen) => {\r\n this.setState({ modalToOpen: modalToOpen });\r\n };\r\n\r\n getCardText = (currentLwoStep) => {\r\n if (['UnDef', 'WaitPslf', 'LoanInformation', 'Questionnaire'].includes(currentLwoStep.id)) {\r\n return (\r\n <p>\r\n We created Assure℠, the only solution of its kind, to guarantee that borrowers like\r\n you receive all the additional qualifying payments and loan forgiveness you deserve from\r\n the LWO.\r\n </p>\r\n );\r\n } else if (\r\n ['Agreement', 'Fee', 'EmploymentCertification', 'QualifyingPaymentCheck'].includes(\r\n currentLwoStep.id\r\n )\r\n ) {\r\n return (\r\n <p>\r\n You're eligible to take advantage of the Limited Waiver Opportunity. Now, let's make sure\r\n you get all the additional qualifying payments you deserve.\r\n </p>\r\n );\r\n } else if (currentLwoStep.id === 'Complete') {\r\n return (\r\n <p>\r\n Congratulations, you have completed all of the steps to put Assure℠ to work for you\r\n student loan forgiveness.\r\n </p>\r\n );\r\n }\r\n };\r\n\r\n getLwoCarouselComponents = (loans) => {\r\n let retComponents = [];\r\n loans.forEach((a) => {\r\n retComponents.push(\r\n <QpPie qualifiedPayments={a.pslfQps / 1} paymentsRemain={120 - a.pslfQps / 1} cutout={10} />\r\n );\r\n });\r\n\r\n return retComponents;\r\n };\r\n\r\n getLwoCarouselButtons = (loans) => {\r\n let retComponents = [];\r\n loans.forEach((a) => {\r\n retComponents.push(a.loan.loanTypeName);\r\n });\r\n\r\n return retComponents;\r\n };\r\n\r\n getSummaryCharts = (data, currentLwoStep) => {\r\n return (\r\n <ResultsTable\r\n loans={currentLwoStep.id !== 'Complete' ? data.eligibleLoans : data.submittedLoans}\r\n showEstimated={currentLwoStep.id !== 'Complete'}\r\n />\r\n );\r\n };\r\n\r\n render() {\r\n const { data = {}, permissions, request } = this.props;\r\n let currentLwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n if (currentLwoStep === undefined) {\r\n currentLwoStep = 'UnDef';\r\n }\r\n\r\n return (\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Assure℠</CardTitle>\r\n </div>\r\n </div>\r\n <AsyncLoader request={request}>\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">{this.getCardText(currentLwoStep)}</div>\r\n </div>\r\n\r\n {!['WaitPslf', 'LoanInformation', 'Questionnaire'].includes(\r\n currentLwoStep.id\r\n ) &&\r\n data.eligibleLoans !== undefined && (\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n {this.getSummaryCharts(data, currentLwoStep)}\r\n </div>\r\n </div>\r\n )}\r\n </CardText>\r\n </div>\r\n </div>\r\n {currentLwoStep !== undefined &&\r\n currentLwoStep.id !== 'Complete' &&\r\n !permissions.isLwoDeclined && <LwoProgress removeContainer={true} />}\r\n </>\r\n </AsyncLoader>\r\n </CardBody>\r\n <FlexFooter>\r\n <Link to=\"/benefits/limited-waiver-opportunity/overview\">Overview</Link>\r\n\r\n <Link to=\"/benefits/limited-waiver-opportunity/about-assure\">Learn More</Link>\r\n </FlexFooter>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const eHRequests = state.employmentHistory.requests;\r\n const lwoRequests = state.limitedWaiverOpportunity.requests;\r\n return {\r\n id: getUserId(state),\r\n loans: state.limitedWaiverOpportunity.form.eligibleLoans,\r\n data: state.limitedWaiverOpportunity.cache[getUserId(state)],\r\n request: mergeRequestStatuses([eHRequests.loadCollection, lwoRequests.loadResource]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(limitedWaiverOpportunityLoadResource(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoSummary));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n CardText,\r\n Loader,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../../root';\r\nimport { safeAccess, mergeRequestStatuses } from '../../../utils';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { PdfViewer } from '../../../fulfillment';\r\n\r\nimport { authLoadPermissions } from '../../../auth';\r\nimport { todosLoadCollection } from '../../../todos/redux/operations';\r\n\r\nimport {\r\n selfServiceDocumentUpdateResource,\r\n selfServiceDocumentLoadDocuments,\r\n selfServiceDocumentMarkStatus,\r\n selfServiceDocumentClearDocument,\r\n} from '../../../self-service-document';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nclass FaxApproval extends React.Component {\r\n static propTypes = {\r\n closeForm: t.func.isRequired,\r\n isOpen: t.bool,\r\n onSubmit: t.func.isRequired,\r\n request: t.object.isRequired,\r\n documents: t.object.isRequired,\r\n documentId: t.string.isRequired,\r\n markDocument: t.func.isRequired,\r\n update: t.func.isRequired,\r\n documentIncorrect: t.func.isRequired,\r\n alreadySent: t.func.isRequired,\r\n stepId: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n submitApproval = () => {\r\n const { markDocument, documentId, closeForm } = this.props;\r\n markDocument(documentId, true, false, false).then(closeForm(false));\r\n };\r\n\r\n submitAlreadySent = () => {\r\n const { alreadySent, documentId, closeForm } = this.props;\r\n alreadySent(documentId).then(closeForm(true));\r\n };\r\n\r\n submitDocumentIncorrect = () => {\r\n const { documentIncorrect, documentId, closeForm } = this.props;\r\n documentIncorrect(documentId).then(closeForm(true));\r\n };\r\n\r\n getFormReviewInstructions = () => {\r\n const { stepId, documents, documentId } = this.props;\r\n\r\n if (stepId.id === 253 || stepId.id === 107) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information you provided. We\r\n recommend that you review the document to confirm it is filled out properly.\r\n </p>\r\n <p>\r\n <strong>Employment Certification review recommendations:</strong>\r\n </p>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on the first three pages of your\r\n employment certification(s) prior to submitting it.\r\n </li>\r\n <li>\r\n Questions 1 through 9 <strong>must</strong> be completed on the second page. Please\r\n read the answer to question 9 to determine if succeeding questions require an answer.\r\n </li>\r\n </ul>\r\n\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n <p>\r\n If you have already submitted your Employment Certification form to your loan servicer,\r\n please select the <strong>Form Already Submitted</strong> button.\r\n </p>\r\n </>\r\n );\r\n } else if (\r\n (stepId.id === 256 || stepId.id === 112) &&\r\n safeAccess(documents['current'][documentId], 'description', '') !== 'Taxes' &&\r\n safeAccess(documents['current'][documentId], 'description', '') !== \"Spouse's Taxes\"\r\n ) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information you provided. We\r\n recommend that you review the document to confirm it is filled out properly.\r\n </p>\r\n <p>\r\n <strong>Repayment review recommendations: </strong>\r\n </p>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on the first six pages of your\r\n application prior to submitting it.\r\n </li>\r\n {/*ADD PART FOR SPOUSE's SSN IF TIME PERMITS*/}\r\n </ul>\r\n\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n } else if (stepId.id === 104) {\r\n return (\r\n <>\r\n <p>\r\n The document above is customized to your situation and the information you provided. We\r\n recommend that you review the document to confirm it is filled out properly.\r\n </p>\r\n <p>\r\n <strong>Consolidation review recommendations: </strong>\r\n </p>\r\n <ul>\r\n <li>\r\n Please verify your Social Security Number is present on all pages up to the signature\r\n page.\r\n </li>\r\n <li>Please verify that your address on line #9 is not a P.O. box.</li>\r\n <li>\r\n Please verify that your references at the bottom of page one have different home\r\n addresses and phone numbers from both you and each other.\r\n </li>\r\n </ul>\r\n\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n } else {\r\n return (\r\n <>\r\n <p>\r\n {' '}\r\n If you find an issue with your document, please select the{' '}\r\n <strong>Form is Incorrect</strong> button. A member of your Fiducius team will be\r\n contact within 3 business days to address the issue.\r\n </p>\r\n <p>\r\n If you confirm that your document is accurate, please select the{' '}\r\n <strong>Form is Correct</strong> button to verify the document is ready to be faxed to\r\n your loan servicer.\r\n </p>\r\n </>\r\n );\r\n }\r\n };\r\n\r\n componentDidUpdate(prevProps) {}\r\n\r\n render() {\r\n const { isOpen, closeForm, request, documents, documentId } = this.props;\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen} fullWidth={true}>\r\n <Card>\r\n <CardHeader>\r\n Approve {safeAccess(documents['current'][documentId], 'description', '')} For Fax\r\n </CardHeader>\r\n <CardBody>\r\n <PdfViewer\r\n base64={safeAccess(documents['current'][documentId], 'fileData', '')}\r\n isFulfillment={false}\r\n />\r\n <Card>\r\n <TextLeft>\r\n <CardBody>\r\n <CardText>{this.getFormReviewInstructions()}</CardText>\r\n </CardBody>\r\n </TextLeft>\r\n </Card>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Button brand=\"danger\" onClick={this.submitDocumentIncorrect}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Form is Incorrect'}\r\n </Button>\r\n {safeAccess(documents['current'][documentId], 'employmentHistoryId', 0) > 0 && (\r\n <Button brand=\"success\" onClick={this.submitAlreadySent}>\r\n {request.isLoading ? (\r\n <Loader variant=\"push\" size={1.5} />\r\n ) : (\r\n 'Form Already Submitted'\r\n )}\r\n </Button>\r\n )}\r\n <Button brand=\"success\" onClick={this.submitApproval}>\r\n {request.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Form is Correct'}\r\n </Button>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.selfServiceDocument.requests.updateResource,\r\n state.selfServiceDocument.requests.loadCollection,\r\n ]),\r\n documents: safeAccess(state, 'selfServiceDocument.cache'),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n update: async (id) => {\r\n await dispatch(selfServiceDocumentUpdateResource(id));\r\n },\r\n markDocument: async (id, readyToSend, sentToServicer, documentIncorrect) => {\r\n await dispatch(\r\n selfServiceDocumentMarkStatus(id, readyToSend, sentToServicer, documentIncorrect)\r\n );\r\n },\r\n alreadySent: async (id) => {\r\n dispatch(authLoadPermissions());\r\n await dispatch(selfServiceDocumentMarkStatus(id, false, true, false));\r\n await dispatch(selfServiceDocumentUpdateResource(id));\r\n await dispatch(selfServiceDocumentLoadDocuments(253));\r\n await dispatch(todosLoadCollection());\r\n },\r\n documentIncorrect: async (id) => {\r\n await dispatch(selfServiceDocumentMarkStatus(id, false, false, true));\r\n await dispatch(selfServiceDocumentUpdateResource(id));\r\n await dispatch(selfServiceDocumentClearDocument(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FaxApproval);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AsyncLoader,\r\n CardBody,\r\n CardText,\r\n Button,\r\n InputWrapper,\r\n InputCheckbox,\r\n InputLabel,\r\n} from 'fiducius-ui';\r\nimport { Redirect } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { formatRelative, parseISO } from 'date-fns';\r\nimport englishDefault from 'date-fns/locale/en-US/index';\r\n\r\nimport { FlexBetween } from '../../../root';\r\n\r\nimport { safeAccess, debounce, mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { authLoadPermissions } from '../../../auth';\r\n\r\nimport { todosLoadCollection } from '../../../todos/redux/operations';\r\n\r\nimport {\r\n selfServiceDocumentLoadDocuments,\r\n selfServiceDocumentUpdateAll,\r\n selfServiceDocumentUpdateParentFile,\r\n} from '../../../self-service-document';\r\n\r\nimport FaxApproval from './fax-approval';\r\n\r\nconst InputWrapper2 = styled(InputWrapper)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nclass LwoFax extends React.Component {\r\n static propTypes = {\r\n confirm: t.func.isRequired,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n stepId: t.number.isRequired,\r\n todos: t.array,\r\n additionalInfoNeeded: t.bool,\r\n handleChange: t.func,\r\n reload: t.func.isRequired,\r\n load: t.func.isRequired,\r\n documents: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showCheckbox: false,\r\n redirectURI: '',\r\n goToInfo: false,\r\n showForm: false,\r\n documentId: '',\r\n };\r\n this.onConfirm = this.onConfirm.bind(this);\r\n this.goToInfo = this.goToInfo.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const { load, stepId } = this.props;\r\n load(stepId);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {}\r\n\r\n onConfirm = async () => {\r\n await this.props.confirm(this.props.stepId);\r\n this.goToCurrentStep();\r\n };\r\n\r\n goToInfo(e) {\r\n this.props.handleChange(e.type);\r\n }\r\n\r\n checkStepCompleted = () => {\r\n const { stepId, permissions, todos } = this.props;\r\n const stepMapping = this.getStepMapping(stepId);\r\n const lwoStep = permissions.lwoSteps.find((a) => a.id === stepMapping);\r\n\r\n let retVal = false;\r\n if (lwoStep !== undefined && lwoStep !== null && todos !== undefined && todos !== null) {\r\n retVal = lwoStep.stepComplete;\r\n if (!retVal) {\r\n if (stepId === 606 || stepId === 607 || stepId === 608) {\r\n const currentToDo = todos.find((a) => a.id === 606 || a.id === 607 || a.id === 608);\r\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStepMapping = (id) => {\r\n let retVal = '';\r\n switch (id) {\r\n case 602:\r\n retVal = 'LoanInformation';\r\n break;\r\n case 603:\r\n retVal = 'Questionnaire';\r\n break;\r\n case 604:\r\n retVal = 'Agreement';\r\n break;\r\n case 605:\r\n retVal = 'Fee';\r\n break;\r\n case 606:\r\n case 607:\r\n case 608:\r\n retVal = 'EmploymentCertification';\r\n break;\r\n case 609:\r\n retVal = 'QualifyingPaymentCheck';\r\n break;\r\n case 610:\r\n retVal = 'Complete';\r\n break;\r\n default:\r\n retVal = 'Overview';\r\n break;\r\n }\r\n return retVal;\r\n };\r\n\r\n checkNotYetAtStep = () => {\r\n const { stepId, permissions, todos } = this.props;\r\n const stepMapping = this.getStepMapping(stepId);\r\n const lwoStep = permissions.lwoSteps.find((a) => a.id === stepMapping);\r\n const currentStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n\r\n let retVal = false;\r\n if (\r\n lwoStep !== undefined &&\r\n lwoStep !== null &&\r\n currentStep !== undefined &&\r\n currentStep !== null &&\r\n todos !== undefined &&\r\n todos !== null\r\n ) {\r\n if (lwoStep.id === currentStep.id) {\r\n if (stepId === 606 || stepId === 607 || stepId === 608) {\r\n const currentToDo = todos.find((a) => a.id === 606 || a.id === 607 || a.id === 608);\r\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\r\n }\r\n } else {\r\n retVal = !lwoStep.stepComplete && !lwoStep.stepCurrent;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n getCurrentToDo = () => {\r\n const { permissions, todos } = this.props;\r\n let currentToDo;\r\n\r\n const lwoSteps = permissions.lwoSteps.filter((a) => a.stepCurrent);\r\n let lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n\r\n if (\r\n lwoSteps !== undefined &&\r\n lwoSteps !== null &&\r\n lwoSteps.length > 1 &&\r\n lwoSteps.find((a) => window.location.pathname.includes(a.stepPath))\r\n ) {\r\n lwoStep = lwoSteps.find((a) => window.location.pathname.includes(a.stepPath));\r\n }\r\n if (lwoStep !== undefined && lwoStep !== null && todos !== undefined && todos !== null) {\r\n currentToDo = todos.find(\r\n (a) =>\r\n lwoStep.id === 'EmploymentCertification' && (a.id === 606 || a.id === 607 || a.id === 608)\r\n );\r\n }\r\n\r\n return currentToDo;\r\n };\r\n\r\n goToCurrentStep = () => {\r\n const { permissions, todos } = this.props;\r\n const lwoSteps = permissions.lwoSteps.filter((a) => a.stepCurrent);\r\n let lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n\r\n if (\r\n lwoSteps !== undefined &&\r\n lwoSteps !== null &&\r\n lwoSteps.length > 1 &&\r\n lwoSteps.find((a) => window.location.pathname.includes(a.stepPath))\r\n ) {\r\n lwoStep = lwoSteps.find((a) => window.location.pathname.includes(a.stepPath));\r\n }\r\n\r\n let retVal = '/benefits/limited-waiver-opportunity/overview';\r\n if (lwoStep !== undefined && lwoStep !== null && todos !== undefined && todos !== null) {\r\n if (lwoStep.id === 'EmploymentCertification') {\r\n retVal = '/benefits/limited-waiver-opportunity' + lwoStep.stepPath;\r\n const currentToDo = todos.find(\r\n (a) =>\r\n lwoStep.id === 'EmploymentCertification' &&\r\n (a.id === 606 || a.id === 607 || a.id === 608)\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 606:\r\n retVal += '/step-1';\r\n break;\r\n case 607:\r\n retVal += '/step-2';\r\n break;\r\n case 608:\r\n retVal += '/step-3';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } else {\r\n retVal = '/benefits/limited-waiver-opportunity' + lwoStep.stepPath;\r\n }\r\n }\r\n\r\n this.setState({ ...this.state, redirectURI: retVal });\r\n };\r\n\r\n showDocument = (documentId) => {\r\n this.setState({ ...this.state, showForm: true, documentId: documentId });\r\n };\r\n\r\n handleChange = debounce((formState, id, attributes) => {\r\n this.setState({ ...this.state, showCheckbox: !this.state.showCheckbox });\r\n }, 250);\r\n\r\n getDocumentList = () => {\r\n const { documents = [] } = this.props;\r\n\r\n let documentBody = [];\r\n\r\n if (documents['current'] !== undefined) {\r\n Object.keys(documents['current']).forEach((a) => {\r\n let disabled =\r\n documents['current'][a].fileData === undefined ||\r\n documents['current'][a].fileData === null ||\r\n documents['current'][a].fileData === '';\r\n documentBody.push(\r\n <Button\r\n brand={\r\n documents['current'][a].sentToServicer || documents['current'][a].readyToSend\r\n ? 'success'\r\n : disabled\r\n ? 'danger'\r\n : 'info'\r\n }\r\n disabled={disabled}\r\n onClick={() => this.showDocument(a)}\r\n >\r\n View {documents['current'][a].description}{' '}\r\n {disabled === true &&\r\n documents['current'][a].employmentHistoryId !== null &&\r\n '(Not Yet Uploaded)'}\r\n </Button>\r\n );\r\n });\r\n }\r\n return documentBody;\r\n };\r\n\r\n closeForm = async (reloadDocs) => {\r\n if (reloadDocs) {\r\n const { reload, stepId } = this.props;\r\n await reload(stepId);\r\n\r\n this.setState({\r\n ...this.state,\r\n showForm: false,\r\n documentId: '',\r\n });\r\n } else {\r\n this.setState({\r\n ...this.state,\r\n showForm: false,\r\n documentId: '',\r\n });\r\n }\r\n };\r\n\r\n showConfirmation = () => {\r\n const { documents = [] } = this.props;\r\n\r\n let allowedConfirm = true;\r\n if (documents['current'] !== undefined) {\r\n if (Object.keys(documents['current']).length === 0) {\r\n allowedConfirm = false;\r\n } else {\r\n Object.keys(documents['current']).forEach((a) => {\r\n if (!(documents['current'][a].sentToServicer || documents['current'][a].readyToSend)) {\r\n allowedConfirm = false;\r\n }\r\n });\r\n }\r\n }\r\n return allowedConfirm;\r\n };\r\n\r\n showGoToNextStep = () => {\r\n const { documents = [] } = this.props;\r\n\r\n let allowedConfirm = true;\r\n if (documents['current'] !== undefined) {\r\n if (Object.keys(documents['current']).length === 0) {\r\n allowedConfirm = false;\r\n } else {\r\n Object.keys(documents['current']).forEach((a) => {\r\n if (!documents['current'][a].sentToServicer) {\r\n allowedConfirm = false;\r\n }\r\n });\r\n }\r\n }\r\n return allowedConfirm;\r\n };\r\n\r\n faxesInProcessing = () => {\r\n const { documents = [] } = this.props;\r\n\r\n let inProcessing = false;\r\n if (documents['current'] !== undefined) {\r\n if (Object.keys(documents['current']).length === 0) {\r\n inProcessing = false;\r\n } else {\r\n Object.keys(documents['current']).forEach((a) => {\r\n if (documents['current'][a].processing) {\r\n inProcessing = true;\r\n }\r\n });\r\n }\r\n }\r\n return inProcessing;\r\n };\r\n\r\n getTodaysDate = () => {\r\n var today = new Date();\r\n var dd = String(today.getDate()).padStart(2, '0');\r\n var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!\r\n var yyyy = today.getFullYear();\r\n\r\n return (today = yyyy + '-' + mm + '-' + dd + 'T00:00:00');\r\n };\r\n\r\n getDateToSend = () => {\r\n const { documents = [] } = this.props;\r\n const customRelativeLocale = {\r\n lastWeek: \"'last\",\r\n yesterday: \"'yesterday\",\r\n today: \"'today\",\r\n tomorrow: \"'tomorrow\",\r\n nextWeek: 'eeee',\r\n other: 'MMMM do',\r\n };\r\n let retVal;\r\n\r\n const customLocale = {\r\n ...englishDefault,\r\n formatRelative: (token, date, baseDate, options) => customRelativeLocale[token],\r\n };\r\n\r\n Object.keys(documents['current']).forEach((a) => {\r\n if (documents['current'][a].dateToSend !== undefined) {\r\n let dateToSend = new Date(documents['current'][a].dateToSend);\r\n let todayDate = new Date();\r\n\r\n if (todayDate < dateToSend) {\r\n retVal = documents['current'][a].dateToSend;\r\n } else {\r\n //return 'today' if the date to send is in the past.\r\n retVal = this.getTodaysDate();\r\n }\r\n }\r\n });\r\n\r\n if (retVal !== undefined) {\r\n retVal = formatRelative(this.adjustedMeetingTime(retVal), new Date(), {\r\n addSuffix: false,\r\n locale: customLocale,\r\n });\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n adjustedMeetingTime = (time) => {\r\n return parseISO(time);\r\n };\r\n\r\n render() {\r\n const { documents, stepId } = this.props;\r\n\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n return (\r\n <>\r\n <AsyncLoader request={this.props.request}>\r\n <CardBody>\r\n <CardText>\r\n {this.faxesInProcessing() && stepId !== 256 && stepId !== 112 && (\r\n <p>\r\n Your fax is currently being processed. You will be notified when it has been\r\n sent.\r\n </p>\r\n )}\r\n {this.faxesInProcessing() && (stepId === 256 || stepId === 112) && (\r\n <p>\r\n Your IDR application is scheduled to fax {this.getDateToSend()}\r\n {this.getDateToSend() === 'today' &&\r\n '. You will be notified when it has been sent.'}\r\n {this.getDateToSend() !== 'today' && (\r\n <ul>\r\n <li>\r\n The fax is scheduled for a future date to ensure your IDR application is\r\n not submitted too early, which could potentially cause issues\r\n </li>\r\n </ul>\r\n )}\r\n </p>\r\n )}\r\n {!this.faxesInProcessing() && (\r\n <>\r\n {documents['current'] !== undefined &&\r\n Object.keys(documents['current']).length > 0 && (\r\n <>\r\n <p>\r\n Below are the document(s) that you need to approve as ready to be faxed\r\n to your servicer.\r\n </p>\r\n <FlexBetween>{this.getDocumentList()}</FlexBetween>\r\n </>\r\n )}\r\n {documents['current'] !== undefined &&\r\n Object.keys(documents['current']).length === 0 && (\r\n <>\r\n There's no document for you to approve to fax here. That could be for one\r\n of the following reasons:\r\n <ul>\r\n <li>You have documents that need electronically signed</li>\r\n <li>You have documents that need uploaded</li>\r\n <li>\r\n You requested help from Fiducius because an electronically signed\r\n document looked incorrect\r\n </li>\r\n </ul>\r\n </>\r\n )}\r\n </>\r\n )}\r\n </CardText>\r\n </CardBody>\r\n {this.showGoToNextStep() && (\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\">\r\n <InputWrapper>\r\n <InputLabel>You've completed this step.</InputLabel>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n )}\r\n {this.showConfirmation() && !this.showGoToNextStep() && !this.faxesInProcessing() && (\r\n <>\r\n <div className=\"row col-12\">\r\n <div className=\"col-12\">\r\n <InputWrapper2>\r\n <InputCheckbox\r\n name=\"allowConfirmation\"\r\n label=\"I am ready to confirm that I have followed all of the above steps and am ready to continue.\"\r\n onChange={(e) =>\r\n this.handleChange(\r\n { allowConfirmation: e.target.value },\r\n 'allowConfirmation',\r\n 'allowConfirmation'\r\n )\r\n }\r\n ></InputCheckbox>\r\n </InputWrapper2>\r\n </div>\r\n </div>\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\"></div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n <Button\r\n id={'confirm'}\r\n brand={'primary'}\r\n onClick={this.onConfirm}\r\n disabled={!this.state.showCheckbox}\r\n >\r\n {'Confirm'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </AsyncLoader>\r\n {this.state.showForm && (\r\n <FaxApproval\r\n isOpen={this.state.showForm}\r\n onSubmit={() => {}}\r\n documentId={this.state.documentId}\r\n closeForm={this.closeForm}\r\n stepId={this.getCurrentToDo()}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.selfServiceDocument.requests.updateResource,\r\n state.selfServiceDocument.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n documents: safeAccess(state, 'selfServiceDocument.cache'),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(selfServiceDocumentLoadDocuments(id));\r\n },\r\n reload: async (id) => {\r\n dispatch(authLoadPermissions());\r\n await dispatch(todosLoadCollection());\r\n await dispatch(selfServiceDocumentLoadDocuments(id));\r\n },\r\n confirm: async (id) => {\r\n await dispatch(selfServiceDocumentUpdateAll());\r\n\r\n await dispatch(selfServiceDocumentLoadDocuments(id));\r\n dispatch(authLoadPermissions());\r\n await dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoFax));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { FlexBetween } from '../../../root';\r\nimport { Button, Card, CardBody, CardFooter, CardTitle, CardText, Modal } from 'fiducius-ui';\r\n\r\nconst StyledCardText = styled(CardText)`\r\n text-align: left;\r\n`;\r\n\r\nclass LwoOptOutModal extends React.Component {\r\n static propTypes = {\r\n handleModalAction: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showModal: true,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n handleClick = (clickOption) => {\r\n this.props.handleModalAction(clickOption);\r\n this.setState({ showModal: false });\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n <Modal isOpen={this.state.showModal} fullWidth={true}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Opt-Out of Assure℠</CardTitle>\r\n <StyledCardText>\r\n <p>\r\n To Assure℠ or not to Assure℠… obviously the choice is yours. The\r\n Department of Education will be making decisions too, about whether you're\r\n eligible for LWO and how many additional qualifying payments you receive.\r\n Remember, only 2% of borrowers who self-enrolled in PSLF got it all right and\r\n received forgiveness. For the thousands of borrowers we've worked with over the\r\n years, it's always paid for them to have Fiducius on their side. Please let us\r\n know if there's anything else we can do to help you decide.\r\n </p>\r\n </StyledCardText>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"success\" onClick={() => this.handleClick('CLOSE')}>\r\n I've changed my mind!\r\n </Button>\r\n <Button invert brand=\"danger\" onClick={() => this.handleClick('OPTOUT')}>\r\n I really don't want Assure℠\r\n </Button>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nexport default LwoOptOutModal;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Button, InputWrapper, InputLabel, CardText } from 'fiducius-ui';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { safeAccess, debounce, mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { authLoadPermissions } from '../../../auth';\r\nimport { paymentSetPaymentType } from '../../../payment';\r\n\r\nimport { todosLoadCollection, todosUpdateResource } from '../../../todos/redux/operations';\r\nimport { legalUpdateResource } from '../../../legal/redux/operations';\r\n\r\nimport LwoFax from './lwo-fax';\r\nimport styled from 'styled-components';\r\nimport LwoOptOutModal from './lwo-opt-out';\r\nconst InputWrapper2 = styled(InputWrapper)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst InputLabel2 = styled(InputLabel)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nclass LwoConfirmation extends React.Component {\r\n static propTypes = {\r\n confirm: t.func.isRequired,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n stepId: t.number.isRequired,\r\n todos: t.array,\r\n setPaymentType: t.func.isRequired,\r\n additionalInfoNeeded: t.bool,\r\n handleChange: t.func,\r\n zeroBalance: t.bool,\r\n id: t.string,\r\n optOutLwo: t.func.isRequired,\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showCheckbox: false, showOptOutModal: false, redirectURI: '' };\r\n this.onConfirm = this.onConfirm.bind(this);\r\n this.goToCurrentStep = this.goToCurrentStep.bind(this);\r\n this.goToInfo = this.goToInfo.bind(this);\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate(prevProps, prevState) {}\r\n\r\n openOptOutModal = () => {\r\n this.setState({ showOptOutModal: true });\r\n };\r\n\r\n handleOptOutModal = (action) => {\r\n if (action === 'CLOSE') {\r\n this.setState({ showOptOutModal: false });\r\n } else if (action === 'OPTOUT') {\r\n this.props.optOutLwo();\r\n this.setState({ showOptOutModal: false, redirectURI: '/dashboard' });\r\n }\r\n };\r\n\r\n onConfirm = async () => {\r\n await this.props.confirm(this.props.stepId);\r\n this.goToCurrentStep();\r\n };\r\n\r\n goToInfo(e) {\r\n this.props.handleChange(e.type);\r\n }\r\n\r\n checkStepCompleted = () => {\r\n const { stepId, permissions, todos } = this.props;\r\n const stepMapping = this.getStepMapping(stepId);\r\n const lwoStep = permissions.lwoSteps.find((a) => a.id === stepMapping);\r\n\r\n let retVal = false;\r\n if (lwoStep !== undefined && lwoStep !== null && todos !== undefined && todos !== null) {\r\n retVal = lwoStep.stepComplete;\r\n if (!retVal) {\r\n if (stepId === 606 || stepId === 607 || stepId === 608) {\r\n const currentToDo = todos.find((a) => a.id === 606 || a.id === 607 || a.id === 608);\r\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) > 0;\r\n }\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getStepMapping = (id) => {\r\n let retVal = '';\r\n switch (id) {\r\n case 602:\r\n retVal = 'LoanInformation';\r\n break;\r\n case 603:\r\n retVal = 'Questionnaire';\r\n break;\r\n case 604:\r\n retVal = 'Agreement';\r\n break;\r\n case 605:\r\n retVal = 'Fee';\r\n break;\r\n case 606:\r\n case 607:\r\n case 608:\r\n retVal = 'EmploymentCertification';\r\n break;\r\n case 609:\r\n retVal = 'QualifyingPaymentCheck';\r\n break;\r\n case 610:\r\n retVal = 'Complete';\r\n break;\r\n default:\r\n retVal = 'Overview';\r\n break;\r\n }\r\n return retVal;\r\n };\r\n\r\n checkNotYetAtStep = () => {\r\n const { stepId, permissions, todos } = this.props;\r\n const stepMapping = this.getStepMapping(stepId);\r\n const lwoStep = permissions.lwoSteps.find((a) => a.id === stepMapping);\r\n const currentStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n\r\n let retVal = false;\r\n if (\r\n lwoStep !== undefined &&\r\n lwoStep !== null &&\r\n currentStep !== undefined &&\r\n currentStep !== null &&\r\n todos !== undefined &&\r\n todos !== null\r\n ) {\r\n if (lwoStep.id === currentStep.id) {\r\n if (stepId === 606 || stepId === 607 || stepId === 608) {\r\n const currentToDo = todos.find((a) => a.id === 606 || a.id === 607 || a.id === 608);\r\n retVal = parseInt(safeAccess(currentToDo, 'id', 0)) - parseInt(stepId) < 0;\r\n }\r\n } else {\r\n retVal = !lwoStep.stepComplete && !lwoStep.stepCurrent;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n goToCurrentStep = () => {\r\n let path = this.getNextStepPath();\r\n this.setState({ ...this.state, redirectURI: path });\r\n };\r\n\r\n getNextStepPath = () => {\r\n const { permissions, todos } = this.props;\r\n const lwoSteps = permissions.lwoSteps.filter((a) => a.stepCurrent);\r\n let lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n\r\n if (\r\n lwoSteps !== undefined &&\r\n lwoSteps !== null &&\r\n lwoSteps.length > 1 &&\r\n lwoSteps.find((a) => window.location.pathname.includes(a.stepPath))\r\n ) {\r\n lwoStep = lwoSteps.find((a) => window.location.pathname.includes(a.stepPath));\r\n }\r\n\r\n let retVal = '/benefits/limited-waiver-opportunity/overview';\r\n if (lwoStep !== undefined && lwoStep !== null && todos !== undefined && todos !== null) {\r\n if (lwoStep.id === 'EmploymentCertification') {\r\n retVal = '/benefits/limited-waiver-opportunity' + lwoStep.stepPath;\r\n const currentToDo = todos.find(\r\n (a) =>\r\n lwoStep.id === 'EmploymentCertification' &&\r\n (a.id === 606 || a.id === 607 || a.id === 608)\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 606:\r\n retVal += '/step-1';\r\n break;\r\n case 607:\r\n retVal += '/step-2';\r\n break;\r\n case 608:\r\n retVal += '/step-3';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } else {\r\n retVal = '/benefits/limited-waiver-opportunity' + lwoStep.stepPath;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n checkStepCurrentAndComplete = () => {\r\n const { permissions } = this.props;\r\n const lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent && a.stepComplete);\r\n\r\n if (lwoStep !== undefined && lwoStep !== null && lwoStep.id === 'Complete') {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n showOptOut = () => {\r\n const { permissions, data } = this.props;\r\n if (permissions.inForgiveness && !data.companyPaid && !data.originationPaid) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n needsDocumentsGenerated = () => {\r\n const { stepId } = this.props;\r\n let retVal = false;\r\n if (stepId === 606) {\r\n retVal = true;\r\n }\r\n return retVal;\r\n };\r\n\r\n redirectForDocumentGeneration = () => {\r\n if (this.needsDocumentsGenerated()) {\r\n this.props\r\n .confirm(this.props.stepId)\r\n .then((a) => this.setState({ ...this.state, redirectURI: '/documents' }));\r\n } else {\r\n this.setState({ ...this.state, redirectURI: '/documents' });\r\n }\r\n };\r\n\r\n redirectForDocumentUploadOrSign = () => {\r\n this.setState({ ...this.state, redirectURI: '/documents' });\r\n };\r\n\r\n redirectForPayment = () => {\r\n this.props.setPaymentType().then(() => {\r\n this.setState({ ...this.state, redirectURI: '/payment' });\r\n });\r\n };\r\n\r\n redirectToSignAgreement = () => {\r\n this.setState({ ...this.state, redirectURI: '/lwo-agreement' });\r\n };\r\n\r\n redirectToLearnMore = () => {\r\n this.setState({\r\n ...this.state,\r\n redirectURI: '/benefits/limited-waiver-opportunity/about-assure',\r\n });\r\n };\r\n\r\n redirectForNsldsUpload = () => {\r\n this.props\r\n .confirm(this.props.stepId)\r\n .then((a) => this.setState({ ...this.state, redirectURI: '/nslds' }));\r\n };\r\n\r\n getResources = (resourceType) => {\r\n return (\r\n <>\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\">\r\n {resourceType === 'stepCompleted' && (\r\n <InputWrapper>\r\n <InputLabel2>You've completed this step.</InputLabel2>\r\n </InputWrapper>\r\n )}\r\n {resourceType === 'notAtStep' && (\r\n <InputWrapper>\r\n <InputLabel2>You haven't reached this step yet.</InputLabel2>\r\n </InputWrapper>\r\n )}\r\n {resourceType === 'documents' && (\r\n <InputWrapper2>\r\n <InputLabel2>You've completed this step.</InputLabel2>\r\n </InputWrapper2>\r\n )}\r\n </div>\r\n <div className=\"col-4\">\r\n {(resourceType === 'stepCompleted' || resourceType === 'notAtStep') && (\r\n <InputWrapper>\r\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n </InputWrapper>\r\n )}\r\n {resourceType === 'generateDoc' && (\r\n <InputWrapper>\r\n <Button brand=\"success\" onClick={this.redirectForDocumentGeneration}>\r\n {'Generate my document(s)'}\r\n </Button>\r\n </InputWrapper>\r\n )}\r\n {resourceType === 'signAgreement' && (\r\n <InputWrapper>\r\n <Button brand=\"success\" onClick={this.redirectForDocumentUploadOrSign}>\r\n {'Sign Agreement'}\r\n </Button>\r\n </InputWrapper>\r\n )}\r\n {resourceType === 'documentUpload' && (\r\n <InputWrapper>\r\n <Button brand=\"success\" onClick={this.redirectForDocumentUploadOrSign}>\r\n {'Generate my document(s)'}\r\n </Button>\r\n </InputWrapper>\r\n )}\r\n {resourceType === 'payment' && (\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={this.redirectForPayment}>\r\n {'Pay Fee'}\r\n </Button>\r\n </InputWrapper>\r\n )}\r\n {resourceType === 'documents' && (\r\n <InputWrapper>\r\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n </InputWrapper>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n };\r\n\r\n handleChange = debounce((formState, id, attributes) => {\r\n this.setState({ ...this.state, showCheckbox: !this.state.showCheckbox });\r\n }, 250);\r\n\r\n render() {\r\n const { stepId, permissions, data } = this.props;\r\n\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n if (this.checkNotYetAtStep()) {\r\n return (\r\n <AsyncLoader\r\n request={this.props.request}\r\n loading={stepId === 604 ? <></> : null}\r\n empty={this.props.request.isEmpty ? this.getResources('notAtStep') : null}\r\n >\r\n <div className=\"row col-12\">\r\n <div className=\"col-lg-8 col-md-7 col-sm-12\">\r\n <InputWrapper>\r\n <InputLabel>\r\n <CardText>\r\n Looks like you still have some work to do to get your peace of mind from\r\n Assure℠. Click the \"Go to Current Step\" button and we'll get you started\r\n again.\r\n </CardText>\r\n </InputLabel>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n );\r\n } else if (this.checkStepCompleted()) {\r\n if (this.checkStepCurrentAndComplete()) {\r\n return <></>;\r\n }\r\n return (\r\n <AsyncLoader\r\n request={this.props.request}\r\n loading={stepId === 604 ? <></> : null}\r\n empty={this.props.request.isEmpty ? this.getResources('stepCompleted') : null}\r\n >\r\n <div className=\"row col-12\">\r\n <div className=\"col-lg-8 col-md-7 col-sm-12\">\r\n <InputWrapper>\r\n <InputLabel2>You've completed this step.</InputLabel2>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n );\r\n } else if (this.needsDocumentsGenerated()) {\r\n return (\r\n <AsyncLoader\r\n request={this.props.request}\r\n empty={this.props.request.isEmpty ? this.getResources('generateDoc') : null}\r\n >\r\n <div className=\"row col-12\">\r\n <div className=\" col-lg-8 col-md-7 col-sm-0\"></div>\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button brand=\"success\" onClick={this.redirectForDocumentGeneration}>\r\n {'Generate my document(s)'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n );\r\n } else {\r\n if (stepId === 602 || stepId === 609) {\r\n return (\r\n <AsyncLoader\r\n request={this.props.request}\r\n empty={this.props.request.isEmpty ? this.getResources('documentUpload') : null}\r\n >\r\n <div className=\"row col-12\">\r\n <div className=\" col-lg-8 col-md-7 col-sm-0\"></div>\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button brand=\"success\" onClick={this.redirectForNsldsUpload}>\r\n {stepId === 602 && 'Submit My NSLDS'}\r\n {stepId === 609 && 'Submit My Updated NSLDS'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n );\r\n } else if (stepId === 603) {\r\n return <></>;\r\n } else if (stepId === 604) {\r\n return (\r\n <AsyncLoader\r\n request={this.props.request}\r\n loading={<></>}\r\n empty={this.props.request.isEmpty ? this.getResources('documents') : null}\r\n >\r\n {data && (\r\n <>\r\n {this.showOptOut() && (\r\n <div className=\"row col-12\">\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button invert brand=\"danger\" onClick={this.openOptOutModal}>\r\n <>I Don't Want Assure℠!</>\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n <div className=\" col-lg-4 col-md-2 col-sm-0\">\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={this.redirectToLearnMore}>\r\n <>Learn More</>\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button brand=\"success\" onClick={this.redirectToSignAgreement}>\r\n <>I Want Assure℠!</>\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n )}\r\n {!this.showOptOut() && (\r\n <div className=\"row col-12\">\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={this.redirectToLearnMore}>\r\n <>Learn More</>\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n <div className=\" col-lg-4 col-md-2 col-sm-0\"></div>\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button brand=\"success\" onClick={this.redirectToSignAgreement}>\r\n <>I Want Assure℠!</>\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n )}\r\n {this.state.showOptOutModal && (\r\n <LwoOptOutModal handleModalAction={this.handleOptOutModal} />\r\n )}\r\n </>\r\n )}\r\n </AsyncLoader>\r\n );\r\n } else if (stepId === 605) {\r\n return (\r\n <AsyncLoader\r\n request={this.props.request}\r\n empty={this.props.request.isEmpty ? this.getResources('payment') : null}\r\n >\r\n <div className=\"row col-12\">\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={this.redirectToLearnMore}>\r\n <>Learn More</>\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n <div className=\" col-lg-4 col-md-2 col-sm-0\"></div>\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={this.redirectForPayment}>\r\n <>Pay For Assure℠</>\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n );\r\n } else {\r\n if (stepId === 607) {\r\n return <LwoFax stepId={stepId} />;\r\n } else {\r\n return (\r\n <AsyncLoader request={this.props.request}>\r\n <div className=\"row col-12\">\r\n <div className=\" col-lg-8 col-md-7 col-sm-0\"></div>\r\n <div className=\"col-lg-4 col-md-5 col-sm-12\">\r\n <InputWrapper>\r\n <Button id={'confirm'} brand={'primary'} onClick={this.onConfirm}>\r\n {'Confirm'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.payment.requests.loadResource,\r\n state.limitedWaiverOpportunity.requests.loadResource,\r\n state.legal.requests.updateResource,\r\n ]),\r\n data: state.limitedWaiverOpportunity.cache[getUserId(state)],\r\n todos: Object.values(state.todos.cache),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n confirm: async (id) => {\r\n await dispatch(todosUpdateResource(id));\r\n dispatch(authLoadPermissions());\r\n await dispatch(todosLoadCollection());\r\n },\r\n setPaymentType: async () => await dispatch(paymentSetPaymentType()),\r\n optOutLwo: async () => {\r\n await dispatch(legalUpdateResource('LWOOUT', 'LWO_DATA'));\r\n dispatch(authLoadPermissions());\r\n await dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoConfirmation));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n AsyncLoader,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport styled from 'styled-components';\r\nimport LwoConfirmation from '../components/lwo-confirmation';\r\nimport LwoProgress from '../components/lwo-progress';\r\n\r\nconst StyledDiv = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nclass LwoLoanInfo extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: null };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n if (this.state.redirectURI !== null) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <DashboardSection title=\"Loans\">\r\n <LwoProgress removeContainer={true} />\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Provide Federal Loan Information</CardTitle>\r\n {this.props.request.hasFinished && (\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <p>\r\n To determine if you will benefit from using Assure℠, we start by\r\n analyzing all of your federal student loan history. To complete this step,\r\n you need to provide your NSLDS file to us (as a text file). Don't worry,\r\n we provide detailed instructions to make this easy for you.\r\n </p>\r\n <p>Simply click the \"Submit My NSLDS\" button to get started!</p>\r\n <p>\r\n Note: This is the first of two steps required to determine if you can\r\n benefit from using Assure℠.\r\n </p>\r\n </div>\r\n </div>\r\n </CardText>\r\n )}\r\n <LwoConfirmation stepId={602} />\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.payment.requests.loadResource,\r\n state.limitedWaiverOpportunity.requests.loadResource,\r\n ]),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoLoanInfo));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport ResultsTable from './results-table';\r\nimport { AsyncLoader, CardTitle } from 'fiducius-ui';\r\n\r\nconst StyledDiv = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nconst Results = ({ loans = [], permissions = {}, request = {} }) => {\r\n const showResults = ['Questionnaire', 'LoanInformation', 'WaitPslf'].includes(\r\n permissions.lwoSteps.find((a) => a.stepCurrent).id\r\n )\r\n ? false\r\n : true;\r\n\r\n if (request.isLoading) {\r\n return <AsyncLoader request={request} />;\r\n } else {\r\n return (\r\n <>\r\n {showResults && (\r\n <>\r\n <StyledDiv>\r\n <CardTitle>Here Are Your Results</CardTitle>\r\n </StyledDiv>\r\n <StyledDiv className=\"row\">\r\n <div className=\"col-12\">\r\n {loans.length === 0 && (\r\n <p>\r\n We're sorry, but based on the information you've provided so far, it appears you\r\n would not receive any additional qualifying payments by using the LWO. However,\r\n Fiducius may be able to help with your student loans in other ways. Click the\r\n \"Go to current step\" button and we'll cover your options.\r\n </p>\r\n )}\r\n {loans.length > 0 && (\r\n <>\r\n <p>\r\n Great news! Based on the information you've provided so far, it appears you\r\n could receive additional qualifying payments by using the LWO. Your next step\r\n is to enroll in Assure℠, so Fiducius can guarantee you'll get all the\r\n additional qualifying payments you deserve. Click the \"Go to current step\"\r\n button and we'll get you started.\r\n </p>\r\n <ResultsTable loans={loans} />\r\n </>\r\n )}\r\n </div>\r\n </StyledDiv>\r\n </>\r\n )}\r\n </>\r\n );\r\n }\r\n};\r\n\r\nResults.propTypes = {\r\n loans: t.array,\r\n permissions: t.object.isRequired,\r\n request: t.object,\r\n};\r\n\r\nexport default Results;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n AsyncLoader,\r\n Lede,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { getUserId } from '../../../auth';\r\nimport { Employers, employmentHistoryLoadCollection } from '../../../employment-history';\r\nimport {\r\n limitedWaiverOpportunityLoadResource,\r\n limitedWaiverOpportunityUpdateResource,\r\n limitedWaiverOpportunityCopyResourceToForm,\r\n} from '../redux/operations';\r\nimport LwoConfirmation from '../components/lwo-confirmation';\r\nimport LwoProgress from '../components/lwo-progress';\r\nimport { todosLoadCollection } from '../../../todos';\r\nimport Results from '../components/results';\r\nimport { convertIsoToSlash, mergeRequestStatuses } from '../../../utils';\r\nimport { authLoadPermissions } from '../../../auth';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\n\r\nconst StyledDiv = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nclass LwoQuestionnaire extends React.Component {\r\n static propTypes = {\r\n id: t.string.isRequired,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n employers: t.object,\r\n load: t.func.isRequired,\r\n update: t.func.isRequired,\r\n loans: t.object,\r\n currentStage: t.string,\r\n fullRequest: t.object,\r\n firstLoanDate: t.string,\r\n updateRequest: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { openPartTimeEmpModal: false };\r\n this.handlePartTimeEmpModal = this.handlePartTimeEmpModal.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n handlePartTimeEmpModal() {\r\n this.setState({ openPartTimeEmpModal: !this.state.openPartTimeEmpModal });\r\n }\r\n\r\n getFirstLoanDateFormatted = (firstLoanDate) => {\r\n let retVal = convertIsoToSlash(firstLoanDate);\r\n if (retVal !== undefined && retVal !== null) {\r\n retVal = retVal.toString();\r\n if (retVal[0] === '0') {\r\n retVal = retVal.substring(1);\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n innerAsyncLoaderContent() {\r\n return (\r\n <CardText>\r\n <p>\r\n One more step before you see your results! Please provide information for all\r\n not-for-profit employers while carrying federal student loans.{' '}\r\n </p>\r\n <p>\r\n Based on our initial analysis of your NSLDS file, the earliest date your loans went into\r\n repayment was {this.getFirstLoanDateFormatted(this.props.firstLoanDate)}. This means you\r\n do NOT need to provide employment information prior to that date. Also, you do not need to\r\n provide information for any employment prior to 10/1/2007, when the PSLF program started.\r\n </p>\r\n <p>\r\n Once you have entered all your employers, click the \"Calculate My Results\" button. Hang\r\n tight, it may take a few seconds while we're analyzing all your information. It's worth\r\n the wait since you'll learn if Assure℠ can guarantee you receive additional\r\n qualifying payments!\r\n </p>\r\n <Employers checkQualification={this.props.update} />\r\n <Results\r\n loans={this.props.loans}\r\n permissions={this.props.permissions}\r\n request={this.props.updateRequest}\r\n />\r\n </CardText>\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n <DashboardSection title=\"Employment & Results\">\r\n <LwoProgress removeContainer={true} />\r\n\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Establish Employment History and Learn Results</CardTitle>\r\n <AsyncLoader\r\n request={this.props.fullRequest}\r\n empty={this.innerAsyncLoaderContent()}\r\n >\r\n {this.innerAsyncLoaderContent()}\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n <StyledDiv className=\"row\">\r\n <div className=\"col-12\">\r\n <LwoConfirmation stepId={603} />\r\n </div>\r\n </StyledDiv>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const eHRequests = state.employmentHistory.requests;\r\n const lwoRequests = state.limitedWaiverOpportunity.requests;\r\n\r\n return {\r\n id: getUserId(state),\r\n employers: state.employmentHistory.cache,\r\n loans: state.limitedWaiverOpportunity.form.eligibleLoans,\r\n currentStage: state.limitedWaiverOpportunity.form.currentBenefitStage,\r\n firstLoanDate: state.limitedWaiverOpportunity.form.firstLoanDate,\r\n fullRequest: mergeRequestStatuses([eHRequests.loadCollection, lwoRequests.loadResource]),\r\n updateRequest: lwoRequests.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(limitedWaiverOpportunityLoadResource(id));\r\n dispatch(employmentHistoryLoadCollection());\r\n await dispatch(limitedWaiverOpportunityCopyResourceToForm(id));\r\n },\r\n update: async (id) => {\r\n await dispatch(limitedWaiverOpportunityUpdateResource(id));\r\n await dispatch(limitedWaiverOpportunityCopyResourceToForm(id));\r\n dispatch(todosLoadCollection());\r\n await dispatch(authLoadPermissions());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoQuestionnaire));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\n\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardTitle,\r\n CardText,\r\n Header2,\r\n DashboardSection,\r\n AsyncLoader,\r\n Lede,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { getUserId } from '../../../auth';\r\n\r\nimport {\r\n limitedWaiverOpportunityLoadResource,\r\n limitedWaiverOpportunityCopyResourceToForm,\r\n} from '../redux/operations';\r\nimport ResultsTable from '../components/results-table';\r\nimport LwoConfirmation from '../components/lwo-confirmation';\r\nimport LwoProgress from '../components/lwo-progress';\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nconst SpacedDiv = styled.div`\r\n margin-bottom: 1em;\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n margin: 0.5em;\r\n`;\r\n\r\nconst StyledLede = styled(Lede)`\r\n color: ${(p) => (p.theme.themeName === 'greenlight' ? p.theme.textPrimary : 'inherit')};\r\n`;\r\n\r\nconst AlignTextLeft = styled.div`\r\n text-align: left;\r\n`;\r\nclass LwoAgreement extends React.Component {\r\n static propTypes = {\r\n id: t.string.isRequired,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n load: t.func,\r\n loans: t.object,\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: null, openNeverWorkFiduModal: false };\r\n this.handleNeverWorkFiduModal = this.handleNeverWorkFiduModal.bind(this);\r\n }\r\n\r\n handleNeverWorkFiduModal() {\r\n this.setState({ openNeverWorkFiduModal: !this.state.openNeverWorkFiduModal });\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n redirectToSignAgreement = () => {\r\n this.setState({ ...this.state, redirectURI: '/lwo-agreement' });\r\n };\r\n\r\n renderPaidTile() {\r\n const { data } = this.props;\r\n if (data.companyPaid) {\r\n return this.renderCompanyPaid();\r\n } else if (data.originationPaid) {\r\n return this.renderOriginationPaid();\r\n } else {\r\n return this.renderVoluntaryPaid();\r\n }\r\n }\r\n\r\n renderCompanyPaid() {\r\n return (\r\n <p>\r\n Ready to get started? Click the \"I Want Assure℠\" button to sign up. The cost of\r\n Assure℠ was paid for by your employer, so you'll get peace of mind at no additional\r\n cost. And since we guarantee you'll receive qualifying payments, you're assured to come out\r\n ahead.\r\n </p>\r\n );\r\n }\r\n\r\n renderOriginationPaid() {\r\n return (\r\n <p>\r\n Ready to get started? Click the \"I Want Assure℠\" button to sign up. The cost of\r\n Assure℠ was included in your Forgiveness implementation fee, so you'll get peace of\r\n mind at no additional cost. And since we guarantee you'll receive qualifying payments,\r\n you're assured to come out ahead.\r\n </p>\r\n );\r\n }\r\n\r\n renderVoluntaryPaid() {\r\n return (\r\n <p>\r\n Ready to get started? Click the \"I Want Assure℠\" button to sign up. You'll get peace\r\n of mind for only {formatAsMoney(this.props.data.lwoCost)}. And since we guarantee you'll\r\n receive qualifying payments, you're assured to come out ahead.\r\n </p>\r\n );\r\n }\r\n\r\n render() {\r\n const { data } = this.props;\r\n if (this.state.redirectURI !== null) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <DashboardSection title=\"Get Started\">\r\n <LwoProgress removeContainer={true} />\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Learn About Assure℠ and Sign Up</CardTitle>\r\n <AsyncLoader request={this.props.request}>\r\n <CardText>\r\n <strong> Qualifying Payment Information</strong>\r\n </CardText>\r\n <SpacedDiv className=\"row\">\r\n <div className=\"col-12\">\r\n <ResultsTable loans={this.props.loans} />\r\n </div>\r\n </SpacedDiv>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <p>\r\n Great, you're eligible to take advantage of the Limited Waiver\r\n Opportunity. Now, let's make sure you get all the additional\r\n qualifying payments you deserve. It requires some detailed work on\r\n your part, but Fiducius has it covered.\r\n </p>\r\n <p>\r\n We created Assure℠, the only solution of its kind, to guarantee\r\n you get all those additional payments and don't have to worry. It does\r\n the hard work for you, identifying qualifying payments, producing 100%\r\n accurate documentation and helping manage all the steps.\r\n </p>\r\n {!data.companyPaid && !data.originationPaid && (\r\n <p>\r\n With Fiducius, be confident you'll receive every single qualifying\r\n payment you deserve. If you don't completely trust your lender to\r\n follow through, we have your back. In fact, we're so confident in\r\n our ability to help you get all those qualifying payments, we're\r\n offering a money-back guarantee when you purchase Assure℠.\r\n </p>\r\n )}\r\n <p>\r\n <StyledButton brand=\"primary\" onClick={this.handleNeverWorkFiduModal}>\r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n Never worked with Fiducius before?\r\n </StyledButton>\r\n </p>\r\n {this.renderPaidTile()}\r\n </div>\r\n </div>\r\n </CardText>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n <LwoConfirmation stepId={604} />\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n <Modal isOpen={this.state.openNeverWorkFiduModal} fullWidth={true}>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <CardTitle>Never worked with Fiducius before?</CardTitle>\r\n <AlignTextLeft>\r\n <FlexRow>\r\n <StyledLede>\r\n For more than 10 years, Fiducius has been trusted by thousands of borrowers to\r\n ensure they are verified to participate in PSLF and receive the maximum amount\r\n of forgiveness. 100% of borrowers who work with Fiducius are qualified for\r\n forgiveness, and they've had their monthly payments reduced by 80% or more on\r\n average. Now that's results!\r\n </StyledLede>\r\n </FlexRow>\r\n </AlignTextLeft>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={this.handleNeverWorkFiduModal}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.limitedWaiverOpportunity.requests.loadResource,\r\n loans: state.limitedWaiverOpportunity.form.eligibleLoans,\r\n data: state.limitedWaiverOpportunity.form,\r\n id: getUserId(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(limitedWaiverOpportunityLoadResource(id));\r\n await dispatch(limitedWaiverOpportunityCopyResourceToForm(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoAgreement));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { paymentSetPaymentType } from '../../../payment';\r\nimport { getUserId } from '../../../auth';\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nimport {\r\n limitedWaiverOpportunityLoadResource,\r\n limitedWaiverOpportunityCopyResourceToForm,\r\n} from '../redux/operations';\r\n\r\nimport LwoConfirmation from '../components/lwo-confirmation';\r\nimport LwoProgress from '../components/lwo-progress';\r\n\r\nclass LwoFee extends React.Component {\r\n static propTypes = {\r\n id: t.string.isRequired,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n load: t.func,\r\n data: t.object,\r\n setPaymentType: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: null };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n redirectForLwoPayment = () => {\r\n this.props.setPaymentType().then(() => {\r\n this.setState({ ...this.state, redirectURI: '/payment' });\r\n });\r\n };\r\n\r\n renderPaidTile() {\r\n const { data } = this.props;\r\n if (data.companyPaid) {\r\n return this.renderCompanyPaid();\r\n } else if (data.originationPaid) {\r\n return this.renderOriginationPaid();\r\n } else {\r\n return this.renderVoluntaryPaid();\r\n }\r\n }\r\n\r\n renderCompanyPaid() {\r\n return (\r\n <CardText>\r\n <p>The cost of Assure℠ was paid for by your employer.</p>\r\n </CardText>\r\n );\r\n }\r\n\r\n renderOriginationPaid() {\r\n return (\r\n <CardText>\r\n <p>The cost of Assure℠ was included in your Forgiveness implementation fee.</p>\r\n </CardText>\r\n );\r\n }\r\n\r\n renderVoluntaryPaid() {\r\n const { data } = this.props;\r\n return (\r\n <CardText>\r\n <p>\r\n Almost done. Now that you've signed the agreement, it's time to pay{' '}\r\n {formatAsMoney(data.lwoCost)} to get your peace of mind. Click the \"Pay for Assure℠\"\r\n button and you'll be taken to our online payment form.\r\n </p>\r\n </CardText>\r\n );\r\n }\r\n\r\n render() {\r\n if (this.state.redirectURI !== null) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <>\r\n <DashboardSection>\r\n <LwoProgress removeContainer={true} />\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Pay for Assure℠</CardTitle>\r\n <AsyncLoader request={this.props.request}>\r\n {this.props.data && this.renderPaidTile()}\r\n </AsyncLoader>\r\n <LwoConfirmation stepId={605} />\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.limitedWaiverOpportunity.requests.loadResource,\r\n data: state.limitedWaiverOpportunity.form,\r\n id: getUserId(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(limitedWaiverOpportunityLoadResource(id));\r\n await dispatch(limitedWaiverOpportunityCopyResourceToForm(id));\r\n },\r\n setPaymentType: async () => await dispatch(paymentSetPaymentType()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoFee));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Lede,\r\n Modal,\r\n} from 'fiducius-ui';\r\nimport StepDisplay from '../../forgiveness/components/step-display';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport LwoConfirmation from '../components/lwo-confirmation';\r\nimport LwoProgress from '../components/lwo-progress';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\n\r\nconst StyledDiv = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n margin: 0.5em;\r\n`;\r\n\r\nconst StyledLede = styled(Lede)`\r\n color: ${(p) => (p.theme.themeName === 'greenlight' ? p.theme.textPrimary : 'inherit')};\r\n`;\r\n\r\nconst AlignTextLeft = styled.div`\r\n text-align: left;\r\n`;\r\nclass LwoEmploymentCertification extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showStep1: false,\r\n showStep2: false,\r\n showStep3: false,\r\n openWhatHappenStepModal: false,\r\n };\r\n this.handleWhatHappenStepModal = this.handleWhatHappenStepModal.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const pathName = window.location.pathname;\r\n if (pathName.includes('/step')) {\r\n this.setState({\r\n ...this.state,\r\n showStep1: pathName.includes('/step-1'),\r\n showStep2: pathName.includes('/step-2'),\r\n showStep3: pathName.includes('/step-3'),\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n handleWhatHappenStepModal() {\r\n this.setState({ openWhatHappenStepModal: !this.state.openWhatHappenStepModal });\r\n }\r\n\r\n handleStepClick = (stepNumber) => {\r\n let sectionName = 'step' + stepNumber.toString();\r\n switch (stepNumber) {\r\n case 1:\r\n this.setState({ showStep2: false, showStep3: false, showStep1: true }, () => {\r\n this.scrollToStep(sectionName);\r\n });\r\n break;\r\n case 2:\r\n this.setState({ showStep1: false, showStep3: false, showStep2: true }, () => {\r\n this.scrollToStep(sectionName);\r\n });\r\n break;\r\n case 3:\r\n this.setState({ showStep1: false, showStep2: false, showStep3: true }, () => {\r\n this.scrollToStep(sectionName);\r\n });\r\n break;\r\n default:\r\n break;\r\n // code block\r\n }\r\n };\r\n\r\n scrollToStep(section) {\r\n document.getElementById(section).scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n getButtonBrand = (buttonStageId) => {\r\n const { todos } = this.props;\r\n\r\n let currentStage = Object.values(todos).find((a) => a.id >= 600 && a.id <= 699);\r\n\r\n if (currentStage !== undefined) {\r\n if (buttonStageId < currentStage.id) {\r\n return 'success';\r\n } else if (buttonStageId === currentStage.id) {\r\n return 'info';\r\n } else {\r\n return 'warning';\r\n }\r\n } else {\r\n return 'warning';\r\n }\r\n };\r\n\r\n getRestrictionDate = () => {\r\n let retVal = undefined;\r\n const { permissions } = this.props;\r\n const lwoStep = permissions.lwoSteps.find((a) => a.id === 'EmploymentCertification');\r\n if (lwoStep.stepDateRestriction !== undefined) {\r\n let stepRestriction = new Date(lwoStep.stepDateRestriction);\r\n retVal =\r\n (stepRestriction.getMonth() + 1).toString() +\r\n '/' +\r\n stepRestriction.getDate() +\r\n '/' +\r\n stepRestriction.getFullYear();\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const restrictionDate = this.getRestrictionDate();\r\n return (\r\n <>\r\n <DashboardSection title=\"Employment Certification\">\r\n <LwoProgress removeContainer={true} />\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>\r\n Complete Required Employment Certification(s)\r\n <StyledButton brand=\"primary\" onClick={this.handleWhatHappenStepModal}>\r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n What happens in this step?\r\n </StyledButton>\r\n </CardTitle>\r\n <CardText>\r\n <p>\r\n You know how many additional qualified payments you could receive. In order to\r\n make that happen, we now need to make sure all the documentation gets done\r\n correctly and quickly. Completing this step will certify your employment and\r\n previous loan payments. Assure℠ will generate forms, manage submission\r\n to the lender and then enable the review process.\r\n </p>\r\n <p>\r\n <div className=\"row\">\r\n <div className=\"col-4\">\r\n <Button\r\n brand={this.getButtonBrand(606)}\r\n onClick={() => this.handleStepClick(1)}\r\n >\r\n Generate\r\n </Button>\r\n </div>\r\n <div className=\"col-4\">\r\n <Button\r\n brand={this.getButtonBrand(607)}\r\n onClick={() => this.handleStepClick(2)}\r\n >\r\n Submit\r\n </Button>\r\n </div>\r\n <div className=\"col-4\">\r\n <Button\r\n brand={this.getButtonBrand(608)}\r\n onClick={() => this.handleStepClick(3)}\r\n >\r\n Review\r\n </Button>\r\n </div>\r\n </div>\r\n </p>\r\n </CardText>\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n <Modal isOpen={this.state.openWhatHappenStepModal} fullWidth={true}>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <CardTitle>What happens in this step?</CardTitle>\r\n <AlignTextLeft>\r\n <FlexRow>\r\n <StyledLede>\r\n This step actually includes three separate steps:\r\n <ol>\r\n <li>\r\n First, Fiducius correctly generates all the required certification forms\r\n for the employers you identified.\r\n </li>\r\n <li>\r\n Next, you have the forms signed by the employers and then upload them to\r\n your MyFiducius dashboard so we can manage their submission.\r\n </li>\r\n <li>\r\n Lastly, we wait while the forms are reviewed and approved. This step\r\n won't be finished until you've received both the PSLF Application\r\n Results and the new Qualifying Payments letters, and you let us know you\r\n received them.\r\n </li>\r\n </ol>\r\n </StyledLede>\r\n </FlexRow>\r\n </AlignTextLeft>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={this.handleWhatHappenStepModal}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n </DashboardSection>\r\n {this.state.showStep1 && (\r\n <div id=\"step1\">\r\n <DashboardSection title=\"Generate your Employment Certification(s)\">\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <StepDisplay\r\n title={'Step 1 - Generate and Download Employment Certification form(s)'}\r\n >\r\n <ul>\r\n <li>\r\n Please click the button below to generate your Employment Certification\r\n form(s).\r\n </li>\r\n <li>\r\n After clicking the button, you will be taken to your My Documents page\r\n where you can download the file.\r\n </li>\r\n <li>\r\n Once you've downloaded the document, you can continue to follow the\r\n steps on this page.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </div>\r\n </div>\r\n <LwoConfirmation stepId={606} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep2 && (\r\n <div id=\"step2\">\r\n <DashboardSection title=\"Submit your Employment Certification(s)\">\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <StepDisplay\r\n title={'Step 1 – Complete and send Employment Certification form(s)'}\r\n >\r\n <ul>\r\n <li>\r\n Print the Employment Certification form(s) found in the My Documents\r\n section of your MyFiducius portal and hand-sign page one.\r\n </li>\r\n <li>Your employer must complete and sign the second page.</li>\r\n <li>\r\n Please verify your Social Security Number is present on the first two\r\n pages of your employment certification(s) prior to submitting it.\r\n </li>\r\n <li>\r\n Questions 1 through 9 <strong>must</strong> be completed. Please read\r\n the answer to question 9 to determine if succeeding questions require an\r\n answer.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n <StepDisplay title={'Step 2 – Upload the form(s) to your Fiducius account'}>\r\n <ul>\r\n <li>\r\n Upload the form under <strong>My Documents</strong>.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </div>\r\n </div>\r\n <LwoConfirmation stepId={607} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n {this.state.showStep3 && (\r\n <div id=\"step3\">\r\n <DashboardSection title=\"Check on your Employment Certification(s)\">\r\n <Card overlayCard={restrictionDate !== undefined}>\r\n <CardBody overlayCard hideOverlay={restrictionDate === undefined}>\r\n {restrictionDate !== undefined && (\r\n <>\r\n <CardTitle overlayCard>Wait for PSLF Application Results letter</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n Based on the average processing time for this document, it will be\r\n processed by your loan servicer on {restrictionDate} at the earliest*. You\r\n will not be able to confirm completion of this step until that date.\r\n </p>\r\n <p>\r\n *Please note: Your document is not guaranteed to be processed by this\r\n date. It is important to follow your steps closely.\r\n </p>\r\n </CardText>\r\n </>\r\n )}\r\n </CardBody>\r\n <CardBody disableChildren={restrictionDate !== undefined}>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <StepDisplay\r\n title={\r\n 'Step 1 – Wait for PSLF Application Results from Federal Student Aid.'\r\n }\r\n >\r\n <ul>\r\n <li>\r\n The PSLF Application Results states your form was accepted, while the\r\n Qualifying Payment update letter states your number of qualifying\r\n payments towards the Public Service Loan Forgiveness program as of the\r\n date your employer signed your employment certification form.\r\n </li>\r\n <li>\r\n These typically arrive <strong>one to two months</strong> after the form\r\n is submitted.{' '}\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have received both the PSLF\r\n Application Results and Qualifying Payment update letters.\r\n </strong>\r\n </StepDisplay>\r\n </div>\r\n </div>\r\n <LwoConfirmation stepId={608} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(LwoEmploymentCertification));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, CardText, DashboardSection, AsyncLoader } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport LwoConfirmation from '../components/lwo-confirmation';\r\nimport { limitedWaiverOpportunityLoadResource } from '../redux/operations';\r\nimport { getUserId } from '../../../auth';\r\nimport ResultsTable from '../components/results-table';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nclass LwoComplete extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n load: t.func,\r\n id: t.string.isRequired,\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n const { data = {}, permissions, request } = this.props;\r\n let currentLwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n if (currentLwoStep === undefined) {\r\n currentLwoStep = {};\r\n currentLwoStep.id = 'UnDef';\r\n }\r\n return (\r\n <DashboardSection>\r\n <AsyncLoader request={request}>\r\n <Card>\r\n <CardBody>\r\n {data && currentLwoStep.id === 'Complete' && (\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>You're Done For Now</CardTitle>\r\n <CardText>\r\n <p>\r\n Congratulations, you have completed all of the steps to put Assure℠ to\r\n work for you student loan forgiveness. Please refer to the Overview page for\r\n more information.\r\n </p>\r\n </CardText>\r\n </div>\r\n </div>\r\n )}\r\n {data && currentLwoStep.id !== 'Complete' && (\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>You Have Steps Left To Complete</CardTitle>\r\n <LwoConfirmation stepId={610} />\r\n </div>\r\n </div>\r\n )}\r\n </CardBody>\r\n </Card>\r\n {data &&\r\n data.submittedLoans !== undefined &&\r\n data.submittedLoans !== null &&\r\n data.submittedLoans.length > 0 && (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-6\">\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Estimated Qualifying Payment Information</CardTitle>\r\n <ResultsTable loans={data.eligibleLoans} />\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-12 col-lg-6\">\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Actual Qualifying Payment Information</CardTitle>\r\n <ResultsTable loans={data.submittedLoans} showEstimated={false} />\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n )}\r\n </AsyncLoader>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const lwoRequests = state.limitedWaiverOpportunity.requests;\r\n return {\r\n employers: state.employmentHistory.cache,\r\n id: getUserId(state),\r\n data: state.limitedWaiverOpportunity.cache[getUserId(state)],\r\n request: mergeRequestStatuses([lwoRequests.loadResource, state.todos.requests.loadCollection]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(limitedWaiverOpportunityLoadResource(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoComplete));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n AsyncLoader,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { getUserId } from '../../../auth';\r\nimport {\r\n limitedWaiverOpportunityLoadResource,\r\n limitedWaiverOpportunityCopyResourceToForm,\r\n} from '../redux/operations';\r\nclass LwoNotQualified extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n currentStage: t.object,\r\n load: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.load(this.props.id);\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n showPSLFMessage = () => {\r\n const { permissions } = this.props;\r\n if (permissions.hasForgiveness) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n render() {\r\n return (\r\n <DashboardSection>\r\n <Card>\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <CardTitle>Options</CardTitle>\r\n <AsyncLoader request={this.props.request}>\r\n <CardText>\r\n {!this.showPSLFMessage() && (\r\n <p>\r\n Based on our analysis of your information you would not benefit from using\r\n Assure℠ at this time. Fiducius will review your current situation and\r\n if we determine that there are any other options we can provide to assist\r\n you a representative will reach out to you. If you do not hear from us then\r\n unfortunately there is no further assistance we can provide. Thank you for\r\n your interest in Fiducius.\r\n </p>\r\n )}\r\n {this.showPSLFMessage() && (\r\n <p>\r\n Based on our analysis of your information you would not benefit from using\r\n Assure℠ at this time. We recommend that you continue on with your\r\n student loan forgiveness program as you have been. Thank you for your\r\n continued interest in Fiducius.\r\n </p>\r\n )}\r\n </CardText>\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const lwoRequests = state.limitedWaiverOpportunity.requests;\r\n\r\n return {\r\n id: getUserId(state),\r\n currentStage: state.limitedWaiverOpportunity.form.currentBenefitStage,\r\n request: lwoRequests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(limitedWaiverOpportunityLoadResource(id));\r\n await dispatch(limitedWaiverOpportunityCopyResourceToForm(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoNotQualified));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n AsyncLoader,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport styled from 'styled-components';\r\nimport LwoConfirmation from '../components/lwo-confirmation';\r\nimport LwoProgress from '../components/lwo-progress';\r\n\r\nconst StyledDiv = styled.div`\r\n margin-top: 1em;\r\n`;\r\n\r\nclass LwoFinalConfirmation extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: null };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n if (this.state.redirectURI !== null) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <DashboardSection title=\"Federal Confirmation\">\r\n <LwoProgress removeContainer={true} />\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Confirmation of Additional Qualifying Payments</CardTitle>\r\n <CardText>\r\n <AsyncLoader request={this.props.request}>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <p>\r\n Now that you've heard back from the Department of Education, we need you\r\n to provide your updated NSLDS file. It will have been updated\r\n automatically by the Department of Education to confirm the exact number\r\n of additional qualifying payments you will receive. Click the \"Submit My\r\n Updated NSLDS\" button to complete this step. Remember, we provide detailed\r\n instructions to make this easy for you.\r\n </p>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n\r\n <LwoConfirmation stepId={609} />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.payment.requests.loadResource,\r\n state.limitedWaiverOpportunity.requests.loadResource,\r\n ]),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LwoFinalConfirmation));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withPermissions } from '../../../routing';\r\nimport { Card, CardBody, CardHeader, CardText, Header5, Link } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst RefinanceQualify = withPermissions(({ rate, cache }) => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Refinance</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Are you paying too much interest on your student loans?</Header5>\r\n <Spaced>\r\n Find out if you can lower your interest rate or change your terms to save money. Check out\r\n your Refinance Tab or the <Link to=\"/faq\">FAQ's</Link> to learn more.\r\n </Spaced>\r\n </CardText>\r\n {/*<Fade show={cache.qualifiedForgiveness === false}>\r\n <StyledDiv className=\"col-12\">\r\n <a href=\"http://www.LKrefi.com/fiducius\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n <Button brand=\"primary\">See Payment Options</Button>\r\n </a>\r\n </StyledDiv>\r\n</Fade>*/}\r\n </CardBody>\r\n </Card>\r\n));\r\n\r\nRefinanceQualify.propTypes = {\r\n rate: t.number.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { advisor } = state;\r\n const { cache } = advisor;\r\n const id = getUserId(state);\r\n return {\r\n cache: cache[id],\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(withPermissions(RefinanceQualify));\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('refi');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('refi', types);\r\n","import actions from './actions';\r\nimport { getUserId, getToken } from '../../../auth';\r\nimport {\r\n checkForEmpty,\r\n getApi,\r\n keyById,\r\n normalize,\r\n patchApi,\r\n resourceOperationsGenerator,\r\n} from '../../../utils';\r\n\r\nconst endpointHandler2 = {\r\n customResponseHandler: null,\r\n endpoint: '/refi',\r\n resourceType: 'refi',\r\n};\r\n\r\n// TODO: Ask about the purpose here.\r\nconst operations2 = resourceOperationsGenerator(\r\n 'refi',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler2,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst { refiLoadResource } = operations2;\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/lend-key-step-one',\r\n resourceType: 'lend-key-step-one',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'refi',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst { refiDisableValidation } = actions;\r\n\r\nconst refiGetForm = () => async (dispatch, getState) => {\r\n const state = getState();\r\n await dispatch(operations2.refiLoadResource(getUserId(state)));\r\n let institutionName = '';\r\n let hasAddress = false;\r\n\r\n try {\r\n // TODO: serve from cache and short-circuit\r\n dispatch(actions.refiLoadResourceRequest());\r\n let data = await getApi(getToken(state), `/lend-key-step-one/${getUserId(state)}`);\r\n dispatch(actions.refiLoadResourceResponse());\r\n\r\n institutionName = data[0]['institutionName'];\r\n\r\n if (\r\n data[0]['address1'] &&\r\n data[0]['address1'].length > 0 &&\r\n data[0]['city'] &&\r\n data[0]['city'].length > 0 &&\r\n data[0]['state'] &&\r\n data[0]['state'].length === 2 &&\r\n data[0]['zipCode'] &&\r\n data[0]['zipCode'].length > 0\r\n ) {\r\n hasAddress = true;\r\n }\r\n\r\n const cache = {\r\n ...state.refi.cache,\r\n ...keyById(data),\r\n };\r\n\r\n const cacheKeys = Object.keys(cache);\r\n let resultId = null;\r\n if (cacheKeys.length === 1) {\r\n resultId = cacheKeys[0];\r\n }\r\n\r\n let formData = cache;\r\n if (resultId != null) {\r\n formData = cache[resultId];\r\n formData.acceptLoanType = 'both';\r\n }\r\n\r\n await dispatch(operations.refiHandleFormChange(formData, Object.keys(formData)));\r\n\r\n dispatch(actions.refiLoadResourceSuccess(checkForEmpty(getState().refi)));\r\n } catch (error) {\r\n dispatch(operations.refiHandleError(error));\r\n dispatch(actions.refiLoadResourceFailure(error));\r\n }\r\n return { institutionName, hasAddress };\r\n};\r\n\r\nconst refiUpdateOpeId = (opeId) => (dispatch, getState) => {\r\n let formData = getState().refi.form;\r\n formData.opeId = opeId['id'];\r\n formData.institutionName = opeId['name'];\r\n dispatch(operations.refiHandleFormChange(formData));\r\n};\r\n\r\nconst refiMakeFormReady = () => (dispatch, getState) => {\r\n let formData = getState().refi.form;\r\n dispatch(operations.refiHandleFormChange(formData));\r\n};\r\n\r\nconst refiSendForQuotes = () => async (dispatch, getState) => {\r\n const id = getState().refi.form.id;\r\n const state = getState();\r\n try {\r\n dispatch(actions.refiUpdateResourceRequest());\r\n const patchData = normalize('lend-key-step-one', state.refi.form, id);\r\n let data = await patchApi(getToken(state), `/lend-key-step-one/${id}`, patchData);\r\n\r\n dispatch(actions.refiUpdateResourceResponse());\r\n\r\n const cache = { ...state.refi.cache, ...keyById(data) };\r\n await dispatch(operations.refiHandleCacheChange(cache));\r\n } catch (error) {\r\n dispatch(operations.refiHandleError(error));\r\n dispatch(actions.refiUpdateResourceFailure(error));\r\n }\r\n\r\n let data = [];\r\n try {\r\n const state = getState();\r\n // TODO: serve from cache and short-circuit\r\n dispatch(actions.refiLoadResourceRequest());\r\n data = await getApi(getToken(state), '/lend-key-step-two');\r\n\r\n dispatch(actions.refiLoadResourceResponse());\r\n\r\n const cache = {\r\n ...state.refi.cache,\r\n quotes: data,\r\n };\r\n\r\n await dispatch(operations.refiHandleCacheChange(cache, Object.keys(cache)));\r\n } catch (error) {\r\n dispatch(operations.refiHandleError(error));\r\n dispatch(actions.refiLoadResourceFailure(error));\r\n }\r\n\r\n dispatch(actions.refiUpdateResourceSuccess());\r\n dispatch(actions.refiLoadResourceSuccess(data.length === 0));\r\n};\r\n\r\nconst refiSendApply = (id) => async (dispatch, getState) => {\r\n let formData = getState().refi.cache.quotes.filter((q) => q.id === id);\r\n if (formData.length !== 1) {\r\n throw new Error('Could not find quote for application');\r\n } else {\r\n formData = formData[0];\r\n }\r\n dispatch(operations.refiHandleFormChange(formData));\r\n if (formData.selectionUrl !== null && formData.selectionUrl !== undefined) {\r\n window.location.href = formData.selectionUrl;\r\n } else {\r\n try {\r\n const state = getState();\r\n dispatch(actions.refiUpdateResourceRequest());\r\n const patchData = normalize('lend-key-step-two', state.refi.form, id);\r\n let data = await patchApi(getToken(state), `/lend-key-step-two/${id}`, patchData);\r\n\r\n dispatch(actions.refiUpdateResourceResponse());\r\n\r\n const cache = { ...state.refi.cache, ...keyById(data) };\r\n await dispatch(operations.refiHandleCacheChange(cache));\r\n } catch (error) {\r\n dispatch(operations.refiHandleError(error));\r\n dispatch(actions.refiUpdateResourceFailure(error));\r\n }\r\n }\r\n};\r\n\r\nconst refiGetExistingQuotes = () => async (dispatch, getState) => {\r\n let data = [];\r\n try {\r\n const state = getState();\r\n // TODO: serve from cache and short-circuit\r\n dispatch(actions.refiLoadResourceRequest());\r\n data = await getApi(getToken(state), '/lend-key-step-two');\r\n\r\n dispatch(actions.refiLoadResourceResponse());\r\n\r\n const cache = {\r\n ...state.refi.cache,\r\n quotes: data,\r\n };\r\n\r\n await dispatch(operations.refiHandleCacheChange(cache, Object.keys(cache)));\r\n } catch (error) {\r\n dispatch(operations.refiHandleError(error));\r\n dispatch(actions.refiLoadResourceFailure(error));\r\n }\r\n\r\n dispatch(actions.refiUpdateResourceSuccess());\r\n dispatch(actions.refiLoadResourceSuccess(data.length === 0));\r\n return data;\r\n};\r\n\r\nexport {\r\n refiDisableValidation,\r\n refiGetExistingQuotes,\r\n refiGetForm,\r\n refiSendApply,\r\n refiSendForQuotes,\r\n refiUpdateOpeId,\r\n refiLoadResource,\r\n refiMakeFormReady,\r\n};\r\n\r\nexport default operations;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Button, Loader, Table } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { refiGetExistingQuotes } from '../redux/operations';\r\n\r\nconst LoaderWrapper = styled.div`\r\n align-items: center;\r\n align-self: stretch;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nclass SummaryQuotes extends React.Component {\r\n static propTypes = {\r\n history: t.object,\r\n load: t.func.isRequired,\r\n quotes: t.array,\r\n request: t.object,\r\n };\r\n\r\n componentDidMount() {\r\n this.props.load();\r\n }\r\n\r\n render() {\r\n const { history, quotes, request = {} } = this.props;\r\n if (request.notStarted || request.isLoading) {\r\n return (\r\n <LoaderWrapper>\r\n <Loader />\r\n </LoaderWrapper>\r\n );\r\n } else if (safeAccess(quotes, 'length', 0) > 0) {\r\n return (\r\n <Table\r\n columns={[\r\n { sortable: true },\r\n { sortable: true },\r\n { sortable: true },\r\n { sortable: true },\r\n { sortable: true },\r\n { sortable: true },\r\n ]}\r\n header={[\r\n 'Rate',\r\n 'Rate Type',\r\n 'Loan Amount',\r\n 'Loan Type',\r\n 'Monthly Payment',\r\n 'Term Length',\r\n ]}\r\n body={[\r\n ['5.19%', 'Variable', '$100,000.00', 'Federal', '$1895.84', '5 yr'],\r\n ['5.33%', 'Fixed', '$100,000.00', 'Federal', '$1077.35', '10 yr'],\r\n ['5.47%', 'Fixed', '$100,000.00', 'Federal', '$1083.78', '10 yr'],\r\n ['5.85%', 'Variable', '$100,000.00', 'Private', '$1102.69', '10 yr'],\r\n ]}\r\n />\r\n );\r\n } else {\r\n return (\r\n <LoaderWrapper>\r\n <Button brand=\"primary\" onClick={() => history.push('/benefits/refinance')}>\r\n Get quotes now\r\n </Button>\r\n </LoaderWrapper>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n quotes: safeAccess(state, 'refi.cache.enrolledForgiveness', []),\r\n request: state.refi.loadResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async () => await dispatch(refiGetExistingQuotes()),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withRouter(SummaryQuotes));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { BrandColor, Card, CardBody, CardFooter, CardText, CardTitle, Link } from 'fiducius-ui';\r\n\r\nimport SummaryQuotes from './summary-quotes';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst rateFormatter = new Intl.NumberFormat('en-US', {\r\n style: 'percent',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n});\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n margin-top: 2rem;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst RefinanceEnrolled = () => (\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Refinance</CardTitle>\r\n <CardText>\r\n <Spaced>\r\n The average student loan interest rate is\r\n <strong>\r\n <BrandColor brand=\"primary\"> 6.00% </BrandColor>\r\n </strong>\r\n but you may be eligible for a rate as low as\r\n <strong>\r\n <BrandColor brand=\"primary\"> {rateFormatter.format(0.0519)}</BrandColor>\r\n </strong>\r\n .\r\n </Spaced>\r\n <div className=\"row\">\r\n <div className=\"col-6\">\r\n <CardText>\r\n <dl>\r\n <dt>Current Monthly Payment</dt>\r\n <dd>$1,200</dd>\r\n <dt>Status</dt>\r\n <dd>Qualified</dd>\r\n </dl>\r\n </CardText>\r\n </div>\r\n <div className=\"col-6\">\r\n <CardText>\r\n <dl>\r\n <dt>Current Loan Balance</dt>\r\n <dd>$100,000.00</dd>\r\n <dt>Next Payment</dt>\r\n <dd>03/01/2019</dd>\r\n </dl>\r\n </CardText>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n <SummaryQuotes />\r\n <FlexFooter>\r\n <Link to=\"/benefits/refinance\">My Refinance</Link>\r\n <Link to=\"/accounts\">My Accounts</Link>\r\n </FlexFooter>\r\n </Card>\r\n);\r\n\r\nexport default RefinanceEnrolled;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Button, Table } from 'fiducius-ui';\r\nimport { formatAsMoney, formatAsPercent } from '../../../utils';\r\n\r\nconst QuotesTable = ({ sendApply, quotes = [] }) => {\r\n let body = [];\r\n for (let i = 0; i < quotes.length; i++) {\r\n body.push([\r\n quotes[i].interestRate,\r\n quotes[i].rateType,\r\n quotes[i].loanAmount,\r\n quotes[i].monthlyPayment,\r\n quotes[i].termLength,\r\n <Button key={quotes[i].id} brand=\"secondary\" onClick={() => sendApply(quotes[i].id)}>\r\n Apply now\r\n </Button>,\r\n ]);\r\n }\r\n\r\n if (body.length > 0) {\r\n return (\r\n <Table\r\n columns={[\r\n { sortable: true, renderer: formatAsPercent },\r\n { sortable: true },\r\n { sortable: true, renderer: formatAsMoney },\r\n { sortable: true, renderer: formatAsMoney },\r\n { sortable: true, renderer: (termLength) => termLength.toString() + ' mo.' },\r\n { sortable: false },\r\n ]}\r\n header={[\r\n 'Interest Rate',\r\n 'Rate Type',\r\n 'Loan Amount',\r\n 'Monthly Payment',\r\n 'Term Length',\r\n 'Apply',\r\n ]}\r\n body={body}\r\n />\r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nQuotesTable.propTypes = {\r\n quotes: t.array,\r\n sendApply: t.func.isRequired,\r\n};\r\n\r\nexport default QuotesTable;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Button,\r\n CardText,\r\n Form,\r\n InputGroup,\r\n InputLabel,\r\n InputWrapper,\r\n InputAutocomplete,\r\n Header5,\r\n} from 'fiducius-ui';\r\nimport { getApi, useFocusOnMount } from '../../../utils';\r\n\r\nconst StyledButton = styled(Button)`\r\n align-self: flex-start;\r\n`;\r\n\r\nconst OpeIdText = styled(CardText)`\r\n margin-bottom: 1.5rem;\r\n`;\r\n\r\nconst InstitutionWrapper = styled.div`\r\n align-self: stretch;\r\n align-items: center;\r\n display: flex;\r\n`;\r\n\r\nconst Highlight = styled.strong`\r\n background-color: ${(p) => p.theme.colorLevel(p.theme.warning, -5)};\r\n`;\r\n\r\nconst renderInstitutionResult = (institution, value) => {\r\n const parts = institution.institutionName.split(value);\r\n return (\r\n <InstitutionWrapper>\r\n <Header5>\r\n {parts.map((part, i) => (\r\n <React.Fragment key={i}>\r\n {part}\r\n {i + 1 !== parts.length && <Highlight>{value}</Highlight>}\r\n </React.Fragment>\r\n ))}\r\n </Header5>\r\n </InstitutionWrapper>\r\n );\r\n};\r\n\r\nconst asyncFetcher = (value) => {\r\n if (value && value.length > 2) {\r\n return getApi(\r\n null,\r\n `/lend-key-accredited-institution?filter[institution-name]=like:${encodeURIComponent(value)}`\r\n ).then((data) => {\r\n if (data.length > 50) {\r\n return [\r\n {\r\n selected: false,\r\n render: () => (\r\n <div key=\"too-many-results\">Too many results. Try narrowing it down.</div>\r\n ),\r\n },\r\n ];\r\n } else {\r\n return data.map((institution) => ({\r\n id: institution.id,\r\n name: institution.institutionName,\r\n render: () => renderInstitutionResult(institution, value),\r\n }));\r\n }\r\n });\r\n } else if (value) {\r\n return [\r\n {\r\n selected: false,\r\n render: () => (\r\n <div key=\"need-more\">Too many results. Type more to help narrow it down.</div>\r\n ),\r\n },\r\n ];\r\n } else {\r\n return new Promise((resolve) => resolve([]));\r\n }\r\n};\r\n\r\nconst RefinanceForm = ({ data, handleChange, onSubmit, updateOpeId, ...props }) => {\r\n const firstInput = useFocusOnMount();\r\n\r\n return (\r\n <Form id=\"refiForm\" handleChange={handleChange} onSubmit={onSubmit} {...props}>\r\n <OpeIdText>\r\n Please enter the name of the institution where you completed your highest degree.\r\n </OpeIdText>\r\n <InputWrapper>\r\n <InputLabel>Institution Name</InputLabel>\r\n <InputGroup affordance=\"large\">\r\n <InputAutocomplete\r\n inputRef={firstInput}\r\n fetcher={asyncFetcher}\r\n name=\"opeId\"\r\n placeholder=\"Institution Name\"\r\n onSelect={updateOpeId}\r\n defaultValue={data || ''}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n\r\n <StyledButton brand=\"primary\" type=\"submit\" onClick={onSubmit}>\r\n Get quotes\r\n </StyledButton>\r\n </Form>\r\n );\r\n};\r\n\r\nRefinanceForm.propTypes = {\r\n handleChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n data: t.string,\r\n updateOpeId: t.func.isRequired,\r\n};\r\n\r\nexport default RefinanceForm;\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('affiliate');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/affiliate',\r\n resourceType: 'affiliate',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'affiliate',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst getAffiliateLinkById = (id) => async (dispatch, getState) => {\r\n let state = getState();\r\n let cache = state.affiliate.cache;\r\n\r\n // If the affiliate link is already in cache, don't call the API to retrieve it\r\n if (cache && Object.keys(cache).length > 0 && id in cache) {\r\n let retVal = cache[id].affiliateLink;\r\n return retVal;\r\n }\r\n\r\n // Not in cache; Retrieve the afilliateLink with the API\r\n else {\r\n await dispatch(affiliateLoadCollection());\r\n state = getState();\r\n cache = state.affiliate.cache;\r\n if (cache && Object.keys(cache).length > 0 && id in cache) {\r\n let retVal = cache[id].affiliateLink;\r\n return retVal;\r\n } else {\r\n return '';\r\n }\r\n }\r\n};\r\n\r\nconst getAffiliateLinkByName = (name) => async (dispatch, getState) => {\r\n let state = getState();\r\n let cache = state.affiliate.cache;\r\n\r\n // If the affiliate link is already in cache, don't call the API to retrieve it\r\n if (cache && Object.keys(cache).length > 0) {\r\n let result = '';\r\n Object.keys(cache).forEach((k) => {\r\n if (cache[k].cdnLocation.toLowerCase().includes(name)) {\r\n result = cache[k].affiliateLink;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n // Not in cache; Retrieve the afilliateLink with the API\r\n else {\r\n await dispatch(affiliateLoadCollection());\r\n state = getState();\r\n cache = state.affiliate.cache;\r\n if (cache && Object.keys(cache).length > 0) {\r\n let result = '';\r\n Object.keys(cache).forEach((k) => {\r\n if (cache[k].cdnLocation.toLowerCase().includes(name)) {\r\n result = cache[k].affiliateLink;\r\n }\r\n });\r\n return result;\r\n } else {\r\n return '';\r\n }\r\n }\r\n};\r\n\r\nconst { affiliateLoadCollection } = operations;\r\n\r\nexport { affiliateLoadCollection, getAffiliateLinkById, getAffiliateLinkByName };\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('affiliate', types);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport t from 'prop-types';\r\nimport { Card, CardBody, CardText, CardTitle, CdnImage } from 'fiducius-ui';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { affiliateLoadCollection } from '../redux/operations';\r\n\r\nconst LinkWrapper = styled.div`\r\n border-top: 1px solid ${(p) => p.theme.textTertiary};\r\n padding-top: 1rem;\r\n text-align: left;\r\n\r\n /*display: flex;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n flex-shrink: 1;\r\n \r\n & > small {\r\n padding-left: 0.5rem;\r\n }*/\r\n`;\r\n\r\nconst AffiliateLink = styled.a``;\r\n\r\nconst AffiliateImage = styled(CdnImage)`\r\n height: 75px;\r\n max-width: 100%;\r\n`;\r\n\r\nclass AffiliateTile extends React.Component {\r\n static propTypes = {\r\n data: t.array,\r\n request: t.object,\r\n getAffiliates: t.func.isRequired,\r\n theme: t.string.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getAffiliates();\r\n }\r\n\r\n getSortedAffiliates() {\r\n const { data, theme } = this.props;\r\n\r\n let affiliates = [];\r\n data.forEach((t) => {\r\n affiliates.push({\r\n order: t.order,\r\n data: (\r\n <LinkWrapper key={t.order}>\r\n <p>\r\n <AffiliateLink href={t.affiliateLink}>\r\n <AffiliateImage\r\n cdn={process.env.REACT_APP_CDN_URL}\r\n imagePath={\r\n 'affiliates/' +\r\n t.cdnLocation +\r\n '/' +\r\n (theme !== 'dark' ? t.lightImage : t.darkImage)\r\n }\r\n alt={t.imageAltText}\r\n />\r\n </AffiliateLink>\r\n </p>\r\n <p>{t.imageSubText}</p>\r\n </LinkWrapper>\r\n ),\r\n });\r\n });\r\n affiliates.sort(function(a, b) {\r\n return a.order - b.order;\r\n });\r\n let processedAffiliates = [];\r\n affiliates.forEach((t) => processedAffiliates.push(t.data));\r\n return processedAffiliates;\r\n }\r\n\r\n render() {\r\n const { data, theme } = this.props;\r\n return (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Affiliates</CardTitle>\r\n <CardText>\r\n <p>At Fiducius, we partner with companies to benefit your financial wellness.</p>\r\n {safeAccess(data, 'length') > 0 ? (\r\n this.getSortedAffiliates()\r\n ) : (\r\n <LinkWrapper>\r\n <p>\r\n <AffiliateLink href=\"http://www.jdoqocy.com/click-8973232-13149824\">\r\n <AffiliateImage\r\n cdn={process.env.REACT_APP_CDN_URL}\r\n imagePath={\r\n theme !== 'dark'\r\n ? 'affiliates/turbo-tax/turbotax.png'\r\n : 'affiliates/turbo-tax/turbotaxWhite.png'\r\n }\r\n alt=\"TurboTax - Choose Easy\"\r\n />\r\n </AffiliateLink>\r\n </p>\r\n <p>File your taxes with our national partner, TurboTax.</p>\r\n </LinkWrapper>\r\n )}\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cache, requests } = state.affiliate;\r\n return {\r\n data: Object.values(cache),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n getAffiliates: () => dispatch(affiliateLoadCollection()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AffiliateTile);\r\n","import React, { useEffect, useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { getAffiliateLinkByName } from '../redux/operations';\r\nimport { getUserId } from '../../../auth';\r\n\r\nconst GetAffiliateLinkByName = async (affiliateName, affiliateByName) => {\r\n let data = await affiliateByName(affiliateName);\r\n return data;\r\n};\r\n\r\nconst AffiliateLink = ({ affiliateName, affiliateByName, linkText, targetText, relText }) => {\r\n const [affiliateData, setAffiliateData] = useState('');\r\n\r\n useEffect(() => {\r\n let isSubscribed = true;\r\n GetAffiliateLinkByName(affiliateName, affiliateByName).then((data) => {\r\n if (isSubscribed) {\r\n if (!data && affiliateName === 'sofi') {\r\n data = 'https://www.sofi.com';\r\n }\r\n setAffiliateData(data);\r\n }\r\n });\r\n return () => {\r\n isSubscribed = false;\r\n };\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div>\r\n <a href={affiliateData} target={targetText} rel={relText}>\r\n {linkText}\r\n </a>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nAffiliateLink.propTypes = {\r\n id: t.string.isRequired,\r\n affiliate: t.func.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n id: getUserId(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n affiliateByName: async (affiliateName) => await dispatch(getAffiliateLinkByName(affiliateName)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AffiliateLink);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('affiliate', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n Alert,\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardText,\r\n CardTitle,\r\n DashboardSection,\r\n Header2,\r\n Modal,\r\n CardHeader,\r\n Link,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { debounce, isEqual, mergeRequestStatuses, safeAccess } from '../../../utils';\r\n\r\nimport QuotesTable from '../components/quotes-table';\r\nimport RefinanceForm from '../components/form';\r\nimport {\r\n refiDisableValidation,\r\n refiGetExistingQuotes,\r\n refiSendApply,\r\n refiSendForQuotes,\r\n refiUpdateOpeId,\r\n refiGetForm,\r\n refiMakeFormReady,\r\n} from '../redux/operations';\r\n\r\nimport { AffiliateLink } from '../../affiliates';\r\n\r\nexport const LENDKEY_PROVIDER_ID = 3;\r\nexport const SPLASH_PROVIDER_ID = 4;\r\nexport const LAURELROAD_PROVIDER_ID = 5;\r\nexport const SOFI_PROVIDER_ID = 6;\r\n\r\nconst StyledLoader = styled.div`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nconst TextLeft = styled(CardText)`\r\n text-align: left;\r\n`;\r\n\r\nconst FlexEnd = styled.div`\r\n display: flex;\r\n justify-content: flex-end;\r\n`;\r\n\r\nclass MyRefinance extends React.Component {\r\n static propTypes = {\r\n applyRequest: t.object,\r\n getForm: t.func.isRequired,\r\n getFormRequest: t.object,\r\n getQuotes: t.func.isRequired,\r\n getQuotesRequest: t.object,\r\n data: t.object,\r\n id: t.string,\r\n quotes: t.array,\r\n sendApply: t.func.isRequired,\r\n updateForm: t.func.isRequired,\r\n alertText: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n disclaimerIsOpen: false,\r\n hasRequestedQuotes: false,\r\n initialLoad: false,\r\n institutionName: null,\r\n hasAddress: false,\r\n redirectURL: '',\r\n alertText: undefined,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getForm(this.state);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { applyRequest: prevApply, getFormRequest: prevForm } = prevProps;\r\n const { applyRequest: currentApply, getFormRequest: currentForm, data } = this.props;\r\n const selectionUrl = safeAccess(data, 'selectionUrl', '');\r\n const opeId = safeAccess(data, 'opeId');\r\n\r\n if (prevForm.isLoading && currentForm.hasFinished && !currentForm.hasFailed && opeId) {\r\n this.setState({ ...this.state, hasRequestedQuotes: true }, () => this.props.getQuotes());\r\n }\r\n\r\n if (\r\n prevApply.isLoading &&\r\n currentApply.hasFinished &&\r\n !currentApply.hasFailed &&\r\n selectionUrl &&\r\n this.state.redirectURL === ''\r\n ) {\r\n this.setState({ ...this.state, redirectURL: selectionUrl });\r\n //window.location(selectionUrl);\r\n }\r\n\r\n const { applyRequest } = this.props;\r\n\r\n if (\r\n prevProps.applyRequest.isLoading &&\r\n applyRequest.hasFinished &&\r\n !applyRequest.hasFailed &&\r\n selectionUrl\r\n ) {\r\n //alert(selectionUrl);\r\n this.setState({ ...this.state, redirectURL: selectionUrl });\r\n //window.location(selectionUrl);\r\n }\r\n }\r\n\r\n getQuotes = (e) => {\r\n e.preventDefault();\r\n this.props.getQuotes();\r\n this.setState({ ...this.state, hasRequestedQuotes: true });\r\n };\r\n\r\n handleChange = debounce((formState) => {}, 200);\r\n\r\n updateForm = debounce((opeId) => {\r\n this.props.updateForm(opeId);\r\n });\r\n\r\n toggleDisclaimer = () =>\r\n this.setState({\r\n ...this.state,\r\n disclaimerIsOpen: !this.state.disclaimerIsOpen,\r\n });\r\n\r\n render() {\r\n const { data, id, getFormRequest, getQuotesRequest, quotes, sendApply } = this.props;\r\n if (\r\n this.state.redirectURL !== null &&\r\n this.state.redirectURL !== '' &&\r\n this.state.redirectURL.length > 0\r\n ) {\r\n return <Redirect to={this.state.redirectURL} />;\r\n } else {\r\n return (\r\n <>\r\n <DashboardSection title=\"My Refinancing\">\r\n <Header2>\r\n Lower your rates and improve your payment schedule through private loan refinancing\r\n </Header2>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Alert brand=\"primary\">\r\n <p>\r\n ***Unsure of what to do based on recent governmental announcements regarding\r\n student loans?{' '}\r\n <a href=\"https://getfiducius.com/news-insights/\" target=\"_blank\">\r\n Click here\r\n </a>{' '}\r\n and view our News and Insights page to stay updated.\r\n </p>\r\n </Alert>\r\n <AsyncLoader request={getFormRequest}>\r\n {safeAccess(data, `[${id}].providerId`, false) === SPLASH_PROVIDER_ID && (\r\n <Card brand=\"success\">\r\n <CardHeader>You're qualified</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <p>\r\n Lower your rates and improve your payment schedule through private loan\r\n refinancing.\r\n </p>\r\n <p>\r\n Click get quote to receive refinancing options through our trusted\r\n partner. Checking your rate will not affect your credit score, and the\r\n Fiducius team will always be here for support.\r\n </p>\r\n {/* TODO: Turn into link that looks like a button */}\r\n <a\r\n href=\"https://splashfinancial.com/partner/Fiducius\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Get Quotes\r\n </a>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n {safeAccess(data, `[${id}].providerId`, false) === LAURELROAD_PROVIDER_ID && (\r\n <>\r\n <Card brand=\"success\">\r\n <CardHeader>Check Your Rate Options</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <p>Fast, easy refinancing—without the kinks.</p>\r\n <p>\r\n We offer a simplified process with zero added costs or fees. Discover\r\n your rate options online in less than 5 minutes – no hard credit pull\r\n required.<sup>1.</sup>\r\n </p>\r\n <p>\r\n Refinancing with Laurel Road loan could provide you with an\r\n opportunity to do one or more of the following:\r\n </p>\r\n <ul>\r\n <li>Lower interest rate</li>\r\n <li>Lower monthly payment</li>\r\n <li>Pay off loans faster</li>\r\n <li>Choose a fixed or variable rate</li>\r\n <li>Reduce number of loans</li>\r\n <li>Save money</li>\r\n </ul>\r\n {/* TODO: Turn into link that looks like a button */}\r\n <a\r\n href=\"https://www.laurelroad.com/\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Get Quotes\r\n </a>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n <p>\r\n <sup>1.</sup> Checking your rate with Laurel Road only requires a soft\r\n credit pull, which will not affect your credit score. To proceed with an\r\n application, a hard credit pull will be required, which may affect your\r\n credit score.\r\n </p>\r\n </>\r\n )}\r\n {safeAccess(data, `[${id}].providerId`, false) === SOFI_PROVIDER_ID && (\r\n <>\r\n <Card brand=\"success\">\r\n <CardHeader>Check Your Rate Options</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <p>Fast, easy refinancing—without the kinks.</p>\r\n <p>\r\n Refinancing with SoFi could provide you with an opportunity to do one\r\n or more of the following:\r\n </p>\r\n <ul>\r\n <li>Lower interest rate</li>\r\n <li>Lower monthly payment</li>\r\n <li>Pay off loans faster</li>\r\n <li>Choose a fixed or variable rate</li>\r\n <li>Reduce number of loans</li>\r\n <li>Save money</li>\r\n </ul>\r\n {/* TODO: Turn into link that looks like a button */}\r\n <AffiliateLink\r\n affiliateName=\"sofi\"\r\n linkText=\"Get Quotes\"\r\n targetText={'_blank'}\r\n relText={'noopener noreferrer'}\r\n />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </>\r\n )}\r\n {safeAccess(data, `[${id}].providerId`, false) === LENDKEY_PROVIDER_ID &&\r\n this.state.initialLoad && (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>My Refinance Quotes</CardTitle>\r\n {!this.state.hasAddress && (\r\n <CardText>\r\n We need you to fill out your address information on your{' '}\r\n <Link to=\"/profile\">Profile</Link> before you can continue.\r\n </CardText>\r\n )}\r\n {this.state.hasAddress && !this.state.hasRequestedQuotes && (\r\n <RefinanceForm\r\n handleChange={this.handleChange}\r\n onSubmit={this.getQuotes}\r\n data={this.state.institutionName}\r\n updateOpeId={this.updateForm}\r\n />\r\n )}\r\n </CardBody>\r\n {this.state.hasAddress && this.state.hasRequestedQuotes && (\r\n <StyledLoader>\r\n <AsyncLoader request={getQuotesRequest}>\r\n {quotes && <QuotesTable quotes={quotes} sendApply={sendApply} />}\r\n </AsyncLoader>\r\n </StyledLoader>\r\n )}\r\n </Card>\r\n )}\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n {!getFormRequest.isLoading &&\r\n safeAccess(data, `[${id}].providerId`, false) === LENDKEY_PROVIDER_ID && (\r\n <>\r\n <FlexEnd>\r\n <Button brand=\"tertiary\" onClick={this.toggleDisclaimer}>\r\n View disclaimer\r\n </Button>\r\n </FlexEnd>\r\n <Modal isOpen={this.state.disclaimerIsOpen}>\r\n <Card>\r\n <CardHeader>LendKey Legal Disclaimer</CardHeader>\r\n <CardBody>\r\n <TextLeft>\r\n <p>\r\n <small>\r\n The estimated loan option and terms displayed are based on information\r\n that you provided on this website and are subject to change. LendKey\r\n Technologies, Inc. (\"LendKey\") is not responsible for any inaccurate\r\n information disclosed on this website. In the event that you would\r\n like to move forward with the loan option displayed, you will be\r\n required to complete an application with the lender on LendKey's\r\n website, at which point we will conduct a credit report inquiry,\r\n verify the information you provided, and collect additional\r\n information from you (and your co-signer, if applicable) for the\r\n lender to determine whether you qualify for the loan.\r\n </small>\r\n </p>\r\n <p>\r\n <small>\r\n Terms and conditions apply. If approved for the loan, the interest\r\n rate offered to you will depend on your (and your co-signer's, if\r\n applicable) credit profile and application. Lowest advertised rates\r\n are generally reserved for borrowers with excellent credit scores. All\r\n applicants must (i) be either U.S. citizens or Permanent Residents in\r\n an eligible state and graduated from an eligible school; (ii) meet the\r\n age of majority requirements as determined by the applicant's state of\r\n residence at the time of application; and (iii) meet the lender's\r\n credit and income requirements. If the applicant wishes to accept a\r\n loan offered from a credit union lender, the applicant must be a\r\n member of the credit union, and, therefore, certain membership\r\n requirements (including the opening of a share account and any\r\n applicable association fees in connection with membership) may apply.\r\n Applicants may complete a credit union membership application during\r\n the loan application process on LendKey's website. Applying with a\r\n creditworthy co-signer may result in a better chance of loan approval\r\n and/or lower interest rate. APR = Annual Percentage Rate. For\r\n variable-rate loans, the variable rates may increase after loan\r\n consummation. Loans that were used for exam preparation classes,\r\n including, but not limited to, loans for LSAT, MCAT, GMAT, and GRE\r\n preparation are not eligible for refinancing with a lender via\r\n LendKey.com. If you are approved for the loan, please refer to your\r\n credit agreement Private Education Loan Disclosures for more\r\n information about the loan and any applicable terms and borrower\r\n responsibilities. Additionally, you may contact LendKey at\r\n 866-840-3502 if you have any questions. Lenders participating on\r\n LendKey.com reserve the right to modify or discontinue the products,\r\n terms, and benefits offered at any time without notice.\r\n </small>\r\n </p>\r\n <p>\r\n <small>\r\n In some circumstances, the lender of the loan may offer a 0.25%\r\n reduction if you choose to enroll in automatic monthly payments from a\r\n personal checking or savings account to pay principal and interest\r\n amounts that are due. The reduction may be removed and the rate will\r\n be increased (leading to higher payments) upon any cancellation or\r\n failed collection attempt of the automatic payment, and will be\r\n suspended during any period of deferment or forbearance. Additionally,\r\n in some circumstances, the lender of the loan may offer co-signer\r\n release. In order to qualify for co-signer release, the borrower must\r\n have made the required minimum number of on-time full principal and\r\n interest payments immediately prior to the request to have the\r\n co-signer released (Any period of forbearance will restart the clock);\r\n the loan account cannot be in delinquent status; the borrower must\r\n provide proof of income indicating he/she meets the income\r\n requirements and pass a credit review demonstrating that he/she has a\r\n satisfactory credit history and the ability to assume full\r\n responsibility of loan repayment; no bankruptcies or foreclosures in\r\n the last 60 months; and no loan defaults.\r\n </small>\r\n </p>\r\n <p>\r\n <small>\r\n By selecting a conditional loan offer from LendKey on this website and\r\n continuing to LendKey's website to complete a full application, you\r\n authorize LendKey, any of its affiliates, agents, assignees, service\r\n providers, and participating lenders who you apply for a loan with via\r\n LendKey's website, to contact you at the phone number(s) (including\r\n mobile device numbers) you provide or associated with your account\r\n and/or loan, including, but not limited to calling or texting you via\r\n an automated dialing device, leaving you a voice message (including a\r\n prerecorded or artificial message sent via an automated dialing\r\n device), and sending you an email or other electronic message for any\r\n purpose related to your use of this website, an application you start\r\n or complete on this website, or for research purposes (e.g., customer\r\n surveys), even if you will be charged by your mobile service\r\n providers.\r\n </small>\r\n </p>\r\n </TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={this.toggleDisclaimer}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n </>\r\n )}\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cache, requests } = state.refi;\r\n const quotes = cache && cache.quotes && !isEqual(cache.quotes, {}) ? cache.quotes : [];\r\n return {\r\n applyRequest: requests.updateResource,\r\n // TODO: This is bad because we're using cache for more than one model at different times\r\n // Super brittle. Needs a re-write ASAP.\r\n data: cache,\r\n id: getUserId(state),\r\n quotes: quotes,\r\n getFormRequest: requests.loadResource,\r\n getQuotesRequest: mergeRequestStatuses([requests.updateResource, requests.loadResource]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n getForm: async (state) => {\r\n await dispatch(refiDisableValidation());\r\n let data = await dispatch(refiGetExistingQuotes());\r\n state.hasRequestedQuotes = data && data.length > 0;\r\n dispatch(refiGetForm())\r\n .then(({ institutionName, hasAddress }) => {\r\n state.institutionName = institutionName;\r\n state.hasAddress = hasAddress;\r\n })\r\n .then(() => {\r\n state.initialLoad = true;\r\n dispatch(refiMakeFormReady());\r\n });\r\n },\r\n getQuotes: () => dispatch(refiSendForQuotes()),\r\n sendApply: (id) => dispatch(refiSendApply(id)),\r\n updateForm: (opeId) => dispatch(refiUpdateOpeId(opeId)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyRefinance);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('refi', types);\r\n","import React, { useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withRouter } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n CardFooter,\r\n Link,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { formatAsMoney, safeAccess } from '../../../utils';\r\nimport { AffiliateLink } from '../../affiliates';\r\n\r\nimport {\r\n SPLASH_PROVIDER_ID,\r\n LENDKEY_PROVIDER_ID,\r\n LAURELROAD_PROVIDER_ID,\r\n SOFI_PROVIDER_ID,\r\n} from '../containers/my-refinance';\r\nimport { refiLoadResource } from '../redux/operations';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst LoaderWrapper = styled.div`\r\n align-items: center;\r\n align-self: stretch;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst MyRefinanceSummary = ({ data = {}, id, load, request, history }) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Refinance</CardTitle>\r\n <CardText>\r\n <Spaced>\r\n You could save on student loans by lowering your interest rate or shortening your\r\n loan term.\r\n </Spaced>\r\n <AsyncLoader request={request}>\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-xl-4 col-lg-4 col-md-4 col-sm-4\">\r\n <dl>\r\n <dt>Current Loan Balance</dt>\r\n <dd> {formatAsMoney(data.currentLoanBalance || '')} </dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-12 col-xl-4 col-lg-4 col-md-4 col-sm-4\">\r\n <dl>\r\n <dt>Current Monthly Payment</dt>\r\n <dd> {formatAsMoney(data.currentMonthlyPayment || '')} </dd>\r\n </dl>\r\n </div>\r\n </div>\r\n <LoaderWrapper>\r\n {safeAccess(data, 'providerId', false) === SPLASH_PROVIDER_ID && (\r\n <a\r\n href=\"https://splashfinancial.com/partner/Fiducius\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Get Quotes\r\n </a>\r\n )}\r\n {safeAccess(data, 'providerId', false) === LAURELROAD_PROVIDER_ID && (\r\n <a\r\n href=\"https://www.laurelroad.com/\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Get Quotes\r\n </a>\r\n )}\r\n {safeAccess(data, 'providerId', false) === SOFI_PROVIDER_ID && (\r\n <AffiliateLink\r\n affiliateName=\"sofi\"\r\n linkText=\"Get Quotes\"\r\n targetText=\"_blank\"\r\n relText={'noopener noreferrer'}\r\n />\r\n )}\r\n {safeAccess(data, 'providerId', false) === LENDKEY_PROVIDER_ID && (\r\n <Button brand=\"primary\" onClick={() => history.push('/benefits/refinance')}>\r\n Get quotes now\r\n </Button>\r\n )}\r\n </LoaderWrapper>\r\n </>\r\n </AsyncLoader>\r\n </CardText>\r\n </CardBody>\r\n <FlexFooter>\r\n <Link to=\"/benefits/refinance\">My Refinance</Link>\r\n <Link to=\"/accounts\">My Accounts</Link>\r\n </FlexFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nMyRefinanceSummary.propTypes = {\r\n data: t.object,\r\n id: t.string.isRequired,\r\n load: t.func.isRequired,\r\n request: t.object.isRequired,\r\n history: t.object,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: state.refi.cache[getUserId(state)],\r\n id: getUserId(state),\r\n request: state.refi.requests.loadResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => dispatch(refiLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(MyRefinanceSummary));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Card, CardBody, CardHeader, CardText, Header5 } from 'fiducius-ui';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst SimpliFiQualify = () => (\r\n <Card brand=\"primary\">\r\n <CardHeader>SimpliFi</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Is there a way to simplify all the loans in my portfolio?</Header5>\r\n <Spaced>\r\n It may make sense for you to consolidate your loans and potentially lower your payments.\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nexport default SimpliFiQualify;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Card, CardBody, CardText, ChartBar } from 'fiducius-ui';\r\nimport { formatAsMoney } from '../../../utils/format';\r\n\r\nconst PaymentCompare = ({ newPayment = 0, oldPayment = 0, year = 1 }) => (\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <center>\r\n <strong>My Payment Comparison</strong>\r\n </center>\r\n <ChartBar\r\n bars={[\r\n {\r\n label: '',\r\n dataType: 'currency',\r\n data: [oldPayment, newPayment],\r\n },\r\n ]}\r\n config={{ labels: ['Standard', 'Income Driven'], formatter: formatAsMoney }}\r\n />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nPaymentCompare.propTypes = {\r\n newPayment: t.number,\r\n oldPayment: t.number,\r\n year: t.number,\r\n};\r\n\r\nexport default PaymentCompare;\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('simplifi');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/simplifi',\r\n resourceType: 'simplifi',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'simplifi',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst { simplifiLoadResource } = operations;\r\n\r\nexport { simplifiLoadResource };\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('simplifi', types);\r\n","import { createSelector } from 'reselect';\r\nimport { getUserId } from '../../../auth';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nexport const getSimplifiData = (state) =>\r\n safeAccess(state, `simplifi.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getMonthlyPayment = createSelector(\r\n [getSimplifiData],\r\n (data = {}) => data.standardPayment || 0\r\n);\r\n\r\nexport const getMonthlySavings = createSelector(\r\n [getSimplifiData],\r\n (data = {}) => {\r\n const stdPayment = data.standardPayment || 0;\r\n const idrPayment = data.projectedIdr || 0;\r\n return stdPayment - idrPayment;\r\n }\r\n);\r\n\r\nexport const getNewPayment = createSelector(\r\n [getSimplifiData],\r\n (data = {}) => data.projectedIdr || 0\r\n);\r\n\r\nexport const getOldPayment = createSelector(\r\n [getSimplifiData],\r\n (data = {}) => data.standardPayment || 0\r\n);\r\n\r\nexport const getStandardPayment = createSelector(\r\n [getSimplifiData],\r\n (data = {}) => data.standardPayment || 0\r\n);\r\n","import React, { useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n CardFooter,\r\n Link,\r\n BrandColor,\r\n Header5,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nimport PaymentCompare from '../components/payment-compare';\r\nimport { simplifiLoadResource } from '../redux/operations';\r\nimport {\r\n getSimplifiData,\r\n getMonthlyPayment,\r\n getNewPayment,\r\n getOldPayment,\r\n getStandardPayment,\r\n getMonthlySavings,\r\n} from '../redux/selectors';\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst SimpliFiSummary = ({\r\n data = {},\r\n id,\r\n load,\r\n monthlyPayment,\r\n monthlySavings,\r\n standardPayment,\r\n newPayment,\r\n oldPayment,\r\n request,\r\n}) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <Card brand=\"secondary\">\r\n <CardBody>\r\n <CardText>\r\n <CardTitle>SimpliFi</CardTitle>\r\n <AsyncLoader request={request}>\r\n <Header5>Consolidation</Header5>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-xl-4\">\r\n <dl>\r\n <dt>Program</dt>\r\n <dd>{data.program || ' - '}</dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-6 col-xl-4\">\r\n <dl>\r\n <dt>Status</dt>\r\n <dd>{data.status || ' - '}</dd>\r\n </dl>\r\n </div>\r\n </div>\r\n <div className=\"col-12\">{data.message || ''}</div>\r\n <br />\r\n\r\n <Header5>IDR</Header5>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-xl-4\">\r\n <dl>\r\n <dt>Program</dt>\r\n <dd>{data.plan || ' - '}</dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-6 col-xl-4\">\r\n <dl>\r\n <dt>Status</dt>\r\n <dd>{data.status || ' - '}</dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-12 col-xl-4 col-lg-6 col-md-6\">\r\n <dl>\r\n <dt>Standard Monthly Payment</dt>\r\n <dd>{oldPayment < 0 ? '—' : formatAsMoney(oldPayment)}</dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-12 col-xl-4 col-lg-6 col-md-6\">\r\n <dl>\r\n <dt>Income-Driven Monthly Payment</dt>\r\n <dd>\r\n {newPayment < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(newPayment)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-12 col-xl-4 col-lg-6 col-md-6\">\r\n <dl>\r\n <dt>Monthly Savings</dt>\r\n <dd>\r\n {monthlySavings < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlySavings)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n </dl>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-xl-10\">\r\n {oldPayment >= 0 && newPayment >= 0 && oldPayment > newPayment ? (\r\n <PaymentCompare\r\n oldPayment={oldPayment}\r\n newPayment={newPayment}\r\n year={data.year}\r\n />\r\n ) : (\r\n ''\r\n )}\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n </CardText>\r\n </CardBody>\r\n <FlexFooter>\r\n <Link to=\"/benefits/simplifi\">My SimpliFi</Link>\r\n <Link to=\"/accounts\">My Accounts</Link>\r\n </FlexFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nSimpliFiSummary.propTypes = {\r\n data: t.object,\r\n id: t.string.isRequired,\r\n load: t.func.isRequired,\r\n monthlyPayment: t.number,\r\n monthlySavings: t.number,\r\n standardPayment: t.number,\r\n newPayment: t.number,\r\n oldPayment: t.number,\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: getSimplifiData(state),\r\n id: getUserId(state),\r\n monthlyPayment: getMonthlyPayment(state),\r\n monthlySavings: getMonthlySavings(state),\r\n standardPayment: getStandardPayment(state),\r\n newPayment: getNewPayment(state),\r\n oldPayment: getOldPayment(state),\r\n request: state.simplifi.requests.loadResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => dispatch(simplifiLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SimpliFiSummary);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <strong>Step 1 – Sign consolidation application</strong>\r\n <ul>\r\n <li>Electronically sign the application.</li>\r\n <li>\r\n Please verify your Social Security Number is present on all pages up to the signature page.\r\n </li>\r\n <li>Please verify that your address on line #9 is not a P.O. box.</li>\r\n <li>\r\n Please verify that your references at the bottom of page one have different home addresses\r\n and phone numbers from both you and each other.\r\n </li>\r\n </ul>\r\n <strong>Step 2 – Access your loan servicer account(s)</strong>\r\n <ul>\r\n <li>Login to your loan servicer account(s).</li>\r\n <li>\r\n Verify the number of loans on your consolidation application matches the number of loans\r\n with an outstanding balance at your servicer(s).\r\n </li>\r\n </ul>\r\n <strong>Step 3 – Confirm the status of your loan(s)</strong>\r\n <ul>\r\n <li>Do not submit your application if your loans appear in the following statuses:</li>\r\n <ul>\r\n <li>In-school</li>\r\n <li>Deferment</li>\r\n <li>Default</li>\r\n <ul>\r\n <li>If your loans are currently in any of these statuses, please contact us.</li>\r\n </ul>\r\n </ul>\r\n </ul>\r\n <strong>Step 4 – Submit your application to MOHELA</strong>\r\n <ul>\r\n <li>\r\n Upload the signed agreement to{' '}\r\n <a href=\"https://www.mohela.com\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n MOHELA\r\n </a>{' '}\r\n if you have an account.\r\n </li>\r\n </ul>\r\n Or\r\n <ul>\r\n <li>\r\n Fax your completed application to MOHELA at 866.222.7060 if you do not have an account.\r\n </li>\r\n <li>\r\n <strong>Please note:</strong> You will be able to create an account with MOHELA\r\n approximately three weeks after the application is submitted.\r\n </li>\r\n </ul>\r\n </>\r\n);\r\n\r\nconst ConsolidationComplete = withRouter((props) => (\r\n <TodoComplete\r\n {...props}\r\n onComplete={() => props.history.push('/documents')}\r\n text={<TodoText />}\r\n title=\"Submit Consolidation Application\"\r\n />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ConsolidationComplete);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { TodoComplete, todosCopyResourceToForm, todosUpdateResource } from '../../../todos';\r\n\r\nconst TodoText = () => (\r\n <>\r\n <strong>Step 1 – Access your MOHELA account</strong>\r\n <ul>\r\n <li>\r\n Create or Login to your account at{' '}\r\n <a href=\"https://www.mohela.com\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n MOHELA.\r\n </a>\r\n </li>\r\n <li>\r\n You will not be able to create an account for about <strong>three to four weeks</strong>.\r\n </li>\r\n </ul>\r\n <strong>Step 2 – Check on the status of the consolidation</strong>\r\n <ul>\r\n <li>Check your Account Summary for updates on the status.</li>\r\n <li>\r\n <strong>Please note:</strong> It typically takes <strong>four to six weeks</strong> for a\r\n consolidation to process, with the first change in status occurring approximately three\r\n weeks after you submit.\r\n </li>\r\n <li>What are you looking for?</li>\r\n <ul>\r\n <li>Notifications that indicate the consolidation is progressing.</li>\r\n <li>Examples include:</li>\r\n <ul>\r\n <li>Consolidation Application Received</li>\r\n <li>Consolidation Request Almost Complete</li>\r\n <li>We Completed Your Consolidation!</li>\r\n </ul>\r\n </ul>\r\n </ul>\r\n <strong>Step 3 – Confirm completion</strong>\r\n <ul>\r\n <li>\r\n You will receive a letter titled “We Completed Your Consolidation!†in your MOHELA inbox.\r\n Once received, confirm the number of loans on the letter matches the number of loans on your\r\n consolidation application.\r\n </li>\r\n <li>\r\n Confirm that the entire loan balance shown on your consolidation application has been\r\n transferred to MOHELA.\r\n </li>\r\n <li>\r\n Confirm all loans that were included in the consolidation have a balance of $0 at your\r\n previous loan servicer(s).\r\n </li>\r\n <li>\r\n <strong>Please Note:</strong> your consolidation application can take up to two months to\r\n process.\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have verified the transfer is complete.\r\n </strong>\r\n <br />\r\n If you submitted your consolidation more than two months ago and your loan balance has not\r\n transferred, please visit the Contact Us button on the left of your portal to reach out to us.\r\n {/* contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a> option: 2. */}\r\n </>\r\n);\r\n\r\nconst ConsolidationCheck = withRouter((props) => (\r\n <TodoComplete\r\n {...props}\r\n onComplete={() => props.history.push('/documents')}\r\n text={<TodoText />}\r\n title=\"Finalize Your Consolidation\"\r\n />\r\n));\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.todos.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n action: async () => {\r\n await dispatch(todosCopyResourceToForm(ownProps.id));\r\n await dispatch(todosUpdateResource(ownProps.id, ownProps.id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ConsolidationCheck);\r\n","import React, { useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n DashboardSection,\r\n BrandColor,\r\n Header2,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { MyReferences } from '../../../references';\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nimport PaymentCompare from '../components/payment-compare';\r\nimport { simplifiLoadResource } from '../redux/operations';\r\nimport {\r\n getMonthlyPayment,\r\n getMonthlySavings,\r\n getNewPayment,\r\n getOldPayment,\r\n getSimplifiData,\r\n} from '../redux/selectors';\r\n\r\nconst MySimpliFi = ({\r\n // withPermissions(\r\n data = {},\r\n id,\r\n load,\r\n monthlyPayment,\r\n monthlySavings,\r\n newPayment,\r\n oldPayment,\r\n request,\r\n}) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n return (\r\n <DashboardSection title=\"My SimpliFi\">\r\n <Header2>Lower and simplify your payments through our SimpliFi program.</Header2>\r\n <AsyncLoader request={request}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-10\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Consolidation</CardTitle>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-6\">\r\n <dl>\r\n <dt>Program</dt>\r\n <dd>{data.plan || ' - '}</dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-6\">\r\n <dl>\r\n <dt>Status</dt>\r\n <dd>{data.status || ' - '}</dd>\r\n </dl>\r\n </div>\r\n </div>\r\n {data.message || ''}\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-4\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Plan Details</CardTitle>\r\n <CardText>\r\n <dl>\r\n <dt>Qualifying Plan</dt>\r\n <dd>{data.program || '—'}</dd>\r\n <dt>Status</dt>\r\n <dd>{data.status || '—'}</dd>\r\n <dt>IDR Monthly Payment</dt>\r\n <dd>\r\n {newPayment < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(newPayment)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n <dt>Monthly Savings</dt>\r\n <dd>\r\n {monthlySavings < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlySavings)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n </dl>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-12 col-lg-6\">\r\n <MyReferences showTitle={true} />\r\n </div>\r\n {oldPayment >= 0 && newPayment >= 0 && oldPayment > newPayment && (\r\n <div className=\"col-12 col-lg-6\">\r\n <PaymentCompare oldPayment={oldPayment} newPayment={newPayment} year={data.year} />\r\n </div>\r\n )}\r\n </div>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n );\r\n};\r\n\r\nMySimpliFi.propTypes = {\r\n data: t.object,\r\n id: t.string.isRequired,\r\n load: t.func.isRequired,\r\n monthlyPayment: t.number,\r\n monthlySavings: t.number,\r\n newPayment: t.number,\r\n oldPayment: t.number,\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: getSimplifiData(state),\r\n id: getUserId(state),\r\n monthlyPayment: getMonthlyPayment(state),\r\n monthlySavings: getMonthlySavings(state),\r\n newPayment: getNewPayment(state),\r\n oldPayment: getOldPayment(state),\r\n request: state.simplifi.requests.loadResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => dispatch(simplifiLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MySimpliFi);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('simplifi', types);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('tuition');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\nimport { TuitionValidator } from './validators';\r\n\r\nconst tuitionValidator = new TuitionValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/tuition-reimbursement',\r\n resourceType: 'tuition-reimbursement',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'tuition',\r\n actions,\r\n null,\r\n tuitionValidator,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n tuitionLoadResource,\r\n tuitionCopyResourceToForm,\r\n tuitionHandleFormChange,\r\n tuitionUpdateResource,\r\n} = operations;\r\n\r\nexport {\r\n tuitionLoadResource,\r\n tuitionCopyResourceToForm,\r\n tuitionHandleFormChange,\r\n tuitionUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('tuition', types);\r\n","import { FormValidator } from '../../../utils';\r\n\r\nexport class TuitionValidator extends FormValidator {\r\n // Account tab validators\r\n approverEmail(validator, data) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n validator.isValidEmail();\r\n validator.valueMatchesList(data.approverEmail, data.clientEmails);\r\n }\r\n}\r\n","import { getUserId } from '../../../auth';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nexport const getTuitionData = (state) =>\r\n safeAccess(state, `tuition.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getTuitionInstitutionData = (state) => safeAccess(state, 'tuitionInstitution.cache');\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('tuitionInstitution');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('tuitionInstitution', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n Modal,\r\n Header5,\r\n InputAutocomplete,\r\n AsyncLoader,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../root';\r\nimport { safeAccess, getApi, stringIsNullOrEmpty } from '../../utils';\r\nimport { Fade } from '../../routing';\r\nimport { getToken } from '../../auth';\r\nimport { connect } from 'react-redux';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst ResultWrapper = styled.div`\r\n color: ${(p) => p.theme.textSecondary};\r\n`;\r\n\r\nconst InstitutionWrapper = styled.div`\r\n align-self: stretch;\r\n align-items: center;\r\n display: flex;\r\n`;\r\n\r\nconst Highlight = styled.strong`\r\n background-color: ${(p) => p.theme.colorLevel(p.theme.warning, -5)};\r\n`;\r\n\r\nclass TuitionInstitutionForm extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n getResource: t.object,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n onUpdateDropdown: t.func.isRequired,\r\n token: t.any,\r\n allowedDegreeTypes: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showFetcher: false };\r\n this.modalRef = React.createRef();\r\n this.firstInput = React.createRef();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n // if (!prevProps.isOpen && this.props.isOpen) {\r\n // // TODO: this focuses correctly, but loses focus right afterwards for some reason\r\n // this.firstInput.current.focus();\r\n // }\r\n /*if (!prevProps.errors.generalErrors && this.props.errors.generalErrors) {\r\n this.modalRef.current.scrollTo(0, 0);\r\n }*/\r\n\r\n if (!this.state.showFetcher) {\r\n if (\r\n (prevProps.data.institutionName !== this.props.data.institutionName &&\r\n prevProps.data.dapipId) ||\r\n this.props.action === 'Add'\r\n ) {\r\n this.setState({ ...this.state, showFetcher: true });\r\n }\r\n }\r\n }\r\n\r\n asyncFetcher = (value) => {\r\n if (value && value.length > 2) {\r\n return getApi(\r\n this.props.token,\r\n `/drop-down-list/Institution__${encodeURIComponent(value)}`\r\n ).then((data) => {\r\n if (data.length > 50) {\r\n return [\r\n {\r\n selected: false,\r\n render: () => (\r\n <ResultWrapper>\r\n <div key=\"too-many-results\">Too many results. Try narrowing it down.</div>\r\n </ResultWrapper>\r\n ),\r\n },\r\n ];\r\n } else {\r\n return data.map((institution) => ({\r\n id: institution.id,\r\n name: institution.description,\r\n render: () => this.renderInstitutionResult(institution, value),\r\n }));\r\n }\r\n });\r\n } else if (value) {\r\n return [\r\n {\r\n selected: false,\r\n render: () => (\r\n <ResultWrapper>\r\n <div key=\"need-more\">Too many results. Type more to help narrow it down.</div>\r\n </ResultWrapper>\r\n ),\r\n },\r\n ];\r\n } else {\r\n return new Promise((resolve) => resolve([]));\r\n }\r\n };\r\n\r\n asyncNullFetcher = (value) => {\r\n return new Promise((resolve) => resolve([]));\r\n };\r\n\r\n renderInstitutionResult = (institution, value) => {\r\n const parts = institution.description.split(value);\r\n return (\r\n <InstitutionWrapper>\r\n <Header5>\r\n {parts.map((part, i) => (\r\n <React.Fragment key={i}>\r\n {part}\r\n {i + 1 !== parts.length && <Highlight>{value}</Highlight>}\r\n </React.Fragment>\r\n ))}\r\n </Header5>\r\n </InstitutionWrapper>\r\n );\r\n };\r\n\r\n getForm() {\r\n const {\r\n action,\r\n data,\r\n errors,\r\n onChange,\r\n onSubmit,\r\n onUpdateDropdown,\r\n allowedDegreeTypes,\r\n } = this.props;\r\n\r\n return (\r\n <Form defaults={data} handleChange={onChange} id={data.id || 'create'} onSubmit={onSubmit}>\r\n <InputWrapper error={!!errors.degreeType}>\r\n <InputLabel htmlFor=\"degreeType\" required>\r\n Degree Type\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'degreeType.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"degreeType\"\r\n value={data.degreeType}\r\n options={allowedDegreeTypes}\r\n disabled={action === 'Delete'}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <Fade show={data.degreeType}>\r\n <Fade show={data.degreeType === 'CERT'}>\r\n <InputWrapper error={!!errors.institutionName}>\r\n <InputLabel required>Certification Location</InputLabel>\r\n <InputError>{safeAccess(errors, 'institutionName.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputText\r\n name=\"institutionName\"\r\n placeholder=\"Certification Location\"\r\n defaultValue={data.institutionName || ''}\r\n disabled={action === 'Delete'}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n <Fade show={data.degreeType !== 'CERT'}>\r\n <InputWrapper error={!!errors.institutionName}>\r\n <InputLabel required>Institution Name</InputLabel>\r\n <InputError>{safeAccess(errors, 'institutionName.detail')}</InputError>\r\n <InputGroup affordance=\"large\">\r\n <InputAutocomplete\r\n fetcher={this.state.showFetcher ? this.asyncFetcher : this.asyncNullFetcher}\r\n name=\"institutionName\"\r\n placeholder=\"Institution Name\"\r\n onSelect={onUpdateDropdown}\r\n defaultValue={data.institutionName || ''}\r\n disabled={action === 'Delete'}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n </Fade>\r\n </Form>\r\n );\r\n }\r\n\r\n enableSubmit = () => {\r\n return this.checkNoMissingData() && this.checkNoErrors();\r\n };\r\n\r\n checkNoMissingData = () => {\r\n const { data = {} } = this.props;\r\n return !stringIsNullOrEmpty(data.institutionName) && !stringIsNullOrEmpty(data.degreeType);\r\n };\r\n\r\n checkNoErrors = () => {\r\n const { errors = {} } = this.props;\r\n return !errors.institutionName && !errors.degreeType && !errors.dapipId;\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (!this.props.isLoading) {\r\n this.props.onSubmit();\r\n }\r\n };\r\n\r\n render() {\r\n const { action, getResource, closeForm, errors = {}, isLoading, isOpen } = this.props;\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen}>\r\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\r\n <CardHeader>{action} Institution</CardHeader>\r\n <CardBody>\r\n {errors.generalErrors &&\r\n errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n {action === 'Add' && <TextLeft>{this.getForm()}</TextLeft>}\r\n {(action === 'Update' || action === 'Delete') && (\r\n <AsyncLoader request={getResource}>\r\n <TextLeft>{this.getForm()}</TextLeft>\r\n </AsyncLoader>\r\n )}\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Fade show={this.enableSubmit()}>\r\n <Button brand=\"success\" onClick={(e) => this.submit(e)}>\r\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : action + ' institution'}\r\n </Button>\r\n </Fade>\r\n <Fade show={!getResource.isLoading && !this.checkNoMissingData()}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade\r\n show={!getResource.isLoading && this.checkNoMissingData() && !this.checkNoErrors()}\r\n >\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n token: getToken(state),\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(TuitionInstitutionForm);\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('tuitionInstitution', types);\r\n","import actions from './actions';\r\nimport { normalize, patchApi, resourceOperationsGenerator } from '../../utils';\r\nimport { getToken } from '../../auth';\r\nimport { TuitionInstitutionValidator } from './validators';\r\n\r\nconst tuitionInstitutionValidator = new TuitionInstitutionValidator();\r\n\r\nconst endpointHandler = {\r\n endpoint: '/tuition-reimbursement-institution',\r\n customResponseHandler: null,\r\n resourceType: 'tuition-reimbursement-institution',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'tuitionInstitution',\r\n actions,\r\n null,\r\n tuitionInstitutionValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n tuitionInstitutionClearForm,\r\n tuitionInstitutionCopyResourceToForm,\r\n tuitionInstitutionHandleFormChange,\r\n tuitionInstitutionLoadResource,\r\n tuitionInstitutionLoadCollection,\r\n tuitionInstitutionCreateResource,\r\n tuitionInstitutionDeleteResource,\r\n} = operations;\r\n\r\nconst institutionCreateResource = () => async (dispatch, getState) => {\r\n const addedId = await dispatch(tuitionInstitutionCreateResource());\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n return addedId;\r\n};\r\n\r\nconst institutionUpdateResource = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n try {\r\n dispatch(actions.tuitionInstitutionUpdateResourceRequest());\r\n const patchData = normalize('tuition-reimbursement-institution', state.tuitionInstitution.form);\r\n await patchApi(getToken(state), `/tuition-reimbursement-institution/${id}`, patchData);\r\n\r\n dispatch(actions.tuitionInstitutionUpdateResourceResponse());\r\n\r\n dispatch(actions.tuitionInstitutionUpdateResourceSuccess());\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n } catch (error) {\r\n dispatch(operations.tuitionInstitutionHandleError(error));\r\n dispatch(actions.tuitionInstitutionUpdateResourceFailure(error));\r\n }\r\n};\r\n\r\nconst institutionDeleteResource = (id) => async (dispatch, getState) => {\r\n await dispatch(tuitionInstitutionDeleteResource(id));\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n};\r\n\r\nexport {\r\n tuitionInstitutionClearForm,\r\n tuitionInstitutionCopyResourceToForm,\r\n tuitionInstitutionHandleFormChange,\r\n tuitionInstitutionLoadResource,\r\n tuitionInstitutionLoadCollection,\r\n institutionCreateResource,\r\n institutionDeleteResource,\r\n institutionUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class TuitionInstitutionValidator extends FormValidator {\r\n degreeType(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n institutionName(validator, state) {\r\n validator.isRequired();\r\n validator.hasMaxLength(500);\r\n if (state.degreeType && state.degreeType !== 'CERT') {\r\n if (state.dapipId === undefined || state.dapipId === '' || isNaN(state.dapipId)) {\r\n validator.handleFailure('needs a valid selection.');\r\n }\r\n }\r\n }\r\n}\r\n","import React from 'react';\nimport styled from 'styled-components';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { Button, Card, CardBody, CardTitle, CardText, CardFooter } from 'fiducius-ui';\n\nimport { getToken } from '../../auth';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\nimport { faTrash } from '@fortawesome/pro-solid-svg-icons/faTrash';\n\nimport { getTuitionInstitutionData } from '../../benefits/tuition/redux/selectors';\n\nimport {\n tuitionInstitutionClearForm,\n tuitionInstitutionCopyResourceToForm,\n tuitionInstitutionHandleFormChange,\n tuitionInstitutionLoadResource,\n tuitionInstitutionLoadCollection,\n institutionDeleteResource,\n institutionUpdateResource,\n} from '../redux/operations';\n\nimport { default as TuitionInstitutionForm } from './tuition-institution-form';\n\nimport { todosLoadCollection } from '../../todos';\n\nimport { debounce, mergeRequestStatuses, getApi } from '../../utils';\n\nconst FlexFooter = styled(CardFooter)`\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n justify-content: space-between;\n & h5 {\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n justify-content: space-between;\n }\n`;\n\nconst DivEnd = styled.div`\n text-align: right;\n`;\n\nconst StyledButton = styled(Button)`\n margin-left: 1em;\n`;\n\nclass TuitionInstitutionRow extends React.Component {\n static propTypes = {\n institutionId: t.number.isRequired,\n data: t.object,\n form: t.object,\n errors: t.object,\n getRequest: t.object,\n request: t.object,\n loadInstitution: t.func.isRequired,\n clearInstitutionForm: t.func.isRequired,\n handleInstitutionForm: t.func.isRequired,\n updateInstitution: t.func.isRequired,\n handleDeleteInstitution: t.func.isRequired,\n hydrateInstitutionForm: t.func.isRequired,\n token: t.any,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n showForm: false,\n isDeleting: false,\n formId: null,\n allowedDegreeTypes: {},\n allowedCertifications: {},\n };\n }\n\n componentDidMount() {\n this.getDegreeTypeDropDownOptions();\n this.getCertificationDropDownOptions();\n }\n\n componentDidUpdate(prevProps) {}\n\n getDegreeTypeDropDownOptions = () => {\n getApi(this.props.token, '/drop-down-list/DegreeType__A').then((data) => {\n let degrees = {};\n Object.keys(data).forEach((a) => {\n degrees[data[a].id] = data[a].description;\n });\n this.setState({ ...this.state, allowedDegreeTypes: degrees });\n });\n };\n\n getCertificationDropDownOptions = () => {\n getApi(this.props.token, '/drop-down-list/Certification__A').then((data) => {\n let certifications = {};\n Object.keys(data).forEach((a) => {\n certifications[data[a].description] = data[a].description;\n });\n this.setState({ ...this.state, allowedCertifications: certifications });\n });\n };\n\n editInstitution = () => {\n this.props.hydrateInstitutionForm(this.props.institutionId);\n this.setState({\n formId: this.props.institutionId,\n showForm: true,\n isDeleting: false,\n });\n };\n deleteInstitution = () => {\n this.props.hydrateInstitutionForm(this.props.institutionId);\n this.setState({\n formId: this.props.institutionId,\n showForm: true,\n isDeleting: true,\n });\n };\n\n updateInstitutionDropdown = debounce((institutionSelection) => {\n let formData = this.props.form;\n formData['institutionName'] = institutionSelection['name'];\n formData['dapipId'] = institutionSelection['id'];\n this.props.handleInstitutionForm({ ...formData }, ['institutionName', 'dapipId']);\n }, 250);\n\n onUpdateInstitution = () => this.props.updateInstitution(this.props.form.id);\n\n onDeleteInstitution = () => {\n this.props.handleDeleteInstitution(this.props.form.id);\n };\n\n onChangeInstitution = debounce((tuitionInstitution, id, attributes) => {\n this.props.handleInstitutionForm({ ...this.props.form, ...tuitionInstitution }, [attributes]);\n }, 250);\n\n closeForm = () => {\n this.props.clearInstitutionForm();\n this.setState({\n ...this.state,\n showForm: false,\n formId: null,\n });\n };\n\n getDegreeText = (degreeType) => {\n const { data = {}, institutionId } = this.props;\n let retVal = '';\n if (degreeType) {\n if (degreeType === 'CERT') {\n retVal = 'Certification';\n } else if (degreeType === 'ASSOC') {\n retVal = 'Associates';\n } else if (degreeType === 'BA') {\n retVal = 'Bachelors';\n } else if (degreeType === 'MA') {\n retVal = 'Masters';\n } else if (degreeType === 'PHD') {\n retVal = 'Doctorate';\n } else if (degreeType === 'SPECIAL') {\n const institution = data[institutionId];\n retVal = institution.specialDegreeName;\n }\n }\n return retVal;\n };\n\n render() {\n const { data = {}, institutionId, request, errors, form = {}, getRequest } = this.props;\n const { showForm, formId, isDeleting, allowedDegreeTypes } = this.state;\n const institution = data[institutionId];\n return (\n <>\n <Card>\n <CardBody>\n <CardTitle>\n <div className=\"row\">\n <div className=\"col\">{institution.institutionName}</div>\n <DivEnd className=\"col-5\">\n <StyledButton\n invert\n brand=\"secondary\"\n onClick={() => this.editInstitution()}\n disabled={!institution.editable}\n title={\n !institution.editable\n ? 'A term has been added for this institution, so the institution cannot be edited.'\n : 'Edit Institution'\n }\n >\n <FontAwesomeIcon icon={faEdit} fixedWidth />\n </StyledButton>\n <StyledButton\n invert\n brand=\"danger\"\n onClick={() => this.deleteInstitution()}\n disabled={!institution.deletable}\n title={\n !institution.deletable\n ? 'A term has been added for this institution, so the institution cannot be deleted.'\n : 'Delete Institution'\n }\n >\n <FontAwesomeIcon icon={faTrash} fixedWidth />\n </StyledButton>\n </DivEnd>\n </div>\n </CardTitle>\n <CardText>\n <dl>\n <dt>Degree Type</dt>\n <dd>{this.getDegreeText(institution.degreeType)}</dd>\n </dl>\n </CardText>\n </CardBody>\n {false && (\n <FlexFooter>\n <Button\n invert\n brand=\"secondary\"\n onClick={() => this.editInstitution()}\n disabled={!institution.editable}\n title={\n !institution.editable\n ? 'You cannot edit an institution that has a current term associated with it.'\n : ''\n }\n >\n Edit\n </Button>\n <Button\n invert\n brand=\"danger\"\n onClick={() => this.deleteInstitution()}\n disabled={!institution.deletable}\n title={\n !institution.deletable\n ? 'You cannot delete an institution that has term information associated with it.'\n : ''\n }\n >\n Delete\n </Button>\n </FlexFooter>\n )}\n </Card>\n {showForm && (\n <TuitionInstitutionForm\n action={formId ? (isDeleting ? 'Delete' : 'Update') : 'Add'}\n closeForm={this.closeForm}\n data={form}\n allowedDegreeTypes={allowedDegreeTypes}\n errors={errors}\n isLoading={request.isLoading}\n getResource={getRequest}\n isOpen={showForm}\n onChange={this.onChangeInstitution}\n onUpdateDropdown={this.updateInstitutionDropdown}\n onSubmit={\n formId\n ? isDeleting\n ? this.onDeleteInstitution\n : this.onUpdateInstitution\n : this.onCreateInstitution\n }\n />\n )}\n </>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const { requests, errors, form } = state.tuitionInstitution;\n return {\n data: getTuitionInstitutionData(state),\n token: getToken(state),\n getRequest: requests.loadResource,\n errors: errors,\n form: form,\n request: mergeRequestStatuses([\n requests.createResource,\n requests.updateResource,\n requests.deleteResource,\n ]),\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n loadInstitution: () => dispatch(tuitionInstitutionLoadCollection()),\n\n clearInstitutionForm: () => dispatch(tuitionInstitutionClearForm()),\n handleInstitutionForm: (tuitionInstitution, attributes) =>\n dispatch(tuitionInstitutionHandleFormChange(tuitionInstitution, attributes)),\n hydrateInstitutionForm: async (id) => {\n await dispatch(tuitionInstitutionLoadResource(id));\n await dispatch(tuitionInstitutionCopyResourceToForm(id));\n },\n updateInstitution: async (id) => {\n await dispatch(institutionUpdateResource(id));\n await dispatch(tuitionInstitutionLoadCollection());\n dispatch(todosLoadCollection());\n dispatch(tuitionInstitutionClearForm());\n },\n handleDeleteInstitution: async (id) => {\n await dispatch(institutionDeleteResource(id));\n await dispatch(tuitionInstitutionLoadCollection());\n dispatch(todosLoadCollection());\n dispatch(tuitionInstitutionClearForm());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionInstitutionRow);\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('tuitionInstitutionTerm');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('tuitionInstitutionTerm', types);\r\n","import React from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Alert,\n Button,\n Card,\n CardBody,\n CardFooter,\n CardHeader,\n Form,\n InputAddon,\n InputError,\n InputGroup,\n InputHelp,\n InputLabel,\n InputMask,\n InputSelect,\n InputText,\n InputWrapper,\n Loader,\n Modal,\n AsyncLoader,\n} from 'fiducius-ui';\n\nimport { FlexBetween } from '../../root';\nimport { convertIsoToSlash, safeAccess, stringIsNullOrEmpty } from '../../utils';\nimport { Fade } from '../../routing';\n\nconst TextLeft = styled.div`\n text-align: left;\n`;\n\nclass TuitionInstitutionTermForm extends React.Component {\n static propTypes = {\n action: t.string,\n closeForm: t.func.isRequired,\n data: t.object,\n errors: t.object,\n isLoading: t.bool,\n isOpen: t.bool,\n getResource: t.object,\n onChange: t.func.isRequired,\n onSubmit: t.func.isRequired,\n institutionList: t.object.isRequired,\n defaultInstitutionId: t.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n this.modalRef = React.createRef();\n this.firstInput = React.createRef();\n }\n\n componentDidUpdate(prevProps) {\n // if (!prevProps.isOpen && this.props.isOpen) {\n // // TODO: this focuses correctly, but loses focus right afterwards for some reason\n // this.firstInput.current.focus();\n // }\n /*if (!prevProps.errors.generalErrors && this.props.errors.generalErrors) {\n this.modalRef.current.scrollTo(0, 0);\n }*/\n }\n\n getForm() {\n const {\n action,\n data,\n errors,\n onChange,\n onSubmit,\n institutionList,\n defaultInstitutionId,\n } = this.props;\n\n return (\n <Form defaults={data} handleChange={onChange} id={data.id || 'create'} onSubmit={onSubmit}>\n <InputWrapper error={!!errors.institutionId}>\n <InputLabel htmlFor=\"institutionId\" required>\n Institution\n </InputLabel>\n <InputError>{safeAccess(errors, 'institutionId.detail')}</InputError>\n <InputGroup>\n <InputSelect\n name=\"institutionId\"\n defaultValue={defaultInstitutionId || data.institutionId || ''}\n options={institutionList}\n disabled={action === 'Delete' || action === 'Add'}\n />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.termName}>\n <InputLabel htmlFor=\"termName\" required>\n Term / Semester Name\n </InputLabel>\n <InputError>{safeAccess(errors, 'termName.detail')}</InputError>\n <InputGroup>\n <InputText\n name=\"termName\"\n defaultValue={data.termName}\n disabled={action === 'Delete'}\n />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.startDate}>\n <InputLabel htmlFor=\"startDate\" required>\n Term / Semester Start Date\n </InputLabel>\n <InputError>{safeAccess(errors, 'startDate.detail')}</InputError>\n <InputGroup>\n <InputMask\n defaultValue={convertIsoToSlash(data.startDate)}\n mask=\"##/##/####\"\n name={'startDate'}\n placeholder=\"MM/DD/YYYY\"\n disabled={action === 'Delete'}\n />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.endDate}>\n <InputLabel htmlFor=\"endDate\" required>\n Term / Semester End Date\n </InputLabel>\n <InputError>{safeAccess(errors, 'endDate.detail')}</InputError>\n <InputGroup>\n <InputMask\n defaultValue={convertIsoToSlash(data.endDate)}\n mask=\"##/##/####\"\n name={'endDate'}\n placeholder=\"MM/DD/YYYY\"\n disabled={action === 'Delete'}\n />\n </InputGroup>\n </InputWrapper>\n <InputWrapper error={!!errors.totalCost}>\n <InputLabel htmlFor=\"totalCost\" required>\n Term / Semester Total Cost\n </InputLabel>\n <InputError>{safeAccess(errors, 'totalCost.detail')}</InputError>\n <InputGroup>\n <InputAddon>$</InputAddon>\n <InputText\n name=\"totalCost\"\n defaultValue={data.totalCost}\n disabled={action === 'Delete'}\n />\n </InputGroup>\n <InputHelp>\n You may be eligible to receive reimbursement for the full requested term/semester cost.\n However, your request will reviewed upon completion of your term/semester and may be\n adjusted to ensure adherence to your employer's policy.\n </InputHelp>\n </InputWrapper>\n <InputWrapper error={!!errors.costPerCreditHour}>\n <InputLabel htmlFor=\"costPerCreditHour\">Term / Semester Cost Per Credit Hour</InputLabel>\n <InputError>{safeAccess(errors, 'costPerCreditHour.detail')}</InputError>\n <InputGroup>\n <InputAddon>$</InputAddon>\n <InputText\n name=\"costPerCreditHour\"\n defaultValue={data.costPerCreditHour}\n disabled={action === 'Delete'}\n />\n </InputGroup>\n </InputWrapper>\n </Form>\n );\n }\n\n enableSubmit = () => {\n return this.checkNoMissingData() && this.checkNoErrors();\n };\n\n checkNoMissingData = () => {\n const { data = {}, defaultInstitutionId } = this.props;\n return (\n (data.institutionId !== undefined || defaultInstitutionId !== undefined) &&\n !stringIsNullOrEmpty(data.termName) &&\n !stringIsNullOrEmpty(data.startDate) &&\n !stringIsNullOrEmpty(data.endDate) &&\n !stringIsNullOrEmpty(data.totalCost)\n );\n };\n\n checkNoErrors = () => {\n const { data = {}, errors = {} } = this.props;\n return (\n this.validDate(data.startDate) &&\n this.validDate(data.endDate) &&\n !isNaN(data.totalCost) &&\n !errors.institutionId &&\n !errors.termName &&\n !errors.startDate &&\n !errors.endDate &&\n !errors.totalCost &&\n !errors.costPerCreditHour\n );\n };\n\n validDate = (theDate) => {\n let retVal = true;\n if (\n theDate === undefined ||\n theDate === '' ||\n new Date(theDate) === 'Invalid date' ||\n !(new Date(theDate) > new Date('01/01/1900'))\n ) {\n retVal = false;\n }\n return retVal;\n };\n\n submit = (e) => {\n e.preventDefault();\n if (!this.props.isLoading) {\n this.props.onSubmit();\n }\n };\n\n render() {\n const { getResource, action, closeForm, errors = {}, isLoading, isOpen } = this.props;\n\n return (\n <Modal ref={this.modalRef} isOpen={isOpen}>\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\n <CardHeader>{action} Term</CardHeader>\n <CardBody>\n {errors.generalErrors &&\n errors.generalErrors.map((e, i) => (\n <Alert key={i} brand=\"danger\">\n {e.detail}\n </Alert>\n ))}\n {action === 'Add' && <TextLeft>{this.getForm()}</TextLeft>}\n {(action === 'Update' || action === 'Delete') && (\n <AsyncLoader request={getResource}>\n <TextLeft>{this.getForm()}</TextLeft>\n </AsyncLoader>\n )}\n </CardBody>\n <CardFooter>\n <FlexBetween>\n <Button brand=\"lowContrast\" onClick={closeForm}>\n Cancel\n </Button>\n <Fade show={this.enableSubmit()}>\n <Button brand=\"success\" type=\"submit\" onClick={(e) => this.submit(e)}>\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : action + ' term'}\n </Button>\n </Fade>\n <Fade show={!getResource.isLoading && !this.checkNoMissingData()}>\n Please enter the missing information above.\n </Fade>\n <Fade\n show={!getResource.isLoading && this.checkNoMissingData() && !this.checkNoErrors()}\n >\n Please fix the errors above.\n </Fade>\n </FlexBetween>\n </CardFooter>\n </Card>\n </Modal>\n );\n }\n}\n\nexport default TuitionInstitutionTermForm;\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('tuitionInstitutionTerm', types);\r\n","import actions from './actions';\r\nimport { normalize, patchApi, postApi, resourceOperationsGenerator, safeAccess } from '../../utils';\r\nimport { getToken } from '../../auth';\r\nimport { TuitionInstitutionTermValidator } from './validators';\r\n\r\nconst tuitionInstitutionTermValidator = new TuitionInstitutionTermValidator();\r\n\r\nconst endpointHandler = {\r\n endpoint: '/tuition-reimbursement-term',\r\n customResponseHandler: null,\r\n resourceType: 'tuition-reimbursement-term',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'tuitionInstitutionTerm',\r\n actions,\r\n null,\r\n tuitionInstitutionTermValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n tuitionInstitutionTermClearForm,\r\n tuitionInstitutionTermCopyResourceToForm,\r\n tuitionInstitutionTermHandleFormChange,\r\n tuitionInstitutionTermLoadResource,\r\n tuitionInstitutionTermLoadCollection,\r\n tuitionInstitutionTermDeleteResource,\r\n} = operations;\r\n\r\nconst termCreateResource = () => async (dispatch, getState) => {\r\n const state = getState();\r\n\r\n try {\r\n dispatch(actions.tuitionInstitutionTermCreateResourceRequest());\r\n if (state.tuitionInstitutionTerm.form.costPerCreditHour === '') {\r\n state.tuitionInstitutionTerm.form.costPerCreditHour = null;\r\n }\r\n const postData = normalize('tuition-reimbursement-term', state.tuitionInstitutionTerm.form);\r\n let data = await postApi(getToken(state), '/tuition-reimbursement-term/', postData);\r\n\r\n dispatch(actions.tuitionInstitutionTermCreateResourceResponse());\r\n dispatch(actions.tuitionInstitutionTermCreateResourceSuccess());\r\n\r\n const addedId = safeAccess(data[0], 'id') || -1;\r\n return addedId;\r\n } catch (error) {\r\n dispatch(operations.tuitionInstitutionTermHandleError(error));\r\n dispatch(actions.tuitionInstitutionTermCreateResourceFailure(error));\r\n }\r\n};\r\n\r\nconst termUpdateResource = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n let retVal = false;\r\n try {\r\n dispatch(actions.tuitionInstitutionTermUpdateResourceRequest());\r\n if (state.tuitionInstitutionTerm.form.costPerCreditHour === '') {\r\n state.tuitionInstitutionTerm.form.costPerCreditHour = null;\r\n }\r\n const patchData = normalize('tuition-reimbursement-term', state.tuitionInstitutionTerm.form);\r\n await patchApi(getToken(state), `/tuition-reimbursement-term/${id}`, patchData);\r\n dispatch(actions.tuitionInstitutionTermUpdateResourceResponse());\r\n\r\n dispatch(actions.tuitionInstitutionTermUpdateResourceSuccess());\r\n const errors = safeAccess(state.tuitionInstitutionTerm, 'errors');\r\n if (!!errors || !!errors.totalCost) {\r\n retVal = true;\r\n }\r\n } catch (error) {\r\n dispatch(operations.tuitionInstitutionTermHandleError(error));\r\n dispatch(actions.tuitionInstitutionTermUpdateResourceFailure(error));\r\n }\r\n\r\n return retVal;\r\n};\r\n\r\nconst termDeleteResource = (id) => async (dispatch, getState) => {\r\n await dispatch(tuitionInstitutionTermDeleteResource(id));\r\n};\r\n\r\nexport {\r\n tuitionInstitutionTermClearForm,\r\n tuitionInstitutionTermCopyResourceToForm,\r\n tuitionInstitutionTermHandleFormChange,\r\n tuitionInstitutionTermLoadResource,\r\n tuitionInstitutionTermLoadCollection,\r\n termCreateResource,\r\n termDeleteResource,\r\n termUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../utils';\r\nimport { format } from 'date-fns';\r\n\r\nexport class TuitionInstitutionTermValidator extends FormValidator {\r\n institutionId(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n\r\n termName(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(50);\r\n }\r\n\r\n startDate(validator, state) {\r\n validator.isRequired();\r\n let startDateLimit = new Date();\r\n startDateLimit.setDate(startDateLimit.getDate() + 90);\r\n startDateLimit = format(startDateLimit, 'MM/dd/yyyy');\r\n\r\n validator.validDate();\r\n validator.isBeforeDate(startDateLimit);\r\n if (state.endDate) {\r\n validator.isBeforeDate(state.endDate);\r\n }\r\n }\r\n\r\n endDate(validator, state) {\r\n validator.isRequired();\r\n validator.validDate();\r\n validator.isAfterDate(state.startDate);\r\n }\r\n\r\n totalCost(validator) {\r\n validator.isRequired();\r\n validator.validNumber();\r\n }\r\n\r\n costPerCreditHour(validator) {\r\n if (validator.value) {\r\n validator.validNumber();\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { Button, Card, CardBody, CardTitle, CardText, CardFooter } from 'fiducius-ui';\r\n\r\nimport { getToken, authLoadPermissions } from '../../auth';\r\nimport { PaddedBadge } from '../../routing';\r\nimport { convertIsoToSlash, formatAsMoney } from '../../utils';\r\n\r\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\r\nimport { faTrash } from '@fortawesome/pro-solid-svg-icons/faTrash';\r\n\r\nimport { getTuitionInstitutionData } from '../../benefits/tuition/redux/selectors';\r\n\r\nimport { tuitionInstitutionLoadCollection } from '../../tuition-institution';\r\n\r\nimport { default as TuitionInstitutionTermForm } from './tuition-institution-term-form';\r\n\r\nimport {\r\n tuitionInstitutionTermClearForm,\r\n tuitionInstitutionTermCopyResourceToForm,\r\n tuitionInstitutionTermHandleFormChange,\r\n tuitionInstitutionTermLoadResource,\r\n termDeleteResource,\r\n termUpdateResource,\r\n} from '../redux/operations';\r\n\r\nimport { todosLoadCollection } from '../../todos';\r\n\r\nimport { debounce, mergeRequestStatuses } from '../../utils';\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst DivEnd = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin-left: 1em;\r\n`;\r\n\r\nclass TuitionInstitutionTermRow extends React.Component {\r\n static propTypes = {\r\n institutionId: t.number.isRequired,\r\n termId: t.number.isRequired,\r\n data: t.object,\r\n form: t.object,\r\n errors: t.object,\r\n getRequest: t.object,\r\n request: t.object,\r\n loadTerm: t.func.isRequired,\r\n clearTermForm: t.func.isRequired,\r\n handleTermForm: t.func.isRequired,\r\n updateTerm: t.func.isRequired,\r\n handleDeleteTerm: t.func.isRequired,\r\n hydrateTermForm: t.func.isRequired,\r\n token: t.any,\r\n hasMissingInformation: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showForm: false, isDeleting: false, formId: null };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n getInstitutionList = () => {\r\n const { data } = this.props;\r\n let realInstitutions = Object.keys(data).reduce(\r\n (obj, k) => ({\r\n ...obj,\r\n [k]: data[k].institutionName,\r\n }),\r\n {}\r\n );\r\n let institutions = { ...realInstitutions };\r\n return institutions;\r\n };\r\n\r\n editTerm = () => {\r\n const termId = this.props.data[this.props.institutionId].terms[this.props.termId].id;\r\n this.props.hydrateTermForm(termId);\r\n this.setState({ formId: termId, showForm: true, isDeleting: false });\r\n };\r\n deleteTerm = () => {\r\n const termId = this.props.data[this.props.institutionId].terms[this.props.termId].id;\r\n this.props.hydrateTermForm(termId);\r\n this.setState({ formId: termId, showForm: true, isDeleting: true });\r\n };\r\n\r\n onChangeTerm = debounce((tuitionInstitutionTerm, id, attributes) => {\r\n this.props.handleTermForm({ ...this.props.form, ...tuitionInstitutionTerm }, [attributes]);\r\n }, 250);\r\n\r\n onUpdateTerm = () => this.props.updateTerm(this.props.form.id);\r\n\r\n onDeleteTerm = () => this.props.handleDeleteTerm(this.props.form.id);\r\n\r\n closeForm = () => {\r\n this.props.clearTermForm();\r\n this.setState({\r\n ...this.state,\r\n showForm: false,\r\n formId: null,\r\n });\r\n };\r\n\r\n renderMissingInfoLengend = () => {\r\n this.props.hasMissingInformation(true);\r\n };\r\n\r\n render() {\r\n const { data = {}, institutionId, termId, request, errors, form = {}, getRequest } = this.props;\r\n const { showForm, formId, isDeleting } = this.state;\r\n\r\n const term = data[institutionId].terms[termId];\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col\">{term.termName}</div>\r\n <DivEnd className=\"col-5\">\r\n <StyledButton\r\n invert\r\n brand=\"secondary\"\r\n onClick={() => this.editTerm()}\r\n disabled={!term.editable}\r\n title={\r\n !term.editable\r\n ? 'A term that is past the set organizational deadline cannot be edited. See the “Policy Quick Reference†on the Overview page for more information.'\r\n : 'Edit Term'\r\n }\r\n >\r\n <FontAwesomeIcon icon={faEdit} fixedWidth />\r\n </StyledButton>\r\n <StyledButton\r\n invert\r\n brand=\"danger\"\r\n onClick={() => this.deleteTerm()}\r\n disabled={!term.deletable}\r\n title={\r\n !term.deletable\r\n ? 'A class has been added for this term, so the term cannot be deleted.'\r\n : 'Delete Term'\r\n }\r\n >\r\n <FontAwesomeIcon icon={faTrash} fixedWidth />\r\n </StyledButton>\r\n </DivEnd>\r\n </div>\r\n </CardTitle>\r\n <CardText>\r\n <div className=\"row\">\r\n <dl className=\"col-4\">\r\n <dt>Start Date</dt>\r\n <dd>{convertIsoToSlash(term.startDate)}</dd>\r\n <dt>\r\n End Date\r\n {term.editable &&\r\n (term.endDate === null ||\r\n term.endDate === undefined ||\r\n term.endDate === '') && (\r\n <PaddedBadge brand=\"primary\">\r\n {this.renderMissingInfoLengend()}\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>\r\n )}\r\n </dt>\r\n <dd>{convertIsoToSlash(term.endDate)}</dd>\r\n </dl>\r\n <dl className=\"col-4\">\r\n <dt>\r\n Total Cost of Term\r\n {term.editable && isNaN(term.totalCost) && (\r\n <PaddedBadge brand=\"primary\">\r\n {this.renderMissingInfoLengend()}\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>\r\n )}\r\n </dt>\r\n <dd>{formatAsMoney(term.totalCost)}</dd>\r\n <dt>Cost Per Credit Hour</dt>\r\n <dd>{formatAsMoney(term.costPerCreditHour)}</dd>\r\n </dl>\r\n <dl className=\"col-4\"></dl>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n {false && (\r\n <FlexFooter>\r\n <Button\r\n invert\r\n brand=\"secondary\"\r\n onClick={() => this.editTerm()}\r\n disabled={!term.editable}\r\n title={\r\n !term.editable\r\n ? 'You are unable to edit a term that is past your organizational deadline. Please refer to the `Policy Quick Reference` on the overview page for more details.'\r\n : ''\r\n }\r\n >\r\n Edit\r\n </Button>\r\n <Button\r\n invert\r\n brand=\"danger\"\r\n onClick={() => this.deleteTerm()}\r\n disabled={!term.deletable}\r\n title={\r\n !term.deletable\r\n ? 'You cannot delete a term that has classes associated to it, or if it has documents associated with it.'\r\n : ''\r\n }\r\n >\r\n Delete\r\n </Button>\r\n </FlexFooter>\r\n )}\r\n </Card>\r\n {showForm && (\r\n <TuitionInstitutionTermForm\r\n action={formId ? (isDeleting ? 'Delete' : 'Update') : 'Add'}\r\n closeForm={this.closeForm}\r\n data={form}\r\n errors={errors}\r\n isLoading={request.isLoading}\r\n getResource={getRequest}\r\n isOpen={showForm}\r\n onChange={this.onChangeTerm}\r\n onSubmit={\r\n formId ? (isDeleting ? this.onDeleteTerm : this.onUpdateTerm) : this.onCreateTerm\r\n }\r\n institutionList={this.getInstitutionList()}\r\n defaultInstitutionId={this.props.institutionId}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests, errors, form } = state.tuitionInstitutionTerm;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n token: getToken(state),\r\n getRequest: requests.loadResource,\r\n errors: errors,\r\n form: form,\r\n request: mergeRequestStatuses([\r\n requests.createResource,\r\n requests.updateResource,\r\n requests.deleteResource,\r\n ]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n clearTermForm: () => dispatch(tuitionInstitutionTermClearForm()),\r\n handleTermForm: (tuitionInstitutionTerm, attributes) =>\r\n dispatch(tuitionInstitutionTermHandleFormChange(tuitionInstitutionTerm, attributes)),\r\n hydrateTermForm: async (id) => {\r\n await dispatch(tuitionInstitutionTermLoadResource(id));\r\n await dispatch(tuitionInstitutionTermCopyResourceToForm(id));\r\n },\r\n updateTerm: async (id) => {\r\n let shouldUpdate = await dispatch(termUpdateResource(id));\r\n if (shouldUpdate) {\r\n await dispatch(authLoadPermissions());\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n dispatch(todosLoadCollection());\r\n }\r\n },\r\n handleDeleteTerm: async (id) => {\r\n await dispatch(termDeleteResource(id));\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n dispatch(todosLoadCollection());\r\n dispatch(tuitionInstitutionTermClearForm());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionInstitutionTermRow);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faAngleDown } from '@fortawesome/pro-solid-svg-icons/faAngleDown';\r\nimport { faAngleRight } from '@fortawesome/pro-solid-svg-icons/faAngleRight';\r\n\r\nimport { Card, CardBody, CardTitle, CardText, Table } from 'fiducius-ui';\r\n\r\nimport { convertIsoToSlash, formatAsMoney } from '../../utils';\r\n\r\nimport { getTuitionInstitutionData } from '../../benefits/tuition/redux/selectors';\r\n\r\nclass TuitionInstitutionHistoryTermRow extends React.Component {\r\n static propTypes = {\r\n institutionId: t.number.isRequired,\r\n termId: t.number.isRequired,\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showTerm: false,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n handleClick = () => {\r\n this.setState({\r\n showTerm: !this.state.showTerm,\r\n });\r\n };\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n const { data, institutionId, termId } = this.props;\r\n const term = data[institutionId].terms[termId];\r\n const classes = [];\r\n const classHeaders = ['Class', 'Grade', 'Hours', 'Status'];\r\n return (\r\n <Card>\r\n <CardBody>\r\n <CardTitle onClick={this.handleClick}>\r\n <FontAwesomeIcon icon={this.state.showTerm ? faAngleDown : faAngleRight} fixedWidth />\r\n {term.termName}\r\n </CardTitle>\r\n {this.state.showTerm && (\r\n <CardText>\r\n <div className=\"row\">\r\n <dl className=\"col-6\">\r\n <dt>Start Date</dt>\r\n <dd>{convertIsoToSlash(term.startDate)}</dd>\r\n <dt>End Date</dt>\r\n <dd>{convertIsoToSlash(term.endDate)}</dd>\r\n {term.reimbursementDate && (\r\n <>\r\n <dt>Reimbursement Date</dt>\r\n <dd>{convertIsoToSlash(term.reimbursementDate)}</dd>\r\n </>\r\n )}\r\n </dl>\r\n <dl className=\"col-6\">\r\n <dt>Total Cost of Term</dt>\r\n <dd>{formatAsMoney(term.totalCost)}</dd>\r\n <dt>Cost Per Credit Hour</dt>\r\n <dd>\r\n {term.costPerCreditHour ? formatAsMoney(term.costPerCreditHour) : <> </>}\r\n </dd>\r\n {!isNaN(term.reimbursedAmount) && (\r\n <>\r\n <dt>Reimbursed Amount</dt>\r\n <dd>{formatAsMoney(term.reimbursedAmount)}</dd>\r\n </>\r\n )}\r\n </dl>\r\n </div>\r\n <div className=\"col-12\">\r\n {Object.keys(term.classes).length > 0 &&\r\n Object.keys(term.classes).forEach((myClass) => {\r\n classes.push([\r\n term.classes[myClass].className,\r\n term.classes[myClass].grade,\r\n term.classes[myClass].hours,\r\n term.classes[myClass].currentStatus,\r\n ]);\r\n })}\r\n {classes.length > 0 && <Table header={classHeaders} body={classes} />}\r\n </div>\r\n </CardText>\r\n )}\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (state) => {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionInstitutionHistoryTermRow);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\nimport { convertIsoToSlash } from '../../utils';\r\n\r\nimport {\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n Table,\r\n Header4,\r\n Header5,\r\n ProgressBar,\r\n} from 'fiducius-ui';\r\n\r\nimport { getTuitionInstitutionData } from '../../benefits/tuition/redux/selectors';\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-left: 0.45em;\r\n`;\r\n\r\nconst ToolTipSpan = styled.span`\r\n @media (pointer: coarse), (hover: none) {\r\n [title] {\r\n position: relative;\r\n display: inline-flex;\r\n justify-content: center;\r\n }\r\n [title]:focus::after {\r\n content: attr(title);\r\n position: absolute;\r\n top: 90%;\r\n color: #000;\r\n background-color: #fff;\r\n border: 1px solid;\r\n width: fit-content;\r\n padding: 3px;\r\n }\r\n }\r\n`;\r\n\r\nclass TuitionInstitutionHistoryTermRow extends React.Component {\r\n static propTypes = {\r\n institutionId: t.number.isRequired,\r\n termId: t.number.isRequired,\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n getAllStepsDenied() {\r\n const { data, institutionId, termId } = this.props;\r\n const term = data[institutionId].terms[termId];\r\n let retVal = false;\r\n if (Object.keys(term.classes).length > 0) {\r\n retVal = true;\r\n Object.keys(term.classes).forEach((myClass) => {\r\n if (term.classes[myClass].currentStatusCode !== 'REIMDENY') {\r\n retVal = false;\r\n }\r\n });\r\n }\r\n return retVal;\r\n }\r\n\r\n getCompletedSteps() {\r\n const { data, institutionId, termId } = this.props;\r\n const term = data[institutionId].terms[termId];\r\n\r\n let completedSteps = 8;\r\n const termEndDate = new Date(term.endDate);\r\n const today = new Date();\r\n\r\n if (Object.keys(term.classes).length > 0) {\r\n Object.keys(term.classes).forEach((myClass) => {\r\n switch (term.classes[myClass].currentStatusCode) {\r\n case 'CREATED':\r\n completedSteps = Math.min(completedSteps, 0);\r\n break;\r\n case 'WAIT':\r\n completedSteps = Math.min(completedSteps, 1);\r\n break;\r\n case 'APPR':\r\n case 'PREPAYAPPR':\r\n case 'PREPAYSENT':\r\n case 'PREPAYCOMP':\r\n completedSteps = Math.min(completedSteps, 2);\r\n break;\r\n case 'WAITPRFRPT':\r\n case 'WAITPRF':\r\n case 'WAITRPT':\r\n completedSteps = Math.min(completedSteps, 3);\r\n break;\r\n case 'PRFRPTUPLD':\r\n case 'PRFRPTAPPR':\r\n case 'PRFRPTDENY':\r\n case 'WAITPSTAPR':\r\n case 'PSTAPPR':\r\n case 'PSTDENY':\r\n completedSteps = Math.min(completedSteps, 4);\r\n break;\r\n case 'REIMSENT':\r\n case 'REIMDENY':\r\n completedSteps = Math.min(completedSteps, 5);\r\n break;\r\n case 'COMPLETE':\r\n completedSteps = Math.min(completedSteps, 6);\r\n break;\r\n case 'REIMOVER':\r\n if (today < termEndDate) {\r\n completedSteps = Math.min(completedSteps, 2);\r\n } else {\r\n completedSteps = Math.min(completedSteps, 5);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n return completedSteps;\r\n }\r\n\r\n getCurrentStepText(completedSteps) {\r\n let stepText = '';\r\n switch (completedSteps) {\r\n case 0:\r\n stepText = 'Create Class';\r\n break;\r\n case 1:\r\n stepText = 'Manager Approval Needed';\r\n break;\r\n case 2:\r\n stepText = 'School Term in Progress';\r\n break;\r\n case 3:\r\n stepText = 'Proof of Payment and Transcript Required';\r\n break;\r\n case 4:\r\n stepText = 'Reimbursement Approval Pending';\r\n break;\r\n case 5:\r\n stepText = this.getAllStepsDenied() ? 'Reimbursement Denied' : 'Reimbursement Processing';\r\n break;\r\n case 6:\r\n stepText = 'Reimbursement Sent';\r\n break;\r\n default:\r\n break;\r\n }\r\n return stepText;\r\n }\r\n\r\n getClassRowInformation(myClass, term) {\r\n if (myClass.currentStatusCode === 'PREPAYSENT' || myClass.currentStatusCode === 'REIMSENT') {\r\n return [\r\n myClass.className,\r\n <>\r\n <ToolTipSpan\r\n title={\r\n 'Your reimbursement will be processed on ' +\r\n convertIsoToSlash(term.expectedPayoutDate) +\r\n '.'\r\n }\r\n >\r\n {myClass.currentStatus}\r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n </ToolTipSpan>\r\n </>,\r\n ];\r\n }\r\n return [myClass.className, myClass.currentStatus];\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n const { data, institutionId, termId } = this.props;\r\n const institution = data[institutionId];\r\n const term = data[institutionId].terms[termId];\r\n const classes = [];\r\n const classHeaders = ['Class', 'Current Status'];\r\n const completedSteps = this.getCompletedSteps();\r\n const stepText = this.getCurrentStepText(completedSteps);\r\n return (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-6\">\r\n <dl>\r\n <dd>{institution.institutionName}</dd>\r\n <dd>\r\n <Header4>{term.termName}</Header4>\r\n </dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-12 col-sm-6\">\r\n <dl>\r\n <dd>\r\n <Header4>Term Reimbursement Progress</Header4>\r\n </dd>\r\n <dd>\r\n {completedSteps < 8 && (\r\n <ProgressBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: (100 * completedSteps) / 6,\r\n },\r\n\r\n {\r\n brand: this.getAllStepsDenied() ? 'danger' : 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: (100 * (completedSteps === 6 ? 0 : 1)) / 6,\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'To Be Completed',\r\n value: (100 * (completedSteps === 6 ? 0 : 5 - completedSteps)) / 6,\r\n },\r\n ]}\r\n />\r\n )}\r\n </dd>\r\n <dd>\r\n <Header5>Stage: {stepText}</Header5>\r\n </dd>\r\n </dl>\r\n </div>\r\n </div>\r\n </CardTitle>\r\n <CardText>\r\n <div className=\"col-12\">\r\n {Object.keys(term.classes).length > 0 &&\r\n Object.keys(term.classes).forEach((myClass) => {\r\n classes.push(this.getClassRowInformation(term.classes[myClass], term));\r\n })}\r\n {classes.length > 0 && <Table header={classHeaders} body={classes} />}\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (state) => {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionInstitutionHistoryTermRow);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faAngleDown } from '@fortawesome/pro-solid-svg-icons/faAngleDown';\r\nimport { faAngleRight } from '@fortawesome/pro-solid-svg-icons/faAngleRight';\r\n\r\nimport { Card, CardBody, CardTitle, CardText } from 'fiducius-ui';\r\n\r\nimport { getTuitionInstitutionData } from '../../benefits/tuition/redux/selectors';\r\nimport { TuitionInstitutionTermHistoryRow } from '../../tuition-institution-term';\r\n\r\nclass TuitionInstitutionHistoryRow extends React.Component {\r\n static propTypes = {\r\n institutionId: t.number.isRequired,\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showInstitution: false,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n handleClick = () => {\r\n this.setState({\r\n showInstitution: !this.state.showInstitution,\r\n });\r\n };\r\n\r\n componentDidMount() {}\r\n\r\n getDegreeText = (degreeType) => {\r\n let retVal = '';\r\n if (degreeType) {\r\n if (degreeType === 'CERT') {\r\n retVal = 'Certification';\r\n } else if (degreeType === 'ASSOC') {\r\n retVal = 'Associates';\r\n } else if (degreeType === 'BA') {\r\n retVal = 'Bachelors';\r\n } else if (degreeType === 'MA') {\r\n retVal = 'Masters';\r\n } else if (degreeType === 'PHD') {\r\n retVal = 'Doctorate';\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { data, institutionId } = this.props;\r\n const institution = data[institutionId];\r\n const terms = [];\r\n return (\r\n <Card>\r\n <CardBody>\r\n <CardTitle onClick={this.handleClick}>\r\n <FontAwesomeIcon\r\n icon={this.state.showInstitution ? faAngleDown : faAngleRight}\r\n fixedWidth\r\n />\r\n {institution.institutionName}\r\n </CardTitle>\r\n {this.state.showInstitution && (\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <dl>\r\n <dt>Degree Type</dt>\r\n <dd>{this.getDegreeText(institution.degreeType)}</dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-12\">\r\n {Object.keys(institution.terms).length > 0 &&\r\n Object.keys(institution.terms).forEach((term) => {\r\n if (institution.terms[term].previous) {\r\n terms.push(\r\n <div className=\"col-12 col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\">\r\n <TuitionInstitutionTermHistoryRow\r\n institutionId={institutionId}\r\n termId={term}\r\n />\r\n </div>\r\n );\r\n }\r\n })}\r\n {terms.length > 0 && <div className=\"row\">{terms}</div>}\r\n </div>\r\n </div>\r\n </CardText>\r\n )}\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (state) => {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionInstitutionHistoryRow);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { getTuitionInstitutionData } from '../../benefits/tuition/redux/selectors';\r\nimport { TuitionInstitutionTermCurrentRow } from '../../tuition-institution-term';\r\n\r\nclass TuitionInstitutionHistoryRow extends React.Component {\r\n static propTypes = {\r\n institutionId: t.number.isRequired,\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n getDegreeText = (degreeType) => {\r\n let retVal = '';\r\n if (degreeType) {\r\n if (degreeType === 'CERT') {\r\n retVal = 'Certification';\r\n } else if (degreeType === 'ASSOC') {\r\n retVal = 'Associates';\r\n } else if (degreeType === 'BA') {\r\n retVal = 'Bachelors';\r\n } else if (degreeType === 'MA') {\r\n retVal = 'Masters';\r\n } else if (degreeType === 'PHD') {\r\n retVal = 'Doctorate';\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { data, institutionId } = this.props;\r\n const institution = data[institutionId];\r\n const terms = [];\r\n return (\r\n <>\r\n {Object.keys(institution.terms).length > 0 &&\r\n Object.keys(institution.terms).forEach((term) => {\r\n if (institution.terms[term].current) {\r\n terms.push(\r\n <TuitionInstitutionTermCurrentRow institutionId={institutionId} termId={term} />\r\n );\r\n }\r\n })}\r\n {terms.length > 0 && terms}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (state) => {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionInstitutionHistoryRow);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimes as faXIcon } from '@fortawesome/pro-regular-svg-icons/faTimes';\r\nimport { getTuitionData } from '../redux/selectors';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardText,\r\n Header2,\r\n Lede,\r\n CardFooter,\r\n ButtonCarousel,\r\n Table,\r\n} from 'fiducius-ui';\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst StyledLede = styled(Lede)`\r\n color: ${(p) => (p.theme.themeName === 'greenlight' ? p.theme.textPrimary : 'inherit')};\r\n`;\r\n\r\nconst AlignTextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst AlignTextRight = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nconst StyledCardText = styled(CardText)`\r\n margin-top: -1.5em;\r\n`;\r\n\r\nclass TuitionSetupSummary extends React.Component {\r\n static propTypes = {\r\n data: t.object.isRequired,\r\n closeModal: t.func.isRequired,\r\n trSetUp: t.object.isRequired,\r\n permissions: t.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}; // must be initialized for data handling\r\n }\r\n\r\n getGeneralInformation(data) {\r\n //General info\r\n let qualifyingPrograms;\r\n if (data.enrollmentQualifyingPrograms === 'COMBO') {\r\n qualifyingPrograms =\r\n \"You can enroll in any institution accredited by the Department of Education's Office of Post-secondary Education, and any institutions pre-approved by your employer.\";\r\n } else if (data.enrollmentQualifyingPrograms === 'PREAPPR') {\r\n qualifyingPrograms =\r\n 'You can enroll only in institutions that are pre-approved by your employer.';\r\n } else if (data.enrollmentQualifyingPrograms === 'DOE') {\r\n qualifyingPrograms =\r\n \"You can enroll in any institution accredited by the Department of Education's Office of Post-secondary Education.\";\r\n } else if (data.enrollmentQualifyingPrograms === 'MANUAL') {\r\n qualifyingPrograms = 'Qualifying institutions are manually approved.';\r\n }\r\n\r\n let certificationsAllowed;\r\n if (data.certificationsAllowed) {\r\n certificationsAllowed = 'Certifications are allowed';\r\n if (data.pslfQualification === 'CERTONLY') {\r\n certificationsAllowed +=\r\n ' even if you qualify for student loan forgiveness through Fiducius.';\r\n } else {\r\n certificationsAllowed += '.';\r\n }\r\n } else if (!data.certificationsAllowed) {\r\n certificationsAllowed = 'Certifications are not allowed.';\r\n }\r\n\r\n let benefitLimit;\r\n if (data.benefitEnrollmentEnd === 'CLOSED') {\r\n benefitLimit =\r\n \"You can enroll at any point until your employer's budgetary limit for the benefit is reached.\";\r\n } else if (data.benefitEnrollmentEnd === 'NONE') {\r\n certificationsAllowed = 'You can enroll at any point.';\r\n }\r\n\r\n let generalReimbTimeframe;\r\n if (data.reimbursementTime === 'BOTHHRLY') {\r\n generalReimbTimeframe =\r\n 'You will be reimbursed around the start of your term/semester if your hourly wage is under $' +\r\n Math.round(data.reimbursementTimeMaxWage, 2) +\r\n '. If your hourly wage is over $' +\r\n Math.round(data.reimbursementTimeMaxWage, 2) +\r\n ', you will be reimbursed at the end of your term/semester.';\r\n } else if (data.reimbursementTime === 'BOTHSLRY') {\r\n generalReimbTimeframe =\r\n 'You will be reimbursed around the start of your term/semester if your yearly salary is under $' +\r\n Math.round(data.reimbursementTimeMaxWage, 2) +\r\n '. If your salary is over $' +\r\n Math.round(data.reimbursementTimeMaxWage, 2) +\r\n ', that amount you will be reimbursed at the end of your term/semester.';\r\n } else if (data.reimbursementTime === 'BEFORE') {\r\n generalReimbTimeframe = 'You will be reimbursed around the start of your term/semester.';\r\n } else if (data.reimbursementTime === 'AFTER') {\r\n generalReimbTimeframe =\r\n 'You will be reimbursed at the end of your term/semester only after we have received the necessary information to verify your enrollment and completion of all courses for the term.';\r\n }\r\n\r\n let maxReimbursementAmount =\r\n 'Over the course of your enrollment in this benefit, you are allotted a lifetime max of $' +\r\n data.employeeLifetimeMax +\r\n ' in tuition reimbursement.';\r\n return (\r\n <>\r\n <Header2>\r\n <strong>General Information</strong>\r\n </Header2>\r\n <AlignTextLeft>\r\n <FlexRow>\r\n <StyledLede>\r\n <strong>What Institutions Can I Enroll In</strong>\r\n <br />\r\n {qualifyingPrograms}\r\n </StyledLede>\r\n </FlexRow>\r\n <FlexRow>\r\n <StyledLede>\r\n <br />\r\n <strong> Can I Enroll In Certifications</strong>\r\n <br />\r\n {certificationsAllowed}\r\n </StyledLede>\r\n </FlexRow>\r\n <FlexRow>\r\n <StyledLede>\r\n <br />\r\n <strong>When Can I Enroll In This Benefit</strong>\r\n <br /> {benefitLimit}\r\n </StyledLede>\r\n </FlexRow>\r\n <FlexRow>\r\n <StyledLede>\r\n <br />\r\n <strong>When Can I Generally Expect My Reimbursement</strong>\r\n <br /> {generalReimbTimeframe}\r\n </StyledLede>\r\n </FlexRow>\r\n </AlignTextLeft>\r\n {data.employeeLifetimeMax !== null && data.employeeLifetimeMax !== 0 && (\r\n <AlignTextLeft>\r\n <FlexRow>\r\n <StyledLede>\r\n <br />\r\n <strong>How Much Total Reimbursement Is Available</strong>\r\n <br /> {maxReimbursementAmount}\r\n </StyledLede>\r\n </FlexRow>\r\n </AlignTextLeft>\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n getDegreeInformation(data) {\r\n let degreeTermSetupEndModifier;\r\n if (data.degreeTermSetupEndModifier < 0) {\r\n degreeTermSetupEndModifier = Math.abs(data.degreeTermSetupEndModifier) + ' days before';\r\n } else {\r\n degreeTermSetupEndModifier = data.degreeTermSetupEndModifier + ' days after';\r\n }\r\n\r\n let endOrStartDegree;\r\n if (data.degreeReimbursementRequestEnd === 'END') {\r\n endOrStartDegree = 'end';\r\n } else if (data.degreeReimbursementRequestEnd === 'START') {\r\n endOrStartDegree = 'start';\r\n }\r\n\r\n let documentTimeLimitDegree;\r\n if (data.certificationReimbursementRequestEndModifier < 0) {\r\n documentTimeLimitDegree =\r\n Math.abs(data.degreeReimbursementRequestEndModifier) + ' days before';\r\n } else {\r\n documentTimeLimitDegree = data.degreeReimbursementRequestEndModifier + ' days after';\r\n }\r\n\r\n let degreeTermPrePaySetupEndModifier;\r\n if (data.degreePrePayTermSetupEndModifier < 0) {\r\n degreeTermPrePaySetupEndModifier =\r\n Math.abs(data.degreePrePayTermSetupEndModifier) + ' days before';\r\n } else {\r\n degreeTermPrePaySetupEndModifier = data.degreePrePayTermSetupEndModifier + ' days after';\r\n }\r\n\r\n //Degree section\r\n let degreeRegistration;\r\n if (data.reimbursementTime === 'BOTHHRLY' || data.reimbursementTime === 'BOTHSLRY') {\r\n degreeRegistration =\r\n 'You will have ' +\r\n degreeTermSetupEndModifier +\r\n \" your term/semester's start date to send us the required information to sign up. If you qualify for reimbursement before your term/semester starts, you have \" +\r\n degreeTermPrePaySetupEndModifier +\r\n \" your term/semester's start date to send us the required information.\";\r\n } else if (data.reimbursementTime === 'BEFORE') {\r\n degreeRegistration =\r\n 'You will have ' +\r\n degreeTermSetupEndModifier +\r\n \" your term/semester's start date to send us the required information to sign up.\";\r\n } else if (data.reimbursementTime === 'AFTER') {\r\n degreeRegistration =\r\n 'You will have ' +\r\n degreeTermSetupEndModifier +\r\n \" your term/semester's start date to send us the required information to sign up.\";\r\n }\r\n\r\n let degreeReimbursementTiming;\r\n if (data.reimbursementTime === 'BOTHHRLY' || data.reimbursementTime === 'BOTHSLRY') {\r\n degreeReimbursementTiming =\r\n 'If you qualify for reimbursement before your term/semester starts, you will be reimbursed near your term/semester start date. All other requests will be reimbursed after the necessary information has been received and reviewed. Once approved you will receive your reimbursement shortly thereafter.';\r\n } else if (data.reimbursementTime === 'BEFORE') {\r\n degreeReimbursementTiming =\r\n \"Once your request is verified, you will be reimbursed near your term/semester's start date.\";\r\n } else if (data.reimbursementTime === 'AFTER') {\r\n degreeReimbursementTiming =\r\n 'You will be reimbursed after the necessary information has been received and reviewed. Once approved you will receive your reimbursement shortly thereafter.';\r\n }\r\n\r\n let degreeReimbInfoTime;\r\n if (data.reimbursementTime === 'BOTHHRLY' || data.reimbursementTime === 'BOTHSLRY') {\r\n degreeReimbInfoTime =\r\n 'If you were not approved for reimbursement before your term/semester starts, you will have ' +\r\n documentTimeLimitDegree +\r\n ' the ' +\r\n endOrStartDegree +\r\n ' of your term/semester to submit the necessary documents. Your account will prompt you for the required information.';\r\n } else if (data.reimbursementTime === 'AFTER' || data.reimbursementTime === 'BEFORE') {\r\n degreeReimbInfoTime =\r\n 'You will have ' +\r\n documentTimeLimitDegree +\r\n ' the ' +\r\n endOrStartDegree +\r\n ' of your term/semester to submit the necessary documents. Your account will prompt you for the required information.';\r\n }\r\n\r\n return (\r\n <>\r\n <Header2>\r\n <strong>Degree Information</strong>\r\n </Header2>\r\n <AlignTextLeft>\r\n <FlexRow>\r\n <StyledLede>\r\n <strong>How Long Do I Have To Register For A Degree</strong>\r\n <br /> {degreeRegistration}\r\n </StyledLede>\r\n </FlexRow>\r\n <FlexRow>\r\n <StyledLede>\r\n <br />\r\n <strong>When Will I Get Reimbursed For My Degree</strong>\r\n <br /> {degreeReimbursementTiming}\r\n </StyledLede>\r\n </FlexRow>\r\n <FlexRow>\r\n <StyledLede>\r\n <br />\r\n <strong>\r\n How Long Do I Have To Get Fiducius The Required Information For Reimbursement{' '}\r\n </strong>\r\n <br /> {degreeReimbInfoTime}\r\n </StyledLede>\r\n </FlexRow>\r\n </AlignTextLeft>\r\n </>\r\n );\r\n }\r\n\r\n getCertificationInformation(data) {\r\n //data validation/modification\r\n let certTermSetupEndModifier;\r\n if (data.certificationTermSetupEndModifier < 0) {\r\n certTermSetupEndModifier = Math.abs(data.certificationTermSetupEndModifier) + ' days before';\r\n } else {\r\n certTermSetupEndModifier = data.certificationTermSetupEndModifier + ' days after';\r\n }\r\n\r\n let certTermPrePaySetupEndModifier;\r\n if (data.certificationPrePayTermSetupEndModifier < 0) {\r\n certTermPrePaySetupEndModifier =\r\n Math.abs(data.certificationPrePayTermSetupEndModifier) + ' days before';\r\n } else {\r\n certTermPrePaySetupEndModifier = data.certificationPrePayTermSetupEndModifier + ' days after';\r\n }\r\n\r\n let endOrStart;\r\n if (data.certificationReimbursementRequestEnd === 'END') {\r\n endOrStart = 'end';\r\n } else if (data.certificationReimbursementRequestEnd === 'START') {\r\n endOrStart = 'start';\r\n }\r\n\r\n let documentTimeLimit;\r\n if (data.certificationReimbursementRequestEndModifier < 0) {\r\n documentTimeLimit =\r\n Math.abs(data.certificationReimbursementRequestEndModifier) + ' days before';\r\n } else {\r\n documentTimeLimit = data.certificationReimbursementRequestEndModifier + ' days after';\r\n }\r\n\r\n //certification section\r\n\r\n let certRegistration;\r\n if (data.reimbursementTime === 'BOTHHRLY' || data.reimbursementTime === 'BOTHSLRY') {\r\n certRegistration =\r\n 'You will have ' +\r\n certTermSetupEndModifier +\r\n \" your term/semester's start date to send us the required information to sign up. If you qualify for reimbursement before your term/semester starts, you have \" +\r\n certTermPrePaySetupEndModifier +\r\n \" your term/semester's start date to send us the required information.\";\r\n } else if (data.reimbursementTime === 'BEFORE') {\r\n certRegistration =\r\n 'You will have ' +\r\n certTermPrePaySetupEndModifier +\r\n \" your term/semester's start date to send us the required information to sign up.\";\r\n } else if (data.reimbursementTime === 'AFTER') {\r\n certRegistration =\r\n 'You will have ' +\r\n certTermSetupEndModifier +\r\n \" your term/semester's start date to send us the required information to sign up.\";\r\n }\r\n\r\n let certReimbursementTiming;\r\n if (data.reimbursementTime === 'BOTHHRLY' || data.reimbursementTime === 'BOTHSLRY') {\r\n certReimbursementTiming =\r\n 'If you qualify for reimbursement before your term/semester starts, you will be reimbursed near your term/semester start date. All other requests will be reimbursed after the necessary information has been received and reviewed. Once approved you will receive your reimbursement shortly thereafter.';\r\n } else if (data.reimbursementTime === 'BEFORE') {\r\n certReimbursementTiming =\r\n \"Once your request is verified you will be reimbursed near your term/semester's start date.\";\r\n } else if (data.reimbursementTime === 'AFTER') {\r\n certReimbursementTiming =\r\n 'You will be reimbursed after the necessary information has been received and reviewed. Once approved you will receive your reimbursement shortly thereafter.';\r\n }\r\n\r\n let certReimbInfoTime;\r\n if (data.reimbursementTime === 'BOTHHRLY' || data.reimbursementTime === 'BOTHSLRY') {\r\n certReimbInfoTime =\r\n 'If you were not approved for reimbursement before your term/semester starts, you will have ' +\r\n documentTimeLimit +\r\n ' the ' +\r\n endOrStart +\r\n ' of your term/semester to submit the necessary documents. Your account will prompt you for the required information.';\r\n } else if (data.reimbursementTime === 'AFTER' || data.reimbursementTime === 'BEFORE') {\r\n certReimbInfoTime =\r\n 'You will have ' +\r\n documentTimeLimit +\r\n ' the ' +\r\n endOrStart +\r\n ' of your term/semester to submit the necessary documents. Your account will prompt you for the required information.';\r\n }\r\n\r\n return (\r\n <>\r\n <Header2>\r\n <strong>Certification Information</strong>\r\n </Header2>\r\n <AlignTextLeft>\r\n <FlexRow>\r\n <StyledLede>\r\n <strong>How Long Do I Have To Register For A Certification</strong>\r\n <br /> {certRegistration}\r\n </StyledLede>\r\n </FlexRow>\r\n <FlexRow>\r\n <StyledLede>\r\n <br />\r\n <strong>When Will I Get Reimbursed For My Certification</strong>\r\n <br /> {certReimbursementTiming}\r\n </StyledLede>\r\n </FlexRow>\r\n <FlexRow>\r\n <StyledLede>\r\n <br />\r\n <strong>\r\n How Long Do I Have To Get Fiducius The Required Information For Reimbursement{' '}\r\n </strong>\r\n <br /> {certReimbInfoTime}\r\n </StyledLede>\r\n </FlexRow>\r\n </AlignTextLeft>\r\n </>\r\n );\r\n }\r\n\r\n getReimbursementInformation(data) {\r\n const { trSetUp, permissions } = this.props;\r\n\r\n let preApprovalStatus = false;\r\n if (trSetUp.reimbursementTime === 'BOTHHRLY' || trSetUp.reimbursementTime === 'BOTHSLRY') {\r\n preApprovalStatus = true;\r\n }\r\n\r\n const headers = ['Payment Remittance Date', 'Information'];\r\n const body = [];\r\n\r\n const isUPH =\r\n permissions.strategicPartnerId === 161 ||\r\n permissions.strategicPartnerId === parseInt(process.env.REACT_APP_NFPTEST_ID);\r\n\r\n let docReceivedDate = 'December 8th';\r\n let docRecommendedDate = 'November 25th';\r\n\r\n if (isUPH) {\r\n body.push([\r\n '7th of the Month',\r\n 'If your documentation was approved between the 16th of the previous month and the 1st of the current month, your tuition reimbursement will be processed on the 7th of the month. Please allow up to 2 weeks before you will receive payment.',\r\n ]);\r\n body.push([\r\n '21st of the Month',\r\n 'If your documentation was approved between the 2nd and the 15th of the current month, your tuition reimbursement will be processed on the 21st of the month. Please allow up to 2 weeks before you will receive payment.',\r\n ]);\r\n docReceivedDate = 'December 20th';\r\n docRecommendedDate = 'December 15th';\r\n } else {\r\n body.push([\r\n '15th of the Month',\r\n 'If your documentation was approved between the 2nd of the previous month and the 1st of the current month, your tuition reimbursement will be processed on the 15th of the month. Please allow up to 2 weeks before you will receive payment.',\r\n ]);\r\n }\r\n\r\n return (\r\n <>\r\n <Header2>\r\n <strong>Reimbursement Information</strong>\r\n </Header2>\r\n <AlignTextLeft>\r\n <FlexRow>\r\n <StyledLede>\r\n <strong>How are Payments Scheduled</strong>\r\n <p>\r\n Scheduled tuition reimbursement payments are calculated upon approval of submitted\r\n documentation. Payments that are approved for reimbursement will appear in either a\r\n \"Reimbursement Pending\" {preApprovalStatus && 'or \"Pre-Term Pay Pending\"'} status.\r\n </p>\r\n </StyledLede>\r\n </FlexRow>\r\n <FlexRow>\r\n <StyledLede>\r\n <strong>Tuition Reimbursement Processing</strong>\r\n <div className=\"row\">\r\n <Table header={headers} body={body} />\r\n </div>\r\n <p>\r\n Note: Documents are typically reviewed the business day after they are received.\r\n However, during high volume periods, processing times may be longer.\r\n </p>\r\n </StyledLede>\r\n </FlexRow>\r\n <FlexRow>\r\n <StyledLede>\r\n <strong>End of Year Documentation Deadline</strong>\r\n <p>\r\n In order to receive your tuition reimbursement in the current tax year,\r\n documentation needs to be received and approved no later than {docReceivedDate}. Due\r\n to high volumes and holidays, it is recommended that you return documentation no\r\n later than {docRecommendedDate} to ensure your documentation is approved before the\r\n deadline.\r\n </p>\r\n </StyledLede>\r\n </FlexRow>\r\n </AlignTextLeft>\r\n </>\r\n );\r\n }\r\n\r\n render() {\r\n const { data } = this.props;\r\n\r\n const components = [];\r\n const componentDisplayNames = [];\r\n\r\n componentDisplayNames.push('General');\r\n components.push(this.getGeneralInformation(data));\r\n componentDisplayNames.push('Degree');\r\n components.push(this.getDegreeInformation(data));\r\n if (data.certificationsAllowed) {\r\n componentDisplayNames.push('Certification');\r\n components.push(this.getCertificationInformation(data));\r\n }\r\n componentDisplayNames.push('Reimbursement');\r\n components.push(this.getReimbursementInformation(data));\r\n\r\n return (\r\n <Card>\r\n <AlignTextRight>\r\n <Button brand=\"lowContrast\" onClick={this.props.closeModal}>\r\n <FontAwesomeIcon icon={faXIcon} />\r\n </Button>\r\n </AlignTextRight>\r\n\r\n <CardBody>\r\n <StyledCardText>\r\n <ButtonCarousel\r\n buttonLocation={1}\r\n components={components}\r\n componentDisplayNames={componentDisplayNames}\r\n />\r\n </StyledCardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={this.props.closeModal}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n trSetUp: getTuitionData(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TuitionSetupSummary));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport b64toBlob from 'b64-to-blob';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\nimport { faFileDownload } from '@fortawesome/pro-solid-svg-icons/faFileDownload';\r\n\r\nimport { withPermissions, PaddedDD } from '../../../routing';\r\nimport { FlexEnd } from '../../../root';\r\nimport {\r\n BrandColor,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n Lede,\r\n Modal,\r\n Header3,\r\n} from 'fiducius-ui';\r\n\r\nimport { formatAsMoney, safeAccess } from '../../../utils';\r\n\r\nimport { getTuitionData } from '../redux/selectors';\r\n\r\nimport { documentsLoadTrFaq } from '../../../documents';\r\n\r\nimport TuitionSetupSummary from './tuition-setup-summary';\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst PolicyInformationDiv = styled.div`\r\n display: flex;\r\n justify-content: flex-end;\r\n @media (max-width: 575px) {\r\n justify-content: flex-start;\r\n margin-top: 0.5em;\r\n }\r\n`;\r\n\r\nclass OverviewSummary extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n getFAQ: t.func.isRequired,\r\n permissions: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showSetUp: false,\r\n }; // must be initialized for data handling\r\n\r\n this.handleSetupButton = this.handleSetupButton.bind(this);\r\n }\r\n\r\n handleSetupButton() {\r\n this.setState({ showSetUp: !this.state.showSetUp });\r\n }\r\n\r\n handleFilingStatus(event) {\r\n this.setState({ filingStatus: event.target.value });\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n onDownloadFaq = () => {\r\n this.props.getFAQ().then((data) => {\r\n if (safeAccess(data, 'fileData')) {\r\n this.getFileFromData(data.fileData, 'FAQ.pdf');\r\n }\r\n });\r\n };\r\n\r\n getFileFromData = (data, name) => {\r\n const blob = b64toBlob(data);\r\n\r\n // IE10+ : (has Blob, but not a[download] or URL)\r\n if (navigator.msSaveBlob) {\r\n return navigator.msSaveBlob(blob, name);\r\n } else {\r\n let link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = name;\r\n // Firefox and Edge require actual appended element for click()\r\n document.body.appendChild(link);\r\n link.click();\r\n window.URL.revokeObjectURL(link.href);\r\n link.remove();\r\n }\r\n };\r\n\r\n needSpecialMessage = () => {\r\n return (\r\n this.props.permissions.strategicPartnerId === 161 ||\r\n this.props.permissions.strategicPartnerId === parseInt(process.env.REACT_APP_NFPTEST_ID)\r\n );\r\n };\r\n\r\n render() {\r\n const { data = {} } = this.props;\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-7\">Summary Information</div>\r\n <PolicyInformationDiv className=\"col-12 col-sm-5\">\r\n {data.faqUploaded && (\r\n <Button brand=\"primary\" onClick={this.onDownloadFaq}>\r\n <PaddedIcon icon={faFileDownload} fixedWidth />\r\n Download Policy Information\r\n </Button>\r\n )}\r\n </PolicyInformationDiv>\r\n </div>\r\n </CardTitle>\r\n <CardText>\r\n {data.alertMessage && (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Header3>{data.alertMessage}</Header3>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n {this.needSpecialMessage() && (\r\n <>\r\n <FlexRow>\r\n {data.maxYtdReimbursed > 2625 && (\r\n <Lede>\r\n Your annual maximum is $3,000 unless you take classes at one of the\r\n UnityPoint Health Colleges, then it is $5,250\r\n </Lede>\r\n )}\r\n {data.maxYtdReimbursed < 2626 && (\r\n <Lede>\r\n Your annual maximum is $1,500 unless you take classes at one of the\r\n UnityPoint Health Colleges, then it is $2,625\r\n </Lede>\r\n )}\r\n </FlexRow>\r\n <p />\r\n </>\r\n )}\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-4\">\r\n <Lede>\r\n <dl>\r\n <dt>\r\n <Lede>Total Reimbursement</Lede>\r\n </dt>\r\n <PaddedDD>\r\n <BrandColor brand=\"secondary\">\r\n {formatAsMoney(data.totalReimbursed)}\r\n </BrandColor>\r\n </PaddedDD>\r\n </dl>\r\n </Lede>\r\n </div>\r\n <div className=\"col-12 col-sm-4\">\r\n <Lede>\r\n <dl>\r\n <dt>\r\n <Lede>YTD Reimbursement</Lede>\r\n </dt>\r\n <PaddedDD>\r\n <BrandColor brand=\"secondary\">\r\n {formatAsMoney(data.ytdReimbursed)}\r\n </BrandColor>\r\n {!this.needSpecialMessage() && (\r\n <> /{formatAsMoney(data.maxYtdReimbursed)}</>\r\n )}\r\n </PaddedDD>\r\n </dl>\r\n </Lede>\r\n </div>\r\n <div className=\"col-12 col-sm-4\">\r\n <Lede>\r\n <dl>\r\n <dt>\r\n <Lede>Pending Reimbursement</Lede>\r\n </dt>\r\n <PaddedDD>\r\n <BrandColor brand=\"secondary\">\r\n {formatAsMoney(data.pendingReimbursement)}\r\n </BrandColor>\r\n </PaddedDD>\r\n </dl>\r\n </Lede>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-4\">\r\n <Lede>\r\n <Button brand=\"primary\" onClick={this.handleSetupButton}>\r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n Policy Quick Reference\r\n </Button>\r\n </Lede>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n <Modal isOpen={this.state.showSetUp} fullWidth>\r\n <TuitionSetupSummary data={data} closeModal={this.handleSetupButton} />\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n data: getTuitionData(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n getFAQ: () => {\r\n return dispatch(documentsLoadTrFaq());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(OverviewSummary));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardText,\r\n Header2,\r\n InputWrapper,\r\n Table,\r\n} from 'fiducius-ui';\r\nimport { FlexEnd } from '../../../root';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimes as faXIcon } from '@fortawesome/pro-regular-svg-icons/faTimes';\r\nimport { getTuitionData } from '../redux/selectors';\r\nimport { tuitionLoadResource } from '../redux/operations';\r\nimport { getUserId } from '../../../auth';\r\n\r\nclass TuitionStatusInfo extends React.Component {\r\n static propTypes = {\r\n data: t.object.isRequired,\r\n trSetUp: t.object.isRequired,\r\n closeModal: t.func.isRequired,\r\n load: t.func.isRequired,\r\n id: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const { load, id, trSetUp } = this.props;\r\n if (Object.keys(trSetUp).length < 1) {\r\n load(id);\r\n }\r\n }\r\n\r\n render() {\r\n const { trSetUp } = this.props;\r\n\r\n let preApprovalStatus = false;\r\n let postApprovalStatus = false;\r\n if (trSetUp.reimbursementTime === 'BOTHHRLY' || trSetUp.reimbursementTime === 'BOTHSLRY') {\r\n preApprovalStatus = true;\r\n }\r\n if (\r\n (trSetUp.reimbursementTime === 'BOTHHRLY' ||\r\n trSetUp.reimbursementTime === 'BOTHSLRY' ||\r\n trSetUp.reimbursementTime === 'AFTER') &&\r\n trSetUp.approvalType === 'MANUAL'\r\n ) {\r\n postApprovalStatus = true;\r\n }\r\n\r\n const headers = ['Status', 'Description'];\r\n const body = [];\r\n\r\n body.push(['Created', 'Your class was created.']);\r\n body.push(['Waiting on Approval', \"Your manager's approval is required to move forward.\"]);\r\n body.push([\r\n 'Approved',\r\n 'You have provided the required information to this point and your tuition assistance application is approved.' +\r\n '\\n' +\r\n 'Please Note: You will be required to provide your final transcript and proof of payment for the active term/semester once the class has been completed.',\r\n ]);\r\n if (preApprovalStatus) {\r\n body.push([\r\n 'Pre-Term/Semester Payment Approved',\r\n \"Your pre-payment has been approved by your manager and will be provided based on your employer's next scheduled disbursement of funds.\",\r\n ]);\r\n body.push([\r\n 'Pre-Term/Semester Payment Pending',\r\n 'Your tuition assistance disbursement is pending.',\r\n ]);\r\n body.push([\r\n 'Pre-Term/Semester Payment Complete',\r\n 'Your tuition assistance request has been disbursed.' +\r\n '\\n' +\r\n 'Please Note: You will be required to provide your final transcript and proof of payment for the active term/semester once the class has been completed.',\r\n ]);\r\n }\r\n body.push([\r\n 'Waiting on Proof of Payment and Transcript',\r\n 'Your final transcript and proof of payment is required to approve your tuition assistance disbursement.',\r\n ]);\r\n body.push([\r\n 'Waiting on Proof of Payment',\r\n 'Your proof of payment is required to approve your tuition assistance disbursement.',\r\n ]);\r\n body.push([\r\n 'Waiting on Transcript',\r\n 'Your final transcript is required to approve your tuition assistance disbursement.',\r\n ]);\r\n body.push([\r\n 'Proof of Payment and Transcript Uploaded',\r\n 'Your final transcript and proof of payment have been uploaded and are under review.',\r\n ]);\r\n body.push([\r\n 'Proof of Payment and Transcript Denied',\r\n 'Your final transcript and/or proof of payment have been denied.',\r\n ]);\r\n body.push([\r\n 'Proof of Payment and Transcript Approved',\r\n 'Your final transcript and proof of payment have been approved.',\r\n ]);\r\n if (postApprovalStatus) {\r\n body.push([\r\n 'Post-Term/Semester Payment Approved ',\r\n \"Your tuition assistance has been approved by your manager and will be provided based on your employer's next scheduled disbursement of funds.\",\r\n ]);\r\n body.push([\r\n 'Post-Term/Semester Payment Denied',\r\n 'Your tuition assistance has been denied by your manager.',\r\n ]);\r\n }\r\n body.push(['Reimbursement Denied', 'Your tuition assistance request has been denied.']);\r\n body.push(['Reimbursement Pending', 'Your tuition assistance disbursement is pending.']);\r\n body.push(['Reimbursement Complete', 'Your tuition assistance request has been disbursed.']);\r\n\r\n return (\r\n <Card>\r\n <FlexEnd>\r\n <InputWrapper>\r\n <Button brand=\"lowContrast\" onClick={this.props.closeModal}>\r\n <FontAwesomeIcon icon={faXIcon} />\r\n </Button>\r\n </InputWrapper>\r\n </FlexEnd>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n <strong>Class Status Information</strong>\r\n </Header2>\r\n <div className=\"row\">\r\n <Table header={headers} body={body} />\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={this.props.closeModal}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n id: getUserId(state),\r\n trSetUp: getTuitionData(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => {\r\n dispatch(tuitionLoadResource(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionStatusInfo);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\n\r\nimport { Redirect } from 'react-router-dom';\r\nimport TuitionStatusInfo from './tuition-status-info';\r\n\r\nimport {\r\n AsyncLoader,\r\n Badge,\r\n Button,\r\n ButtonCarousel,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Lede,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nimport { getTuitionInstitutionData } from '../redux/selectors';\r\n\r\nimport { TuitionInstitutionCurrentRow } from '../../../tuition-institution';\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst PaddedBadge = styled(Badge)`\r\n margin-right: 0.45em;\r\n font-size: 0.75em;\r\n top: -0.75rem;\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nclass OverviewInstitutions extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n permissions: t.object,\r\n request: t.object,\r\n toDos: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '', openStatusModal: false };\r\n\r\n this.handleStatusModal = this.handleStatusModal.bind(this);\r\n }\r\n\r\n handleStatusModal() {\r\n this.setState({ openStatusModal: !this.state.openStatusModal });\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n noReimbursementsOnFile() {\r\n return (\r\n <FlexRow>\r\n <Lede>You have not been reimbursed for any completed terms.</Lede>\r\n </FlexRow>\r\n );\r\n }\r\n\r\n manageInstitutionsRedirect() {\r\n this.setState({ ...this.state, redirectURI: '/benefits/tuition/institutions' });\r\n }\r\n\r\n manageTermsRedirect() {\r\n this.setState({ ...this.state, redirectURI: '/benefits/tuition/terms' });\r\n }\r\n\r\n manageClassesRedirect() {\r\n this.setState({ ...this.state, redirectURI: '/benefits/tuition/classes' });\r\n }\r\n\r\n showCarousel(data) {\r\n return (\r\n Object.keys(data).length > 0 &&\r\n Object.keys(data).filter(\r\n (institution) =>\r\n data[institution].current &&\r\n Object.keys(data[institution].terms).length > 0 &&\r\n Object.keys(data[institution].terms).filter(\r\n (term) => data[institution].terms[term].current\r\n ).length\r\n ).length > 0\r\n );\r\n }\r\n\r\n getCarouselComponents(data) {\r\n return Object.keys(data)\r\n .filter(\r\n (institution) =>\r\n data[institution].current &&\r\n Object.keys(data[institution].terms).length > 0 &&\r\n Object.keys(data[institution].terms).filter(\r\n (term) => data[institution].terms[term].current\r\n ).length\r\n )\r\n .map((institution, i) => (\r\n <TuitionInstitutionCurrentRow institutionId={institution} key={i} />\r\n ));\r\n }\r\n\r\n getCarouselButtons(data) {\r\n return Object.keys(data)\r\n .filter(\r\n (institution) =>\r\n data[institution].current &&\r\n Object.keys(data[institution].terms).length > 0 &&\r\n Object.keys(data[institution].terms).filter(\r\n (term) => data[institution].terms[term].current\r\n ).length\r\n )\r\n .map((institution, i) => data[institution].institutionName);\r\n }\r\n\r\n render() {\r\n const { data = {}, request, toDos } = this.props;\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col\">My Current Classes</div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n <Lede>\r\n <StyledButton\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.manageInstitutionsRedirect();\r\n }}\r\n >\r\n {Object.keys(toDos).includes('422') && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>\r\n )}\r\n Manage Institution(s)\r\n </StyledButton>\r\n </Lede>\r\n <Lede>\r\n <StyledButton\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.manageTermsRedirect();\r\n }}\r\n >\r\n {(Object.keys(toDos).includes('423') ||\r\n Object.keys(toDos).includes('424')) && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>\r\n )}\r\n Manage Term(s)\r\n </StyledButton>\r\n </Lede>\r\n <Lede>\r\n <StyledButton\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.manageClassesRedirect();\r\n }}\r\n >\r\n {(Object.keys(toDos).includes('425') ||\r\n Object.keys(toDos).includes('426')) && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>\r\n )}\r\n Manage Class(es)\r\n </StyledButton>\r\n </Lede>\r\n <Lede>\r\n <StyledButton brand=\"primary\" onClick={this.handleStatusModal}>\r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n Class Status Info\r\n </StyledButton>\r\n </Lede>\r\n </div>\r\n </div>\r\n </CardTitle>\r\n <AsyncLoader request={request} empty={this.noReimbursementsOnFile()} loading={<></>}>\r\n {this.showCarousel(data) && (\r\n <ButtonCarousel\r\n components={this.getCarouselComponents(data)}\r\n componentDisplayNames={this.getCarouselButtons(data)}\r\n />\r\n )}\r\n {!this.showCarousel(data) && this.noReimbursementsOnFile()}\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n <Modal isOpen={this.state.openStatusModal} fullWidth>\r\n <TuitionStatusInfo data={data} closeModal={this.handleStatusModal} />\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n toDos: safeAccess(state, 'todos.cache', {}),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(OverviewInstitutions));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Fade, withPermissions } from '../../../routing';\r\nimport { todosLoadCollection } from '../../../todos';\r\n\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Lede,\r\n Loader,\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { debounce, safeAccess, stringIsNullOrEmpty } from '../../../utils';\r\n\r\nimport { getTuitionData } from '../redux/selectors';\r\nimport { tuitionHandleFormChange, tuitionUpdateResource } from '../redux/operations';\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nclass ApproverEmail extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n permissions: t.object,\r\n updateFormState: t.func.isRequired,\r\n saveData: t.func.isRequired,\r\n id: t.string.isRequired,\r\n request: t.object.isRequired,\r\n updateRequest: t.object.isRequired,\r\n isOpen: t.bool,\r\n closeForm: t.func.isRequired,\r\n form: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.modalRef = React.createRef();\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate(prevProps) {\r\n const prevLoading = prevProps.updateRequest.isLoading;\r\n const current = this.props.updateRequest;\r\n\r\n if (prevLoading && !current.isLoading && !current.hasFailed) {\r\n this.props.closeForm();\r\n }\r\n }\r\n\r\n handleChange = debounce((formState) => {\r\n const { data, updateFormState } = this.props;\r\n const newData = { ...data, ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 200);\r\n\r\n save = () => {\r\n this.props.saveData(this.props.id);\r\n };\r\n\r\n render() {\r\n const { data = {}, errors = {}, updateRequest, isOpen, closeForm, form = {} } = this.props;\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen}>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Company Information</CardTitle>\r\n <Form id=\"tuitionCompany\" handleChange={this.handleChange}>\r\n <TextLeft>\r\n <InputWrapper error={!!errors.approverEmail}>\r\n <InputLabel htmlFor=\"approverEmail\" required>\r\n Manager Email\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'approverEmail.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"approverEmail\" defaultValue={data.approverEmail} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </TextLeft>\r\n </Form>\r\n <FlexRow>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Lede>\r\n <Fade\r\n show={\r\n !stringIsNullOrEmpty(form.approverEmail) &&\r\n (!errors.approverEmail || errors.approverEmail.detail === undefined)\r\n }\r\n >\r\n <Button brand=\"primary\" onClick={this.save}>\r\n {updateRequest.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Save'}\r\n </Button>\r\n </Fade>\r\n <Fade show={stringIsNullOrEmpty(form.approverEmail)}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade show={!stringIsNullOrEmpty(form.approverEmail) && errors.approverEmail}>\r\n Please fix the errors above.\r\n </Fade>\r\n </Lede>\r\n </FlexRow>\r\n </CardBody>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n data: { ...state.tuition.form, ...getTuitionData(state) },\r\n form: state.tuition.form,\r\n id: getUserId(state),\r\n errors: state.tuition.errors,\r\n request: state.tuition.requests.loadResource,\r\n updateRequest: state.tuition.requests.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n updateFormState: (data, attributes) => dispatch(tuitionHandleFormChange(data, attributes)),\r\n saveData: async (id) => {\r\n await dispatch(tuitionUpdateResource(id));\r\n dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ApproverEmail));\r\n","import React from 'react';\nimport styled from 'styled-components';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\nimport { withPermissions } from '../../../routing';\nimport { FlexEnd } from '../../../root';\nimport { Redirect } from 'react-router-dom';\n\nimport { AsyncLoader, Badge, Button, Card, CardBody, CardTitle, CardText, Lede } from 'fiducius-ui';\n\nimport { getUserId } from '../../../auth';\nimport { debounce, mergeRequestStatuses } from '../../../utils';\n\nimport { getTuitionData } from '../redux/selectors';\nimport { tuitionHandleFormChange, tuitionUpdateResource } from '../redux/operations';\n\nimport ApproverEmail from './approver-email';\n\nconst PaddedBadge = styled(Badge)`\n margin-left: 0.45em;\n font-size: 0.75em;\n`;\n\nclass RequiredInformation extends React.Component {\n static propTypes = {\n data: t.object,\n errors: t.object,\n permissions: t.object,\n updateFormState: t.func.isRequired,\n saveData: t.func.isRequired,\n id: t.string.isRequired,\n request: t.object.isRequired,\n updateRequest: t.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = { redirectURI: '', showForm: false };\n }\n\n componentDidMount() {}\n\n handleChange = debounce((formState) => {\n const { data, updateFormState } = this.props;\n const newData = { ...data, ...formState };\n updateFormState(newData, Object.keys(newData));\n }, 200);\n\n save = () => {\n this.props.saveData(this.props.id);\n };\n\n updateManagerEmail = () => {\n this.setState({ showForm: true });\n };\n\n closeForm = () => {\n this.setState({ showForm: false });\n };\n\n render() {\n const { data = {}, request } = this.props;\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\n return <Redirect to={this.state.redirectURI} />;\n }\n return (\n <>\n <Card>\n <CardBody>\n <CardTitle>Other Required Information</CardTitle>\n <CardText>\n <AsyncLoader request={mergeRequestStatuses([request])}>\n <div className=\"row\">\n <div className=\"col-8\">\n <dl>\n <dt>\n <Lede>\n Home Address{' '}\n {!data.addressOne && (\n <PaddedBadge brand=\"primary\">\n <FontAwesomeIcon icon={faSolidExclamation} />\n </PaddedBadge>\n )}\n </Lede>\n </dt>\n {data.addressOne && (\n <dd>\n <div className=\"col\">{data.addressOne}</div>\n {data.addressTwo && data.addressTwo.length > 0 && (\n <div className=\"col\">{data.addressTwo}</div>\n )}\n <div className=\"col\">\n {data.city + ', ' + data.usState + ' ' + data.zipCode}\n </div>\n </dd>\n )}\n {!data.addressOne && (\n <dd>\n <div className=\"col\">Not on file</div>\n </dd>\n )}\n </dl>\n </div>\n <div className=\"col-4\">\n <FlexEnd>\n <Button\n brand=\"primary\"\n onClick={() => {\n this.setState({ ...this.state, redirectURI: '/profile' });\n }}\n >\n Manage Profile\n </Button>\n </FlexEnd>\n </div>\n </div>\n {/* <div className=\"row\">\n <div className=\"col-8\">\n <dl>\n <dt>\n <Lede>\n Reimbursement Account{' '}\n {!data.reimbursementAccountInfo && (\n <PaddedBadge brand=\"primary\">\n <FontAwesomeIcon icon={faSolidExclamation} />\n </PaddedBadge>\n )}\n </Lede>\n </dt>\n {data.reimbursementAccountInfo && (\n <dd>\n <div className=\"col\">{data.reimbursementAccountInfo}</div>\n </dd>\n )}\n {!data.reimbursementAccountInfo && (\n <dd>\n <div className=\"col\">Not on file</div>\n </dd>\n )}\n </dl>\n </div>\n <div className=\"col-4\">\n <FlexEnd>\n <Button\n brand=\"primary\"\n onClick={() => {\n this.setState({ ...this.state, redirectURI: '/accounts' });\n }}\n >\n Manage Accounts\n </Button>\n </FlexEnd>\n </div>\n </div> */}\n {data.needApproverEmail && (\n <div className=\"row\">\n <div className=\"col-8\">\n <dl>\n <dt>\n <Lede>\n Manager Email{' '}\n {!data.approverEmail && (\n <PaddedBadge brand=\"primary\">\n <FontAwesomeIcon icon={faSolidExclamation} />\n </PaddedBadge>\n )}\n </Lede>\n </dt>\n {data.approverEmail && (\n <dd>\n <div className=\"col\">{data.approverEmail}</div>\n </dd>\n )}\n {!data.approverEmail && (\n <dd>\n <div className=\"col\">Not on file</div>\n </dd>\n )}\n </dl>\n </div>\n <div className=\"col-4\">\n <FlexEnd>\n <Button brand=\"primary\" onClick={() => this.updateManagerEmail()}>\n Update Manager Email\n </Button>\n </FlexEnd>\n </div>\n </div>\n )}\n </AsyncLoader>\n </CardText>\n </CardBody>\n </Card>\n {this.state.showForm && (\n <ApproverEmail isOpen={this.state.showForm} closeForm={this.closeForm} />\n )}\n </>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n data: { ...state.tuition.form, ...getTuitionData(state) },\n id: getUserId(state),\n errors: state.tuition.errors,\n request: state.tuition.requests.loadResource,\n updateRequest: state.tuition.requests.updateResource,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n updateFormState: (data, attributes) => dispatch(tuitionHandleFormChange(data, attributes)),\n saveData: async (id) => {\n await dispatch(tuitionUpdateResource(id));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(RequiredInformation));\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { withPermissions } from '../../../routing';\r\nimport { AsyncLoader, Button, DashboardSection, Header2 } from 'fiducius-ui';\r\nimport { MessageTile } from '../../../messages';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n tuitionLoadResource,\r\n tuitionCopyResourceToForm,\r\n tuitionHandleFormChange,\r\n tuitionUpdateResource,\r\n} from '../redux/operations';\r\nimport { getTuitionData } from '../redux/selectors';\r\n\r\nimport { documentsLoadTrFaq } from '../../../documents';\r\n\r\nimport { tuitionInstitutionLoadCollection } from '../../../tuition-institution';\r\n\r\nimport OverviewSummary from '../components/overview-summary';\r\nimport OverviewInstitutions from '../components/overview-institutions';\r\nimport RequiredInformation from '../components/required-information';\r\n\r\nconst ButtonRight = styled(Button)`\r\n float: right;\r\n width: 150px;\r\n`;\r\n\r\nclass MyTuition extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n institutionData: t.object,\r\n id: t.string.isRequired,\r\n load: t.func.isRequired,\r\n loadInstitution: t.func.isRequired,\r\n request: t.object.isRequired,\r\n updateRequest: t.object.isRequired,\r\n institutionRequest: t.object.isRequired,\r\n errors: t.object,\r\n getFormData: t.func.isRequired,\r\n updateFormState: t.func.isRequired,\r\n saveData: t.func.isRequired,\r\n permissions: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n const { id, load } = this.props;\r\n load(id);\r\n }\r\n\r\n setRedirectURI = (urlInput) => {\r\n this.setState({ redirectURI: urlInput });\r\n };\r\n\r\n //overview\r\n render() {\r\n const { request, permissions = {} } = this.props;\r\n\r\n if (this.state.redirectURI !== undefined) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n\r\n return (\r\n <>\r\n <DashboardSection title=\"My Tuition Reimbursement\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-9\">\r\n <Header2>Maximize the value of your education with tuition reimbursement.</Header2>\r\n </div>\r\n <div className=\"col-12 col-lg-3\">\r\n <ButtonRight\r\n brand=\"primary\"\r\n type=\"submit\"\r\n onClick={() => {\r\n this.setRedirectURI('/benefits/tuition/need-assistance');\r\n }}\r\n >\r\n Need Assistance?\r\n </ButtonRight>\r\n </div>\r\n </div>\r\n <div id=\"messageSection\">\r\n <MessageTile messageType={'Tuition_Reimbursement'} />\r\n </div>\r\n <AsyncLoader request={request}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-12 col-md-12 col-lg-6 col-xl-6\">\r\n <OverviewSummary />\r\n </div>\r\n <div className=\"col-12 col-sm-12 col-md-12 col-lg-6 col-xl-6\">\r\n <RequiredInformation />\r\n </div>\r\n {!permissions.homeAddressIsMissing && (\r\n <div className=\"col-12 col-sm-12 col-md-12 col-lg-6 col-xl-6\">\r\n <OverviewInstitutions />\r\n </div>\r\n )}\r\n </div>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors } = state.tuition;\r\n return {\r\n data: getTuitionData(state),\r\n id: getUserId(state),\r\n errors: errors,\r\n request: state.tuition.requests.loadResource,\r\n updateRequest: state.tuition.requests.updateResource,\r\n institutionRequest: state.tuitionInstitution.requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n dispatch(tuitionInstitutionLoadCollection());\r\n await dispatch(tuitionLoadResource(id));\r\n dispatch(tuitionCopyResourceToForm(id));\r\n },\r\n updateFormState: (data, attributes) => dispatch(tuitionHandleFormChange(data, attributes)),\r\n saveData: async (id) => {\r\n await dispatch(tuitionUpdateResource(id));\r\n },\r\n getFAQ: () => {\r\n return dispatch(documentsLoadTrFaq());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(MyTuition));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faPlusCircle } from '@fortawesome/pro-solid-svg-icons/faPlusCircle';\r\n\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { AsyncLoader, Button, Card, CardBody, DashboardSection, Lede } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { getTuitionInstitutionData } from '../redux/selectors';\r\n\r\nimport {\r\n tuitionInstitutionLoadCollection,\r\n TuititionInstitutionRow,\r\n} from '../../../tuition-institution';\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nclass MyInstitutions extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n loadInstitution: t.func.isRequired,\r\n permissions: t.object,\r\n request: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '' };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadInstitution();\r\n }\r\n\r\n addClass() {\r\n this.setState({ ...this.state, redirectURI: '/tuition/new-class' });\r\n }\r\n\r\n render() {\r\n const { data = {}, request } = this.props;\r\n const institutions = [];\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <>\r\n <DashboardSection\r\n title={\r\n <div className=\"row\">\r\n <div className=\"col-12\">My Institutions</div>\r\n <div className=\"col-12\">\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.addClass();\r\n }}\r\n >\r\n <PaddedIcon icon={faPlusCircle} fixedWidth />\r\n Add New Institution\r\n </Button>\r\n </div>\r\n </div>\r\n }\r\n >\r\n <AsyncLoader\r\n request={request}\r\n empty={\r\n <Card>\r\n <CardBody>\r\n <FlexRow>\r\n <Lede>An institution has not been added.</Lede>\r\n </FlexRow>\r\n </CardBody>\r\n </Card>\r\n }\r\n >\r\n {Object.keys(data).length > 0 &&\r\n Object.keys(data).forEach((institution) => {\r\n institutions.push(\r\n <div className=\"col-6 col-xs-12 col-sm-12 col-md-12 col-lg-6 col-xl-6\">\r\n <TuititionInstitutionRow institutionId={institution} />\r\n </div>\r\n );\r\n })}\r\n <div className=\"row\">{institutions}</div>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadInstitution: () => dispatch(tuitionInstitutionLoadCollection()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(MyInstitutions));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\nimport { faPlusCircle } from '@fortawesome/pro-solid-svg-icons/faPlusCircle';\r\n\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n DashboardSection,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions, PaddedBadge } from '../../../routing';\r\n\r\nimport { getTuitionInstitutionData } from '../redux/selectors';\r\n\r\nimport { tuitionInstitutionLoadCollection } from '../../../tuition-institution';\r\n\r\nimport { TuitionInstitutionTermRow } from '../../../tuition-institution-term';\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nclass MyTerms extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n loadInstitution: t.func.isRequired,\r\n permissions: t.object,\r\n request: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '', hasMissingInfo: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadInstitution();\r\n }\r\n\r\n missingInfo = (data) => {\r\n this.setState({ ...this.state, hasMissingInfo: data });\r\n };\r\n\r\n noTermsOnFile = () => {\r\n return (\r\n <FlexRow>\r\n <dl>\r\n <dd>\r\n <Lede>You have not added any terms for this institution.</Lede>\r\n </dd>\r\n <dd>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.addClass();\r\n }}\r\n >\r\n <PaddedIcon icon={faPlusCircle} fixedWidth />\r\n Add New Term\r\n </Button>\r\n </dd>\r\n </dl>\r\n </FlexRow>\r\n );\r\n };\r\n\r\n noInstitutionsOnFile = () => {\r\n return (\r\n <Card>\r\n <CardBody>\r\n <FlexRow>\r\n <dl>\r\n <dd>\r\n <Lede>An institution must be added before a term can be added.</Lede>\r\n </dd>\r\n <dd>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.addClass();\r\n }}\r\n >\r\n <PaddedIcon icon={faPlusCircle} fixedWidth />\r\n Add New Institution\r\n </Button>\r\n </dd>\r\n </dl>\r\n </FlexRow>\r\n </CardBody>\r\n </Card>\r\n );\r\n };\r\n\r\n addClass() {\r\n this.setState({ ...this.state, redirectURI: '/tuition/new-class' });\r\n }\r\n\r\n render() {\r\n const { data = {}, request } = this.props;\r\n const institutions = [];\r\n let currentInstitution = false;\r\n let terms = [];\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <>\r\n <DashboardSection\r\n title={\r\n <div className=\"row\">\r\n <div className=\"col-12\">My Terms</div>\r\n <div className=\"col-12\">\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.addClass();\r\n }}\r\n >\r\n <PaddedIcon icon={faPlusCircle} fixedWidth />\r\n Add New Term\r\n </Button>\r\n </div>\r\n </div>\r\n }\r\n >\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n {this.state.hasMissingInfo && (\r\n <Lede>\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>{' '}\r\n - Indicates Missing Information\r\n </Lede>\r\n )}\r\n </div>\r\n </div>\r\n <AsyncLoader request={request} empty={this.noInstitutionsOnFile()}>\r\n {Object.keys(data).length > 0 &&\r\n Object.keys(data).forEach((institution) => {\r\n if (data[institution].current) {\r\n terms = [];\r\n currentInstitution = true;\r\n institutions.push(\r\n <Card>\r\n <CardBody>\r\n <CardTitle>{data[institution].institutionName}</CardTitle>\r\n {Object.keys(data[institution].terms).forEach((term) => {\r\n if (data[institution].terms[term].current) {\r\n terms.push(\r\n <div className=\"col-6 col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\">\r\n <TuitionInstitutionTermRow\r\n institutionId={institution}\r\n termId={term}\r\n hasMissingInformation={this.missingInfo}\r\n />\r\n </div>\r\n );\r\n }\r\n })}\r\n {terms.length > 0 && <div className=\"row\">{terms}</div>}\r\n {terms.length === 0 && this.noTermsOnFile()}\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n })}\r\n {institutions.length > 0 && institutions}\r\n {institutions.length === 0 && !currentInstitution && this.noInstitutionsOnFile()}\r\n </AsyncLoader>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadInstitution: () => dispatch(tuitionInstitutionLoadCollection()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(MyTerms));\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('tuitionInstitutionClass');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('tuitionInstitutionClass', types);\r\n","export const degreeGradeList = {\r\n '': '',\r\n A: 'A',\r\n B: 'B',\r\n C: 'C',\r\n D: 'D',\r\n F: 'F',\r\n AC: 'Credit',\r\n FW: 'Withdrawal',\r\n FI: 'Incomplete',\r\n};\r\n\r\nexport const certificationGradeList = { '': ' ', A: 'Pass', F: 'Fail' };\r\n\r\nexport const editableGrade = ['WAITPRFRPT', 'WAITPRF', 'WAITRPT', 'PRFRPTUPLD'];\r\n\r\nexport const editableClassName = [\r\n 'REIMDENY',\r\n 'REIMSENT',\r\n 'COMPLETE',\r\n 'REIMOVER',\r\n 'PREPAYCOMP',\r\n 'PSTAPPR',\r\n 'PRFRPTDENY',\r\n];\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n Modal,\r\n AsyncLoader,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../root';\r\nimport { safeAccess, stringIsNullOrEmpty } from '../../utils';\r\nimport { Fade } from '../../routing';\r\nimport {\r\n degreeGradeList,\r\n certificationGradeList,\r\n editableGrade,\r\n editableClassName,\r\n} from '../redux/selectors';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nclass TuitionInstitutionClassForm extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n getResource: t.object,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n institutionList: t.object.isRequired,\r\n termList: t.object.isRequired,\r\n isCertification: t.bool.isRequired,\r\n allowedCertifications: t.object,\r\n endDate: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.modalRef = React.createRef();\r\n this.firstInput = React.createRef();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n // if (!prevProps.isOpen && this.props.isOpen) {\r\n // // TODO: this focuses correctly, but loses focus right afterwards for some reason\r\n // this.firstInput.current.focus();\r\n // }\r\n /*if (!prevProps.errors.generalErrors && this.props.errors.generalErrors) {\r\n this.modalRef.current.scrollTo(0, 0);\r\n }*/\r\n }\r\n setGradeTextValue = (grade, isCertification, endDate) => {\r\n let termEndDate;\r\n const today = new Date();\r\n\r\n if (endDate !== undefined && endDate !== null) {\r\n termEndDate = new Date(format(parseISO(endDate), 'MM/dd/yyyy'));\r\n }\r\n\r\n if (termEndDate < today) {\r\n if (!isCertification) {\r\n if (grade === 'AC') {\r\n grade = 'Credit';\r\n } else if (grade === 'FW') {\r\n grade = 'Withdrawal';\r\n } else if (grade === 'FI') {\r\n grade = 'Incomplete';\r\n }\r\n } else {\r\n if (grade === 'A') {\r\n grade = 'Pass';\r\n } else if (grade === 'F') {\r\n grade = 'Fail';\r\n }\r\n }\r\n } else {\r\n grade = 'Term In Progress';\r\n }\r\n return grade;\r\n };\r\n\r\n getForm() {\r\n const {\r\n action,\r\n data,\r\n errors,\r\n endDate,\r\n onChange,\r\n onSubmit,\r\n institutionList,\r\n termList,\r\n isCertification,\r\n allowedCertifications,\r\n } = this.props;\r\n\r\n let gradeList = isCertification ? certificationGradeList : degreeGradeList;\r\n let grade = this.setGradeTextValue(data.grade, isCertification, endDate);\r\n\r\n return (\r\n <Form defaults={data} handleChange={onChange} id={data.id || 'create'} onSubmit={onSubmit}>\r\n <InputWrapper error={!!errors.institutionId}>\r\n <InputLabel htmlFor=\"institutionId\" required>\r\n Institution\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'institutionId.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"institutionId\"\r\n value={data.institutionId}\r\n options={institutionList}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.termId}>\r\n <InputLabel htmlFor=\"termId\" required>\r\n Term / Semester\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'termId.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect name=\"termId\" value={data.termId} options={termList} disabled={true} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.className}>\r\n <InputLabel htmlFor=\"className\" required>\r\n Class Name\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'className.detail')}</InputError>\r\n <InputGroup>\r\n {isCertification && Object.keys(allowedCertifications).length > 1 && (\r\n <InputSelect\r\n name=\"className\"\r\n value={data.className}\r\n options={allowedCertifications}\r\n disabled={action === 'Delete' || editableClassName.includes(data.currentStatusCode)}\r\n />\r\n )}\r\n {(!isCertification || Object.keys(allowedCertifications).length === 1) && (\r\n <InputText\r\n name=\"className\"\r\n defaultValue={data.className}\r\n disabled={action === 'Delete' || editableClassName.includes(data.currentStatusCode)}\r\n />\r\n )}\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.grade}>\r\n <InputLabel htmlFor=\"grade\">Grade</InputLabel>\r\n <InputError>{safeAccess(errors, 'grade.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n value={grade === 'Term In Progress' ? 'Term In Progress' : data.grade}\r\n disabled={\r\n grade === 'Term In Progress' ||\r\n action === 'Add' ||\r\n action === 'Delete' ||\r\n !editableGrade.includes(data.currentStatusCode)\r\n }\r\n name=\"grade\"\r\n options={\r\n grade === 'Term In Progress'\r\n ? { 'Term In Progress': 'Term In Progress' }\r\n : gradeList\r\n }\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.hours}>\r\n <InputLabel htmlFor=\"hours\">Hours</InputLabel>\r\n <InputError>{safeAccess(errors, 'hours.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"hours\" defaultValue={data.hours} disabled={action === 'Delete'} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n }\r\n\r\n enableSubmit = () => {\r\n return this.checkNoMissingData() && this.checkNoErrors();\r\n };\r\n\r\n checkNoMissingData = () => {\r\n const { data = {}, isCertification, endDate, action } = this.props;\r\n let grade = this.setGradeTextValue(data.grade, isCertification, endDate);\r\n\r\n if (\r\n grade === 'Term In Progress' ||\r\n action === 'Add' ||\r\n action === 'Delete' ||\r\n !editableGrade.includes(data.currentStatusCode)\r\n ) {\r\n return !stringIsNullOrEmpty(data.className);\r\n } else {\r\n return !stringIsNullOrEmpty(data.className) && !stringIsNullOrEmpty(grade);\r\n }\r\n };\r\n\r\n checkNoErrors = () => {\r\n const { errors = {} } = this.props;\r\n return !errors.className && !errors.grade && !errors.hours;\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (!this.props.isLoading) {\r\n this.props.onSubmit();\r\n }\r\n };\r\n\r\n render() {\r\n const { getResource, action, closeForm, errors = {}, isLoading, isOpen } = this.props;\r\n return (\r\n <Modal ref={this.modalRef} isOpen={isOpen}>\r\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\r\n <CardHeader>{action} Class</CardHeader>\r\n <CardBody>\r\n {errors.generalErrors &&\r\n errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n {action === 'Add' && <TextLeft>{this.getForm()}</TextLeft>}\r\n {(action === 'Update' || action === 'Delete') && (\r\n <AsyncLoader request={getResource}>\r\n {!getResource.isLoading && <TextLeft>{this.getForm()}</TextLeft>}\r\n </AsyncLoader>\r\n )}\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Fade show={this.enableSubmit()}>\r\n <Button brand=\"success\" onClick={(e) => this.submit(e)}>\r\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : action + ' class'}\r\n </Button>\r\n </Fade>\r\n <Fade show={!getResource.isLoading && !this.checkNoMissingData()}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade\r\n show={!getResource.isLoading && this.checkNoMissingData() && !this.checkNoErrors()}\r\n >\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nexport default TuitionInstitutionClassForm;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('tuitionInstitutionClass', types);\r\n","import actions from './actions';\r\nimport { normalize, patchApi, resourceOperationsGenerator } from '../../utils';\r\nimport { getToken } from '../../auth';\r\nimport { tuitionInstitutionLoadCollection } from '../../tuition-institution';\r\nimport { TuitionInstitutionClassValidator } from './validators';\r\nconst endpointHandler = {\r\n endpoint: '/tuition-reimbursement-class',\r\n customResponseHandler: null,\r\n resourceType: 'tuition-reimbursement-class',\r\n};\r\n\r\nconst tuitionInstitutionClassValidator = new TuitionInstitutionClassValidator();\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'tuitionInstitutionClass',\r\n actions,\r\n null,\r\n tuitionInstitutionClassValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n tuitionInstitutionClassClearForm,\r\n tuitionInstitutionClassCopyResourceToForm,\r\n tuitionInstitutionClassHandleFormChange,\r\n tuitionInstitutionClassLoadResource,\r\n tuitionInstitutionClassLoadCollection,\r\n tuitionInstitutionClassCreateResource,\r\n tuitionInstitutionClassDeleteResource,\r\n} = operations;\r\n\r\nconst classCreateResource = () => async (dispatch, getState) => {\r\n const addedId = await dispatch(tuitionInstitutionClassCreateResource());\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n return addedId;\r\n};\r\n\r\nconst classUpdateResource = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n try {\r\n dispatch(actions.tuitionInstitutionClassUpdateResourceRequest());\r\n const patchData = normalize('tuition-reimbursement-class', state.tuitionInstitutionClass.form);\r\n await patchApi(getToken(state), `/tuition-reimbursement-class/${id}`, patchData);\r\n\r\n dispatch(actions.tuitionInstitutionClassUpdateResourceResponse());\r\n\r\n dispatch(actions.tuitionInstitutionClassUpdateResourceSuccess());\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n } catch (error) {\r\n dispatch(operations.tuitionInstitutionClassHandleError(error));\r\n dispatch(actions.tuitionInstitutionClassUpdateResourceFailure(error));\r\n }\r\n};\r\n\r\nconst classDeleteResource = (id) => async (dispatch, getState) => {\r\n await dispatch(tuitionInstitutionClassDeleteResource(id));\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n};\r\n\r\nexport {\r\n tuitionInstitutionClassClearForm,\r\n tuitionInstitutionClassCopyResourceToForm,\r\n tuitionInstitutionClassHandleFormChange,\r\n tuitionInstitutionClassLoadResource,\r\n tuitionInstitutionClassLoadCollection,\r\n classCreateResource,\r\n classDeleteResource,\r\n classUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class TuitionInstitutionClassValidator extends FormValidator {\r\n className(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(150);\r\n }\r\n\r\n grade(validator) {}\r\n\r\n hours(validator) {\r\n if (validator.value) {\r\n validator.validNumber();\r\n validator.isLessThan(100);\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { Button, Card, CardBody, CardTitle, CardText, CardFooter } from 'fiducius-ui';\r\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\nimport { faEdit } from '@fortawesome/pro-solid-svg-icons/faEdit';\r\nimport { faTrash } from '@fortawesome/pro-solid-svg-icons/faTrash';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nimport { getToken } from '../../auth';\r\nimport { PaddedBadge } from '../../routing';\r\nimport { editableGrade } from '../redux/selectors';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\nimport { getTuitionInstitutionData } from '../../benefits/tuition/redux/selectors';\r\n\r\nimport { tuitionInstitutionLoadCollection } from '../../tuition-institution';\r\n\r\nimport { default as TuitionInstitutionClassForm } from './tuition-institution-class-form';\r\n\r\nimport {\r\n tuitionInstitutionClassClearForm,\r\n tuitionInstitutionClassCopyResourceToForm,\r\n tuitionInstitutionClassHandleFormChange,\r\n tuitionInstitutionClassLoadResource,\r\n classDeleteResource,\r\n classUpdateResource,\r\n} from '../redux/operations';\r\n\r\nimport { todosLoadCollection } from '../../todos';\r\n\r\nimport { debounce, mergeRequestStatuses, getApi } from '../../utils';\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst DivEnd = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin-left: 1em;\r\n`;\r\n\r\nclass TuitionInstitutionClassRow extends React.Component {\r\n static propTypes = {\r\n institutionId: t.number.isRequired,\r\n termId: t.number.isRequired,\r\n classId: t.number.isRequired,\r\n data: t.object,\r\n form: t.object,\r\n errors: t.object,\r\n getRequest: t.object,\r\n request: t.object,\r\n loadClass: t.func.isRequired,\r\n clearClassForm: t.func.isRequired,\r\n handleClassForm: t.func.isRequired,\r\n updateClass: t.func.isRequired,\r\n handleDeleteClass: t.func.isRequired,\r\n hydrateClassForm: t.func.isRequired,\r\n token: t.any,\r\n hasMissingInformation: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showForm: false,\r\n isDeleting: false,\r\n formId: null,\r\n allowedCertifications: {},\r\n endDate: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getCertificationDropDownOptions();\r\n }\r\n\r\n getCertificationDropDownOptions = () => {\r\n getApi(this.props.token, '/drop-down-list/Certification__A').then((data) => {\r\n let certifications = {};\r\n Object.keys(data).forEach((a) => {\r\n certifications[data[a].description] = data[a].description;\r\n });\r\n this.setState({ ...this.state, allowedCertifications: certifications });\r\n });\r\n };\r\n\r\n getInstitutionList = () => {\r\n const { data } = this.props;\r\n let realInstitutions = Object.keys(data).reduce(\r\n (obj, k) => ({\r\n ...obj,\r\n [k]: data[k].institutionName,\r\n }),\r\n {}\r\n );\r\n let institutions = { ...realInstitutions };\r\n return institutions;\r\n };\r\n\r\n getTermList = (institutionId) => {\r\n const { data } = this.props;\r\n if (institutionId !== undefined) {\r\n const termList = data[institutionId].terms;\r\n return Object.keys(termList).reduce(\r\n (obj, k) => ({\r\n ...obj,\r\n [k]: termList[k].termName,\r\n }),\r\n {}\r\n );\r\n }\r\n };\r\n\r\n editClass = () => {\r\n const classId = this.props.data[this.props.institutionId].terms[this.props.termId].classes[\r\n this.props.classId\r\n ].id;\r\n const endDate = this.props.data[this.props.institutionId].terms[this.props.termId].endDate;\r\n\r\n this.props.hydrateClassForm(classId);\r\n this.setState({\r\n formId: classId,\r\n showForm: true,\r\n isDeleting: false,\r\n endDate: endDate,\r\n });\r\n };\r\n deleteClass = () => {\r\n const classId = this.props.data[this.props.institutionId].terms[this.props.termId].classes[\r\n this.props.classId\r\n ].id;\r\n this.props.hydrateClassForm(classId);\r\n this.setState({ formId: classId, showForm: true, isDeleting: true });\r\n };\r\n\r\n onChangeClass = debounce((tuitionInstitutionClass, id, attributes) => {\r\n this.props.handleClassForm({ ...this.props.form, ...tuitionInstitutionClass }, [attributes]);\r\n }, 250);\r\n\r\n onUpdateClass = () => {\r\n this.props.updateClass(this.props.form.id);\r\n };\r\n\r\n onDeleteClass = () => {\r\n this.props.handleDeleteClass(this.props.form.id);\r\n };\r\n\r\n renderMissingInfoLengend = () => {\r\n this.props.hasMissingInformation(true);\r\n };\r\n\r\n closeForm = () => {\r\n this.props.clearClassForm();\r\n this.setState({\r\n ...this.state,\r\n showForm: false,\r\n formType: null,\r\n institutionId: null,\r\n termId: null,\r\n });\r\n };\r\n\r\n setGradeTextValue = (grade, degreeType, endDate) => {\r\n let termEndDate;\r\n const today = new Date();\r\n\r\n if (endDate !== undefined) {\r\n termEndDate = new Date(format(parseISO(endDate), 'MM/dd/yyyy'));\r\n }\r\n\r\n if (termEndDate < today) {\r\n if (degreeType !== 'CERT') {\r\n if (grade === 'AC') {\r\n grade = 'Credit';\r\n } else if (grade === 'FW') {\r\n grade = 'Withdrawal';\r\n } else if (grade === 'FI') {\r\n grade = 'Incomplete';\r\n }\r\n } else {\r\n if (grade === 'A') {\r\n grade = 'Pass';\r\n } else if (grade === 'F') {\r\n grade = 'Fail';\r\n }\r\n }\r\n } else {\r\n grade = 'Term In Progress';\r\n }\r\n return grade;\r\n };\r\n\r\n isClassCurrentAndEditable = (thisClass) => {\r\n let retVal = false;\r\n if (editableGrade.includes(thisClass.currentStatusCode)) {\r\n retVal = true;\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const {\r\n data = {},\r\n institutionId,\r\n termId,\r\n classId,\r\n request,\r\n errors,\r\n form = {},\r\n getRequest,\r\n } = this.props;\r\n const { showForm, formId, isDeleting } = this.state;\r\n\r\n const institution = data[institutionId];\r\n const term = data[institutionId].terms[termId];\r\n const thisClass = data[institutionId].terms[termId].classes[classId];\r\n const classCurrent = this.isClassCurrentAndEditable(thisClass);\r\n\r\n return (\r\n <>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col\">{thisClass.className}</div>\r\n <DivEnd className=\"col-5\">\r\n <StyledButton\r\n invert\r\n brand=\"secondary\"\r\n onClick={() => this.editClass()}\r\n disabled={!thisClass.editable}\r\n title={\r\n !thisClass.editable\r\n ? 'A class in a reimbursement pending, complete or denied status cannot be edited.'\r\n : 'Edit Class'\r\n }\r\n >\r\n <FontAwesomeIcon icon={faEdit} fixedWidth />\r\n </StyledButton>\r\n <StyledButton\r\n invert\r\n brand=\"danger\"\r\n onClick={() => this.deleteClass()}\r\n disabled={!thisClass.deletable}\r\n title={\r\n !thisClass.deletable\r\n ? 'A class in a reimbursement pending, complete or denied status cannot be deleted or if a document has been uploaded for it.'\r\n : 'Delete Class'\r\n }\r\n >\r\n <FontAwesomeIcon icon={faTrash} fixedWidth />\r\n </StyledButton>\r\n </DivEnd>\r\n </div>\r\n </CardTitle>\r\n <CardText>\r\n <div className=\"row\">\r\n <dl className=\"col-4\">\r\n <dt>\r\n Grade\r\n {classCurrent &&\r\n (thisClass.grade === null ||\r\n thisClass.grade === undefined ||\r\n thisClass.grade === '') && (\r\n <PaddedBadge brand=\"primary\">\r\n {this.renderMissingInfoLengend()}\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>\r\n )}\r\n </dt>\r\n <dd>\r\n {this.setGradeTextValue(thisClass.grade, institution.degreeType, term.endDate)}\r\n </dd>\r\n <dt>Hours</dt>\r\n <dd>{thisClass.hours}</dd>\r\n </dl>\r\n <dl className=\"col-4\">\r\n <dt>Current Status</dt>\r\n <dd>{thisClass.currentStatus}</dd>\r\n </dl>\r\n <dl className=\"col-4\"></dl>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n {false && (\r\n <FlexFooter>\r\n <Button\r\n invert\r\n brand=\"secondary\"\r\n onClick={() => this.editClass()}\r\n disabled={!thisClass.editable}\r\n title={\r\n !thisClass.editable\r\n ? 'You cannot edit a class that is in a pending, completed, or denied status.'\r\n : ''\r\n }\r\n >\r\n Edit\r\n </Button>\r\n <Button\r\n invert\r\n brand=\"danger\"\r\n onClick={() => this.deleteClass()}\r\n disabled={!thisClass.deletable}\r\n title={\r\n !thisClass.deletable\r\n ? 'You cannot delete a class that has been reimbursed or is in a pending, completed, or denied status.'\r\n : ''\r\n }\r\n >\r\n Delete\r\n </Button>\r\n </FlexFooter>\r\n )}\r\n </Card>\r\n {showForm && (\r\n <TuitionInstitutionClassForm\r\n action={formId ? (isDeleting ? 'Delete' : 'Update') : 'Add'}\r\n closeForm={this.closeForm}\r\n data={form}\r\n errors={errors}\r\n isLoading={request.isLoading}\r\n getResource={getRequest}\r\n isOpen={showForm}\r\n onChange={this.onChangeClass}\r\n onSubmit={\r\n formId ? (isDeleting ? this.onDeleteClass : this.onUpdateClass) : this.onCreateClass\r\n }\r\n institutionList={this.getInstitutionList()}\r\n termList={this.getTermList(this.props.institutionId || form.institutionId)}\r\n isCertification={institution.degreeType === 'CERT'}\r\n allowedCertifications={this.state.allowedCertifications}\r\n endDate={this.state.endDate}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests, errors, form } = state.tuitionInstitutionClass;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n token: getToken(state),\r\n getRequest: requests.loadResource,\r\n errors: errors,\r\n form: form,\r\n request: mergeRequestStatuses([\r\n requests.createResource,\r\n requests.updateResource,\r\n requests.deleteResource,\r\n ]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n clearClassForm: () => dispatch(tuitionInstitutionClassClearForm()),\r\n handleClassForm: (tuitionInstitutionClass, attributes) =>\r\n dispatch(tuitionInstitutionClassHandleFormChange(tuitionInstitutionClass, attributes)),\r\n hydrateClassForm: async (id) => {\r\n await dispatch(tuitionInstitutionClassLoadResource(id));\r\n await dispatch(tuitionInstitutionClassCopyResourceToForm(id));\r\n },\r\n updateClass: async (id) => {\r\n await dispatch(classUpdateResource(id));\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n dispatch(todosLoadCollection());\r\n dispatch(tuitionInstitutionClassClearForm());\r\n },\r\n handleDeleteClass: async (id) => {\r\n await dispatch(classDeleteResource(id));\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n dispatch(todosLoadCollection());\r\n dispatch(tuitionInstitutionClassClearForm());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionInstitutionClassRow);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { Card, CardBody, CardTitle, CardText, Header4 } from 'fiducius-ui';\r\n\r\nimport { getTuitionInstitutionData } from '../../benefits/tuition/redux/selectors';\r\n\r\nclass TuitionInstitutionHistoryClassRow extends React.Component {\r\n static propTypes = {\r\n institutionId: t.number.isRequired,\r\n termId: t.number.isRequired,\r\n classId: t.number.isRequired,\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n setGradeTextValue = (grade, degreeType) => {\r\n if (degreeType !== 'CERT') {\r\n if (grade === 'AC') {\r\n grade = 'Credit';\r\n } else if (grade === 'FW') {\r\n grade = 'Withdrawal';\r\n } else if (grade === 'FI') {\r\n grade = 'Incomplete';\r\n }\r\n } else {\r\n if (grade === 'A') {\r\n grade = 'Pass';\r\n } else if (grade === 'F') {\r\n grade = 'Fail';\r\n }\r\n }\r\n return grade;\r\n };\r\n\r\n render() {\r\n const { data, institutionId, termId, classId } = this.props;\r\n const institution = data[institutionId];\r\n const term = data[institutionId].terms[termId];\r\n const thisClass = data[institutionId].terms[termId].classes[classId];\r\n\r\n thisClass.grade = this.setGradeTextValue(thisClass.grade, institution.degreeType);\r\n\r\n return (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n {thisClass.className}\r\n <br />\r\n <Header4 className=\"offset-1\">\r\n {institution.institutionName + ' - ' + term.termName}\r\n </Header4>\r\n </CardTitle>\r\n <CardText>\r\n <dl>\r\n <dt>Grade</dt>\r\n <dd>{thisClass.grade}</dd>\r\n <dt>Hours</dt>\r\n <dd>{thisClass.hours}</dd>\r\n <dt>Current Status</dt>\r\n <dd>{thisClass.currentStatus}</dd>\r\n </dl>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (state) => {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionInstitutionHistoryClassRow);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { Card, CardBody, CardTitle, CardText, Header4 } from 'fiducius-ui';\r\n\r\nimport { getTuitionInstitutionData } from '../../benefits/tuition/redux/selectors';\r\n\r\nclass TuitionInstitutionCurrentClassRow extends React.Component {\r\n static propTypes = {\r\n institutionId: t.number.isRequired,\r\n termId: t.number.isRequired,\r\n classId: t.number.isRequired,\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n setGradeTextValue = (grade, degreeType) => {\r\n if (degreeType !== 'CERT') {\r\n if (grade === 'AC') {\r\n grade = 'Credit';\r\n } else if (grade === 'FW') {\r\n grade = 'Withdrawal';\r\n } else if (grade === 'FI') {\r\n grade = 'Incomplete';\r\n }\r\n } else {\r\n if (grade === 'A') {\r\n grade = 'Pass';\r\n } else if (grade === 'F') {\r\n grade = 'Fail';\r\n }\r\n }\r\n return grade;\r\n };\r\n\r\n render() {\r\n const { data, institutionId, termId, classId } = this.props;\r\n const institution = data[institutionId];\r\n const term = data[institutionId].terms[termId];\r\n const thisClass = data[institutionId].terms[termId].classes[classId];\r\n\r\n thisClass.grade = this.setGradeTextValue(thisClass.grade, institution.degreeType);\r\n\r\n return (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n {thisClass.className}\r\n <br />\r\n <Header4 className=\"offset-1\">\r\n {institution.institutionName + ' - ' + term.termName}\r\n </Header4>\r\n </CardTitle>\r\n <CardText>\r\n <dl>\r\n <dt>Grade</dt>\r\n <dd>{thisClass.grade}</dd>\r\n <dt>Hours</dt>\r\n <dd>{thisClass.hours}</dd>\r\n <dt>Current Status</dt>\r\n <dd>{thisClass.currentStatus}</dd>\r\n </dl>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (state) => {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionInstitutionCurrentClassRow);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\nimport { faPlusCircle } from '@fortawesome/pro-solid-svg-icons/faPlusCircle';\r\n\r\nimport { PaddedBadge } from '../../../routing';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n DashboardSection,\r\n Header4,\r\n Lede,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { getTuitionInstitutionData } from '../redux/selectors';\r\n\r\nimport { tuitionInstitutionLoadCollection } from '../../../tuition-institution';\r\n\r\nimport { TuitionInstitutionClassRow } from '../../../tuition-institution-class';\r\n\r\nimport TuitionStatusInfo from '../components/tuition-status-info';\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nclass MyClasses extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n loadInstitution: t.func.isRequired,\r\n permissions: t.object,\r\n request: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '', openStatusModal: false, hasMissingInfo: false };\r\n this.handleStatusModal = this.handleStatusModal.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadInstitution();\r\n }\r\n\r\n handleStatusModal() {\r\n this.setState({ openStatusModal: !this.state.openStatusModal });\r\n }\r\n\r\n noClassesOnFile() {\r\n return (\r\n <FlexRow>\r\n <dl>\r\n <dd>\r\n <Lede>You have not added any classes for this term.</Lede>\r\n </dd>\r\n <dd>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.addClass();\r\n }}\r\n >\r\n <PaddedIcon icon={faPlusCircle} fixedWidth />\r\n Add New Class\r\n </Button>\r\n </dd>\r\n </dl>\r\n </FlexRow>\r\n );\r\n }\r\n\r\n noTermsOnFile() {\r\n return (\r\n <Card>\r\n <CardBody>\r\n <FlexRow>\r\n <dl>\r\n <dd>\r\n <Lede>A term must be added before a class can be added.</Lede>\r\n </dd>\r\n <dd>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.addClass();\r\n }}\r\n >\r\n <PaddedIcon icon={faPlusCircle} fixedWidth />\r\n Add New Term\r\n </Button>\r\n </dd>\r\n </dl>\r\n </FlexRow>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n\r\n noInstitutionsOnFile() {\r\n return (\r\n <Card>\r\n <CardBody>\r\n <FlexRow>\r\n <dl>\r\n <dd>\r\n <Lede>An institution and term must be added before a class can be added.</Lede>\r\n </dd>\r\n <dd>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.addClass();\r\n }}\r\n >\r\n <PaddedIcon icon={faPlusCircle} fixedWidth />\r\n Add New Institution\r\n </Button>\r\n </dd>\r\n </dl>\r\n </FlexRow>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n\r\n addClass() {\r\n this.setState({ ...this.state, redirectURI: '/tuition/new-class' });\r\n }\r\n\r\n missingInfo = (data) => {\r\n this.setState({ ...this.state, hasMissingInfo: data });\r\n };\r\n\r\n render() {\r\n const { data = {}, request } = this.props;\r\n const terms = [];\r\n let classes = [];\r\n let currentTerm = false;\r\n let currentInstitution = false;\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n\r\n return (\r\n <>\r\n <DashboardSection\r\n title={\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12\">My Classes</div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <StyledButton\r\n brand=\"primary\"\r\n onClick={() => {\r\n this.addClass();\r\n }}\r\n >\r\n <PaddedIcon icon={faPlusCircle} fixedWidth />\r\n Add New Class\r\n </StyledButton>\r\n <StyledButton brand=\"primary\" onClick={this.handleStatusModal}>\r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n Class Status Info\r\n </StyledButton>\r\n </div>\r\n </div>\r\n </>\r\n }\r\n >\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n {this.state.hasMissingInfo && (\r\n <Lede>\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faSolidExclamation} />\r\n </PaddedBadge>{' '}\r\n - Indicates Missing Information\r\n </Lede>\r\n )}\r\n </div>\r\n </div>\r\n <AsyncLoader request={request} empty={this.noInstitutionsOnFile()}>\r\n {Object.keys(data).length > 0 &&\r\n Object.keys(data).forEach((institution) => {\r\n if (data[institution].current) {\r\n currentInstitution = true;\r\n Object.keys(data[institution].terms).forEach((term) => {\r\n if (data[institution].terms[term].current) {\r\n currentTerm = true;\r\n classes = [];\r\n terms.push(\r\n <Card>\r\n <CardBody>\r\n <CardTitle>\r\n <dl>\r\n <dd>{data[institution].institutionName}</dd>\r\n <dd>\r\n <Header4>{data[institution].terms[term].termName}</Header4>\r\n </dd>\r\n </dl>\r\n </CardTitle>\r\n {Object.keys(data[institution].terms[term].classes).forEach(\r\n (curClass) => {\r\n classes.push(\r\n <div className=\"col-6 col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\">\r\n <TuitionInstitutionClassRow\r\n institutionId={institution}\r\n termId={term}\r\n classId={curClass}\r\n hasMissingInformation={this.missingInfo}\r\n />\r\n </div>\r\n );\r\n }\r\n )}\r\n {classes.length > 0 && <div className=\"row\">{classes}</div>}\r\n {classes.length === 0 && this.noClassesOnFile()}\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n });\r\n }\r\n })}\r\n {terms.length > 0 && terms}\r\n {terms.length === 0 && currentInstitution && !currentTerm && this.noTermsOnFile()}\r\n {terms.length === 0 && !currentInstitution && this.noInstitutionsOnFile()}\r\n </AsyncLoader>\r\n </DashboardSection>\r\n <Modal isOpen={this.state.openStatusModal} fullWidth>\r\n <TuitionStatusInfo data={data} closeModal={this.handleStatusModal} />\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadInstitution: () => dispatch(tuitionInstitutionLoadCollection()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(MyClasses));\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, DashboardSection, Lede } from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { getTuitionInstitutionData } from '../redux/selectors';\r\n\r\nimport {\r\n tuitionInstitutionLoadCollection,\r\n TuitionInstitutionHistoryRow,\r\n} from '../../../tuition-institution';\r\n\r\nconst FlexRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nclass MyReimbursementHistory extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n loadInstitution: t.func.isRequired,\r\n permissions: t.object,\r\n request: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadInstitution();\r\n }\r\n\r\n noReimbursementsOnFile() {\r\n return (\r\n <FlexRow>\r\n <Lede>You have not been reimbursed for any completed terms.</Lede>\r\n </FlexRow>\r\n );\r\n }\r\n\r\n render() {\r\n const { data = {}, request } = this.props;\r\n const institutions = [];\r\n return (\r\n <>\r\n <DashboardSection title={<>My Reimbursement History</>}>\r\n <AsyncLoader request={request} empty={this.noReimbursementsOnFile()}>\r\n {Object.keys(data).length > 0 &&\r\n Object.keys(data).forEach((institution) => {\r\n if (data[institution].previous) {\r\n institutions.push(\r\n <div className=\"col-12 col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\">\r\n <TuitionInstitutionHistoryRow institutionId={institution} />\r\n </div>\r\n );\r\n }\r\n })}\r\n {institutions.length > 0 && <div className=\"row\">{institutions}</div>}\r\n {institutions.length === 0 && this.noReimbursementsOnFile()}\r\n </AsyncLoader>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n return {\r\n data: getTuitionInstitutionData(state),\r\n request: requests.loadCollection,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadInstitution: () => dispatch(tuitionInstitutionLoadCollection()),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(MyReimbursementHistory));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport { BrandColor, Card, CardBody, CardHeader, CardText, Header5, Button } from 'fiducius-ui';\r\nimport { formatAsMoney } from '../../../utils';\r\nimport { withPermissions, Fade } from '../../../routing';\r\nimport { getUserId } from '../../../auth';\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst TuitionQualify = withPermissions(({ tuitionAmount, cache }) => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Tuition Reimbursement</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Going back to, or already in school?</Header5>\r\n <Spaced>\r\n Your company has allocated up to{' '}\r\n <strong>\r\n <BrandColor brand=\"primary\"> {formatAsMoney(tuitionAmount)} </BrandColor>\r\n </strong>{' '}\r\n to use towards tuition per calendar year.\r\n </Spaced>\r\n </CardText>\r\n <Fade show={cache.qualifiedForgiveness === false}>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n window.location.href = '/benefits/tuition/overview';\r\n }}\r\n >\r\n Setup My Tuition Reimbursement\r\n </Button>\r\n </Fade>\r\n </CardBody>\r\n </Card>\r\n));\r\n\r\nTuitionQualify.propTypes = {\r\n tuitionAmount: t.number.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { advisor } = state;\r\n const { cache } = advisor;\r\n const id = getUserId(state);\r\n return {\r\n cache: cache[id],\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(withPermissions(TuitionQualify));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n CardFooter,\r\n Link,\r\n Header3,\r\n Header4,\r\n Button,\r\n BrandColor,\r\n Lede,\r\n ProgressBar,\r\n} from 'fiducius-ui';\r\nimport { formatAsMoney, safeAccess } from '../../../utils';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions, PaddedDD } from '../../../routing';\r\n\r\nimport { tuitionLoadResource } from '../redux/operations';\r\nimport { tuitionInstitutionLoadCollection } from '../../../tuition-institution';\r\n\r\nimport { getTuitionData, getTuitionInstitutionData } from '../redux/selectors';\r\nimport b64toBlob from 'b64-to-blob';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faFileDownload } from '@fortawesome/pro-solid-svg-icons/faFileDownload';\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nclass TuitionSummary extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n institutionData: t.object,\r\n id: t.string.isRequired,\r\n load: t.func.isRequired,\r\n request: t.object.isRequired,\r\n institutionRequest: t.object,\r\n getFAQ: t.func.isRequired,\r\n permissions: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n const { id, load } = this.props;\r\n load(id);\r\n }\r\n\r\n needSpecialMessage = () => {\r\n return (\r\n this.props.permissions.strategicPartnerId === 161 ||\r\n this.props.permissions.strategicPartnerId === parseInt(process.env.REACT_APP_NFPTEST_ID)\r\n );\r\n };\r\n\r\n onDownloadFaq = () => {\r\n this.props.getFAQ().then((data) => {\r\n if (safeAccess(data, 'fileData')) {\r\n this.getFileFromData(data.fileData, 'FAQ.pdf');\r\n }\r\n });\r\n };\r\n\r\n getFileFromData = (data, name) => {\r\n const blob = b64toBlob(data);\r\n\r\n // IE10+ : (has Blob, but not a[download] or URL)\r\n if (navigator.msSaveBlob) {\r\n return navigator.msSaveBlob(blob, name);\r\n } else {\r\n let link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = name;\r\n // Firefox and Edge require actual appended element for click()\r\n document.body.appendChild(link);\r\n link.click();\r\n window.URL.revokeObjectURL(link.href);\r\n link.remove();\r\n }\r\n };\r\n\r\n noReimbursementsOnFile = () => {\r\n return (\r\n <div className=\"col-12\">\r\n <Lede>You have no active terms.</Lede>\r\n </div>\r\n );\r\n };\r\n\r\n getAllStepsDenied(institutionId, termId) {\r\n const { institutionData } = this.props;\r\n const term = institutionData[institutionId].terms[termId];\r\n let retVal = false;\r\n if (Object.keys(term.classes).length > 0) {\r\n retVal = true;\r\n Object.keys(term.classes).forEach((myClass) => {\r\n if (term.classes[myClass].currentStatusCode !== 'REIMDENY') {\r\n retVal = false;\r\n }\r\n });\r\n }\r\n return retVal;\r\n }\r\n\r\n getCurrentStepText(completedSteps, institutionId, termId) {\r\n let stepText = '';\r\n switch (completedSteps) {\r\n case 0:\r\n stepText = 'Create Class';\r\n break;\r\n case 1:\r\n stepText = 'Manager Approval Needed';\r\n break;\r\n case 2:\r\n stepText = 'School Term in Progress';\r\n break;\r\n case 3:\r\n stepText = 'Proof of Payment and Transcript Required';\r\n break;\r\n case 4:\r\n stepText = 'Reimbursement Approval Pending';\r\n break;\r\n case 5:\r\n stepText = this.getAllStepsDenied(institutionId, termId)\r\n ? 'Reimbursement Denied'\r\n : 'Reimbursement Processing';\r\n break;\r\n case 6:\r\n stepText = 'Reimbursement Sent';\r\n break;\r\n default:\r\n break;\r\n }\r\n return stepText;\r\n }\r\n\r\n getCompletedSteps(institutionId, termId) {\r\n const { institutionData } = this.props;\r\n const term = institutionData[institutionId].terms[termId];\r\n\r\n let completedSteps = 8;\r\n const termEndDate = new Date(term.endDate);\r\n const today = new Date();\r\n\r\n if (Object.keys(term.classes).length > 0) {\r\n Object.keys(term.classes).forEach((myClass) => {\r\n switch (term.classes[myClass].currentStatusCode) {\r\n case 'CREATED':\r\n completedSteps = Math.min(completedSteps, 0);\r\n break;\r\n case 'WAIT':\r\n completedSteps = Math.min(completedSteps, 1);\r\n break;\r\n case 'APPR':\r\n case 'PREPAYAPPR':\r\n case 'PREPAYSENT':\r\n case 'PREPAYCOMP':\r\n completedSteps = Math.min(completedSteps, 2);\r\n break;\r\n case 'WAITPRFRPT':\r\n case 'WAITPRF':\r\n case 'WAITRPT':\r\n completedSteps = Math.min(completedSteps, 3);\r\n break;\r\n case 'PRFRPTUPLD':\r\n case 'PRFRPTAPPR':\r\n case 'PRFRPTDENY':\r\n case 'WAITPSTAPR':\r\n case 'PSTAPPR':\r\n case 'PSTDENY':\r\n completedSteps = Math.min(completedSteps, 4);\r\n break;\r\n case 'REIMSENT':\r\n case 'REIMDENY':\r\n completedSteps = Math.min(completedSteps, 5);\r\n break;\r\n case 'COMPLETE':\r\n completedSteps = Math.min(completedSteps, 6);\r\n break;\r\n case 'REIMOVER':\r\n if (today < termEndDate) {\r\n completedSteps = Math.min(completedSteps, 2);\r\n } else {\r\n completedSteps = Math.min(completedSteps, 5);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n return completedSteps;\r\n }\r\n\r\n getTermInfo = (institution, term) => {\r\n const { institutionData } = this.props;\r\n const completedSteps = this.getCompletedSteps(institution, term);\r\n const stepText = this.getCurrentStepText(completedSteps, institution, term);\r\n\r\n return (\r\n <>\r\n {completedSteps < 8 && (\r\n <div className=\"row\">\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <dl>\r\n <dd>{institutionData[institution].institutionName}</dd>\r\n <dd>{institutionData[institution].terms[term].termName}</dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <dl>\r\n <dd>\r\n <ProgressBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: (100 * completedSteps) / 6,\r\n },\r\n\r\n {\r\n brand: this.getAllStepsDenied(institution, term) ? 'danger' : 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: (100 * (completedSteps === 6 ? 0 : 1)) / 6,\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'To Be Completed',\r\n value: (100 * (completedSteps === 6 ? 0 : 5 - completedSteps)) / 6,\r\n },\r\n ]}\r\n />\r\n </dd>\r\n <dd>Stage: {stepText}</dd>\r\n </dl>\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n render() {\r\n const {\r\n data = {},\r\n institutionData = {},\r\n request,\r\n institutionRequest,\r\n permissions,\r\n } = this.props;\r\n\r\n const terms = [];\r\n return (\r\n <Card brand=\"tertiary\">\r\n <CardBody>\r\n <CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-8\">Tuition Reimbursement</div>\r\n <div className=\"col-12 col-sm-4\">\r\n <AsyncLoader request={request} loading={<></>}>\r\n {data.faqUploaded && (\r\n <Button brand=\"primary\" onClick={this.onDownloadFaq}>\r\n <PaddedIcon icon={faFileDownload} fixedWidth />\r\n Download Policy Information\r\n </Button>\r\n )}\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n </CardTitle>\r\n <AsyncLoader request={request}>\r\n {data.alertMessage && (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Header3>{data.alertMessage}</Header3>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-6 col-sm-6 col-xs-12\">\r\n <dl>\r\n <dt>Total Reimbursement</dt>\r\n <PaddedDD>\r\n <BrandColor brand=\"secondary\">\r\n {formatAsMoney(data.totalReimbursed)}\r\n </BrandColor>\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-6 col-sm-6 col-xs-12\">\r\n <dl>\r\n <dt>YTD Reimbursement</dt>\r\n <PaddedDD>\r\n <BrandColor brand=\"secondary\">{formatAsMoney(data.ytdReimbursed)}</BrandColor>\r\n {!this.needSpecialMessage() && <> /{formatAsMoney(data.maxYtdReimbursed)}</>}\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-6 col-sm-6 col-xs-12\">\r\n <dl>\r\n <dt>Pending Reimbursement</dt>\r\n <PaddedDD>\r\n <BrandColor brand=\"secondary\">\r\n {formatAsMoney(data.pendingReimbursement)}\r\n </BrandColor>\r\n </PaddedDD>\r\n </dl>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Header4>Active Term(s)</Header4>\r\n </div>\r\n </div>\r\n <AsyncLoader\r\n request={institutionRequest}\r\n empty={this.noReimbursementsOnFile()}\r\n loading={<></>}\r\n >\r\n {Object.keys(institutionData).length > 0 &&\r\n Object.keys(institutionData).forEach((institution) => {\r\n if (institutionData[institution].current) {\r\n Object.keys(institutionData[institution].terms).length > 0 &&\r\n Object.keys(institutionData[institution].terms).forEach((term) => {\r\n if (institutionData[institution].terms[term].current) {\r\n terms.push(this.getTermInfo(institution, term));\r\n }\r\n });\r\n }\r\n })}\r\n {terms.length > 0 && terms}\r\n {terms.length === 0 && this.noReimbursementsOnFile()}\r\n </AsyncLoader>\r\n </CardText>\r\n </AsyncLoader>\r\n </CardBody>\r\n <FlexFooter>\r\n {!permissions.tuitionReadOnly && (\r\n <>\r\n <Link to=\"/benefits/tuition/overview\">Tuition Reimbursement</Link>\r\n <Link to=\"/accounts\">My Accounts</Link>\r\n </>\r\n )}\r\n {permissions.tuitionReadOnly && (\r\n <>\r\n <Link to=\"/benefits/tuition/history\">Tuition Reimbursement History</Link>\r\n </>\r\n )}\r\n </FlexFooter>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: getTuitionData(state),\r\n institutionData: getTuitionInstitutionData(state),\r\n id: getUserId(state),\r\n request: state.tuition.requests.loadResource,\r\n institutionRequest: state.tuitionInstitution.requests.loadCollection,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => {\r\n dispatch(tuitionLoadResource(id));\r\n dispatch(tuitionInstitutionLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TuitionSummary));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('tuition', types);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Alert, Button } from 'fiducius-ui';\r\n\r\nconst StyledAlert = styled.div`\r\n align-items: center;\r\n align-self: center;\r\n display: flex;\r\n & > button {\r\n margin-left: auto;\r\n }\r\n`;\r\n\r\nconst EnrollingTuition = () => (\r\n <Alert brand=\"primary\">\r\n <StyledAlert>\r\n If you are participating in your employer's tuition assistance benefit and have not entered\r\n your bank and account information yet, please click here to complete it.\r\n <Button\r\n brand=\"primary\"\r\n invert\r\n onClick={() => {\r\n window.location.href = '/accounts';\r\n }}\r\n >\r\n Click here to get set up\r\n </Button>\r\n </StyledAlert>\r\n </Alert>\r\n);\r\n\r\nEnrollingTuition.propTypes = {};\r\n\r\nexport default EnrollingTuition;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, DashboardSection, Header1 } from 'fiducius-ui';\r\nimport { isStringWithContent } from '../../../utils';\r\nimport { withPermissions } from '../../../routing';\r\nimport { NeedAssistance } from '../../../need-assistance';\r\nimport Scheduler from '../../../meetings/containers/scheduler';\r\nimport FaqQuestion from '../../../faq/components/faq-question';\r\n\r\nconst TRNeedAssistance = ({ permissions, needAssistanceObject }) => {\r\n const TRAssistanceObject =\r\n needAssistanceObject.length &&\r\n needAssistanceObject.find((element) => {\r\n return element.id === 'TR_Assistance';\r\n });\r\n const TRMessagePromptObject =\r\n needAssistanceObject.length &&\r\n needAssistanceObject.find((element) => {\r\n return element.id === 'TRMessagePrompt';\r\n });\r\n const needAssistanceText = TRAssistanceObject && TRAssistanceObject.messageContent;\r\n const needAssistanceAvatarLink = TRAssistanceObject && TRAssistanceObject.avatarLink;\r\n const needAssistancePrompt = TRMessagePromptObject && TRMessagePromptObject.messageContent;\r\n const blocktext =\r\n isStringWithContent(needAssistanceText) ||\r\n isStringWithContent(needAssistanceAvatarLink) ||\r\n isStringWithContent(needAssistancePrompt)\r\n ? 'block'\r\n : 'none';\r\n\r\n const showSpeakToAnExpertButton = () => {\r\n if (permissions.clientStatus === 'FUPHB' && permissions.enterpriseEnabled) {\r\n return true;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <DashboardSection>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-9\">\r\n <Header1>Need Assistance?</Header1>\r\n </div>\r\n\r\n {showSpeakToAnExpertButton() && (\r\n <>\r\n <div className=\"col-12 col-lg-3\" style={{ 'text-align': 'right' }}>\r\n <Scheduler buttonText=\"Speak to an Expert\" />\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n <NeedAssistance messageType={'TRAlertPrompt'} />\r\n <Card style={{ display: blocktext }}>\r\n <CardBody>\r\n <CardTitle>Information</CardTitle>\r\n <NeedAssistance messageType={'TR_Assistance'} />\r\n <NeedAssistance messageType={'TRMessagePrompt'} />\r\n </CardBody>\r\n </Card>\r\n\r\n <Card>\r\n <CardBody>\r\n <CardTitle>FAQs</CardTitle>\r\n <FaqQuestion question={'What institutions can you enroll in?'}>\r\n <p>\r\n You can enroll in any institution accredited by the Department of Education's\r\n Office of Post-secondary Education.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'Can I receive reimbursement for certifications?'}>\r\n <p>\r\n If certifications are eligible per your employer’s tuition reimbursement policy,\r\n you can receive reimbursement for them.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'When can you enroll in this benefit?'}>\r\n <p>\r\n You can enroll at any point until your employer's budgetary limit for the benefit\r\n is reached.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion\r\n question={'What is the maximum amount of money you can request in a calendar year?'}\r\n >\r\n <p>\r\n Your maximum allotment can be found on your Tuition Overview page in the Summary\r\n Information Section of your Portal.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'When are payments sent?'}>\r\n <p>See Tuition Reimbursement Processing Section of Quick Ref Guide.</p>\r\n </FaqQuestion>\r\n <FaqQuestion\r\n question={'When will you get reimbursed for your degree(s) or certification(s)?'}\r\n >\r\n <p>\r\n You will be reimbursed after the necessary information has been received and\r\n reviewed. Once approved you will receive your reimbursement shortly thereafter.\r\n </p>\r\n </FaqQuestion>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n todos: Object.values(state.todos.cache),\r\n needAssistanceObject: Object.values(state.needAssistance.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TRNeedAssistance));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withPermissions } from '../../../routing';\r\nimport { Card, CardBody, CardHeader, CardText, Header5, Link } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst EmpcertQualify = withPermissions(({ cache }) => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Emplify</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Verify your employment!</Header5>\r\n <Spaced>\r\n Your employer has hired Fiducius to manage the verification of your employment. Click{' '}\r\n <Link to=\"/benefits/empcert/generate\">here</Link> to get started.\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n));\r\n\r\nEmpcertQualify.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => {\r\n const id = getUserId(state);\r\n return {\r\n //cache: cache[id],\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(withPermissions(EmpcertQualify));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n CardBody,\r\n CardText,\r\n DashboardSection,\r\n Button,\r\n Header2,\r\n Header4,\r\n InputWrapper,\r\n ProgressBar,\r\n} from 'fiducius-ui';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { safeAccess, mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nconst StyleBar = styled(ProgressBar)`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nclass EnterpriseEmpcertProgress extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n removeContainer: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '', fullServiceSteps: 9, currentURI: '' };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ ...this.state, currentURI: window.location.pathname });\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n goToCurrentStep = () => {\r\n const { permissions, todos } = this.props;\r\n let retVal = '/dashboard';\r\n if (\r\n permissions.enterpriseEmpcertSteps !== undefined &&\r\n permissions.enterpriseEmpcertSteps !== null\r\n ) {\r\n let enterpriseEmpCertStep = permissions.enterpriseEmpcertSteps.find((a) => a.stepCurrent);\r\n if (\r\n enterpriseEmpCertStep !== undefined &&\r\n enterpriseEmpCertStep !== null &&\r\n todos !== undefined &&\r\n todos !== null\r\n ) {\r\n if (enterpriseEmpCertStep.id == 'CompleteEnterpriseEmpcert') {\r\n retVal = '/benefits/empcert/complete';\r\n }\r\n\r\n const currentToDo = todos.find(\r\n (a) =>\r\n a.id === 800 ||\r\n a.id === 801 ||\r\n a.id === 805 ||\r\n a.id === 810 ||\r\n a.id === 815 ||\r\n a.id === 820\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 800:\r\n retVal = '/benefits/empcert/generate';\r\n break;\r\n case 801:\r\n case 810:\r\n retVal = '/benefits/empcert/submit';\r\n break;\r\n case 805:\r\n retVal = '/benefits/empcert/correction';\r\n break;\r\n case 815:\r\n retVal = '/benefits/empcert/check';\r\n break;\r\n case 820:\r\n retVal = '/benefits/empcert/complete';\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.setState({ ...this.state, redirectURI: retVal });\r\n };\r\n\r\n getCurrentStepText = () => {\r\n const { permissions, todos } = this.props;\r\n const enterpriseEmpcertSteps = permissions.enterpriseEmpcertSteps.filter((a) => a.stepCurrent);\r\n let enterpriseEmpcertStep = permissions.enterpriseEmpcertSteps.find((a) => a.stepCurrent);\r\n if (\r\n enterpriseEmpcertSteps !== undefined &&\r\n enterpriseEmpcertSteps !== null &&\r\n enterpriseEmpcertSteps.length > 1 &&\r\n enterpriseEmpcertSteps.find((a) => window.location.pathname.includes(a.stepPath))\r\n ) {\r\n enterpriseEmpcertStep = enterpriseEmpcertSteps.find((a) =>\r\n window.location.pathname.includes(a.stepPath)\r\n );\r\n }\r\n\r\n let retVal = '';\r\n if (\r\n enterpriseEmpcertStep !== undefined &&\r\n enterpriseEmpcertStep !== null &&\r\n todos !== undefined &&\r\n todos !== null\r\n ) {\r\n if (\r\n enterpriseEmpcertStep.id === 'GenerateEnterpriseEmpcert' ||\r\n enterpriseEmpcertStep.id === 'SubmitEnterpriseEmpcert' ||\r\n enterpriseEmpcertStep.id === 'CheckEnterpriseEmpcert' ||\r\n enterpriseEmpcertStep.id === 'CompleteEnterpriseEmpcert'\r\n ) {\r\n retVal = enterpriseEmpcertStep.stepText;\r\n const currentToDo = todos.find(\r\n (a) =>\r\n (enterpriseEmpcertStep.id === 'GenerateEnterpriseEmpcert' && a.id === 800) ||\r\n (enterpriseEmpcertStep.id === 'SubmitEnterpriseEmpcert' && a.id === 810) ||\r\n (enterpriseEmpcertStep.id === 'CheckEnterpriseEmpcert' && a.id === 815) ||\r\n (enterpriseEmpcertStep.id === 'CompleteEnterpriseEmpcert' && a.id === 820)\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 800:\r\n retVal += '';\r\n break;\r\n case 810:\r\n retVal += '';\r\n break;\r\n case 815:\r\n retVal += '';\r\n break;\r\n case 820:\r\n retVal += '';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } else {\r\n retVal = enterpriseEmpcertStep.stepText;\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getTotalSteps = () => {\r\n const { permissions } = this.props;\r\n const enterpriseEmpcertSteps = permissions.enterpriseEmpcertSteps.filter(\r\n (a) => a.id !== 'Overview'\r\n );\r\n return enterpriseEmpcertSteps.length;\r\n };\r\n\r\n getCompletedSteps = (normalized) => {\r\n const { permissions } = this.props;\r\n const enterpriseEmpcertSteps = permissions.enterpriseEmpcertSteps.filter(\r\n (a) => a.id !== 'Overview'\r\n );\r\n const completedSteps = enterpriseEmpcertSteps.filter((a) => a.stepComplete);\r\n if (normalized) {\r\n return 100.0 * (completedSteps.length / enterpriseEmpcertSteps.length);\r\n } else {\r\n return Math.min(completedSteps.length + 1, enterpriseEmpcertSteps.length);\r\n }\r\n };\r\n\r\n getCurrentStep = () => {\r\n const { permissions } = this.props;\r\n const enterpriseEmpcertSteps = permissions.enterpriseEmpcertSteps.filter(\r\n (a) => a.id !== 'Overview'\r\n );\r\n const currentSteps = permissions.enterpriseEmpcertSteps.filter(\r\n (a) => a.id !== 'Overview' && a.stepCurrent\r\n );\r\n const allStepsCompleted = permissions.enterpriseEmpcertSteps.filter(\r\n (a) => a.id === 'CompleteEnterpriseEmpcert' && a.stepComplete\r\n );\r\n\r\n if (allStepsCompleted.length > 0) {\r\n return 0;\r\n } else {\r\n return 100.0 * (currentSteps.length / enterpriseEmpcertSteps.length);\r\n }\r\n };\r\n\r\n getCurrentStepPath = () => {\r\n const { permissions } = this.props;\r\n\r\n const currentSteps = permissions.enterpriseEmpcertSteps.filter(\r\n (a) => a.id !== 'Overview' && a.stepCurrent\r\n );\r\n\r\n let stepPaths = [];\r\n currentSteps.forEach((step) => {\r\n stepPaths.push(step.stepPath);\r\n });\r\n //return an array since we can have multiple current steps.\r\n return stepPaths;\r\n };\r\n\r\n onCurrentStep = () => {\r\n let steps = this.getCurrentStepPath();\r\n var retVal = false;\r\n steps.forEach((step) => {\r\n if (retVal === false) {\r\n retVal = this.state.currentURI.includes(step);\r\n }\r\n });\r\n return retVal;\r\n };\r\n\r\n getLockedSteps = () => {\r\n return 100.0 - this.getCompletedSteps(true) - this.getCurrentStep();\r\n };\r\n\r\n render() {\r\n const { permissions, removeContainer } = this.props;\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n if (\r\n safeAccess(permissions, 'enterpriseEmpcertSteps') &&\r\n safeAccess(permissions, 'enterpriseEmpcertSteps').length > 1\r\n ) {\r\n return (\r\n <>\r\n {removeContainer && (\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n Your Employment Certification Progress : {this.getCompletedSteps(false)} /{' '}\r\n {this.getTotalSteps()}\r\n </Header2>\r\n\r\n <StyleBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: this.getCompletedSteps(true),\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: this.getCurrentStep(),\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'Locked',\r\n value: this.getLockedSteps(),\r\n },\r\n ]}\r\n />\r\n <div className=\"row col-12\">\r\n <div className=\"col-8 col-xl-8 col-lg-8 col-md-8 col-sm-12 col-xs-12\">\r\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\r\n </div>\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-4 col-sm-12 col-xs-12\">\r\n <InputWrapper>\r\n {!this.onCurrentStep() && (\r\n <Button brand=\"primary\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n {!removeContainer && (\r\n <DashboardSection>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n Your Employment Certification Progress : {this.getCompletedSteps(false)} /{' '}\r\n {this.getTotalSteps()}\r\n </Header2>\r\n <StyleBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: this.getCompletedSteps(true),\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: this.getCurrentStep(),\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'Locked',\r\n value: this.getLockedSteps(),\r\n },\r\n ]}\r\n />\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\">\r\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\r\n </div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n {!this.onCurrentStep() && (\r\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(EnterpriseEmpcertProgress));\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport { AsyncLoader, Card, CardBody, DashboardSection } from 'fiducius-ui';\nimport { Redirect } from 'react-router-dom';\n\nimport { mergeRequestStatuses } from '../../../utils';\n\nimport { withPermissions } from '../../../routing';\n\nimport RenewalConfirmation from '../../forgiveness/components/renewal-confirmation';\nimport EmpCertProgress from '../components/emp-cert-progress';\nimport StepDisplay from '../../forgiveness/components/step-display';\n\nclass EmpCertGenerate extends React.Component {\n static propTypes = {\n permissions: t.object.isRequired,\n request: t.object.isRequired,\n todos: t.array,\n };\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {}\n\n componentDidUpdate() {}\n\n scrollToStep(section) {\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\n }\n\n render() {\n const { request, permissions } = this.props;\n const reducedIdrRedirect =\n permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null;\n\n return (\n <>\n {reducedIdrRedirect && (\n <>\n <Redirect to={'/benefits/reducedidr/empcert-ss/step-1'} />\n </>\n )}\n <AsyncLoader request={request}>\n <div id=\"step1Section\">\n <EmpCertProgress />\n <DashboardSection title=\"Generate your Employment Certification\">\n <Card>\n <CardBody>\n <>\n <AsyncLoader request={this.props.request} loading={<></>}>\n <StepDisplay\n title={'Step 1 – Generate and Complete Employment Certification form'}\n >\n <ul>\n <li>\n Please click the button below to generate your Employment Certification\n form.\n </li>\n <li>\n After clicking the button, you will be directed to sign the first page\n of the form and an email will be sent to the authorized official to\n complete the second page of the form.\n </li>\n </ul>\n </StepDisplay>\n </AsyncLoader>\n <RenewalConfirmation stepId={800} />\n </>\n </CardBody>\n </Card>\n </DashboardSection>\n </div>\n </AsyncLoader>\n </>\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n state.todos.requests.loadCollection,\n ]),\n todos: Object.values(state.todos.cache),\n});\n\nconst mapDispatchToProps = (dispatch) => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmpCertGenerate));\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, DashboardSection } from 'fiducius-ui';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport RenewalConfirmation from '../../forgiveness/components/renewal-confirmation';\r\nimport EmpCertProgress from '../components/emp-cert-progress';\r\nimport StepDisplay from '../../forgiveness/components/step-display';\r\n\r\nclass EmpCertSubmit extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n scrollToStep(section) {\r\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n render() {\r\n const { request, permissions } = this.props;\r\n const reducedIdrRedirect =\r\n permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null;\r\n\r\n return (\r\n <>\r\n {reducedIdrRedirect && (\r\n <>\r\n <Redirect to={'/benefits/reducedidr/empcert-ss/step-2'} />\r\n </>\r\n )}\r\n <AsyncLoader request={request}>\r\n <div id=\"step2Section\">\r\n <EmpCertProgress />\r\n <DashboardSection title=\"Submit your Employment Certification\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay title={'Step 1 – Complete and send Employment Certification form'}>\r\n <ul>\r\n <li>\r\n You will be required to complete the first page of the form electronically\r\n by selecting your employer below.\r\n </li>\r\n </ul>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n <RenewalConfirmation stepId={810} />\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmpCertSubmit));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport RenewalConfirmation from '../../forgiveness/components/renewal-confirmation';\r\nimport EmpCertProgress from '../components/emp-cert-progress';\r\nimport StepDisplay from '../../forgiveness/components/step-display';\r\n\r\nclass EmpCertCheck extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n scrollToStep(section) {\r\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n getStep3RestrictionDate = () => {\r\n let retVal = undefined;\r\n const { permissions } = this.props;\r\n const empCertStep = permissions.enterpriseEmpcertSteps\r\n ? permissions.enterpriseEmpcertSteps.find((a) => a.id === 'CheckEnterpriseEmpcert')\r\n : permissions.reducedIdrSteps.find((a) => a.id === 'EmpCert');\r\n if (empCertStep.stepDateRestriction !== undefined) {\r\n let stepRestriction = new Date(empCertStep.stepDateRestriction);\r\n retVal =\r\n (stepRestriction.getMonth() + 1).toString() +\r\n '/' +\r\n stepRestriction.getDate() +\r\n '/' +\r\n stepRestriction.getFullYear();\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { request, permissions } = this.props;\r\n const restrictionDate = this.getStep3RestrictionDate();\r\n const reducedIdrRedirect =\r\n permissions.reducedIdrSteps !== undefined && permissions.reducedIdrSteps !== null;\r\n\r\n return (\r\n <>\r\n {reducedIdrRedirect && (\r\n <>\r\n <Redirect to={'/benefits/reducedidr/empcert-ss/step-3'} />\r\n </>\r\n )}\r\n <AsyncLoader request={request}>\r\n <div id=\"step3Section\">\r\n <EmpCertProgress />\r\n <DashboardSection title=\"Check on your Employment Certification\">\r\n <Card\r\n overlayCard={restrictionDate !== undefined && !permissions.isEmpcertCheckPaused}\r\n >\r\n {!permissions.isEmpcertCheckPaused && (\r\n <CardBody overlayCard hideOverlay={restrictionDate === undefined}>\r\n {restrictionDate !== undefined && (\r\n <>\r\n <CardTitle overlayCard>Wait for PSLF Application Results letter</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n Based on the average processing time for this document, it will be\r\n processed by your loan servicer on {restrictionDate} at the earliest*.\r\n You will not be able to confirm completion of this step until that date.\r\n </p>\r\n <p>\r\n *Please note: Your document is not guaranteed to be processed by this\r\n date. It is important to follow your steps closely.\r\n </p>\r\n </CardText>\r\n </>\r\n )}\r\n </CardBody>\r\n )}\r\n {permissions.isEmpcertCheckPaused && (\r\n <>\r\n <CardBody overlayCard>\r\n <>\r\n <CardTitle overlayCard>Application Pause</CardTitle>\r\n <CardText overlayCard>\r\n <p>\r\n This step can not be completed at this time. Beginning{' '}\r\n <b>May 1, 2024</b>, the Department of Education changed how it processes\r\n the Public Service Loan Forgiveness Program documentation. As a result,\r\n the processing of Employment Certification documentation is paused{' '}\r\n <b>until July 2024</b>. Please return to your MyFiducius portal and\r\n complete it once Fiducius notifies you that the Department of Education\r\n has resumed processing, projected for <b>July 2024</b>.\r\n </p>\r\n </CardText>\r\n </>\r\n </CardBody>\r\n </>\r\n )}\r\n <CardBody\r\n disableChildren={\r\n restrictionDate !== undefined || permissions.isEmpcertCheckPaused\r\n }\r\n >\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n <StepDisplay\r\n title={'Step 1 – Wait for PSLF Application Results from Federal Student Aid.'}\r\n >\r\n <ul>\r\n <li>The approval letter states your form has been accepted.</li>\r\n <li>\r\n There may also be an additional update letter which provides your number\r\n of qualifying payments towards the Public Service Loan Forgiveness program\r\n up to the date your employer signed your Employment Certification form.\r\n </li>\r\n <li>\r\n These typically arrive <strong>one to two months</strong> after the form\r\n is submitted.{' '}\r\n </li>\r\n <li>\r\n If your employment certification form is denied by your loan servicer,\r\n please select <strong>Employment Certification Denied</strong> below. A\r\n member of your Fiducius team will be contact within 3 business days to\r\n address the issue.\r\n </li>\r\n </ul>\r\n <strong>\r\n Do not confirm this step is finished until you have received both the PSLF\r\n Application Results and Qualifying Payment update letters.\r\n </strong>\r\n </StepDisplay>\r\n </AsyncLoader>\r\n {!permissions.isEmpcertCheckPaused && <RenewalConfirmation stepId={815} />}\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmpCertCheck));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { mergeRequestStatuses, convertIsoToSlash } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport EmpCertProgress from '../components/emp-cert-progress';\r\n\r\nclass EmpCertComplete extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n getNextReviewDate() {\r\n const { permissions } = this.props;\r\n const empCertStep = permissions.enterpriseEmpcertSteps.find(\r\n (a) => a.id === 'CompleteEnterpriseEmpcert'\r\n );\r\n\r\n if (empCertStep !== undefined && empCertStep !== null) {\r\n if (empCertStep.stepComplete) {\r\n return convertIsoToSlash(empCertStep.stepNextReviewDate);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n scrollToStep(section) {\r\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n render() {\r\n const { request, permissions } = this.props;\r\n let isComplete = false;\r\n if (\r\n permissions.enterpriseEmpcertSteps !== undefined &&\r\n permissions.enterpriseEmpcertSteps !== null\r\n ) {\r\n const currentStep = permissions.enterpriseEmpcertSteps.find((a) => a.stepCurrent);\r\n if (currentStep.id == 'CompleteEnterpriseEmpcert') {\r\n isComplete = true;\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <div id=\"step3Section\">\r\n <EmpCertProgress />\r\n <DashboardSection title=\"Employment Certification Completed\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={this.props.request} loading={<></>}>\r\n {isComplete && (\r\n <ul>\r\n <li>\r\n You have completed all of the steps of the employment certification\r\n process for this year.\r\n </li>\r\n <li>\r\n This process is completed on an annual basis and you will be able to start\r\n the process again on {this.getNextReviewDate()}.\r\n </li>\r\n </ul>\r\n )}\r\n {!isComplete && <p>You have not yet completed all of the steps.</p>}\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmpCertComplete));\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport { AsyncLoader, Card, CardBody, DashboardSection } from 'fiducius-ui';\n\nimport { mergeRequestStatuses, convertIsoToSlash } from '../../../utils';\n\nimport { withPermissions } from '../../../routing';\n\nimport EmpCertProgress from '../components/emp-cert-progress';\nimport ReducedIdrProgress from '../../reducedidr/components/reduced-idr-progress';\n\nclass EmpCertCorrection extends React.Component {\n static propTypes = {\n permissions: t.object.isRequired,\n request: t.object.isRequired,\n todos: t.array,\n };\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {}\n\n getNextReviewDate() {\n const { permissions } = this.props;\n const empCertStep = permissions.enterpriseEmpcertSteps.find(\n (a) => a.id === 'CompleteEnterpriseEmpcert'\n );\n\n if (empCertStep !== undefined && empCertStep !== null) {\n if (empCertStep.stepComplete) {\n return convertIsoToSlash(empCertStep.stepNextReviewDate);\n } else {\n return null;\n }\n }\n }\n\n componentDidUpdate() {}\n\n scrollToStep(section) {\n document.getElementById(section + 'Section').scrollIntoView({ behavior: 'smooth' });\n }\n\n render() {\n const { request, permissions } = this.props;\n\n return (\n <>\n <AsyncLoader request={request}>\n <div id=\"step3Section\">\n <EmpCertProgress />\n <ReducedIdrProgress />\n <DashboardSection title=\"Employment Information Correction/Update\">\n <Card>\n <CardBody>\n <AsyncLoader request={this.props.request} loading={<></>}>\n <ul>\n <li>\n You confirmed that information on your employment certification form was\n incorrect. It is your responsibility to contact your employer to discuss the\n information you feel is incorrect, if you have not done so yet.\n </li>\n <li>\n When your employer corrects the incorrect information, you will receive an\n email notification that you can generate a new employment certification\n form.\n </li>\n <li>\n If the previously provided employment information is accurate, please notify\n us via Contact Us.\n </li>\n </ul>\n </AsyncLoader>\n </CardBody>\n </Card>\n </DashboardSection>\n </div>\n </AsyncLoader>\n </>\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n state.todos.requests.loadCollection,\n ]),\n todos: Object.values(state.todos.cache),\n});\n\nconst mapDispatchToProps = (dispatch) => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(EmpCertCorrection));\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardText, CardTitle } from 'fiducius-ui';\r\n\r\nimport EmpCertProgress from '../components/emp-cert-progress';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nconst EmpCertSummary = ({ request }) => {\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <Card brand=\"secondary\">\r\n <CardBody>\r\n <CardText>\r\n <CardTitle>Emplify</CardTitle>\r\n <AsyncLoader request={request}>\r\n <EmpCertProgress removeContainer={true} />\r\n </AsyncLoader>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nEmpCertSummary.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EmpCertSummary);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withPermissions } from '../../../routing';\r\nimport { Card, CardBody, CardHeader, CardText, Header5, Link } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst FreshStartQualify = withPermissions(({ cache }) => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Fresh Start</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Eliminate your default status!</Header5>\r\n <Spaced>\r\n Your employer has hired Fiducius to provide instruction to remove the default status from\r\n your student loans. Click <Link to=\"/benefits/freshstart/overview\">here</Link> to get\r\n started.\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n));\r\n\r\nFreshStartQualify.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => {\r\n const id = getUserId(state);\r\n return {\r\n //cache: cache[id],\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(withPermissions(FreshStartQualify));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n CardBody,\r\n CardText,\r\n DashboardSection,\r\n Button,\r\n Header2,\r\n Header4,\r\n InputWrapper,\r\n ProgressBar,\r\n} from 'fiducius-ui';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { safeAccess, mergeRequestStatuses } from '../../../utils';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nconst StyleBar = styled(ProgressBar)`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nclass FreshStartProgress extends React.Component {\r\n static propTypes = {\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n todos: t.array,\r\n removeContainer: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '', fullServiceSteps: 9, currentURI: '' };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ ...this.state, currentURI: window.location.pathname });\r\n }\r\n\r\n componentDidUpdate() {}\r\n\r\n goToCurrentStep = () => {\r\n const { permissions, todos } = this.props;\r\n let retVal = '/dashboard';\r\n if (permissions.freshStartSteps !== undefined && permissions.freshStartSteps !== null) {\r\n let freshStartStep = permissions.freshStartSteps.find((a) => a.stepCurrent);\r\n if (\r\n freshStartStep !== undefined &&\r\n freshStartStep !== null &&\r\n todos !== undefined &&\r\n todos !== null\r\n ) {\r\n if (freshStartStep.id == 'CompleteFreshStart') {\r\n retVal = '/benefits/freshstart/complete';\r\n }\r\n\r\n const currentToDo = todos.find(\r\n (a) => a.id === 900 || a.id === 910 || a.id === 920 || a.id === 930\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 900:\r\n retVal = '/benefits/freshstart/contact';\r\n break;\r\n case 910:\r\n retVal = '/benefits/freshstart/awaiting';\r\n break;\r\n case 920:\r\n retVal = '/benefits/freshstart/nslds';\r\n break;\r\n case 930:\r\n retVal = '/benefits/freshstart/complete';\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.setState({ ...this.state, redirectURI: retVal });\r\n };\r\n\r\n getCurrentStepText = () => {\r\n const { permissions, todos } = this.props;\r\n const freshStartSteps = permissions.freshStartSteps.filter((a) => a.stepCurrent);\r\n let freshStartStep = permissions.freshStartSteps.find((a) => a.stepCurrent);\r\n if (\r\n freshStartSteps !== undefined &&\r\n freshStartSteps !== null &&\r\n freshStartSteps.length > 1 &&\r\n freshStartSteps.find((a) => window.location.pathname.includes(a.stepPath))\r\n ) {\r\n freshStartStep = freshStartSteps.find((a) => window.location.pathname.includes(a.stepPath));\r\n }\r\n\r\n let retVal = '';\r\n if (\r\n freshStartStep !== undefined &&\r\n freshStartStep !== null &&\r\n todos !== undefined &&\r\n todos !== null\r\n ) {\r\n if (\r\n freshStartStep.id === 'ContactFreshStart' ||\r\n freshStartStep.id === 'AwaitingFreshStart' ||\r\n freshStartStep.id === 'NSLDSUploadFreshStart' ||\r\n freshStartStep.id === 'CompleteFreshStart'\r\n ) {\r\n retVal = freshStartStep.stepText;\r\n const currentToDo = todos.find(\r\n (a) =>\r\n (freshStartStep.id === 'ContactFreshStart' && a.id === 900) ||\r\n (freshStartStep.id === 'AwaitingFreshStart' && a.id === 910) ||\r\n (freshStartStep.id === 'NSLDSUploadFreshStart' && a.id === 920) ||\r\n (freshStartStep.id === 'CompleteFreshStart' && a.id === 930)\r\n );\r\n\r\n if (currentToDo !== undefined && currentToDo !== null) {\r\n switch (currentToDo.id) {\r\n case 900:\r\n retVal += '';\r\n break;\r\n case 910:\r\n retVal += '';\r\n break;\r\n case 920:\r\n retVal += '';\r\n break;\r\n case 930:\r\n retVal += '';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } else {\r\n retVal = freshStartStep.stepText;\r\n }\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n getTotalSteps = () => {\r\n const { permissions } = this.props;\r\n const freshStartSteps = permissions.freshStartSteps.filter(\r\n (a) => a.id !== 'OverviewFreshStart'\r\n );\r\n return freshStartSteps.length;\r\n };\r\n\r\n getCompletedSteps = (normalized) => {\r\n const { permissions } = this.props;\r\n const freshStartSteps = permissions.freshStartSteps.filter(\r\n (a) => a.id !== 'OverviewFreshStart'\r\n );\r\n const completedSteps = freshStartSteps.filter((a) => a.stepComplete);\r\n if (normalized) {\r\n return 100.0 * (completedSteps.length / freshStartSteps.length);\r\n } else {\r\n return Math.min(completedSteps.length + 1, freshStartSteps.length);\r\n }\r\n };\r\n\r\n getCurrentStep = () => {\r\n const { permissions } = this.props;\r\n const freshStartSteps = permissions.freshStartSteps.filter(\r\n (a) => a.id !== 'OverviewFreshStart'\r\n );\r\n const currentSteps = permissions.freshStartSteps.filter(\r\n (a) => a.id !== 'OverviewFreshStart' && a.stepCurrent\r\n );\r\n const allStepsCompleted = permissions.freshStartSteps.filter(\r\n (a) => a.id === 'CompleteFreshStart' && a.stepComplete\r\n );\r\n\r\n if (allStepsCompleted.length > 0) {\r\n return 0;\r\n } else {\r\n return 100.0 * (currentSteps.length / freshStartSteps.length);\r\n }\r\n };\r\n\r\n getCurrentStepPath = () => {\r\n const { permissions } = this.props;\r\n\r\n const currentSteps = permissions.freshStartSteps.filter(\r\n (a) => a.id !== 'OverviewFreshStart' && a.stepCurrent\r\n );\r\n\r\n let stepPaths = [];\r\n currentSteps.forEach((step) => {\r\n stepPaths.push(step.stepPath);\r\n });\r\n //return an array since we can have multiple current steps.\r\n return stepPaths;\r\n };\r\n\r\n onCurrentStep = () => {\r\n let steps = this.getCurrentStepPath();\r\n var retVal = false;\r\n steps.forEach((step) => {\r\n if (retVal === false) {\r\n retVal = this.state.currentURI.includes(step);\r\n }\r\n });\r\n return retVal;\r\n };\r\n\r\n getLockedSteps = () => {\r\n return 100.0 - this.getCompletedSteps(true) - this.getCurrentStep();\r\n };\r\n\r\n render() {\r\n const { permissions, removeContainer } = this.props;\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else {\r\n if (\r\n safeAccess(permissions, 'freshStartSteps') &&\r\n safeAccess(permissions, 'freshStartSteps').length > 1\r\n ) {\r\n return (\r\n <>\r\n {removeContainer && (\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n Your Fresh Start Progress : {this.getCompletedSteps(false)} /{' '}\r\n {this.getTotalSteps()}\r\n </Header2>\r\n\r\n <StyleBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: this.getCompletedSteps(true),\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: this.getCurrentStep(),\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'Locked',\r\n value: this.getLockedSteps(),\r\n },\r\n ]}\r\n />\r\n <div className=\"row col-12\">\r\n <div className=\"col-8 col-xl-8 col-lg-8 col-md-8 col-sm-12 col-xs-12\">\r\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\r\n </div>\r\n <div className=\"col-4 col-xl-4 col-lg-4 col-md-4 col-sm-12 col-xs-12\">\r\n <InputWrapper>\r\n {!this.onCurrentStep() && (\r\n <Button brand=\"primary\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n {!removeContainer && (\r\n <DashboardSection>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n Your Fresh Start Progress : {this.getCompletedSteps(false)} /{' '}\r\n {this.getTotalSteps()}\r\n </Header2>\r\n <StyleBar\r\n categories={[\r\n {\r\n brand: 'success',\r\n name: 'success',\r\n title: 'Completed',\r\n value: this.getCompletedSteps(true),\r\n },\r\n\r\n {\r\n brand: 'info',\r\n name: 'info',\r\n title: 'Current',\r\n value: this.getCurrentStep(),\r\n },\r\n {\r\n brand: 'warning',\r\n name: 'warning',\r\n title: 'Locked',\r\n value: this.getLockedSteps(),\r\n },\r\n ]}\r\n />\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\">\r\n <Header4>Current Step: {this.getCurrentStepText()}</Header4>\r\n </div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n {!this.onCurrentStep() && (\r\n <Button brand=\"info\" onClick={this.goToCurrentStep}>\r\n {'Go to current step'}\r\n </Button>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n )}\r\n </>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(FreshStartProgress));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withPermissions } from '../../../routing';\r\nimport { Card, CardBody, CardFooter, CardText, CardTitle, Link } from 'fiducius-ui';\r\nimport FreshStartProgress from '../components/fresh-start-progress';\r\n\r\nimport { getUserId } from '../../../auth';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst FreshStartSummary = withPermissions(({}) => (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Fresh Start</CardTitle>\r\n <CardText>\r\n <Spaced>\r\n Fresh Start is a one-time temporary program from the U.S. Department of Education that\r\n offers the removal of default from your federal student loans and other special\r\n benefits.\r\n </Spaced>\r\n </CardText>\r\n <FreshStartProgress removeContainer={true} />\r\n </CardBody>\r\n <FlexFooter>\r\n <Link to=\"/benefits/freshstart/overview\">My Fresh Start</Link>\r\n </FlexFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n));\r\n\r\nFreshStartSummary.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => {\r\n const id = getUserId(state);\r\n return {};\r\n};\r\n\r\nexport default connect(mapStateToProps)(withPermissions(FreshStartSummary));\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n InputWrapper,\r\n InputCheckbox,\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n CardFooter,\r\n DashboardSection,\r\n} from 'fiducius-ui';\r\n\r\nimport FreshStartProgress from '../components/fresh-start-progress';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport { authLoadPermissions } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { todosLoadCollection, todosSendUpdate } from '../../../todos/redux/operations';\r\nimport styled from 'styled-components';\r\n\r\nconst InputWrapper2 = styled(InputWrapper)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst FreshStartAwaiting = ({ request, confirm, permissions }) => {\r\n const [redirectUri, setRedirectUri] = useState('');\r\n const [showCheckbox, setShowCheckbox] = useState(false);\r\n\r\n const hasCompletedStep = () => {\r\n const completedContact = permissions.freshStartSteps.filter(\r\n (a) => a.id === 'AwaitingFreshStart' && a.stepComplete\r\n );\r\n\r\n if (completedContact.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const isCurrentStep = () => {\r\n const currentAwaiting = permissions.freshStartSteps.filter(\r\n (a) => a.id === 'AwaitingFreshStart' && a.stepCurrent\r\n );\r\n\r\n if (currentAwaiting.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const confirmContact = () => {\r\n confirm().then(() => {\r\n setRedirectUri('/benefits/freshstart/nslds');\r\n });\r\n };\r\n\r\n const handleCheckboxChange = () => {\r\n setShowCheckbox(!showCheckbox);\r\n };\r\n\r\n if (redirectUri && redirectUri.length > 0) {\r\n return <Redirect to={redirectUri} />;\r\n } else {\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <AsyncLoader request={request}>\r\n <FreshStartProgress />\r\n <DashboardSection title=\"Awaiting Confirmation from Loan Servicer\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request} loading={<></>}>\r\n <p>\r\n The next step of Fresh Start is to wait for the following steps to be\r\n completed:\r\n </p>\r\n <ul>\r\n <li>\r\n The Department of Education will transfer your defaulted loans from the\r\n Default Resolution Group (or from a guaranty agency) to a loan servicer.\r\n </li>\r\n <li>\r\n The Department of Education will return your defaulted loans to \"in\r\n repayment\" status.\r\n </li>\r\n <li>\r\n The Department of Education will remove the record of your default from your\r\n credit report.\r\n </li>\r\n </ul>\r\n {!hasCompletedStep() && isCurrentStep() && (\r\n <>\r\n <div className=\"row col-12\">\r\n <div className=\"col-12\">\r\n <InputWrapper2>\r\n <InputCheckbox\r\n name=\"allowConfirmation\"\r\n label=\"I'm ready to confirm that my loans are no longer in default.\"\r\n onChange={() => handleCheckboxChange()}\r\n ></InputCheckbox>\r\n </InputWrapper2>\r\n </div>\r\n </div>\r\n <div className=\"row col-12\">\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n <Button\r\n id={'confirm'}\r\n brand={'primary'}\r\n onClick={confirmContact}\r\n disabled={!showCheckbox}\r\n >\r\n {'Confirm'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n {hasCompletedStep() && <p>You've completed this step.</p>}\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n );\r\n }\r\n};\r\n\r\nFreshStartAwaiting.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n confirm: async (id) => {\r\n dispatch(todosSendUpdate(910)).then(() => {\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n });\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(FreshStartAwaiting));\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { AsyncLoader, Card, CardBody, DashboardSection } from 'fiducius-ui';\r\n\r\nimport FreshStartProgress from '../components/fresh-start-progress';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport { authLoadPermissions } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { todosLoadCollection, todosSendUpdate } from '../../../todos/redux/operations';\r\n\r\nconst FreshStartComplete = ({ request, permissions }) => {\r\n const [redirectUri, setRedirectUri] = useState('');\r\n\r\n const hasCompletedStep = () => {\r\n const completedContact = permissions.freshStartSteps.filter(\r\n (a) => a.id === 'CompleteFreshStart' && a.stepComplete\r\n );\r\n\r\n if (completedContact.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n if (redirectUri && redirectUri.length > 0) {\r\n return <Redirect to={redirectUri} />;\r\n } else {\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <AsyncLoader request={request}>\r\n <FreshStartProgress />\r\n <DashboardSection title=\"Complete\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request} loading={<></>}>\r\n {!hasCompletedStep() && <p>You haven't reached this step yet.</p>}\r\n {hasCompletedStep() && (\r\n <p>\r\n Congratulations, you have completed all of the steps for Fresh Start! If you\r\n qualified for additional benefits, those are now available to you. Please\r\n review your To-do list to determine if you have new steps to complete.\r\n </p>\r\n )}\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n );\r\n }\r\n};\r\n\r\nFreshStartComplete.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n confirm: async (id) => {\r\n dispatch(todosSendUpdate(920)).then(() => {\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n });\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(FreshStartComplete));\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('freshStart');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/fresh-start',\r\n resourceType: 'fresh-start',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'freshStart',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst { freshStartLoadResource } = operations;\r\n\r\nexport { freshStartLoadResource };\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('freshStart', types);\r\n","import React, { useState, useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n CardFooter,\r\n DashboardSection,\r\n Modal,\r\n InputWrapper,\r\n Header2,\r\n} from 'fiducius-ui';\r\n\r\nimport FreshStartProgress from '../components/fresh-start-progress';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport { authLoadPermissions, getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { todosLoadCollection, todosSendUpdate } from '../../../todos/redux/operations';\r\n\r\nimport { freshStartLoadResource } from '../redux/operations';\r\n\r\nimport { FlexEnd } from '../../../root';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimes as faXIcon } from '@fortawesome/pro-regular-svg-icons/faTimes';\r\n\r\nconst FreshStartContact = ({ request, confirm, permissions, id, load, data }) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n\r\n const [redirectUri, setRedirectUri] = useState('');\r\n\r\n const hasCompletedStep = () => {\r\n const completedContact = permissions.freshStartSteps.filter(\r\n (a) => a.id === 'ContactFreshStart' && a.stepComplete\r\n );\r\n\r\n if (completedContact.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const isCurrentStep = () => {\r\n const currentContact = permissions.freshStartSteps.filter(\r\n (a) => a.id === 'ContactFreshStart' && a.stepCurrent\r\n );\r\n\r\n if (currentContact.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const confirmContact = () => {\r\n confirm().then(() => {\r\n setRedirectUri('/benefits/freshstart/awaiting');\r\n });\r\n };\r\n\r\n const [openAgenciesModal, setOpenAgenciesModal] = useState(false);\r\n\r\n const getGuarantyAgencyInfo = () => {\r\n //Object.keys(data).filter(a => a.)\r\n let retVal = [];\r\n const noPhoneText =\r\n \"Your guaranty agency's contact information was not present on your NSLDS text file. We recommend visiting their website to determine the best way to contact them.\";\r\n if (Object.values(data)[0]) {\r\n Object.values(data)[0]\r\n .freshStartDefaultedLoans.filter((a) => a.heldByGuaranty)\r\n .forEach((a) => {\r\n retVal.push(\r\n <p>\r\n Agency: {a.name}\r\n <br />\r\n {a.phoneNumber ? 'Phone: ' + a.phoneNumber : noPhoneText}\r\n </p>\r\n );\r\n });\r\n }\r\n\r\n if (hasDeptOfEdAgency() && hasGuarantyAgency) {\r\n retVal.push(\r\n <p>\r\n <b>\r\n The exact request you want to place is that you would like to participate in Fresh Start\r\n and to get out of default.\r\n </b>\r\n </p>\r\n );\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n const qualifiedForForgiveness = () => {\r\n if (Object.values(data).length > 0 && Object.values(data)[0].qualifiedForForgive) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const hasGuarantyAgency = () => {\r\n return (\r\n Object.values(data)[0] &&\r\n Object.values(data)[0].freshStartDefaultedLoans.filter((a) => a.heldByGuaranty).length > 0\r\n );\r\n };\r\n\r\n const hasDeptOfEdAgency = () => {\r\n return (\r\n Object.values(data)[0] &&\r\n Object.values(data)[0].freshStartDefaultedLoans.filter((a) => a.heldByDeptOfEd).length > 0\r\n );\r\n };\r\n\r\n const getMainText = () => {\r\n const hasDeptOfEd = hasDeptOfEdAgency();\r\n const hasGuaranty = hasGuarantyAgency();\r\n const retVal = [];\r\n\r\n if (hasDeptOfEd && hasGuaranty) {\r\n retVal.push(\r\n <>\r\n <p>\r\n Based on your NSLDS, you have loans held by both the Department of Education and a\r\n guaranty agency, or multiple agencies.\r\n </p>\r\n <p>The Department of Education can be contacted via one of the following methods:</p>\r\n </>\r\n );\r\n } else if (hasDeptOfEd) {\r\n retVal.push(\r\n <p>\r\n Based on your NSLDS, your loans are held by the Department of Education and they can be\r\n contacted via one of the following methods:\r\n </p>\r\n );\r\n } else if (hasGuaranty) {\r\n retVal.push(\r\n <>\r\n <p>\r\n Based on your NSLDS, your loans are held by a guaranty agency, or multiple agencies, and\r\n they can be contacted via phone.\r\n </p>\r\n <p>\r\n <b>\r\n The exact request you want to place is that you would like to participate in Fresh\r\n Start and to get out of default.\r\n </b>\r\n </p>\r\n </>\r\n );\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n const getDeptOfEdText = () => {\r\n return (\r\n <>\r\n <ul>\r\n <li>\r\n Online\r\n <ul>\r\n <li>\r\n Go to <a href=\"https://myeddebt.ed.gov\">myeddebt.ed.gov</a> and access your account.\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <ul>\r\n <li>\r\n Phone\r\n <ul>\r\n <li>Call the Department of Education at 1-800-621-3115.</li>\r\n <li>\r\n <b>\r\n The exact request you want to place is that you would like to participate in Fresh\r\n Start and to get out of default.\r\n </b>\r\n </li>\r\n {qualifiedForForgiveness() && (\r\n <li>\r\n After you place that request, the Department of Education will ask you to select a\r\n repayment plan. You will want to request a 10-Year Standard Repayment.\r\n <ul>\r\n <li>\r\n <b>\r\n Please note, the Department of Education, and its servicers, are not\r\n equipped to guide you through loan forgiveness to obtaining the most\r\n beneficial payment. Life events, household size, and tax filing all play a\r\n role in your potential monthly payment. Your employer has hired us to assist\r\n you through that process upon completion of Fresh Start.\r\n </b>\r\n </li>\r\n </ul>\r\n </li>\r\n )}\r\n </ul>\r\n </li>\r\n </ul>\r\n <ul>\r\n <li>\r\n Mail\r\n <ul>\r\n <li>\r\n Write a letter that includes your name, social security, date of birth, and the\r\n following: \"I would like to use Fresh Start to bring my loans back into good\r\n standing.\"\r\n </li>\r\n <li>This letter should be mailed to P.O. Box 5609, Greenville, TX 75403.</li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </>\r\n );\r\n };\r\n\r\n // const handleAgenciesModal = () => {\r\n // !openAgenciesModal\r\n // ? (document.body.style.overflow = 'hidden')\r\n // : (document.body.style.overflow = '');\r\n\r\n // document.getElementsByClassName('modal-wrapper')[0].style['position'] = 'fixed';\r\n\r\n // setOpenAgenciesModal(!openAgenciesModal);\r\n // };\r\n\r\n if (redirectUri && redirectUri.length > 0) {\r\n return <Redirect to={redirectUri} />;\r\n } else {\r\n // {Object.values(data)[0] && Object.values(data)[0].freshStartDefaultedLoans.filter((a) => a.heldByGuaranty).forEach((a) => console.log(a.name))}\r\n getGuarantyAgencyInfo();\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n {/* <Card brand=\"secondary\">\r\n <CardBody>\r\n <CardText>\r\n <CardTitle>Fresh Start Overview</CardTitle> */}\r\n <AsyncLoader request={request}>\r\n <FreshStartProgress />\r\n <DashboardSection title=\"Contact Loan Holder\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request} loading={<></>}>\r\n {getMainText()}\r\n {hasDeptOfEdAgency() && getDeptOfEdText()}\r\n {hasGuarantyAgency() && hasDeptOfEdAgency() && (\r\n <p>Your guaranty agency(s) can be contacted via phone:</p>\r\n )}\r\n {hasGuarantyAgency() && getGuarantyAgencyInfo()}\r\n {/* <Button brand=\"primary\" onClick={() => {setOpenAgenciesModal(true)}}>\r\n {'Modal'}\r\n </Button>*/}\r\n {!hasCompletedStep() && isCurrentStep() && (\r\n <Button brand=\"primary\" onClick={confirmContact}>\r\n {'Confirm'}\r\n </Button>\r\n )}\r\n {hasCompletedStep() && <p>You've completed this step.</p>}\r\n </AsyncLoader>\r\n </CardBody>\r\n {/* <CardFooter> \r\n </CardFooter> */}\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n <Modal isOpen={openAgenciesModal} fullWidth theme={'position:fixed;'}>\r\n <Card>\r\n <FlexEnd>\r\n <InputWrapper>\r\n <Button\r\n brand=\"lowContrast\"\r\n onClick={() => {\r\n setOpenAgenciesModal(false);\r\n }}\r\n >\r\n <FontAwesomeIcon icon={faXIcon} />\r\n </Button>\r\n </InputWrapper>\r\n </FlexEnd>\r\n <CardBody>\r\n <CardText>\r\n <Header2>\r\n <strong>Qualifying Employment Definitions</strong>\r\n </Header2>\r\n\r\n <p>\r\n A <b>Qualifying employer</b> includes the government, a not-for-profit\r\n organization that is tax-exempt under Section 501(c)(3) of the Internal Revenue\r\n Code, or a private not-for-profit organization that provides certain public\r\n services. Service in an AmeriCorps or Peace Corps position is also qualifying\r\n employment.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Button\r\n brand=\"lowContrast\"\r\n onClick={() => {\r\n setOpenAgenciesModal(false);\r\n }}\r\n >\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nFreshStartContact.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n id: getUserId(state),\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.freshStart.requests.loadResource,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n data: Object.values(state.freshStart.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n confirm: async (id) => {\r\n dispatch(todosSendUpdate(900)).then(() => {\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n });\r\n },\r\n load: async (id) => {\r\n await dispatch(freshStartLoadResource(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(FreshStartContact));\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { AsyncLoader, Card, CardBody, DashboardSection } from 'fiducius-ui';\r\n\r\nimport FreshStartProgress from '../components/fresh-start-progress';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport { authLoadPermissions } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { todosLoadCollection, todosSendUpdate } from '../../../todos/redux/operations';\r\n\r\nimport styled from 'styled-components';\r\n\r\nconst EmbedContainer = styled.div`\r\n position: relative;\r\n padding-bottom: 56.25%;\r\n height: 0;\r\n overflow: hidden;\r\n max-width: 100%;\r\n border: 0;\r\n`;\r\n\r\nconst EmbedContainerIFrame = styled.iframe`\r\n position: absolute; \r\n top: 0; left: 0; bottom: 0; right 0;\r\n width: 100%; \r\n height: 100%;\r\n border: 0; \r\n`;\r\n\r\nconst FreshStartOverview = ({ request }) => {\r\n const [redirectUri, setRedirectUri] = useState('');\r\n\r\n if (redirectUri && redirectUri.length > 0) {\r\n return <Redirect to={redirectUri} />;\r\n } else {\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <AsyncLoader request={request}>\r\n <FreshStartProgress />\r\n <DashboardSection title=\"Fresh Start\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request} loading={<></>}>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-8\">\r\n <EmbedContainer>\r\n <EmbedContainerIFrame\r\n src=\"https://player.vimeo.com/video/880524480?h=eb840c318e\"\r\n allow=\"autoplay; fullscreen; picture-in-picture\"\r\n title=\"Fresh Start Program\"\r\n allowfullscreen\r\n ></EmbedContainerIFrame>\r\n </EmbedContainer>\r\n </div>\r\n </div>\r\n <ul>\r\n <li>\r\n Fresh Start is a one-time temporary program from the U.S. Department of\r\n Education that offers the removal of default from your federal student loans\r\n and other special benefits.\r\n </li>\r\n <li>\r\n Other benefits include, but are not limited to, restoring access to federal\r\n student aid, stopping collections, and access to short-term relief\r\n (forbearance and deferment).\r\n </li>\r\n </ul>\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n );\r\n }\r\n};\r\n\r\nFreshStartOverview.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(FreshStartOverview));\r\n","import React, { useState, useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardText,\r\n DashboardSection,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport FreshStartProgress from '../components/fresh-start-progress';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport { authLoadPermissions, getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { todosLoadCollection, todosSendUpdate } from '../../../todos/redux/operations';\r\n\r\nimport { freshStartLoadResource } from '../redux/operations';\r\n\r\nimport NSLDSWorkflowScreening from '../../../workflows/nslds/components/nslds-workflow-screening';\r\nimport { documentsRemoveFromCache } from '../../../documents/redux/operations';\r\n\r\nconst FreshStartNSLDS = ({\r\n request,\r\n confirm,\r\n contact,\r\n permissions,\r\n id,\r\n load,\r\n data,\r\n removeFromCache,\r\n files,\r\n nsldsCreateResourceRequest,\r\n}) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n\r\n const [redirectUri, setRedirectUri] = useState('');\r\n const [nsldsUploaded, setNsldsUploaded] = useState(false);\r\n const [inNSLDSWorkflow, setInNSLDSWorkflow] = useState(true);\r\n const [nsldsWorkflowComplete, setNsldsWorkflowComplete] = useState(false);\r\n\r\n const updateNsldsUploaded = (uploaded) => {\r\n setNsldsUploaded(uploaded);\r\n };\r\n\r\n const removeNSLDSFileFromCache = () => {\r\n const matches = Object.keys(files).filter(\r\n (k) => files[k].fileTypeCd === 'LNDT' && files[k].id > 0\r\n );\r\n if (matches.length > 0) {\r\n removeFromCache(matches[0]);\r\n }\r\n nsldsCreateResourceRequest.hasFinished = false;\r\n };\r\n\r\n const nsldsWorkflowIsComplete = () => {\r\n setInNSLDSWorkflow(false);\r\n setNsldsWorkflowComplete(true);\r\n funcSetOpenModal(false);\r\n };\r\n\r\n const nsldsWorkFlowStartOver = () => {\r\n setInNSLDSWorkflow(true);\r\n setNsldsWorkflowComplete(false);\r\n };\r\n\r\n const clearUploadedNslds = () => {\r\n updateNsldsUploaded(false);\r\n nsldsWorkFlowStartOver();\r\n removeNSLDSFileFromCache();\r\n };\r\n\r\n const hasCompletedStep = () => {\r\n const completedNSLDSUpload = permissions.freshStartSteps.filter(\r\n (a) => a.id === 'NSLDSUploadFreshStart' && a.stepComplete\r\n );\r\n\r\n if (completedNSLDSUpload.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const isCurrentStep = () => {\r\n const currentUploadNSLDS = permissions.freshStartSteps.filter(\r\n (a) => a.id === 'NSLDSUploadFreshStart' && a.stepCurrent\r\n );\r\n\r\n if (currentUploadNSLDS.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const confirmUpload = () => {\r\n confirm().then(() => {\r\n setRedirectUri('/benefits/freshstart/complete');\r\n });\r\n };\r\n\r\n const confirmContact = () => {\r\n contact().then(() => {\r\n setRedirectUri('/benefits/freshstart/contact');\r\n });\r\n };\r\n\r\n const [openAgenciesModal, setOpenAgenciesModal] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!openAgenciesModal) {\r\n load(id);\r\n }\r\n }, [openAgenciesModal]);\r\n\r\n const funcSetOpenModal = (value) => {\r\n setOpenAgenciesModal(value);\r\n };\r\n\r\n const hasGuarantyAgency = () => {\r\n return (\r\n Object.values(data).length > 0 &&\r\n Object.values(data)[0].freshStartDefaultedLoans.filter((a) => a.heldByGuaranty).length > 0\r\n );\r\n };\r\n\r\n const hasDeptOfEdAgency = () => {\r\n return (\r\n Object.values(data).length > 0 &&\r\n Object.values(data)[0].freshStartDefaultedLoans.filter((a) => a.heldByDeptOfEd).length > 0\r\n );\r\n };\r\n\r\n const getMainText = () => {\r\n const retVal = [];\r\n retVal.push(\r\n <p>\r\n The final step of Fresh Start is to upload a new NSLDS text file that shows the default\r\n removed from your student loans.\r\n </p>\r\n );\r\n return retVal;\r\n };\r\n\r\n const showNSLDSUploadButton = () => {\r\n if (\r\n Object.values(data).length > 0 &&\r\n Object.values(data)[0].newNsldsUploaded &&\r\n !hasGuarantyAgency() &&\r\n !hasDeptOfEdAgency()\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n const showWaitRecontactContent = () => {\r\n if (\r\n Object.values(data).length > 0 &&\r\n Object.values(data)[0].newNsldsUploaded &&\r\n (hasGuarantyAgency() || hasDeptOfEdAgency())\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n if (redirectUri && redirectUri.length > 0) {\r\n return <Redirect to={redirectUri} />;\r\n } else {\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <AsyncLoader request={request}>\r\n <FreshStartProgress />\r\n <DashboardSection title=\"Upload NSLDS\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request} loading={<></>}>\r\n {getMainText()}\r\n {!hasCompletedStep() && !isCurrentStep() && (\r\n <p>You haven't reached this step yet.</p>\r\n )}\r\n {!hasCompletedStep() && isCurrentStep() && showNSLDSUploadButton() && (\r\n <>\r\n <p>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n setInNSLDSWorkflow(true);\r\n clearUploadedNslds();\r\n funcSetOpenModal(true);\r\n }}\r\n >\r\n {'NSLDS Upload'}\r\n </Button>\r\n </p>\r\n </>\r\n )}\r\n {!hasCompletedStep() && showWaitRecontactContent() && (\r\n <>\r\n <p>\r\n Your NSLDS text file is still showing a default status on your student\r\n loans. We recommend that you check your NSLDS in a week to determine if\r\n it has been updated, loan servicers tend to provide weekly updates.\r\n </p>\r\n <p>\r\n If you need to contact your loan holder again, please select the button\r\n below.\r\n </p>\r\n <p>\r\n <Button brand=\"primary\" onClick={confirmContact}>\r\n {'Contact Loan Holder'}\r\n </Button>\r\n </p>\r\n </>\r\n )}\r\n {!hasCompletedStep() && isCurrentStep() && !showNSLDSUploadButton() && (\r\n <>\r\n <p>\r\n Your NSLDs text file shows the default status has been removed from your\r\n student loans, please select \"Confirm\" below to move to the next step.\r\n </p>\r\n <Button brand=\"primary\" onClick={confirmUpload}>\r\n {'Confirm'}\r\n </Button>\r\n </>\r\n )}\r\n {hasCompletedStep() && <p>You've completed this step.</p>}\r\n </AsyncLoader>\r\n </CardBody>\r\n {/* <CardFooter> \r\n </CardFooter> */}\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n <Modal isOpen={openAgenciesModal} fullWidth theme={'position:fixed;'}>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n {!nsldsWorkflowComplete && (\r\n <NSLDSWorkflowScreening\r\n inNSLDSWorkflow={inNSLDSWorkflow}\r\n handleWorkflowComplete={nsldsWorkflowIsComplete}\r\n updateNsldsUploaded={updateNsldsUploaded}\r\n nsldsUploaded={nsldsUploaded}\r\n />\r\n )}\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nFreshStartNSLDS.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n id: getUserId(state),\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.freshStart.requests.loadResource,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n data: Object.values(state.freshStart.cache),\r\n files: state.documents.cache,\r\n nsldsCreateResourceRequest: state.nslds.requests.createResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n confirm: async (id) => {\r\n dispatch(todosSendUpdate(920)).then(() => {\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n });\r\n },\r\n contact: async (id) => {\r\n dispatch(todosSendUpdate(940)).then(() => {\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n });\r\n },\r\n load: async (id) => {\r\n await dispatch(freshStartLoadResource(id));\r\n },\r\n removeFromCache: (id) => dispatch(documentsRemoveFromCache(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(FreshStartNSLDS));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('freshStart', types);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withPermissions } from '../../../routing';\r\nimport { Card, CardBody, CardHeader, CardText, Header5, Link } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst EducationalReengagementQualify = withPermissions(({ cache }) => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Educational Reengagement</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Returning to school?</Header5>\r\n <Spaced>\r\n Going back to school takes a lot of preparation and planning and we will help make it\r\n easier.\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n));\r\n\r\nEducationalReengagementQualify.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => {\r\n const id = getUserId(state);\r\n return {\r\n //cache: cache[id],\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(withPermissions(EducationalReengagementQualify));\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('educationalReengagement');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\nimport { EducationalReengagementValidator } from './validators';\r\n\r\nconst educationalReengagementValidator = new EducationalReengagementValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/educational-reengagement',\r\n resourceType: 'educational-reengagement',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'educationalReengagement',\r\n actions,\r\n null,\r\n educationalReengagementValidator,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n educationalReengagementLoadResource,\r\n educationalReengagementUpdateResource,\r\n educationalReengagementHandleFormChange,\r\n} = operations;\r\n\r\nexport {\r\n educationalReengagementLoadResource,\r\n educationalReengagementUpdateResource,\r\n educationalReengagementHandleFormChange,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('educationalReengagement', types);\r\n","import { FormValidator } from '../../../utils';\r\n\r\nexport class EducationalReengagementValidator extends FormValidator {\r\n // Institution Date validators\r\n expectedReturnToSchoolDate(validator) {\r\n validator.isRequired();\r\n validator.validDate();\r\n validator.isAfterDate(Date.now());\r\n }\r\n\r\n expectedGraduationDate(validator) {\r\n validator.isRequired();\r\n validator.validDate();\r\n validator.isAfterDate(Date.now());\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Badge, Card, CardBody, CardFooter, CardTitle, Link } from 'fiducius-ui';\r\nimport { mergeRequestStatuses, convertIsoToSlash, debounce, safeAccess } from '../../../utils';\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { educationalReengagementLoadResource } from '../redux/operations';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faExclamation as faExclamationDark } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\n\r\nimport styled from 'styled-components';\r\n\r\nconst PaddedBadge = styled(Badge)`\r\n margin-left: 0.45em;\r\n font-size: 0.85em;\r\n vertical-align: middle;\r\n`;\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst EducationalReengagementSummary = ({ request, id, load, data = {} }) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n\r\n const translateDegree = (degree) => {\r\n let retVal = '';\r\n switch (degree) {\r\n case 'NONE':\r\n retVal = 'None';\r\n break;\r\n case 'ASSOC':\r\n retVal = 'Associates';\r\n break;\r\n case 'BA':\r\n retVal = 'Bachelors';\r\n break;\r\n case 'MA':\r\n retVal = 'Masters';\r\n break;\r\n case 'PHD':\r\n retVal = 'Doctorate';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Educational Reengagement</CardTitle>\r\n <AsyncLoader request={request}>\r\n <p>Institution: {Object.values(data) && safeAccess(data, 'institution', '')}</p>\r\n <p>\r\n Degree: {Object.values(data) && translateDegree(safeAccess(data, 'degree', ''))}\r\n </p>\r\n <p>\r\n Expected Return to School Date:{' '}\r\n {Object.values(data) &&\r\n data.expectedReturnToSchoolDate &&\r\n safeAccess(data, 'expectedReturnToSchoolDate').length > 0 ? (\r\n convertIsoToSlash(data.expectedReturnToSchoolDate)\r\n ) : (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </p>\r\n <p>\r\n Expected Graduation Date:{' '}\r\n {Object.values(data) &&\r\n data.expectedGraduationDate &&\r\n safeAccess(data, 'expectedGraduationDate').length > 0 ? (\r\n convertIsoToSlash(data.expectedGraduationDate)\r\n ) : (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </p>\r\n <p>\r\n Our team of expert advisors will ensure you understand what options are available\r\n to you based on your return to school. Please visit your Overview page, by\r\n selecting <b>My Educational Reengagement</b> below, for more information.\r\n </p>\r\n </AsyncLoader>\r\n </CardBody>\r\n <FlexFooter>\r\n <Link to=\"/benefits/educational-reengagement/overview\">\r\n My Educational Reengagement\r\n </Link>\r\n </FlexFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nEducationalReengagementSummary.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n id: getUserId(state),\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.educationalReengagement.requests.loadCollection,\r\n state.educationalReengagement.requests.updateResource,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n data: Object.values(state.educationalReengagement.cache)[0],\r\n form: state.educationalReengagement.form,\r\n errors: state.educationalReengagement.errors,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(educationalReengagementLoadResource(id));\r\n },\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(EducationalReengagementSummary));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { withPermissions, Fade } from '../../../routing';\r\n\r\nimport {\r\n Alert,\r\n Animation,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n CardTitle,\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputMask,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n Modal,\r\n fade,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../../root';\r\nimport { safeAccess, stringIsNullOrEmpty, convertIsoToSlash } from '../../../utils';\r\nimport { useEffect } from 'react';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst StyledFade = styled.div`\r\n ${fade};\r\n`;\r\n\r\nconst EducationalReengagementForm = ({\r\n permissions,\r\n data = {},\r\n errors = {},\r\n onChange,\r\n onSubmit,\r\n action,\r\n closeForm,\r\n isLoading,\r\n isOpen,\r\n}) => {\r\n const getShowSecondColumn = () => {\r\n return (\r\n (permissions.isFullService && permissions.inForgiveness) ||\r\n (!permissions.inTuition && permissions.inForgiveness)\r\n );\r\n };\r\n\r\n const getForm = () => {\r\n const id = data.id || 'create';\r\n\r\n let colVar = 'col-12 col-xl-6 col-lg-6 col-md-6';\r\n\r\n if (!getShowSecondColumn()) {\r\n colVar = 'col-12 col-xl-12 col-lg-12 col-md-12';\r\n }\r\n\r\n return (\r\n <Form defaults={data} handleChange={onChange} id={id} onSubmit={onSubmit}>\r\n <div className=\"row\">\r\n <div className={colVar}>\r\n <CardTitle>Institution Dates</CardTitle>\r\n <StyledFade>\r\n <InputWrapper error={!!errors.expectedReturnToSchoolDate}>\r\n <InputLabel htmlFor=\"expectedReturnToSchoolDate\" required>\r\n Expected Return to School Date\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'expectedReturnToSchoolDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.expectedReturnToSchoolDate)}\r\n mask=\"##/##/####\"\r\n name=\"expectedReturnToSchoolDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.expectedGraduationDate}>\r\n <InputLabel htmlFor=\"expectedGraduationDate\" required>\r\n Expected Graduation Date\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'expectedGraduationDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.expectedGraduationDate)}\r\n mask=\"##/##/####\"\r\n name=\"expectedGraduationDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledFade>\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n };\r\n\r\n const checkNoMissingData = () => {\r\n return (\r\n !stringIsNullOrEmpty(data.expectedReturnToSchoolDate) &&\r\n !stringIsNullOrEmpty(data.expectedGraduationDate)\r\n );\r\n };\r\n\r\n const checkNoErrors = () => {\r\n return !errors.expectedReturnToSchoolDate && !errors.expectedGraduationDate;\r\n };\r\n\r\n const enableSubmit = () => {\r\n return checkNoMissingData() && checkNoErrors();\r\n };\r\n\r\n const submit = (e) => {\r\n e.preventDefault();\r\n if (!isLoading) {\r\n onSubmit();\r\n }\r\n };\r\n\r\n return (\r\n <Modal isOpen={isOpen} theme={'position:fixed;'}>\r\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\r\n <CardHeader>Update Information</CardHeader>\r\n <CardBody>\r\n {errors.generalErrors && (\r\n <TextLeft>\r\n {errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n </TextLeft>\r\n )}\r\n <TextLeft>{getForm()}</TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Fade show={enableSubmit()}>\r\n <Button brand=\"success\" onClick={(e) => submit(e)}>\r\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Save'}\r\n </Button>\r\n </Fade>\r\n <Fade show={!isLoading && !checkNoMissingData()}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade show={!isLoading && checkNoMissingData() && !checkNoErrors()}>\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default withPermissions(EducationalReengagementForm);\r\n","import React, { useState, useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Badge,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n DashboardSection,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\nimport { FlexEnd } from '../../../root';\r\nimport EducationalReengagementForm from '../components/edu-reengagement-form';\r\nimport { mergeRequestStatuses, convertIsoToSlash, debounce, safeAccess } from '../../../utils';\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { todosLoadCollection } from '../../../todos/redux/operations';\r\n\r\nimport {\r\n educationalReengagementHandleFormChange,\r\n educationalReengagementLoadResource,\r\n educationalReengagementUpdateResource,\r\n} from '../redux/operations';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faExclamation as faExclamationDark } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\n\r\nimport styled from 'styled-components';\r\n\r\nconst PaddedBadge = styled(Badge)`\r\n margin-left: 0.45em;\r\n font-size: 0.85em;\r\n vertical-align: middle;\r\n`;\r\n\r\nconst EducationalReengagementOverview = ({\r\n request,\r\n id,\r\n load,\r\n data = {},\r\n form,\r\n errors,\r\n handleForm,\r\n updateEducationalReengagement,\r\n}) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n\r\n const [redirectUri, setRedirectUri] = useState('');\r\n\r\n const [openUpdateModal, setOpenUpdateModal] = useState(false);\r\n\r\n const closeForm = () => {\r\n setOpenUpdateModal(false);\r\n };\r\n\r\n const updateInstitutionDates = () => {\r\n updateEducationalReengagement(id).then(() => {\r\n closeForm();\r\n });\r\n };\r\n\r\n const translateDegree = (degree) => {\r\n let retVal = '';\r\n switch (degree) {\r\n case 'NONE':\r\n retVal = 'None';\r\n break;\r\n case 'ASSOC':\r\n retVal = 'Associates';\r\n break;\r\n case 'BA':\r\n retVal = 'Bachelors';\r\n break;\r\n case 'MA':\r\n retVal = 'Masters';\r\n break;\r\n case 'PHD':\r\n retVal = 'Doctorate';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return retVal;\r\n };\r\n\r\n const onChange = debounce((educationalReengagement, id, attribute) => {\r\n let formData = form;\r\n handleForm({ ...formData, ...educationalReengagement }, [attribute]);\r\n }, 250);\r\n\r\n const handleUpdateModal = () => {\r\n !openUpdateModal\r\n ? (document.body.style.overflow = 'hidden')\r\n : (document.body.style.overflow = '');\r\n\r\n setOpenUpdateModal(!openUpdateModal);\r\n };\r\n\r\n if (redirectUri && redirectUri.length > 0) {\r\n return <Redirect to={redirectUri} />;\r\n } else {\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <DashboardSection title=\"Educational Reengagement\">\r\n <div className=\"row\">\r\n <div className=\"col-6 col-lg-6\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Overview</CardTitle>\r\n <p>\r\n Congratulations on your plans to further your education in the future. Going\r\n back to school is a big commitment requiring significant preparation and\r\n planning. Don't worry, our team of expert advisors will ensure you\r\n understand what options are available to you based on your return to school.\r\n </p>\r\n <p>What should you do now?</p>\r\n <ul>\r\n <li>\r\n Great question! You want to remain on your current loan repayment plan and\r\n always keep us up to speed on your schooling plans.\r\n </li>\r\n <li>\r\n Don't forget to keep us updated on important milestone dates like when you\r\n plan on returning to school and when you're expecting to graduate.\r\n </li>\r\n </ul>\r\n <p>What can you expect from Fiducius?</p>\r\n <ul>\r\n <li>\r\n We'll be in touch as your milestone dates approach to ensure you can take\r\n advantage of opportunities to improve your financial wellness at that\r\n time.\r\n </li>\r\n </ul>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-6 col-lg-6\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>School Information</CardTitle>\r\n <AsyncLoader request={request}>\r\n <p>\r\n Institution: {Object.values(data) && safeAccess(data, 'institution', '')}\r\n </p>\r\n <p>\r\n Degree:{' '}\r\n {Object.values(data) && translateDegree(safeAccess(data, 'degree', ''))}\r\n </p>\r\n <p>\r\n Expected Return to School Date:{' '}\r\n {Object.values(data) &&\r\n data.expectedReturnToSchoolDate &&\r\n safeAccess(data, 'expectedReturnToSchoolDate').length > 0 ? (\r\n convertIsoToSlash(data.expectedReturnToSchoolDate)\r\n ) : (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </p>\r\n <p>\r\n Expected Graduation Date:{' '}\r\n {Object.values(data) &&\r\n data.expectedGraduationDate &&\r\n safeAccess(data, 'expectedGraduationDate').length > 0 ? (\r\n convertIsoToSlash(data.expectedGraduationDate)\r\n ) : (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </p>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <FlexEnd>\r\n <InputWrapper>\r\n <Button id={'update'} brand={'primary'} onClick={handleUpdateModal}>\r\n {'Update Information'}\r\n </Button>\r\n </InputWrapper>\r\n </FlexEnd>\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n </div>\r\n </div>\r\n {openUpdateModal && (\r\n <EducationalReengagementForm\r\n closeForm={closeForm}\r\n data={form}\r\n errors={errors}\r\n isLoading={request.isLoading}\r\n isOpen={openUpdateModal}\r\n onChange={onChange}\r\n onSubmit={updateInstitutionDates}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n};\r\n\r\nEducationalReengagementOverview.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n id: getUserId(state),\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n state.educationalReengagement.requests.loadCollection,\r\n state.educationalReengagement.requests.updateResource,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n data: Object.values(state.educationalReengagement.cache)[0],\r\n form: state.educationalReengagement.form,\r\n errors: state.educationalReengagement.errors,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(educationalReengagementLoadResource(id));\r\n },\r\n handleForm: (educationalReengagement, attributes) =>\r\n dispatch(educationalReengagementHandleFormChange(educationalReengagement, attributes)),\r\n updateEducationalReengagement: async (id) => {\r\n await dispatch(educationalReengagementUpdateResource(id));\r\n dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(EducationalReengagementOverview));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('educationalReengagement', types);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withPermissions } from '../../../routing';\r\nimport { Card, CardBody, CardHeader, CardText, Header5 } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst OptimalSituationQualify = withPermissions(({ cache }) => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Optimal Situation</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>You're doing great!</Header5>\r\n <Spaced>\r\n You've optimized your current situation, but Fiducius could help you in the future.\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n));\r\n\r\nOptimalSituationQualify.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => {\r\n const id = getUserId(state);\r\n return {\r\n //cache: cache[id],\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(withPermissions(OptimalSituationQualify));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { withPermissions } from '../../../routing';\r\nimport { Card, CardBody, CardText, CardTitle } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst OptimalSituationSummary = withPermissions(({}) => (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Optimal Situation</CardTitle>\r\n <CardText>\r\n <Spaced>\r\n Based on the information you provided, you have managed your loan situation\r\n masterfully. At Fiducius, we are always looking to find new ways to assist our\r\n clients. Please visit your account frequently for new updates!\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n));\r\n\r\nOptimalSituationSummary.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => {\r\n const id = getUserId(state);\r\n return {};\r\n};\r\n\r\nexport default connect(mapStateToProps)(withPermissions(OptimalSituationSummary));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('optimalSituation', types);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('optimalSituation');\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Card, CardBody, CardHeader, CardText, Header5, Link } from 'fiducius-ui';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst ReducedIDRQualify = () => (\r\n <Card brand=\"primary\">\r\n <CardHeader>Reduced IDR</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Reduce your loan payment!</Header5>\r\n <Spaced>\r\n You can reduce your loan payment and see immediate financial relief. Click{' '}\r\n <Link to=\"/benefits/reducedidr/welcome\">here</Link> to get started.\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nReducedIDRQualify.propTypes = {};\r\n\r\nexport default ReducedIDRQualify;\r\n","import React, { useState, useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Card,\r\n CardBody,\r\n CardText,\r\n CardTitle,\r\n CardFooter,\r\n Link,\r\n BrandColor,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nimport { forgivenessLoadResource } from '../../forgiveness/redux/operations';\r\nimport {\r\n getForgivenessData,\r\n getMonthlyPayment,\r\n getMonthlySavings,\r\n getNewPayment,\r\n getOldPayment,\r\n getStandardPayment,\r\n getTotalForgiveness,\r\n getTotalIdrRepayment,\r\n getTotalStandardRepayment,\r\n} from '../../forgiveness/redux/selectors';\r\n\r\nimport ReducedIDRProgress from './reduced-idr-progress';\r\n\r\nconst FlexFooter = styled(CardFooter)`\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n & h5 {\r\n display: flex;\r\n flex-direction: row;\r\n flex-grow: 1;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst ReducedIDRSummary = ({\r\n monthlyPayment,\r\n monthlySavings,\r\n permissions,\r\n request,\r\n standardPayment,\r\n id,\r\n load,\r\n}) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n\r\n const [redirectURI, setRedirectURI] = useState('');\r\n\r\n if (redirectURI && redirectURI.length > 0) {\r\n return <Redirect to={redirectURI} />;\r\n } else {\r\n return (\r\n <Card brand=\"secondary\">\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-8 col-xl-8 col-lg-8 col-md-8 col-sm-12 col-xs-12\">\r\n <CardTitle>Reduced IDR</CardTitle>\r\n </div>\r\n </div>\r\n <AsyncLoader request={request}>\r\n <CardText>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <dl>\r\n <dt>Standard Monthly Payment</dt>\r\n <dd>{standardPayment < 0 ? '—' : formatAsMoney(standardPayment)}</dd>\r\n <dt>Monthly Savings</dt>\r\n <dd>\r\n {monthlySavings < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlySavings)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-6 col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12\">\r\n <dl>\r\n <dt>Income-Driven Monthly Payment</dt>\r\n <dd>\r\n {monthlyPayment < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlyPayment)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n <dt>Yearly Savings</dt>\r\n <dd>\r\n {monthlySavings < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlySavings * 12)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n </dl>\r\n </div>\r\n </div>\r\n </CardText>\r\n {!permissions.btsQuestionnaireCompleted && (\r\n <ReducedIDRProgress removeContainer={true} />\r\n )}\r\n </AsyncLoader>\r\n </CardBody>\r\n <FlexFooter>\r\n <Link to=\"/benefits/reducedidr/overview\">My Reduced IDR</Link>\r\n </FlexFooter>\r\n </Card>\r\n );\r\n }\r\n};\r\n\r\nReducedIDRSummary.propTypes = {\r\n data: t.object,\r\n id: t.string.isRequired,\r\n load: t.func.isRequired,\r\n monthlyPayment: t.number,\r\n monthlySavings: t.number,\r\n newPayment: t.number,\r\n oldPayment: t.number,\r\n permissions: t.object,\r\n request: t.object.isRequired,\r\n standardPayment: t.number,\r\n totalForgiveness: t.number,\r\n totalIdrRepayment: t.number,\r\n totalStandardRepayment: t.number,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: getForgivenessData(state),\r\n id: getUserId(state),\r\n monthlyPayment: getMonthlyPayment(state),\r\n monthlySavings: getMonthlySavings(state),\r\n newPayment: getNewPayment(state),\r\n oldPayment: getOldPayment(state),\r\n request: state.forgiveness.requests.loadResource,\r\n standardPayment: getStandardPayment(state),\r\n totalForgiveness: getTotalForgiveness(state),\r\n totalIdrRepayment: getTotalIdrRepayment(state),\r\n totalStandardRepayment: getTotalStandardRepayment(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => dispatch(forgivenessLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ReducedIDRSummary));\r\n","import React from 'react';\r\nimport { Card, CardBody, CardHeader, CardText, DashboardSection, Header2, Link } from 'fiducius-ui';\r\n\r\nconst MyIdentity = () => (\r\n <DashboardSection title=\"My Identity Theft Protection\">\r\n <Header2>\r\n Keep your identity safe with identity theft protection from{' '}\r\n <Link to=\"https://cyberscout.com/\" external icon>\r\n CyberScout\r\n </Link>\r\n </Header2>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-10 col-lg-8\">\r\n <Card brand=\"success\">\r\n <CardHeader>More than just student loans</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <p>\r\n As part of our fiduciary responsibility to you, we strive to enhance all areas of\r\n your financial well-being. Within your first year as a client you are enrolled in\r\n our identity theft restoration benefit covering you and your household members.\r\n </p>\r\n <p>\r\n If you have your identity compromised, you have unlimited resources and a dedicated\r\n team available to assist with restoring your identity through your included benefit.\r\n This incorporates lost wallet and travel assistance, child identity protection,\r\n estate support and an unlimited service guarantee.\r\n </p>\r\n <p>\r\n For further protection online, we offer more intensive solutions to protect your\r\n identity. This includes, but is not limited to, social security and bank account\r\n monitoring, driver's license and passport protection and online credit reporting. To\r\n enhance your identity theft protection wellness benefit or to learn more about your\r\n existing coverage, contact us at <a href=\"tel:+15136455400\">(513) 645-5400</a>.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n);\r\n\r\nexport default MyIdentity;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('forgiveness', types);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('forgiveness');\r\n","import React from 'react';\r\nimport { Card, CardBody, CardText, CardTitle, Link } from 'fiducius-ui';\r\n\r\nconst IdentityEnrolled = () => (\r\n <Card brand=\"success\">\r\n <CardBody>\r\n <CardTitle>Identity Protection</CardTitle>\r\n <CardText>\r\n You're covered! <Link to=\"/benefits/identity\">Learn more</Link> about your protection plan.\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nexport default IdentityEnrolled;\r\n","import React from 'react';\r\nimport {\r\n Card,\r\n CardBody,\r\n CardHeader,\r\n CardText,\r\n DashboardSection,\r\n Header2,\r\n Header4,\r\n Link,\r\n} from 'fiducius-ui';\r\n\r\nconst MyInsurance = () => (\r\n <DashboardSection title=\"My Student Loan Disability Insurance\">\r\n <Header2>\r\n Keep your credit intact and your payments on track if you get injured or can't work\r\n </Header2>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-10 col-lg-8\">\r\n <Card brand=\"primary\">\r\n <CardHeader>Plan Information</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header4>\r\n <strong>Provider</strong>: Ameritas\r\n </Header4>\r\n <Header4>\r\n <strong>Product</strong>: DInamic Fundamental®\r\n </Header4>\r\n <p>\r\n The{' '}\r\n <Link\r\n external\r\n icon\r\n to=\"https://www.ameritas.com/wps/wcm/connect/corp/individual/products/disability-income/dinamic-fundamental\"\r\n >\r\n Ameritas DInamic Fundamental®\r\n </Link>{' '}\r\n plan offers simple, affordable, and attainable disability insurance cover to assist\r\n with student loan debt. This plan is ideal for middle income earners and homemakers\r\n who have not protected their incomes and student loan debt from risk of disability.\r\n </p>\r\n <p>\r\n <strong>The plan provides significant value to those who:</strong>\r\n </p>\r\n <ul>\r\n <li>Earn $25,000-$100,000 annual income.</li>\r\n <li>$50,000 Guaranteed Standard Issue (no underwriting necessary).</li>\r\n <li>Work at least 30 hours per week.</li>\r\n <li>\r\n Homemakers with little to no income (working less than 30 hours per week) outside\r\n the home.\r\n </li>\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n);\r\n\r\nexport default MyInsurance;\r\n","import React from 'react';\r\nimport { Card, CardBody, CardText, CardTitle, Link } from 'fiducius-ui';\r\n\r\nconst InsuranceEnrolled = () => (\r\n <Card brand=\"success\">\r\n <CardBody>\r\n <CardTitle>Disability Insurance</CardTitle>\r\n <CardText>\r\n You may be qualified for the{' '}\r\n <Link\r\n to=\"https://www.ameritas.com/wps/portal/corp/Home/home/!ut/p/z1/pVHLTsMwEPwWDj1adhrjOMegAlVEhSpo2viCHNuBhdhJWydQvh5TISSESoW6t33NzO5ggVdYODnAo_TQOtmEvBTsIZlHbJpSMiNZcUWySZreX_AoIrcRLrDAQjnf-SdcgtMwgO5lMyLdptW98tsR0bCVFTTgdwicaq35LDlpQaG6d1pa43ygCjidAo1Lys4VNZVBkhmKKJcccVpXKGX1WDMllaYKL48JE6FNDkRGwr7Yj3wjXE-SLCAs5uMiTwnh7GvgD4wyaEgOaqARXg5gXvHCtRsbDrz754nTowzxiQz5zxf8fmKwH57Xa5EFj1vnzZvHq5NM7qzl8Q691LPLmJb58H6TnX0AAPkStA!!/dz/d5/L2dBISEvZ0FBIS9nQSEh/\"\r\n external\r\n icon\r\n >\r\n Ameritas DInamic Fundamental®\r\n </Link>{' '}\r\n insurance plan. <Link to=\"/benefits/insurance\">Learn more.</Link>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n);\r\n\r\nexport default InsuranceEnrolled;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Card, CardBody, CardTitle, DashboardSection } from 'fiducius-ui';\r\nimport { withPermissions } from '../../routing';\r\nimport { PayNow } from '../../payment';\r\n\r\nclass Closed extends React.Component {\r\n static propTypes = {\r\n permissions: t.object,\r\n };\r\n\r\n render() {\r\n const { permissions } = this.props;\r\n\r\n return (\r\n <DashboardSection>\r\n <div className=\"col-12\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>This Account Is Inactive</CardTitle>\r\n Your account is no longer active. Please email us at{' '}\r\n <a href=\"mailto:customer.service@getfiducius.com\">customer.service@getfiducius.com</a>\r\n .\r\n {/*{' '}\r\n or call <a href=\"tel:15136455400\">+1 (513) 645-5400</a> to re-open your account.*/}\r\n </CardBody>\r\n </Card>\r\n </div>\r\n {permissions.clientStatus === 'OHPAY' && (\r\n <div className=\"col-12 col-lg-5 col-xl-4\">\r\n <PayNow />\r\n </div>\r\n )}\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nexport default withPermissions(Closed);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { BrandColor, Card, CardBody, CardText, CardTitle, Lede, CdnImage } from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\n\r\nconst BannerCard = styled(Card)`\r\n margin-top: 2rem;\r\n box-shadow: ${(p) => p.theme.boxShadow};\r\n background-color: ${(p) => (p.theme.themeName === 'light' ? p.theme.quinary : p.theme.primaryB)};\r\n\r\n & .card-title > h2 {\r\n margin-bottom: 0;\r\n }\r\n`;\r\n\r\nconst PartnershipWrapper = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n padding: 0.25rem 1rem;\r\n`;\r\n\r\nconst StyledPartnershipLogoDisplay = styled(CdnImage)`\r\n height: auto;\r\n max-height: calc(${(p) => p.theme.topBarHeight} - 0.5rem);\r\n max-width: 100%;\r\n`;\r\n\r\nconst BannerGreeting = styled(CardText)`\r\n display: flex;\r\n justify-content: flex-start;\r\n`;\r\n\r\nconst BannerRow = styled.div`\r\n align-items: baseline;\r\n`;\r\nconst FullHeightCol = styled.div`\r\n margin-top: auto;\r\n margin-bottom: auto;\r\n`;\r\n\r\nconst parseSubdomain = () => {\r\n // subdomain.domain.tld <=> app.getfiducius.com\r\n // domains = [subdomain, domain, tld];\r\n const domains = window.location.hostname.split('.');\r\n // If there's more than the domain and top level domain,\r\n // return the first sub-domain\r\n return domains.length > 2 ? domains[domains.length - 3] : 'islsoffice';\r\n};\r\n\r\nconst DashboardBanner = ({ company, greeting }) => {\r\n const partnerDomain = parseSubdomain();\r\n const leftClass =\r\n partnerDomain === process.env.REACT_APP_CDN_PARTNERSHIP\r\n ? 'col-12 col-md-3 col-lg-2'\r\n : 'col-12 col-md-4 col-lg-3';\r\n const rightClass =\r\n partnerDomain === process.env.REACT_APP_CDN_PARTNERSHIP\r\n ? 'col-12 col-md-9 col-lg-10'\r\n : 'col-12 col-md-8 col-lg-9';\r\n\r\n if (company || greeting) {\r\n return (\r\n <BannerCard invert>\r\n <CardBody>\r\n <BannerRow className=\"row\">\r\n <FullHeightCol className={leftClass}>\r\n <CardTitle>\r\n {partnerDomain === process.env.REACT_APP_CDN_PARTNERSHIP && (\r\n <PartnershipWrapper>\r\n <StyledPartnershipLogoDisplay\r\n cdn={process.env.REACT_APP_CDN_URL}\r\n imagePath={'fiducius-logo.png'}\r\n />\r\n </PartnershipWrapper>\r\n )}\r\n {partnerDomain !== process.env.REACT_APP_CDN_PARTNERSHIP && (\r\n <BrandColor brand=\"white\">{company}</BrandColor>\r\n )}\r\n </CardTitle>\r\n </FullHeightCol>\r\n <FullHeightCol className={rightClass}>\r\n <BannerGreeting>\r\n <Lede>\r\n <BrandColor brand=\"white\">{greeting}</BrandColor>\r\n </Lede>\r\n </BannerGreeting>\r\n </FullHeightCol>\r\n </BannerRow>\r\n </CardBody>\r\n </BannerCard>\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nDashboardBanner.propTypes = {\r\n company: t.string,\r\n greeting: t.string,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n company:\r\n safeAccess(state, 'auth.cache.permissions.partnerLine1') ||\r\n safeAccess(state, 'auth.cache.partnerLocations.partnerLine1'),\r\n greeting:\r\n safeAccess(state, 'auth.cache.permissions.partnerLine2') ||\r\n safeAccess(state, 'auth.cache.partnerLocations.partnerLine2'),\r\n});\r\nexport default connect(mapStateToProps)(DashboardBanner);\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Alert, Button } from 'fiducius-ui';\r\n\r\nconst StyledAlert = styled.div`\r\n align-items: center;\r\n align-self: center;\r\n display: flex;\r\n & > button {\r\n margin-left: auto;\r\n }\r\n`;\r\n\r\nconst QualifiedTuition = () => (\r\n <Alert brand=\"primary\">\r\n <StyledAlert>\r\n If you are participating in your employer's tuition assistance benefit, please click here to\r\n enter information for your upcoming classes.\r\n <Button\r\n brand=\"primary\"\r\n invert\r\n onClick={() => {\r\n window.location.href = '/benefits/tuition/overview';\r\n }}\r\n >\r\n Click here to get set up\r\n </Button>\r\n </StyledAlert>\r\n </Alert>\r\n);\r\n\r\nQualifiedTuition.propTypes = {};\r\n\r\nexport default QualifiedTuition;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Alert } from 'fiducius-ui';\r\n\r\nimport { getApiSingle } from '../../utils';\r\n\r\nclass CurrentEventsBanner extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n alertText: undefined,\r\n }; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const pathName = window.location.pathname;\r\n let AlertText = '';\r\n getApiSingle(null, '/message/' + pathName).then((data) => {\r\n if (data.messages !== null) {\r\n const alertMessage = data.messages.find((a) => a.messageType === 'Dashboard_Alert');\r\n if (alertMessage !== null) {\r\n AlertText = alertMessage.messageContent;\r\n }\r\n }\r\n if (AlertText.length > 1) {\r\n this.setState({\r\n alertText: AlertText,\r\n });\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n if (this.state.alertText !== undefined) {\r\n return (\r\n <Alert>\r\n <div dangerouslySetInnerHTML={{ __html: this.state.alertText }}></div>\r\n </Alert>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n }\r\n}\r\nexport default CurrentEventsBanner;\r\n","import React, { useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { InputWrapper, Button, Card, CardFooter, Modal } from 'fiducius-ui';\r\n\r\nimport { FlexEnd } from '../../root';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimes as faXIcon } from '@fortawesome/pro-regular-svg-icons/faTimes';\r\nimport { MessageDiv } from '../../messages';\r\nimport { legalUpdateResource } from '../../legal/redux/operations';\r\nimport { loadMessage } from '../../messages/redux/operations';\r\n\r\nconst SUBSCRIPTION_VIEWED_KEY = 'SUBSC';\r\n\r\nconst SubscriptionHighlightModal = ({ markVideoWatched }) => {\r\n const [openSubscriptionModal, setOpenSubscriptionModel] = useState(false);\r\n const [subscriptionModalMessage, setSubscriptionModalMessage] = useState(true);\r\n\r\n const showModal = () => {\r\n setOpenSubscriptionModel(true);\r\n };\r\n\r\n const closeModal = () => {\r\n var avatarFrame = document.getElementById('avatarFrame_Subscription_Highlight');\r\n if (avatarFrame) {\r\n avatarFrame.setAttribute('src', '');\r\n }\r\n setOpenSubscriptionModel(false);\r\n setSubscriptionModalMessage(false);\r\n markVideoWatched();\r\n };\r\n\r\n return (\r\n <Modal isOpen={openSubscriptionModal} fullWidth theme={'position:fixed;'}>\r\n <Card>\r\n <FlexEnd>\r\n <InputWrapper>\r\n <Button brand=\"lowContrast\" onClick={closeModal}>\r\n <FontAwesomeIcon icon={faXIcon} />\r\n </Button>\r\n </InputWrapper>\r\n </FlexEnd>\r\n\r\n <div id=\"messageSection\">\r\n <MessageDiv\r\n messageType={'Subscription_Highlight'}\r\n showModal={showModal}\r\n modalMessage={subscriptionModalMessage}\r\n />\r\n </div>\r\n <CardFooter>\r\n <Button brand=\"lowContrast\" onClick={closeModal}>\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n );\r\n};\r\n\r\nSubscriptionHighlightModal.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: state.legal.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n markVideoWatched: async () => {\r\n await dispatch(legalUpdateResource(SUBSCRIPTION_VIEWED_KEY));\r\n await dispatch(loadMessage('Subscription_Highlight'));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SubscriptionHighlightModal);\r\n","import React, { useState } from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport {\n Button,\n Card,\n CardBody,\n CardText,\n CardFooter,\n Modal,\n CardTitle,\n AsyncLoader,\n} from 'fiducius-ui';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTimes } from '@fortawesome/pro-regular-svg-icons';\nimport { legalUpdateResource } from '../../legal/redux/operations';\nimport { withPermissions } from '../../routing';\nimport { authLoadPermissions } from '../../auth';\nimport { convertIsoToSlash, formatAsMoney, mergeRequestStatuses } from '../../utils';\n\nconst ExitButton = styled.div`\n color: ${(p) => p.theme.textSecondary};\n float: right;\n\n &:hover {\n color: ${(p) => p.theme.primary};\n cursor: pointer;\n }\n`;\n\nconst TextLeft = styled.div`\n text-align: left;\n`;\n\nconst IDRDIALOG_VIEWED_KEY = 'IDRACK';\n\nconst reducedIDRModal = ({ markAcknowledged, permissions, loadRequest }) => {\n const [openIDRModal, setOpenIDRModal] = useState(true);\n\n const closeModal = () => {\n setOpenIDRModal(false);\n markAcknowledged();\n };\n\n return (\n <AsyncLoader request={loadRequest}>\n <Modal isOpen={openIDRModal} fullWidth theme={'position:fixed;'}>\n <Card>\n <CardBody>\n <ExitButton>\n <FontAwesomeIcon icon={faTimes} fixedWidth onClick={closeModal} size=\"lg\" />\n </ExitButton>\n <CardTitle>Information for Reduced IDR </CardTitle>\n <CardText>\n <TextLeft>\n You are currently on an Income-Driven Repayment (IDR) of{' '}\n {formatAsMoney(permissions.doeIdrCalculation)}. Based on the information you\n provided in the screening questionnaire, we estimate your IDR would be higher if you\n were to resubmit an IDR application at this time. For that reason, you will not have\n any additional steps under Reduced IDR until the annual recertification date,{' '}\n {convertIsoToSlash(permissions.annualRecertDate)}, of your IDR plan.\n <br />\n <br />\n If you have any questions, please submit a Contact Us.\n </TextLeft>\n </CardText>\n </CardBody>\n <CardFooter>\n <Button brand=\"lowContrast\" onClick={closeModal}>\n Close\n </Button>\n </CardFooter>\n </Card>\n </Modal>\n </AsyncLoader>\n );\n};\n\nreducedIDRModal.propTypes = {\n permissions: t.object,\n};\n\nconst mapStateToProps = (state) => ({\n request: state.legal.requests.updateResource,\n loadRequest: mergeRequestStatuses([\n state.todos.requests.loadCollection,\n state.legal.requests.updateResource,\n state.auth.requests.loadPermissions,\n ]),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n markAcknowledged: async () => {\n await dispatch(legalUpdateResource(IDRDIALOG_VIEWED_KEY));\n await dispatch(authLoadPermissions());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(reducedIDRModal));\n","import React, { useState } from 'react';\r\nimport { DashboardSection, Header2 } from 'fiducius-ui';\r\n\r\nimport { AffiliateTile } from '../../benefits/affiliates';\r\nimport { IdentityEnrolled } from '../../benefits/identity';\r\nimport { InsuranceQualified } from '../../benefits/insurance';\r\nimport { RefinanceSummary } from '../../benefits/refinance';\r\nimport { ForgivenessSummary } from '../../benefits/forgiveness';\r\nimport { SimpliFiSummary } from '../../benefits/simplifi';\r\nimport { ContributionSummary } from '../../benefits/contribution';\r\nimport { TuitionSummary } from '../../benefits/tuition';\r\nimport { LwoSummary } from '../../benefits/limited-waiver-opportunity';\r\nimport { EmpCertSummary } from '../../benefits/empcert';\r\nimport { OptimalSituationSummary } from '../../benefits/optimal-situation';\r\nimport { ReducedIDRSummary } from '../../benefits/reducedidr';\r\nimport { FreshStartSummary } from '../../benefits/freshstart';\r\nimport { EducationalReengagementSummary } from '../../benefits/educational-reengagement';\r\nimport { PayNow } from '../../payment';\r\nimport { withPermissions } from '../../routing';\r\nimport { OutstandingTodos } from '../../todos';\r\nimport { Closed } from '../../closed';\r\nimport { MessageTile } from '../../messages';\r\n\r\nimport { SharedDataConsent } from '../../legal';\r\nimport DashboardBanner from '../components/dashboard-banner';\r\nimport QualifiedTuition from '../components/qualified-tuition';\r\nimport CurrentEventsBanner from '../components/current-events-banner';\r\nimport SubscriptionHighlightModal from '../components/subscription-highlight-modal';\r\nimport ReducedIDRModal from '../components/reduced-idr-modal';\r\n\r\nconst ShowSharedDataConsent = (permissions, isEmulation) => {\r\n let retVal = false;\r\n if (\r\n isEmulation !== true &&\r\n permissions.hasConsentToShareData &&\r\n (permissions.consentFormCode === 'ASCRE' || permissions.consentFormCode === 'AREGI')\r\n ) {\r\n retVal = true;\r\n }\r\n return retVal;\r\n};\r\n\r\nconst MyDashboard = withPermissions(({ theme, permissions, toggleDrawer, isEmulation }) => {\r\n if (permissions.clientStatus !== 'CLOSE' && permissions.clientStatus !== 'OHPAY') {\r\n const [isOpen, setOpen] = useState(true);\r\n const toggleModal = () => {\r\n setOpen(!isOpen);\r\n };\r\n return (\r\n <>\r\n <DashboardSection title=\"My Dashboard\">\r\n <Header2>All your financial wellness at a glance.</Header2>\r\n {(permissions.showForgiveness || permissions.showSimplifi) && <CurrentEventsBanner />}\r\n {permissions.qualifiedTuition && <QualifiedTuition />}\r\n {permissions.hasAnyTodos && <OutstandingTodos toggleDrawer={toggleDrawer} />}\r\n {ShowSharedDataConsent(permissions, isEmulation) && (\r\n <SharedDataConsent hideIcon={true} isOpen={isOpen} toggleModal={toggleModal} />\r\n )}\r\n {!ShowSharedDataConsent(permissions, isEmulation) &&\r\n !isEmulation &&\r\n permissions.planChangeIndicator === 3 && <ReducedIDRModal />}\r\n {permissions.subscriptionAvailable && !isEmulation && <SubscriptionHighlightModal />}\r\n <DashboardBanner />\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-7 col-xl-8\">\r\n {permissions.showForgiveness && <ForgivenessSummary />}\r\n {permissions.hasEnterpriseEmpCert && <EmpCertSummary />}\r\n {permissions.showLwo && <LwoSummary />}\r\n {permissions.hasOptimalSituation && <OptimalSituationSummary />}\r\n {permissions.hasReducedIDR && <ReducedIDRSummary />}\r\n {permissions.hasFreshStart && <FreshStartSummary />}\r\n {permissions.hasEducationalReengagement && <EducationalReengagementSummary />}\r\n {(permissions.showTuition || permissions.tuitionReadOnly) && <TuitionSummary />}\r\n {(permissions.showContribution || permissions.contributionReadOnly) && (\r\n <ContributionSummary fromDashboard={true} />\r\n )}\r\n {permissions.showSimplifi && <SimpliFiSummary />}\r\n {permissions.showRefinance && <RefinanceSummary />}\r\n </div>\r\n <div className=\"col-12 col-lg-5 col-xl-4\">\r\n {permissions.showIdentity && <IdentityEnrolled />}\r\n {permissions.showStudentLoanDisabilityInsurance && <InsuranceQualified />}\r\n <AffiliateTile theme={theme} />\r\n <MessageTile tileTitle={''} messageType={'Forgiveness_Dashboard'} />\r\n {permissions.showPayNow && <PayNow />}\r\n {permissions.showRenewalPayNow && !permissions.hasEmployerPaidRenewal && (\r\n <PayNow payNowType={'renewal'} />\r\n )}\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n </>\r\n );\r\n } else {\r\n return (\r\n <>\r\n <Closed />\r\n </>\r\n );\r\n }\r\n});\r\n\r\nexport default MyDashboard;\r\n","import React, { useState, useEffect } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\n\nimport {\n AsyncLoader,\n Card,\n CardBody,\n CardTitle,\n CardHeader,\n CardText,\n DashboardSection,\n Header4,\n Lede,\n Button,\n} from 'fiducius-ui';\n\nimport { withPermissions } from '../../../routing';\nimport { mergeRequestStatuses } from '../../../utils';\n\nimport { authLoadPermissions } from '../../../auth';\n\nimport StandardConfirmation from '../../forgiveness/components/standard-confirmation';\nimport ReducedIDRProgress from '../components/reduced-idr-progress';\n\nimport { todosLoadCollection } from '../../../todos/redux/operations';\n\nimport { SharedDataConsent } from '../../../legal';\n\nimport { legalHandleFormChange, legalUpdateResource } from '../../../legal/redux/operations';\nimport { ReducedIDRModal } from '../../../dashboard';\n\nconst ButtonWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n align-items: center;\n margin: 1.5rem 0 3rem 0;\n`;\n\nconst TextLeftList = styled.ul`\n text-align: left;\n`;\n\nconst TextLeft = styled.p`\n text-align: left;\n`;\n\nconst AUTH_KEY = 'AUTHIDR';\n\nconst ReducedIDRWelcome = ({ request, permissions, consent, load, reload, todos }) => {\n const [redirect, setRedirect] = useState('');\n const [showAuthorizedUse, setShowAuthorizedUse] = useState(false);\n const [authUseCompleted, setAuthUseCompleted] = useState(false);\n const [CurrentReducedIdrStep, setCurrentReducedIdrStep] = useState('');\n const [modalOpen, setModalOpen] = useState(true);\n\n useEffect(() => {\n load();\n }, []);\n\n useEffect(() => {\n if (authUseCompleted) {\n // Find where to redirect based on todos\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 1600);\n if (currentToDo === undefined || currentToDo === null) {\n const empCertTodo = todos.find((a) => a.id >= 800 && a.id < 820);\n if (empCertTodo === undefined || empCertTodo === null) {\n setRedirect('/benefits/reducedidr/idr');\n } else {\n setRedirect('/benefits/reducedidr/empcert-ss');\n }\n } else {\n setRedirect('/benefits/reducedidr/idrrenewal');\n }\n } else {\n setRedirect('/benefits/reducedidr/idr');\n }\n }\n }, [authUseCompleted]);\n\n const handleAuthorizedUseClick = () => {\n handleSectionClick('authorizedUse');\n };\n\n const handleSectionClick = (sectionName) => {\n if (sectionName === 'authorizedUse') {\n setShowAuthorizedUse(true);\n }\n };\n\n useEffect(() => {\n if (showAuthorizedUse) {\n handleAuthorizedUseScroll();\n }\n }, [showAuthorizedUse]);\n\n const handleAuthorizedUseScroll = () => {\n document.getElementById('authorizedUseSection').scrollIntoView({ behavior: 'smooth' });\n };\n\n const Authorize = () => {\n consent().then(() => {\n setAuthUseCompleted(true);\n });\n\n // consent().then(() => {\n // setRedirect('/benefits/reducedidr/idr');\n // });\n };\n\n const checkAuthorizedUseCompleted = () => {\n let retVal = false;\n\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 1100);\n if (currentToDo === undefined || currentToDo === null) {\n retVal = true;\n }\n }\n return retVal;\n };\n\n const shareDataConsentCompleted = () => {\n let retVal = false;\n\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 6);\n if (currentToDo === undefined || currentToDo === null) {\n retVal = true;\n }\n }\n return retVal;\n };\n\n const toggleModal = () => {\n setModalOpen(!modalOpen);\n };\n\n if (redirect && redirect.length > 0) {\n return <Redirect to={redirect} />;\n } else {\n return (\n <>\n <div>\n <ReducedIDRProgress />\n <DashboardSection>\n <Card brand=\"primary\">\n <AsyncLoader request={request}>\n {!shareDataConsentCompleted() && (\n <SharedDataConsent\n hideIcon={false}\n isOpen={modalOpen}\n toggleModal={toggleModal}\n />\n )}\n {shareDataConsentCompleted() && permissions.planChangeIndicator === 3 && (\n <ReducedIDRModal />\n )}\n <CardBody>\n <CardTitle>Welcome to Reduced IDR!</CardTitle>\n <CardText>\n <p>\n Congratulations on taking the first step to reduce your loan payment! We have\n customized step by step instructions to help you achieve it. The first step is\n complete the Authorized Use Consent below.\n </p>\n <div className=\"row col-12\">\n <div className=\"col-3\">\n <Lede>\n <Button\n brand={checkAuthorizedUseCompleted() ? 'success' : 'info'}\n onClick={handleAuthorizedUseClick}\n >\n Authorized Use Consent\n </Button>\n </Lede>\n </div>\n </div>\n </CardText>\n </CardBody>\n </AsyncLoader>\n {checkAuthorizedUseCompleted() && (\n <StandardConfirmation stepId={1100} forReducedIDR={true} />\n )}\n </Card>\n </DashboardSection>\n {showAuthorizedUse && (\n <DashboardSection>\n <AsyncLoader request={request} empty={request.isEmpty ? null : null} loading={null}>\n <Card brand={request.hasFailed ? 'danger' : 'primary'} id=\"authorizedUseSection\">\n {request.hasFailed && <CardHeader>Saving Authorized Use Failure</CardHeader>}\n <CardBody>\n <CardTitle>Authorized Use Consent</CardTitle>\n <CardText>\n <Header4>What am I authorizing?</Header4>\n <TextLeft>Your signature authorizes Fiducius to:</TextLeft>\n <TextLeftList>\n <li>\n Establish the correct repayment plan with The Department of Education for\n your reduced Income-Driven Repayment (IDR).\n </li>\n <li>We will not utilize your FSA ID to access your account.</li>\n </TextLeftList>\n </CardText>\n </CardBody>\n <ButtonWrapper>\n {checkAuthorizedUseCompleted() && (\n <CardBody>\n <CardText>\n <p>\n You've already consented to the items listed above. Please submit a\n Contact Us request if you would like this changed.\n </p>\n </CardText>\n </CardBody>\n )}\n {!checkAuthorizedUseCompleted() && (\n <Button brand=\"primary\" size=\"lg\" onClick={Authorize}>\n I agree\n </Button>\n )}\n </ButtonWrapper>\n </Card>\n </AsyncLoader>\n </DashboardSection>\n )}\n </div>\n </>\n );\n }\n};\n\nReducedIDRWelcome.propTypes = {\n request: t.object.isRequired,\n todos: t.array,\n consent: t.func.isRequired,\n reload: t.func.isRequired,\n load: t.func.isRequired,\n permissions: t.object,\n};\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.loadCollection,\n state.legal.requests.updateResource,\n ]),\n todos: Object.values(state.todos.cache),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n reload: async () => {\n dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n\n load: async () => {\n await dispatch(todosLoadCollection());\n },\n consent: async () => {\n await dispatch(legalHandleFormChange({ id: AUTH_KEY, customerAuthorization: true }, []));\n await dispatch(legalUpdateResource(AUTH_KEY, AUTH_KEY));\n dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ReducedIDRWelcome));\n","import React, { useState, useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n AsyncLoader,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n BrandColor,\r\n Header2,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { withPermissions } from '../../../routing';\r\nimport { formatAsMoney } from '../../../utils';\r\n\r\nimport PaymentCompare from '../../forgiveness/components/payment-compare';\r\nimport ReducedIDRProgress from '../components/reduced-idr-progress';\r\nimport { forgivenessLoadResource } from '../../forgiveness/redux/operations';\r\nimport {\r\n getForgivenessData,\r\n getMonthlyPayment,\r\n getMonthlySavings,\r\n getNewPayment,\r\n getOldPayment,\r\n getTotalForgiveness,\r\n getTotalIdrRepayment,\r\n getTotalStandardRepayment,\r\n getRepaymentTerm,\r\n getShowTaxCompare,\r\n getStandardPayment,\r\n} from '../../forgiveness/redux/selectors';\r\n\r\nconst ButtonRight = styled(Button)`\r\n float: right;\r\n width: 150px;\r\n`;\r\n\r\nconst ReducedIDROverview = withPermissions(\r\n ({\r\n data = {},\r\n id,\r\n load,\r\n monthlyPayment,\r\n monthlySavings,\r\n newPayment,\r\n oldPayment,\r\n request,\r\n standardPayment,\r\n }) => {\r\n useEffect(() => {\r\n load(id);\r\n }, []);\r\n\r\n const [redirectUri, setRedirectUri] = useState('');\r\n\r\n if (redirectUri && redirectUri.length > 0) {\r\n return <Redirect to={redirectUri} />;\r\n } else {\r\n return (\r\n <DashboardSection title=\"My Reduced IDR\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-9\">\r\n <Header2>Lower your loan payment and see immediate financial relief.</Header2>\r\n </div>\r\n <div className=\"col-12 col-lg-3\">\r\n <ButtonRight\r\n brand=\"primary\"\r\n type=\"submit\"\r\n onClick={() => {\r\n setRedirectUri('/benefits/reducedidr/need-assistance');\r\n }}\r\n >\r\n Need Assistance?\r\n </ButtonRight>\r\n </div>\r\n </div>\r\n <AsyncLoader request={request}>\r\n <ReducedIDRProgress />\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-4\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Reduced IDR Details</CardTitle>\r\n <CardText>\r\n <dl>\r\n <dt>Standard Monthly Payment</dt>\r\n <dd>{standardPayment < 0 ? '—' : formatAsMoney(standardPayment)}</dd>\r\n <dt>IDR Monthly Payment</dt>\r\n <dd>\r\n {monthlyPayment < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlyPayment)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n <dt>Monthly Savings</dt>\r\n <dd>\r\n {monthlySavings < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlySavings)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n <dt>Yearly Savings</dt>\r\n <dd>\r\n {monthlySavings < 0 ? (\r\n <>—</>\r\n ) : (\r\n <BrandColor brand=\"secondary\">\r\n <strong>{formatAsMoney(monthlySavings * 12)}</strong>\r\n </BrandColor>\r\n )}\r\n </dd>\r\n </dl>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-12 col-lg-6\">\r\n <PaymentCompare\r\n oldPayment={oldPayment}\r\n newPayment={newPayment}\r\n year={data.year}\r\n bigTitle={true}\r\n />\r\n </div>\r\n </div>\r\n </AsyncLoader>\r\n </DashboardSection>\r\n );\r\n }\r\n }\r\n);\r\n\r\nReducedIDROverview.propTypes = {\r\n data: t.object,\r\n id: t.string.isRequired,\r\n load: t.func.isRequired,\r\n monthlyPayment: t.number,\r\n monthlySavings: t.number,\r\n newPayment: t.number,\r\n oldPayment: t.number,\r\n request: t.object.isRequired,\r\n totalForgiveness: t.number,\r\n totalIdrRepayment: t.number,\r\n totalStandardRepayment: t.number,\r\n repaymentTerm: t.number,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: getForgivenessData(state),\r\n id: getUserId(state),\r\n monthlyPayment: getMonthlyPayment(state),\r\n monthlySavings: getMonthlySavings(state),\r\n newPayment: getNewPayment(state),\r\n oldPayment: getOldPayment(state),\r\n request: state.forgiveness.requests.loadResource,\r\n totalForgiveness: getTotalForgiveness(state),\r\n totalIdrRepayment: getTotalIdrRepayment(state),\r\n totalStandardRepayment: getTotalStandardRepayment(state),\r\n standardPayment: getStandardPayment(state),\r\n repaymentTerm: getRepaymentTerm(state),\r\n showTaxCompare: getShowTaxCompare(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: (id) => dispatch(forgivenessLoadResource(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReducedIDROverview);\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { AsyncLoader, Card, CardBody, DashboardSection } from 'fiducius-ui';\r\n\r\nimport ReducedIDRProgress from '../components/reduced-idr-progress';\r\nimport { convertIsoToSlash, mergeRequestStatuses } from '../../../utils';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nconst ReducedIDRComplete = ({ request, permissions, renewal }) => {\r\n const [redirectUri, setRedirectUri] = useState('');\r\n\r\n const hasCompletedStep = () => {\r\n const completedContact = permissions.reducedIdrSteps.filter(\r\n (a) => a.id === 'CompleteReducedIDR' && a.stepComplete\r\n );\r\n\r\n if (completedContact.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n if (redirectUri && redirectUri.length > 0) {\r\n return <Redirect to={redirectUri} />;\r\n } else {\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <AsyncLoader request={request}>\r\n <ReducedIDRProgress />\r\n <DashboardSection title=\"Complete\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request} loading={<></>}>\r\n {!hasCompletedStep() && <p>You haven't reached this step yet.</p>}\r\n {hasCompletedStep() && !!!renewal && (\r\n <p>\r\n Congratulations on completing all the necessary steps to receive the Reduced\r\n IDR benefit! To continue with the IDR payment plan, the Department of\r\n Education requires annual documentation. We will contact you around{' '}\r\n {convertIsoToSlash(permissions.annualRecertDate)} to begin this process. In\r\n the meantime, Fiducius is happy to help you explore any additional benefits\r\n for which you may be eligible. Please review your To-Do list to access those\r\n benefits.\r\n </p>\r\n )}\r\n {hasCompletedStep() && renewal && (\r\n <>\r\n <p>\r\n Congratulations on completing all the necessary steps to receive the\r\n Reduced IDR benefit! To continue with the IDR payment plan, the Department\r\n of Education requires annual documentation. We will contact you around{' '}\r\n {convertIsoToSlash(permissions.annualRecertDate)} to begin this process.\r\n In the meantime, Fiducius is happy to help you explore any additional\r\n benefits for which you may be eligible. Please review your To-Do list to\r\n access those benefits.\r\n </p>\r\n </>\r\n )}\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n );\r\n }\r\n};\r\n\r\nReducedIDRComplete.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n state.todos.requests.updateResource,\r\n state.todos.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ReducedIDRComplete));\r\n","import React, { useState, useEffect } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\n\nimport { withPermissions } from '../../../routing';\nimport { mergeRequestStatuses } from '../../../utils';\n\nimport { authLoadPermissions } from '../../../auth';\n\nimport RenewalConfirmation from '../../forgiveness/components/renewal-confirmation';\nimport ReducedIDRProgress from '../components/reduced-idr-progress';\n\nimport { todosLoadCollection } from '../../../todos/redux/operations';\n\nconst ReducedIDRProfileVerification = ({ request, load }) => {\n const [redirect, setRedirect] = useState('');\n\n useEffect(() => {\n load();\n }, []);\n\n if (redirect && redirect.length > 0) {\n return <Redirect to={redirect} />;\n } else {\n return (\n <>\n <div>\n <ReducedIDRProgress />\n <DashboardSection>\n <Card brand=\"primary\">\n <AsyncLoader request={request}>\n <CardBody>\n <CardTitle>Profile Verification</CardTitle>\n <CardText>\n <p>\n To start your renewal process, we need you to verify your contact information\n saved in your profile.\n </p>\n </CardText>\n </CardBody>\n </AsyncLoader>\n <RenewalConfirmation stepId={1601} forReducedIDR={true} />\n </Card>\n </DashboardSection>\n </div>\n </>\n );\n }\n};\n\nReducedIDRProfileVerification.propTypes = {\n request: t.object.isRequired,\n todos: t.array,\n reload: t.func.isRequired,\n load: t.func.isRequired,\n permissions: t.object,\n};\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.loadCollection,\n state.legal.requests.updateResource,\n ]),\n todos: Object.values(state.todos.cache),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n reload: async () => {\n dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n\n load: async () => {\n await dispatch(todosLoadCollection());\n },\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withPermissions(ReducedIDRProfileVerification));\n","import React, { useState, useEffect } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\n\nimport { withPermissions } from '../../../routing';\nimport { mergeRequestStatuses } from '../../../utils';\n\nimport { authLoadPermissions } from '../../../auth';\n\nimport RenewalConfirmation from '../../forgiveness/components/renewal-confirmation';\nimport ReducedIDRProgress from '../components/reduced-idr-progress';\n\nimport { todosLoadCollection } from '../../../todos/redux/operations';\n\nconst ReducedIDRQuestionnaire = ({ request, load }) => {\n const [redirect, setRedirect] = useState('');\n\n useEffect(() => {\n load();\n }, []);\n\n if (redirect && redirect.length > 0) {\n return <Redirect to={redirect} />;\n } else {\n return (\n <>\n <div>\n <ReducedIDRProgress />\n <DashboardSection>\n <Card brand=\"primary\">\n <AsyncLoader request={request}>\n <CardBody>\n <CardTitle>Renewal Questionnaire</CardTitle>\n <CardText>\n <p>\n In order to determine what steps are required to complete your renewal, please\n fill out and submit the renewal questionnaire.\n </p>\n </CardText>\n </CardBody>\n </AsyncLoader>\n <RenewalConfirmation stepId={1605} forReducedIDR={true} />\n </Card>\n </DashboardSection>\n </div>\n </>\n );\n }\n};\n\nReducedIDRQuestionnaire.propTypes = {\n request: t.object.isRequired,\n todos: t.array,\n reload: t.func.isRequired,\n load: t.func.isRequired,\n permissions: t.object,\n};\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.loadCollection,\n state.legal.requests.updateResource,\n ]),\n todos: Object.values(state.todos.cache),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n reload: async () => {\n dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n\n load: async () => {\n await dispatch(todosLoadCollection());\n },\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withPermissions(ReducedIDRQuestionnaire));\n","import React, { useState, useEffect } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { AsyncLoader, Card, CardBody, CardTitle, CardText, DashboardSection } from 'fiducius-ui';\n\nimport { withPermissions } from '../../../routing';\nimport { mergeRequestStatuses } from '../../../utils';\n\nimport { authLoadPermissions } from '../../../auth';\n\nimport RenewalConfirmation from '../../forgiveness/components/renewal-confirmation';\nimport ReducedIDRProgress from '../components/reduced-idr-progress';\n\nimport { todosLoadCollection } from '../../../todos/redux/operations';\n\nimport { Employers, employmentHistoryLoadCollection } from '../../../employment-history';\n\nconst ReducedIDREmploymentHistory = ({ request, load, employers }) => {\n const [redirect, setRedirect] = useState('');\n const employerCount =\n employers !== null && employers !== undefined ? Object.keys(employers).length : 0;\n\n useEffect(() => {\n load();\n }, []);\n\n if (redirect && redirect.length > 0) {\n return <Redirect to={redirect} />;\n } else {\n return (\n <>\n <div>\n <ReducedIDRProgress />\n <DashboardSection>\n <Card brand=\"primary\">\n <AsyncLoader request={request}>\n <CardBody>\n <CardTitle>Employment History</CardTitle>\n <CardText>\n <p>Here are your employers. There are currently {employerCount} of them.</p>\n <Employers checkQualification={() => {}} />\n </CardText>\n </CardBody>\n </AsyncLoader>\n {employerCount > 0 && <RenewalConfirmation stepId={1606} forReducedIDR={true} />}\n {/* {employerCount === 0 &&\n <CardFooter>\n \n Please Insert at least one employer\n \n </CardFooter>\n } */}\n </Card>\n </DashboardSection>\n </div>\n </>\n );\n }\n};\n\nReducedIDREmploymentHistory.propTypes = {\n request: t.object.isRequired,\n todos: t.array,\n reload: t.func.isRequired,\n load: t.func.isRequired,\n permissions: t.object,\n};\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.loadCollection,\n state.legal.requests.updateResource,\n ]),\n todos: Object.values(state.todos.cache),\n employers: state.employmentHistory.cache,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n reload: async () => {\n dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n\n load: async () => {\n await dispatch(employmentHistoryLoadCollection());\n await dispatch(todosLoadCollection());\n },\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withPermissions(ReducedIDREmploymentHistory));\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, DashboardSection, Header1, Header2 } from 'fiducius-ui';\r\n\r\nimport ReducedIDRProgress from '../components/reduced-idr-progress';\r\nimport { NeedAssistance } from '../../../need-assistance';\r\nimport Scheduler from '../../../meetings/containers/scheduler';\r\nimport { withPermissions } from '../../../routing';\r\nimport { isStringWithContent } from '../../../utils';\r\nimport FaqQuestion from '../../../faq/components/faq-question';\r\n\r\nconst ReducedIDRNeedAssistance = ({ permissions, needAssistanceObject }) => {\r\n const showSpeakToAnExpertButton = () => {\r\n if (permissions.clientStatus === 'FUPHB' && permissions.enterpriseEnabled) {\r\n return true;\r\n }\r\n };\r\n\r\n const ReducedIDRAssistanceObject =\r\n needAssistanceObject.length &&\r\n needAssistanceObject.find((element) => {\r\n return element.id === 'ReducedIDR_Assistance';\r\n });\r\n const needAssistanceText =\r\n ReducedIDRAssistanceObject && ReducedIDRAssistanceObject.messageContent;\r\n const needAssistanceAvatarLink =\r\n ReducedIDRAssistanceObject && ReducedIDRAssistanceObject.avatarLink;\r\n const blocktext =\r\n isStringWithContent(needAssistanceText) || isStringWithContent(needAssistanceAvatarLink)\r\n ? 'block'\r\n : 'none';\r\n\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <ReducedIDRProgress />\r\n <DashboardSection>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-9\">\r\n <Header1>Need Assistance?</Header1>\r\n </div>\r\n {showSpeakToAnExpertButton() && (\r\n <>\r\n <div className=\"col-12 col-lg-3\" style={{ 'text-align': 'right' }}>\r\n <Scheduler buttonText=\"Speak to an Expert\" />\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n <NeedAssistance messageType={'ReducedIDR_Alert'} />\r\n <Card style={{ display: blocktext }}>\r\n <CardBody>\r\n <CardTitle>Information</CardTitle>\r\n <NeedAssistance messageType={'ReducedIDR_Assistance'} />\r\n </CardBody>\r\n </Card>\r\n <Card>\r\n <CardBody>\r\n <CardTitle>FAQs</CardTitle>\r\n <br />\r\n <Header2>1. Authorized Use of Consent</Header2>\r\n <FaqQuestion question={'Why do I need to confirm the Authorized Use of Consent?'}>\r\n <p>\r\n Confirming the Authorized Use of Consent allows us to process your Income-Driven\r\n Repayment (IDR) application and access necessary information securely.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'How do I opt in?'}>\r\n <p>Read the provided information and select “I Agree†to proceed.</p>\r\n </FaqQuestion>\r\n <br />\r\n <Header2>2. Implementation - Generate IDR Application</Header2>\r\n <FaqQuestion\r\n question={'What steps do I need to follow to generate my IDR application?'}\r\n >\r\n <p>\r\n You will need to:\r\n <ol type=\"1\">\r\n <li>\r\n Answer questions about your current federal student loan repayment plan.\r\n </li>\r\n <li>Provide details about your household and income.</li>\r\n <li>Review and verify a 13-page application.</li>\r\n <li>Sign and submit the application.</li>\r\n </ol>\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'What information is required under the ‘Plan’ section?'}>\r\n <p>\r\n You will need to provide details about your current repayment plan,\r\n deferment/forbearance status, and start date. If unsure, check your loan servicer\r\n account.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'What details are needed under the ‘Household’ section?'}>\r\n <p>\r\n You will be asked about:\r\n <ul>\r\n <li>Number of dependents in your household.</li>\r\n <li>\r\n Other individuals that live with you and are receiving over 50% financial\r\n support from you.\r\n </li>\r\n <li>Marital status.</li>\r\n <li>\r\n Adjusted Gross Income (typically found on Line 11 of your latest 1040 tax\r\n form).\r\n </li>\r\n </ul>\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'What is required to sign my application?'}>\r\n <p>\r\n You will need:\r\n <ul>\r\n <li>First and last name</li>\r\n <li>Email</li>\r\n <li>Password</li>\r\n <li>Social Security number</li>\r\n <li>Digital signature in the designated box</li>\r\n </ul>\r\n </p>\r\n </FaqQuestion>\r\n <br />\r\n <Header2>3. Upload Documents</Header2>\r\n <FaqQuestion question={'What documents do I need to upload?'}>\r\n <p>\r\n You may be required to upload:\r\n <ul>\r\n <li>Recent Paycheck (within the past 60 days)</li>\r\n <li>Tax Return (Form 1040)</li>\r\n <li>W-2 Form</li>\r\n </ul>\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'Where do I upload my documents?'}>\r\n <p>Upload documents in the \"My Documents\" section of your portal.</p>\r\n </FaqQuestion>\r\n <br />\r\n <Header2>4. Submit Your Repayment Application</Header2>\r\n <FaqQuestion question={'What should I verify before submitting my application?'}>\r\n <p>\r\n Ensure that:\r\n <ul>\r\n <li>Your SSN appears on the first four pages.</li>\r\n <li>Your income documents are clear and accurate.</li>\r\n </ul>\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'How do I submit my application?'}>\r\n <p>\r\n Check the confirmation box stating you’ve completed all steps, then select\r\n “Confirm.â€\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'How will I know my application has been submitted?'}>\r\n <p>\r\n A notification will appear at the bottom of your screen, confirming that your IDR\r\n application has been faxed to your loan servicer.\r\n </p>\r\n </FaqQuestion>\r\n <br />\r\n <Header2>5. Check on Your Repayment Application</Header2>\r\n <FaqQuestion question={'How do I check the status of my IDR application?'}>\r\n <p>\r\n Log into your loan servicer account (MOHELA, AidVantage, EdFinancial, or Nelnet)\r\n and check for an \"In Repayment\" status under Loan Details.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'How often should I check for updates?'}>\r\n <p>Every seven days, as processing takes approximately 4-8 weeks.</p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'What should I look for in my approval statement?'}>\r\n <p>\r\n Ensure your repayment amount matches what is displayed in your portal. The\r\n approval statement is typically titled “IDR RECALCULATED.â€\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'What if my repayment amount is incorrect?'}>\r\n <p>\r\n If the amount is higher than expected, use the “Contact Us†button on the left\r\n side of your portal to request assistance.\r\n </p>\r\n </FaqQuestion>\r\n <br />\r\n <Header2>6. Completion & Renewal</Header2>\r\n <FaqQuestion question={'What happens after my IDR plan is set up?'}>\r\n <p>\r\n Your new repayment plan will be in effect, and you’ll need to renew it annually,\r\n starting about four months before expiration.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'How do I ensure I remain enrolled in the IDR plan?'}>\r\n <p>\r\n Complete the renewal process annually to avoid reverting to the standard repayment\r\n plan.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'How can I get help if I have questions?'}>\r\n <p>\r\n Use the “Contact Us†feature in your portal to ask questions or request a call\r\n with a Benefit Service representative.\r\n </p>\r\n </FaqQuestion>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n todos: Object.values(state.todos.cache),\r\n needAssistanceObject: Object.values(state.needAssistance.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withPermissions(ReducedIDRNeedAssistance));\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('screening');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('screening', types);\r\n","import { FormValidator } from '../../../utils';\n\nexport class ScreeningValidator extends FormValidator {\n // Info tab validators\n hireDate(validator) {\n validator.isRequired();\n if (validator.value) {\n const tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n validator.validDate();\n validator.value = new Date(validator.value);\n validator.isLessThanOrEqualTo(tomorrow);\n }\n }\n\n jobTitle(validator) {\n validator.isRequired();\n validator.hasMaxLength(50);\n }\n\n covidFurlough(validator) {\n validator.isRequired();\n }\n\n homeAddressOne(validator, state) {\n if (state.homeAddressTwo || state.homeCity || state.homeState || state.homeZipCode) {\n validator.isRequired();\n }\n validator.hasMaxLength(30);\n }\n\n homeAddressTwo(validator) {\n validator.hasMaxLength(30);\n }\n\n homeCity(validator, state) {\n if (state.homeAddressTwo || state.homeAddressOne || state.homeState || state.homeZipCode) {\n validator.isRequired();\n }\n validator.hasMaxLength(30);\n }\n\n referrerName(validator, state) {\n // TODO: validator.isRequired();\n }\n\n knowSomeoneWithLoans(validator) {\n validator.isRequired();\n }\n\n homeState(validator, state) {\n if (state.homeAddressOne || state.homeCity || state.homeAddressTwo || state.homeZipCode) {\n validator.isRequired();\n }\n validator.hasMaxLength(2);\n }\n\n homeZipCode(validator, state) {\n if (\n state.homeAddressOne ||\n state.homeCity ||\n state.homeState ||\n state.homeAddressTwo ||\n state.homeZipCode\n ) {\n validator.isRequired();\n validator.matchesRegex(\n /^[0-9]{5}($|-[0-9]{4}$)/g,\n 'must be formatted as either ##### or #####-####'\n );\n }\n validator.hasMaxLength(10);\n }\n\n // Loans tab validators\n federalLoanBalance(validator) {\n validator.isRequired();\n validator.validNumber();\n }\n\n federalMonthlyPayment(validator) {\n validator.isRequired();\n validator.validNumber();\n }\n\n consolidated(validator) {\n validator.isRequired();\n }\n\n federalPrivateConsolidatedMix(validator, state) {\n if (state.consolidated === 'Y') {\n validator.isRequired();\n }\n }\n\n hasParentPlus(validator) {\n validator.isRequired();\n }\n\n privateBalance(validator, state) {\n if (state.hasPrivateLoans === 'Y') {\n validator.isRequired();\n validator.validNumber();\n }\n }\n\n hasPrivateLoans(validator) {\n validator.isRequired();\n }\n\n privatePayment(validator, state) {\n if (state.hasPrivateLoans === 'Y') {\n validator.isRequired();\n validator.validNumber();\n }\n }\n\n privateServicer(validator, state) {\n if (state.hasPrivateLoans === 'Y') {\n validator.isRequired();\n validator.hasMaxLength(100);\n }\n }\n\n privateInterestRate(validator, state) {\n if (state.hasPrivateLoans === 'Y') {\n validator.isRequired();\n validator.validNumber();\n }\n }\n\n // Finance tab validators\n income(validator) {\n validator.isRequired();\n validator.validNumber();\n validator.isLessThanOrEqualTo(999999);\n }\n\n creditScore(validator) {\n validator.isRequired();\n }\n\n taxFiling(validator) {\n validator.isRequired();\n }\n\n householdSize(validator) {\n validator.isRequired();\n validator.validNumber();\n validator.isGreaterThanOrEqualTo(1);\n }\n\n married(validator) {\n validator.isRequired();\n }\n\n pslfOnOwn(validator) {\n validator.isRequired();\n }\n\n spouseIncome(validator, state) {\n if (state.married === 'Y') {\n validator.isRequired();\n validator.validNumber();\n }\n }\n\n // Education tab validators\n highestCompletedDegree(validator) {\n validator.isRequired();\n }\n continuingEducation(validator) {\n validator.isRequired();\n }\n degreeSought(validator, state) {\n if (state.continuingEducation === 'Y') {\n validator.isRequired();\n }\n }\n school(validator, state) {\n if (state.continuingEducation === 'Y') {\n validator.isRequired();\n validator.hasMaxLength(100);\n }\n }\n}\n\nexport default ScreeningValidator;\n","import { authLoadPermissions, getToken } from '../../../auth';\nimport {\n resourceOperationsGenerator,\n safeAccess,\n normalize,\n patchApi,\n keyById,\n} from '../../../utils';\n\nimport actions from './actions';\nimport { ScreeningValidator } from './validators';\nimport { referrerHasExplanation } from '../components/tab-info';\n\nconst screeningValidator = new ScreeningValidator();\n\nconst fixData = (data) => {\n return data; /*\n return data.map((resource) => {\n const { birthDate, startDate } = resource;\n resource.birthDate = birthDate ? convertSlashToIso(birthDate) : '';\n resource.startDate = startDate ? convertSlashToIso(startDate) : '';\n return resource;\n });*/\n};\n\nconst reloadPermissions = () => async (dispatch, getState) => {\n await dispatch(authLoadPermissions());\n};\n\nconst endpointHandler = {\n endpoint: '/screening',\n customResponseHandler: fixData,\n resourceType: 'screening',\n};\n\nconst operations = resourceOperationsGenerator(\n 'screening',\n actions,\n null,\n screeningValidator,\n null,\n endpointHandler,\n null,\n endpointHandler,\n null\n);\n\nconst {\n screeningCopyResourceToForm,\n screeningHandleFormChange,\n screeningLoadResource,\n screeningUpdateResource,\n screeningValidateAttributes,\n screeningValidateState,\n} = operations;\n\nconst screeningConcatenateReferralFields = () => (dispatch, getState) => {\n const form = safeAccess(getState(), 'screening.form', {});\n let referral = safeAccess(form, 'referrerName', '');\n if (referrerHasExplanation(referral)) {\n referral += ` - ${safeAccess(form, 'referrerExplanation', 'Not specified')}`;\n }\n const newForm = { ...form, referrerName: referral };\n dispatch(screeningHandleFormChange(newForm, []));\n};\n\nconst screeningSkip = (id) => async (dispatch, getState) => {\n const state = getState();\n try {\n dispatch(actions.screeningUpdateResourceRequest());\n const patchData = normalize('screening', { skipScreening: true }, id);\n let data = await patchApi(getToken(state), `/screening/${id}`, patchData);\n\n dispatch(actions.screeningUpdateResourceResponse());\n\n const cache = { ...state.screening.cache, ...keyById(data) };\n await dispatch(operations.screeningHandleCacheChange(cache));\n } catch (error) {\n dispatch(operations.screeningHandleError(error));\n dispatch(actions.screeningUpdateResourceFailure(error));\n }\n};\n\nexport {\n screeningConcatenateReferralFields,\n screeningSkip,\n screeningCopyResourceToForm,\n screeningHandleFormChange,\n screeningLoadResource,\n screeningUpdateResource,\n screeningValidateAttributes,\n screeningValidateState,\n reloadPermissions,\n};\n\nexport default operations;\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport {\r\n BrandColor,\r\n Card,\r\n CardBody,\r\n CardHeader,\r\n CardText,\r\n Header3,\r\n Header5,\r\n Lede,\r\n Loader,\r\n Undraw,\r\n Alert,\r\n AsyncLoader,\r\n} from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\nimport { advisorLoadResource } from '../../../advisor';\r\nimport { ContributionQualify } from '../../../benefits/contribution';\r\nimport { ForgivenessQualify } from '../../../benefits/forgiveness';\r\nimport { ForgivenessShortTermQualify } from '../../../benefits/forgiveness';\r\nimport { LwoQualify } from '../../../benefits/limited-waiver-opportunity';\r\nimport { RefinanceQualify } from '../../../benefits/refinance';\r\nimport { SimpliFiQualify } from '../../../benefits/simplifi';\r\nimport { TuitionQualify } from '../../../benefits/tuition';\r\nimport { EmpcertQualify } from '../../../benefits/empcert';\r\nimport { FreshStartQualify } from '../../../benefits/freshstart';\r\nimport { EducationalReengagementQualify } from '../../../benefits/educational-reengagement';\r\nimport { OptimalSituationQualify } from '../../../benefits/optimal-situation';\r\nimport { ReducedIDRQualify } from '../../../benefits/reducedidr';\r\nimport { Scheduler } from '../../../meetings';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport {\r\n screeningConcatenateReferralFields,\r\n screeningUpdateResource,\r\n reloadPermissions,\r\n} from '../redux/operations';\r\n\r\nconst Flex = styled.div`\r\n align-items: center;\r\n display: flex;\r\n justify-content: center;\r\n height: 100%;\r\n width: 100%;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nconst IEFix = styled.div`\r\n width: 100%;\r\n`;\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nclass TabResults extends React.Component {\r\n static propTypes = {\r\n cache: t.object,\r\n formsAreValid: t.bool.isRequired,\r\n getResults: t.func.isRequired,\r\n id: t.string,\r\n isLoading: t.bool.isRequired,\r\n meta: t.object,\r\n permissions: t.object,\r\n saveRequest: t.object,\r\n screeningSave: t.func.isRequired,\r\n reloadPermissions: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n redirectURI: undefined,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n const { formsAreValid, id, meta } = this.props;\r\n window.scrollTo(0, 0);\r\n if (formsAreValid && !meta.cacheIsCurrent) {\r\n await this.props.screeningSave(id);\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps) {\r\n const prev = prevProps.saveRequest;\r\n const current = this.props.saveRequest;\r\n if (prev.isLoading && current.hasFinished && !current.hasFailed) {\r\n await this.props.getResults(this.props.id);\r\n await this.props.reloadPermissions();\r\n }\r\n }\r\n\r\n setRedirectURI = (urlInput) => {\r\n this.setState({ redirectURI: urlInput });\r\n };\r\n\r\n render() {\r\n const { cache, meta, isLoading, permissions, request } = this.props;\r\n\r\n if (this.state.redirectURI !== undefined) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n } else if (isLoading) {\r\n return (\r\n <Flex>\r\n <Loader variant=\"atom\" size={3} />\r\n </Flex>\r\n );\r\n } else if (!meta.cacheIsCurrent) {\r\n return (\r\n <Flex>\r\n <Header5>Complete the screening questions to get your results.</Header5>\r\n <Undraw image=\"empty\" />\r\n </Flex>\r\n );\r\n } else if (cache && !isLoading && meta.cacheIsCurrent && !cache.qualified) {\r\n return (\r\n <Flex className=\"row\">\r\n <div className=\"col-12 col-lg-8\">\r\n {!cache.slfpPartnership && (\r\n <Card brand=\"success\">\r\n <CardHeader>Unqualified</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Lede>\r\n Unfortunately it doesn't look like you qualify for any of our products.\r\n </Lede>\r\n <Spaced>\r\n The{' '}\r\n <strong>\r\n <BrandColor brand=\"primary\">good news</BrandColor>\r\n </strong>{' '}\r\n is that it looks like your student loan situation is already in{' '}\r\n <strong>\r\n <BrandColor brand=\"primary\">great shape</BrandColor>\r\n </strong>\r\n !\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n {cache.slfpPartnership && (\r\n <Card brand=\"success\">\r\n <CardHeader>Good News!</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Lede>\r\n Congratulations, your student loan situation appears to be in great shape.\r\n Book your meeting with a student loan advisor so we can verify your details\r\n and determine if we can improve your current payment or payoff.\r\n </Lede>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n </div>\r\n\r\n {cache.slfpPartnership && (\r\n <>\r\n <IEFix className=\"row\">\r\n <div className=\"col-12\">\r\n <Header3>Next Steps</Header3>\r\n <p>\r\n Schedule a short introductory phone call with an Advisor. The purpose of this\r\n call is simply for the Advisor to learn more about your unique situation and\r\n goals, so we can help you take full advantage of these benefits. Don't worry,\r\n there is nothing you need to do to prepare for the call.\r\n </p>\r\n <Scheduler buttonText=\"Schedule a meeting\" buttonBrand=\"secondary\" />\r\n </div>\r\n </IEFix>\r\n </>\r\n )}\r\n </Flex>\r\n );\r\n } else {\r\n return (\r\n <AsyncLoader request={request}>\r\n <Flex>\r\n <IEFix className=\"row\">\r\n {cache.qualifiedRefi && (\r\n <div className=\"col-12 col-lg-6\">\r\n <RefinanceQualify rate={cache.refiInterestRate} />\r\n </div>\r\n )}\r\n {cache.qualifiedForgiveness &&\r\n !!!(\r\n cache.enterpriseBenefits && cache.enterpriseBenefits.qualifiedShortTermForgive\r\n ) && (\r\n <div className=\"col-12 col-lg-6\">\r\n <ForgivenessQualify\r\n newPayment={cache.forgivenessMonthlyPayment}\r\n savings={cache.forgivenessAmountSaved}\r\n />\r\n </div>\r\n )}\r\n {cache.qualifiedForgiveness &&\r\n cache.enterpriseBenefits &&\r\n cache.enterpriseBenefits.qualifiedShortTermForgive && (\r\n <div className=\"col-12 col-lg-6\">\r\n <ForgivenessShortTermQualify savings={cache.forgivenessAmountSaved} />\r\n </div>\r\n )}\r\n {/* {cache.qualifiedLimitedWaiverOpportunity && (\r\n <div className=\"col-12 col-lg-6\">\r\n <LwoQualify\r\n showLwoButton={!cache.qualifiedForgiveness}\r\n redirectUri={this.setRedirectURI}\r\n />\r\n </div>\r\n )} */}\r\n {cache.qualifiedSimplifi &&\r\n !cache.qualifiedForgiveness &&\r\n !(cache.enterpriseBenefits && cache.enterpriseBenefits.qualifiedFreshStart) && (\r\n <div className=\"col-12 col-lg-6\">\r\n <SimpliFiQualify />\r\n </div>\r\n )}\r\n {cache.qualifiedEmployerContribution && (\r\n <div className=\"col-12 col-lg-6\">\r\n <ContributionQualify amount={cache.employerContributionMonthlyAmount} />\r\n </div>\r\n )}\r\n {cache.qualifiedTuitionReimbursement && (\r\n <div className=\"col-12 col-lg-6\">\r\n <TuitionQualify tuitionAmount={cache.tuitionAmount} />\r\n </div>\r\n )}\r\n {cache.qualifiedEnterpriseEmpcert && !cache.qualifiedForgiveness && (\r\n <div className=\"col-12 col-lg-6\">\r\n <EmpcertQualify />\r\n </div>\r\n )}\r\n {cache.enterpriseBenefits && cache.enterpriseBenefits.qualifiedFreshStart && (\r\n <div className=\"col-12 col-lg-6\">\r\n <FreshStartQualify />\r\n </div>\r\n )}\r\n {cache.enterpriseBenefits && cache.enterpriseBenefits.qualifiedReducedIDR && (\r\n <div className=\"col-12 col-lg-6\">\r\n <ReducedIDRQualify />\r\n </div>\r\n )}\r\n {cache.enterpriseBenefits &&\r\n cache.enterpriseBenefits.qualifiedEducationalReengagement && (\r\n <div className=\"col-12 col-lg-6\">\r\n <EducationalReengagementQualify />\r\n </div>\r\n )}\r\n {cache.enterpriseBenefits && cache.enterpriseBenefits.qualifiedOptimalSituation && (\r\n <div className=\"col-12 col-lg-6\">\r\n <OptimalSituationQualify />\r\n </div>\r\n )}\r\n </IEFix>\r\n\r\n {cache.needsMeeting && (\r\n <>\r\n {permissions.covidFurlough > 0 && (\r\n <IEFix className=\"row\">\r\n <div className=\"col-12\">\r\n <Alert brand=\"info\">\r\n <p>\r\n Given that your were furloughed, you may be eligible for extra loan\r\n forgiveness savings. You will learn more about this at your scheduled\r\n meeting time with our Advisor Team.\r\n </p>\r\n </Alert>\r\n </div>\r\n </IEFix>\r\n )}\r\n <IEFix className=\"row\">\r\n <div className=\"col-12\">\r\n <Header3>Next Steps</Header3>\r\n <p>\r\n Schedule a short introductory phone call with an Advisor. The purpose of this\r\n call is simply for the Advisor to learn more about your unique situation and\r\n goals, so we can help you take full advantage of these benefits. Don't worry,\r\n there is nothing you need to do to prepare for the call.\r\n </p>\r\n <Scheduler buttonText=\"Schedule a meeting\" buttonBrand=\"secondary\" />\r\n </div>\r\n </IEFix>\r\n </>\r\n )}\r\n </Flex>\r\n </AsyncLoader>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { advisor, screening, auth } = state;\r\n const { cache, meta, requests } = advisor;\r\n const id = getUserId(state);\r\n return {\r\n id: id,\r\n cache: cache[id],\r\n meta: meta,\r\n formsAreValid: screening.meta.isValid,\r\n isLoading: requests.loadResource.isLoading || screening.requests.updateResource.isLoading,\r\n saveRequest: screening.requests.updateResource,\r\n request: mergeRequestStatuses([\r\n screening.requests.loadResource,\r\n screening.requests.updateResource,\r\n auth.requests.loadPermissions,\r\n ]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n getResults: (id) => dispatch(advisorLoadResource(id)),\r\n screeningSave: (id) => {\r\n dispatch(screeningConcatenateReferralFields());\r\n dispatch(screeningUpdateResource(id));\r\n },\r\n reloadPermissions: () => dispatch(reloadPermissions()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TabResults));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Form, Header2 } from 'fiducius-ui';\r\n\r\nimport { useScrollToTopOnMount } from '../../../utils';\r\n\r\nconst TabReview = ({ data = {}, errors = {}, handleChange, id, brand }) => {\r\n useScrollToTopOnMount();\r\n return (\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <Header2>Review Your Responses</Header2>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n {brand === 'success' && (\r\n <>\r\n <p>\r\n Thank you for completing the questionnaire. You can use the page links to the left\r\n to go back and review your responses.\r\n </p>\r\n <p>Please click Submit to confirm your responses and continue.</p>\r\n </>\r\n )}\r\n {brand === null && (\r\n <>\r\n <p>You have not yet completed all the questions.</p>\r\n <p>\r\n Please use the navigation items to the left to go back and finish the questionnaire.\r\n </p>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n};\r\n\r\nTabReview.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n brand: t.string,\r\n};\r\n\r\nexport default TabReview;\r\n","import React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { Button, Header4 } from 'fiducius-ui';\r\n\r\nimport { useScrollToTopOnMount } from '../../../utils';\r\n\r\nimport NSLDSWorkflowScreening from '../../nslds/components/nslds-workflow-screening';\r\n\r\nconst FRIEND = 'Friend or colleague';\r\nconst OTHER = 'Other';\r\n\r\nexport const referrerHasExplanation = (value) => value === FRIEND || value === OTHER;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nconst Centered = styled.div`\r\n text-align: center;\r\n`;\r\n\r\nconst TabNSLDS = ({\r\n inNSLDSWorkflow,\r\n handleWorkflowComplete,\r\n isNSLDSWorkflowComplete,\r\n clearUploadedNslds,\r\n updateNsldsUploaded,\r\n nsldsUploaded,\r\n data,\r\n}) => {\r\n useScrollToTopOnMount();\r\n\r\n const [showNotNeeded, setShowNotNeeded] = useState(false);\r\n\r\n useEffect(() => {\r\n if (data && parseInt(data.federalLoanBalance) <= 0 && inNSLDSWorkflow) {\r\n isNSLDSWorkflowComplete = true;\r\n setShowNotNeeded(true);\r\n handleWorkflowComplete();\r\n } else if (data && parseInt(data.federalLoanBalance) > 0 && inNSLDSWorkflow) {\r\n setShowNotNeeded(false);\r\n clearUploadedNslds();\r\n }\r\n }, []);\r\n\r\n //const firstInput = useFocusOnMount();\r\n return (\r\n <>\r\n {!isNSLDSWorkflowComplete && (\r\n <NSLDSWorkflowScreening\r\n inNSLDSWorkflow={inNSLDSWorkflow}\r\n handleWorkflowComplete={handleWorkflowComplete}\r\n updateNsldsUploaded={updateNsldsUploaded}\r\n nsldsUploaded={nsldsUploaded}\r\n />\r\n )}\r\n\r\n {isNSLDSWorkflowComplete && (\r\n <>\r\n {showNotNeeded && (\r\n <>\r\n <Header4>NSLDS Upload</Header4>\r\n <Centered>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n Based on the information you provided, you do not have any federal student loans\r\n and you are not required to return an NSLDS file.\r\n </div>\r\n </div>\r\n </Centered>\r\n </>\r\n )}\r\n {!showNotNeeded && (\r\n <>\r\n <Header4>NSLDS Upload Complete</Header4>\r\n <Centered>\r\n <StyledButton brand=\"primary\" onClick={() => clearUploadedNslds()}>\r\n Upload Different NSLDS\r\n </StyledButton>\r\n </Centered>\r\n </>\r\n )}\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nTabNSLDS.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n isNSLDSWorkflowComplete: t.bool.isRequired,\r\n};\r\n\r\nexport default TabNSLDS;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Alert, AsyncLoader, Workflow, Button } from 'fiducius-ui';\r\n\r\nimport { advisorInvalidateCache } from '../../../advisor';\r\nimport { getUserId } from '../../../auth';\r\nimport { debounce, safeAccess } from '../../../utils';\r\nimport { withPermissions } from '../../../routing';\r\nimport { SharedDataConsent } from '../../../legal';\r\nimport { todosLoadCollection } from '../../../todos';\r\n\r\nimport TabEducation from './tab-education';\r\nimport TabFinance from './tab-finance';\r\nimport TabInfo from './tab-info';\r\nimport TabLoans from './tab-loans';\r\nimport TabResults from './tab-results';\r\nimport TabReview from './tab-review';\r\nimport TabNSLDS from './tab-nslds';\r\nimport {\r\n screeningCopyResourceToForm,\r\n screeningHandleFormChange,\r\n screeningLoadResource,\r\n screeningValidateAttributes,\r\n} from '../redux/operations';\r\n\r\nimport { documentsRemoveFromCache } from '../../../documents/redux/operations';\r\n\r\nclass ScreeningWorkflow extends React.Component {\r\n static propTypes = {\r\n current: t.number,\r\n data: t.object,\r\n errors: t.object,\r\n hasAdvisorResults: t.bool.isRequired,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n request: t.object.isRequired,\r\n updateForm: t.func.isRequired,\r\n validateTab: t.func.isRequired,\r\n permissions: t.object,\r\n files: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n current: props.current || 0,\r\n modalOpen: false,\r\n inNSLDSWorkflow: false,\r\n nsldsWorkflowComplete: false,\r\n tabs: this.buildTabsObjectArray(),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { request } = this.props;\r\n if (prevProps.request.isLoading && request.hasFinished && !request.hasFailed) {\r\n this.setState({ ...this.state, modalOpen: true });\r\n }\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { data, updateForm } = this.props;\r\n const newData = { ...data, ...formState };\r\n updateForm(newData, this.getDependentAttributes(attribute));\r\n }, 250);\r\n\r\n getDependentAttributes = (attribute) => {\r\n switch (attribute) {\r\n case 'consolidated':\r\n return ['consolidated', 'federalPrivateConsolidatedMix'];\r\n case 'hasPrivateLoans':\r\n return [\r\n 'privateLoans',\r\n 'privateBalance',\r\n 'privatePayment',\r\n 'privateServicer',\r\n 'privateInterestRate',\r\n ];\r\n case 'married':\r\n return ['married', 'spouseIncome'];\r\n case 'continuingEducation':\r\n return ['continuingEducation', 'degreeSought', 'school'];\r\n default:\r\n return [attribute];\r\n }\r\n };\r\n\r\n showNSLDS = () => {\r\n const { permissions } = this.props;\r\n return permissions.enterpriseEnabled;\r\n };\r\n\r\n allowedNavigate = () => {\r\n return !this.state.inNSLDSWorkflow || this.state.nsldsWorkflowComplete;\r\n };\r\n\r\n handleTabChange = (index) => {\r\n this.props.validateTab(this.state, Object.keys(this.state.tabs)[this.state.current]);\r\n if (this.showNSLDS() && index == 2) {\r\n this.setState({ inNSLDSWorkflow: true });\r\n }\r\n this.setState({ current: index });\r\n };\r\n\r\n sectionValidationStatus(section) {\r\n const { errors } = this.props;\r\n let exists = false;\r\n for (let i = 0; i < this.state.tabs[section].length; i++) {\r\n let attribute = this.state.tabs[section][i];\r\n if (safeAccess(errors, `[${attribute}]`)) {\r\n return 'danger';\r\n } else if (safeAccess(errors, `[${attribute}]`) === false) {\r\n exists = true;\r\n }\r\n }\r\n return exists ? 'success' : null;\r\n }\r\n\r\n NSLDSValidationStatus() {\r\n return this.state.nsldsWorkflowComplete ? 'success' : null;\r\n }\r\n\r\n reviewValidationStatus = () => {\r\n const info = this.sectionValidationStatus('info');\r\n const loans = this.sectionValidationStatus('loans');\r\n const finance = this.sectionValidationStatus('finance');\r\n const education = this.sectionValidationStatus('education');\r\n\r\n if (\r\n info === 'success' &&\r\n loans === 'success' &&\r\n finance === 'success' &&\r\n education === 'success'\r\n ) {\r\n return 'success';\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n nsldsWorkFlowComplete = () => {\r\n this.setState({ inNSLDSWorkflow: false, nsldsWorkflowComplete: true });\r\n };\r\n\r\n nsldsWorkFlowStartOver = () => {\r\n this.setState({ inNSLDSWorkflow: true, nsldsWorkflowComplete: false });\r\n };\r\n\r\n clearUploadedNslds = () => {\r\n this.updateNsldsUploaded(false);\r\n this.nsldsWorkFlowStartOver();\r\n this.uploadDifferentNslds();\r\n this.removeNSLDSFileFromCache();\r\n };\r\n\r\n removeNSLDSFileFromCache = () => {\r\n const { files, nsldsCreateResourceRequest } = this.props;\r\n const matches = Object.keys(files).filter(\r\n (k) => files[k].fileTypeCd === 'LNDT' && files[k].id > 0\r\n );\r\n if (matches.length > 0) {\r\n this.props.removeFromCache(matches[0]);\r\n }\r\n nsldsCreateResourceRequest.hasFinished = false;\r\n };\r\n\r\n updateNsldsUploaded = (uploaded) => {\r\n this.setState({ ...this.state, nsldsUploaded: uploaded });\r\n };\r\n\r\n uploadDifferentNslds = () => {};\r\n\r\n toggleModal = () => {\r\n this.setState({ ...this.state, modalOpen: false });\r\n };\r\n\r\n showSharedDataConsent = (permissions) => {\r\n let retVal = false;\r\n if (permissions.hasConsentToShareData && permissions.consentFormCode === 'AREGI') {\r\n this.state.modalOpen\r\n ? (document.body.style.overflow = 'hidden')\r\n : (document.body.style.overflow = '');\r\n retVal = true;\r\n }\r\n return retVal;\r\n };\r\n\r\n loadTabs = () => {\r\n const { data, errors, hasAdvisorResults } = this.props;\r\n let tabs = [];\r\n let showNSLDS = this.showNSLDS();\r\n\r\n tabs.push(\r\n <TabInfo\r\n key=\"1\"\r\n id=\"info\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('info')}\r\n name=\"Info\"\r\n handleChange={this.handleChange}\r\n />\r\n );\r\n\r\n tabs.push(\r\n <TabLoans\r\n key=\"2\"\r\n id=\"loans\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('loans')}\r\n name=\"Student Loans\"\r\n handleChange={this.handleChange}\r\n />\r\n );\r\n\r\n if (showNSLDS) {\r\n tabs.push(\r\n <TabNSLDS\r\n key=\"3\"\r\n id=\"NSLDS\"\r\n data={data}\r\n errors={errors}\r\n brand={this.NSLDSValidationStatus()}\r\n name=\"NSLDS\"\r\n handleChange={this.handleChange}\r\n inNSLDSWorkflow={this.state.inNSLDSWorkflow}\r\n handleWorkflowComplete={() => this.nsldsWorkFlowComplete()}\r\n isNSLDSWorkflowComplete={this.state.nsldsWorkflowComplete}\r\n clearUploadedNslds={this.clearUploadedNslds}\r\n updateNsldsUploaded={this.updateNsldsUploaded}\r\n nsldsUploaded={this.state.nsldsUploaded}\r\n />\r\n );\r\n }\r\n\r\n tabs.push(\r\n <TabFinance\r\n key=\"4\"\r\n id=\"finance\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('finance')}\r\n name=\"Finances\"\r\n handleChange={this.handleChange}\r\n />\r\n );\r\n\r\n tabs.push(\r\n <TabEducation\r\n key=\"5\"\r\n id=\"education\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('education')}\r\n name=\"Education\"\r\n handleChange={this.handleChange}\r\n />\r\n );\r\n\r\n tabs.push(\r\n <TabReview\r\n key=\"6\"\r\n id=\"review\"\r\n data={data}\r\n errors={errors}\r\n brand={this.reviewValidationStatus()}\r\n name=\"Review\"\r\n handleChange={this.handleChange}\r\n />\r\n );\r\n\r\n tabs.push(<TabResults key=\"7\" brand={hasAdvisorResults ? 'success' : null} name=\"Results\" />);\r\n\r\n return tabs;\r\n };\r\n\r\n // This method is supposed to only put the tabs in that are needed; exclude NSLDS\r\n buildTabsObjectArray = () => {\r\n let tabsObjectArray = {};\r\n\r\n tabsObjectArray = {\r\n info: [\r\n 'knowSomeoneWithLoans',\r\n 'referrerName',\r\n 'hireDate',\r\n 'jobTitle',\r\n 'homeAddressOne',\r\n 'homeAddressTwo',\r\n 'homeCity',\r\n 'homeState',\r\n 'homeZipCode',\r\n 'covidFurlough',\r\n ],\r\n loans: [\r\n 'federalLoanBalance',\r\n 'federalMonthlyPayment',\r\n 'consolidated',\r\n 'federalPrivateConsolidatedMix',\r\n 'hasParentPlus',\r\n 'privateBalance',\r\n 'hasPrivateLoans',\r\n 'privatePayment',\r\n 'privateServicer',\r\n 'privateInterestRate',\r\n 'pslfOnOwn',\r\n ],\r\n };\r\n\r\n if (this.showNSLDS()) {\r\n tabsObjectArray = { ...tabsObjectArray, NSLDS: [] };\r\n }\r\n\r\n tabsObjectArray = {\r\n ...tabsObjectArray,\r\n finance: ['income', 'creditScore', 'taxFiling', 'householdSize', 'married', 'spouseIncome'],\r\n education: ['highestCompletedDegree', 'continuingEducation', 'degreeSought', 'school'],\r\n results: [],\r\n };\r\n\r\n return tabsObjectArray;\r\n };\r\n\r\n render() {\r\n const { data, errors, request, permissions } = this.props;\r\n return (\r\n <>\r\n {this.showSharedDataConsent(permissions) && (\r\n <SharedDataConsent\r\n hideIcon={true}\r\n isOpen={this.state.modalOpen}\r\n toggleModal={this.toggleModal}\r\n />\r\n )}\r\n <AsyncLoader request={request}>\r\n <>\r\n {safeAccess(errors, 'generalErrors')\r\n ? errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))\r\n : null}\r\n {/* TODO: Fix AsyncLoader so that it doesn't need this check for data */}\r\n {data && (\r\n <Workflow\r\n tabs={this.loadTabs()}\r\n finalButton={\r\n <Button\r\n brand=\"primary\"\r\n invert\r\n onClick={() => {\r\n window.location.href = '/dashboard';\r\n }}\r\n >\r\n View my dashboard\r\n </Button>\r\n }\r\n handleTabChange={this.handleTabChange}\r\n next\r\n prev\r\n finalPageLocksFlow\r\n finalPageCheck={this.reviewValidationStatus}\r\n penUltimateButton={'Submit'}\r\n allowedNavigate={this.allowedNavigate}\r\n />\r\n )}\r\n </>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.screening;\r\n return {\r\n id: getUserId(state),\r\n data: form,\r\n errors: errors,\r\n hasAdvisorResults: state.advisor.meta.cacheIsCurrent,\r\n request: requests.loadResource,\r\n files: state.documents.cache,\r\n nsldsCreateResourceRequest: state.nslds.requests.createResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(screeningLoadResource(id));\r\n await dispatch(screeningCopyResourceToForm(id));\r\n await dispatch(todosLoadCollection());\r\n },\r\n updateForm: (data, attributes) => {\r\n dispatch(advisorInvalidateCache());\r\n dispatch(screeningHandleFormChange(data, attributes));\r\n },\r\n validateTab: async (state, tab) => {\r\n await dispatch(screeningValidateAttributes(state.tabs[tab]));\r\n },\r\n removeFromCache: (id) => dispatch(documentsRemoveFromCache(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ScreeningWorkflow));\r\n","import React from 'react';\r\nimport { Card, CardBody, CardText, Header1 } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer } from '../../../routing';\r\n\r\nimport ScreeningWorkflow from '../components/screening-workflow';\r\n\r\nconst Screening = () => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <Header1>Screening Questionnaire</Header1>\r\n <CardText>\r\n <ScreeningWorkflow />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nexport default Screening;\r\n","import React, { useState, useEffect } from 'react';\nimport t from 'prop-types';\nimport styled from 'styled-components';\nimport { connect } from 'react-redux';\nimport {\n Alert,\n AsyncLoader,\n Button,\n Card,\n CardHeader,\n CardBody,\n CardText,\n CardTitle,\n InputError,\n InputWrapper,\n InputLabel,\n InputRadio,\n} from 'fiducius-ui';\n\nimport { advisorInvalidateCache } from '../../../advisor';\nimport { getUserId, authLoadPermissions } from '../../../auth';\nimport { debounce, safeAccess } from '../../../utils';\nimport { withPermissions } from '../../../routing';\nimport { SharedDataConsent } from '../../../legal';\nimport { todosLoadCollection } from '../../../todos';\n\nimport {\n screeningCopyResourceToForm,\n screeningHandleFormChange,\n screeningLoadResource,\n screeningUpdateResource,\n screeningValidateAttributes,\n screeningSkip,\n} from '../redux/operations';\n\nconst ButtonWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n align-items: center;\n margin: 1.5rem 0 3rem 0;\n`;\n\nconst StyledInputError = styled(InputError)`\n display: flex;\n flex-direction: column;\n`;\n\nconst PrescreeningForm = ({\n data,\n errors,\n request,\n permissions,\n updateForm,\n loadData,\n id,\n prescreeningSave,\n}) => {\n const [modalOpen, setModalOpen] = useState(true);\n const [skipScreening, setSkipScreening] = useState(false);\n\n useEffect(() => {\n loadData(id);\n }, []);\n\n // constructor(props) {\n // super(props);\n // this.state = {\n // current: props.current || 0,\n // modalOpen: false,\n // };\n // }\n\n // componentDidMount() {\n // this.props.loadData(this.props.id);\n // }\n\n // componentDidUpdate(prevProps) {\n // const { request } = this.props;\n // if (prevProps.request.isLoading && request.hasFinished && !request.hasFailed) {\n // this.setState({ ...this.state, modalOpen: true });\n // }\n // }\n\n const handleChange = debounce((formState, id, attribute) => {\n //const { data, updateForm } = this.props;\n const newData = { ...data, ...formState };\n updateForm(newData, attribute);\n }, 250);\n\n // const allowedNavigate = () => {\n // return true;\n // };\n\n // handleTabChange = (index) => {\n // this.props.validateTab(this.state, Object.keys(this.state.tabs)[this.state.current]);\n // this.setState({ current: index });\n // };\n\n const toggleModal = () => {\n setModalOpen(false);\n };\n\n const onContinue = () => {\n // hit the method that wil save the defaults\n if (skipScreening) {\n // Add the skip screening to cache here?\n\n prescreeningSave(id).then(() => {\n window.location.href = '/dashboard';\n });\n } else {\n window.location.href = '/screening';\n }\n };\n\n const showSharedDataConsent = (permissions) => {\n let retVal = false;\n if (permissions.hasConsentToShareData && permissions.consentFormCode === 'AREGI') {\n modalOpen ? (document.body.style.overflow = 'hidden') : (document.body.style.overflow = '');\n retVal = true;\n }\n return retVal;\n };\n\n const getScreeningMessage = () => {\n if (permissions.skipScreeningMessage && permissions.skipScreeningMessage !== '') {\n return <p dangerouslySetInnerHTML={{ __html: permissions.skipScreeningMessage }}></p>;\n } else {\n return (\n <p>\n Fiducius works with non-affiliated third parties, including some health welfare financial\n service providers that may work with your employer (i.e. insurance broker, retirement\n provider). These parties have financial solutions that may further help you save on your\n student loan payment or otherwise help you with your financial wellness. By clicking on \"I\n Accept\" you are authorizing Fiducius to share your personal information you provide with\n these parties to help facilitate best possible outcomes for your individual situation. You\n may opt out at any time by contacting us at{' '}\n <a href=\"mailto:info@getfiducius.com\" target=\"_top\">\n info@getfiducius.com\n </a>{' '}\n or <a href=\"tel:5136455400\">(513) 645-5400</a>.\n </p>\n );\n }\n };\n\n //const { data, errors, request, permissions } = this.props;\n return (\n <>\n {showSharedDataConsent(permissions) && (\n <SharedDataConsent hideIcon={true} isOpen={modalOpen} toggleModal={toggleModal} />\n )}\n <AsyncLoader request={request}>\n <>\n {safeAccess(errors, 'generalErrors')\n ? errors.generalErrors.map((e, i) => (\n <Alert key={i} brand=\"danger\">\n {e.detail}\n </Alert>\n ))\n : null}\n {/* TODO: Fix AsyncLoader so that it doesn't need this check for data */}\n {data && permissions.showSkipScreening && (\n <Card brand={request.hasFailed ? 'danger' : 'primary'}>\n {request.hasFailed && <CardHeader>Prescreen load Failure</CardHeader>}\n <CardBody>\n <CardTitle>Prescreening Option</CardTitle>\n <CardText>\n {getScreeningMessage()}\n <div className=\"row\">\n <div className=\"col-6 col-md-6\">\n <InputWrapper error={!!errors.skipScreening}>\n {/* <InputLabel htmlfor=\"skipScreening\" required>\n Do you want to skip screening?\n </InputLabel> */}\n <StyledInputError\n dangerouslySetInnerHTML={{\n __html: safeAccess(errors, 'skipScreening.detail'),\n }}\n />\n <InputRadio\n name=\"skipScreening\"\n value=\"true\"\n checked={skipScreening === true}\n onChange={() => {\n setSkipScreening(!skipScreening);\n }}\n label=\"Yes\"\n />\n <InputRadio\n name=\"skipScreening\"\n value=\"false\"\n checked={skipScreening === false}\n onChange={() => {\n setSkipScreening(!skipScreening);\n }}\n label=\"No\"\n />\n </InputWrapper>\n </div>\n </div>\n </CardText>\n </CardBody>\n <ButtonWrapper>\n <Button brand=\"primary\" size=\"lg\" onClick={onContinue}>\n Continue\n </Button>\n </ButtonWrapper>\n </Card>\n )}\n </>\n </AsyncLoader>\n </>\n );\n};\n\nconst mapStateToProps = (state) => {\n const { errors, form, requests } = state.screening;\n return {\n id: getUserId(state),\n data: form,\n errors: errors,\n request: requests.loadResource,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n loadData: async (id) => {\n await dispatch(screeningLoadResource(id));\n await dispatch(screeningCopyResourceToForm(id));\n await dispatch(todosLoadCollection());\n },\n updateForm: (data, attributes) => {\n dispatch(advisorInvalidateCache());\n dispatch(screeningHandleFormChange(data, attributes));\n },\n prescreeningSave: async (id) => {\n //await dispatch(screeningUpdateResource(id));\n await dispatch(screeningSkip(id));\n await dispatch(authLoadPermissions());\n await dispatch(todosLoadCollection());\n },\n});\n\nPrescreeningForm.propTypes = {\n data: t.object,\n errors: t.object,\n id: t.string,\n loadData: t.func.isRequired,\n request: t.object.isRequired,\n updateForm: t.func.isRequired,\n permissions: t.object,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(PrescreeningForm));\n","import React from 'react';\n\nimport { FullscreenContainer } from '../../../routing';\n\nimport PrescreeningForm from '../components/prescreening-form';\n\nconst Prescreening = () => (\n <FullscreenContainer className=\"container\">\n <div className=\"row\">\n <div className=\"col-12\">\n <PrescreeningForm />\n </div>\n </div>\n </FullscreenContainer>\n);\n\nexport default Prescreening;\n","import types from './types';\nimport { isEqual, resourceReducerGenerator } from '../../../utils';\n\n// This is super brittle...\nconst emptyState = {\n addressOne: null,\n addressTwo: null,\n birthDate: '', // TODO: remove from API\n city: null,\n consolidated: null,\n continuedEducation: null,\n creditScore: '',\n degree: '',\n degreeSought: '',\n federalPrivateMix: null,\n household: null,\n income: null,\n interestRate: null,\n jobTitle: null,\n knowSomeoneWithLoans: null,\n loanBalance: null,\n married: null,\n monthlyPayment: null,\n parentPlus: null,\n pslfOnOwn: null,\n privateBalance: null,\n privateLoans: null,\n privatePayment: null,\n privateServicer: null,\n readOnly: false,\n referrerName: null,\n results: {},\n school: null,\n spouseIncome: null,\n startDate: '',\n taxFiling: '',\n usState: null,\n zipCode: null,\n};\n\nconst emptyDecider = (state) => isEqual(state.cache, emptyState);\n\nexport default resourceReducerGenerator('screening', types, undefined, emptyDecider);\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport {\r\n Form,\r\n Header2,\r\n Header4,\r\n InputError,\r\n InputLabel,\r\n InputRadio,\r\n InputWrapper,\r\n AsyncLoader,\r\n Button,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, mergeRequestStatuses, getApi, debounce } from '../../../utils';\r\n\r\nimport { getTuitionInstitutionData } from '../../../benefits/tuition';\r\n\r\nimport {\r\n TuitionInstitutionForm,\r\n tuitionInstitutionClearForm,\r\n tuitionInstitutionCopyResourceToForm,\r\n tuitionInstitutionHandleFormChange,\r\n tuitionInstitutionLoadResource,\r\n tuitionInstitutionLoadCollection,\r\n institutionCreateResource,\r\n} from '../../../tuition-institution';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { todosLoadCollection } from '../../../todos';\r\n\r\nimport { getToken } from '../../../auth';\r\n\r\nclass TabInstitution extends React.Component {\r\n static propTypes = {\r\n institutionData: t.object,\r\n data: t.object,\r\n errors: t.object,\r\n institutionErrors: t.object,\r\n request: t.object,\r\n getRequest: t.object,\r\n handleChange: t.func,\r\n loadInstitution: t.func.isRequired,\r\n clearInstitutionForm: t.func.isRequired,\r\n handleInstitutionForm: t.func.isRequired,\r\n createInstitution: t.func.isRequired,\r\n id: t.string.isRequired,\r\n form: t.object,\r\n token: t.any,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showForm: false, allowedDegreeTypes: {} };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadInstitution();\r\n this.getDegreeTypeDropDownOptions();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const prevLoading = prevProps.request.isLoading;\r\n const current = this.props.request;\r\n\r\n if (prevLoading && !current.isLoading && !current.hasFailed) {\r\n this.closeForm();\r\n }\r\n }\r\n\r\n getDegreeTypeDropDownOptions = () => {\r\n getApi(this.props.token, '/drop-down-list/DegreeType__A').then((data) => {\r\n let degrees = {};\r\n Object.keys(data).forEach((a) => {\r\n degrees[data[a].id] = data[a].description;\r\n });\r\n this.setState({ ...this.state, allowedDegreeTypes: degrees });\r\n });\r\n };\r\n\r\n addInstitution = () => {\r\n this.setState({ showForm: true });\r\n };\r\n\r\n updateInstitutionDropdown = debounce((institutionSelection) => {\r\n let formData = this.props.form;\r\n formData['institutionName'] = institutionSelection['name'];\r\n formData['dapipId'] = institutionSelection['id'];\r\n this.props.handleInstitutionForm({ ...formData }, ['institutionName', 'dapipId']);\r\n }, 250);\r\n\r\n onChangeInstitution = debounce((tuitionInstitution, id, attributes) => {\r\n this.props.handleInstitutionForm({ ...this.props.form, ...tuitionInstitution }, [attributes]);\r\n }, 250);\r\n\r\n onCreateInstitution = () => {\r\n this.props.createInstitution().then((addedId) => {\r\n if (addedId && addedId > 0) {\r\n let formData = this.props.data;\r\n formData['institutionId'] = addedId;\r\n this.props.handleChange({ ...formData }, ['institutionId']);\r\n }\r\n });\r\n };\r\n\r\n closeForm = () => {\r\n this.props.clearInstitutionForm();\r\n this.setState({\r\n ...this.state,\r\n showForm: false,\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n data = {},\r\n form,\r\n institutionData,\r\n errors = {},\r\n getRequest,\r\n request,\r\n handleChange,\r\n id,\r\n institutionErrors,\r\n } = this.props;\r\n const { showForm, allowedDegreeTypes } = this.state;\r\n const institutions = [];\r\n return (\r\n <>\r\n <Header2>Institution Information</Header2>\r\n <AsyncLoader\r\n request={getRequest}\r\n empty={\r\n <Header4>\r\n You have no instutions on file to select. Please use the Add New Institution button\r\n below to add a new one.\r\n </Header4>\r\n }\r\n >\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <InputWrapper error={!!safeAccess(errors, 'institutionId')}>\r\n <InputLabel htmlFor=\"institutionId\">Select an Institution:</InputLabel>\r\n <InputError>{safeAccess(errors, 'institutionId.detail')}</InputError>\r\n {Object.keys(institutionData).length > 0 &&\r\n Object.keys(institutionData).forEach((institution) => {\r\n institutions.push(\r\n <InputRadio\r\n name=\"institutionId\"\r\n value={institutionData[institution].id}\r\n label={institutionData[institution].institutionName}\r\n defaultChecked={institutionData[institution].id === data.institutionId}\r\n />\r\n );\r\n })}\r\n {institutions}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n </AsyncLoader>\r\n <Lede>\r\n <Button brand=\"primary\" onClick={() => this.addInstitution()}>\r\n Add New Institution\r\n </Button>\r\n </Lede>\r\n {showForm && (\r\n <TuitionInstitutionForm\r\n action={'Add'}\r\n closeForm={this.closeForm}\r\n data={form}\r\n allowedDegreeTypes={allowedDegreeTypes}\r\n errors={institutionErrors}\r\n isLoading={request.isLoading}\r\n getResource={getRequest}\r\n isOpen={showForm}\r\n onChange={this.onChangeInstitution}\r\n onUpdateDropdown={this.updateInstitutionDropdown}\r\n onSubmit={this.onCreateInstitution}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests, form, errors } = state.tuitionInstitution;\r\n return {\r\n institutionData: getTuitionInstitutionData(state),\r\n token: getToken(state),\r\n getRequest: requests.loadCollection,\r\n institutionErrors: errors,\r\n request: mergeRequestStatuses([\r\n requests.createResource,\r\n requests.updateResource,\r\n requests.deleteResource,\r\n ]),\r\n form: form,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadInstitution: () => dispatch(tuitionInstitutionLoadCollection()),\r\n clearInstitutionForm: () => dispatch(tuitionInstitutionClearForm()),\r\n createInstitution: async () => {\r\n const addedId = await dispatch(institutionCreateResource());\r\n dispatch(tuitionInstitutionLoadCollection());\r\n dispatch(todosLoadCollection());\r\n dispatch(tuitionInstitutionClearForm());\r\n return addedId;\r\n },\r\n handleInstitutionForm: (tuitionInstitution, attributes) =>\r\n dispatch(tuitionInstitutionHandleFormChange(tuitionInstitution, attributes)),\r\n hydrateInstitutionForm: async (id) => {\r\n await dispatch(tuitionInstitutionLoadResource(id));\r\n await dispatch(tuitionInstitutionCopyResourceToForm(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TabInstitution));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport {\r\n Form,\r\n Header2,\r\n Header3,\r\n Header4,\r\n InputError,\r\n InputLabel,\r\n InputRadio,\r\n InputWrapper,\r\n AsyncLoader,\r\n Button,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, mergeRequestStatuses, debounce } from '../../../utils';\r\n\r\nimport { getTuitionInstitutionData } from '../../../benefits/tuition';\r\n\r\nimport { tuitionInstitutionLoadCollection } from '../../../tuition-institution';\r\n\r\nimport {\r\n TuitionInstitutionTermForm,\r\n tuitionInstitutionTermClearForm,\r\n tuitionInstitutionTermHandleFormChange,\r\n termCreateResource,\r\n} from '../../../tuition-institution-term';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { todosLoadCollection } from '../../../todos';\r\n\r\nimport { getToken, authLoadPermissions } from '../../../auth';\r\n\r\nclass TabTerm extends React.Component {\r\n static propTypes = {\r\n institutionData: t.object,\r\n data: t.object,\r\n errors: t.object,\r\n institutionErrors: t.object,\r\n request: t.object,\r\n getRequest: t.object,\r\n handleChange: t.func,\r\n loadInstitution: t.func.isRequired,\r\n clearTermForm: t.func.isRequired,\r\n handleTermForm: t.func.isRequired,\r\n createTerm: t.func.isRequired,\r\n id: t.string.isRequired,\r\n form: t.object,\r\n token: t.any,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { showForm: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadInstitution();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const prevLoading = prevProps.request.isLoading;\r\n const current = this.props.request;\r\n\r\n if (prevLoading && !current.isLoading && !current.hasFailed) {\r\n //alert(\"I didn't fail\");\r\n this.closeForm();\r\n }\r\n }\r\n\r\n addTerm = () => {\r\n this.setState({ showForm: true });\r\n };\r\n\r\n onChangeTerm = debounce((tuitionInstitutionTerm, id, attributes) => {\r\n this.props.handleTermForm({ ...this.props.form, ...tuitionInstitutionTerm }, [attributes]);\r\n }, 250);\r\n\r\n onCreateTerm = () => {\r\n let { form, data, errors } = this.props;\r\n form['institutionId'] = form['institutionId'] || data.institutionId;\r\n this.props.createTerm().then((addedId) => {\r\n if (addedId && addedId > 0) {\r\n data['termId'] = addedId;\r\n errors.termId = undefined;\r\n this.props.handleChange({ ...data }, 0, 'termId');\r\n }\r\n });\r\n };\r\n\r\n closeForm = () => {\r\n this.props.clearTermForm();\r\n this.setState({\r\n ...this.state,\r\n showForm: false,\r\n });\r\n };\r\n\r\n noTermsOnFile() {\r\n return (\r\n <Header4>\r\n You have no terms on file to select. Please use the Add New Term button below to add a new\r\n one.\r\n </Header4>\r\n );\r\n }\r\n\r\n noInstitutionSelected() {\r\n return (\r\n <Header4>\r\n You have not yet selected an institution. Please go back to the Institution section and\r\n select an existing institution or add a new institution.\r\n </Header4>\r\n );\r\n }\r\n\r\n termIdMatchCheck(termIdA, termIdB) {\r\n let retVal = false;\r\n if (termIdA !== undefined && termIdA !== null && termIdB !== undefined && termIdB !== null) {\r\n retVal = parseInt(termIdA) === parseInt(termIdB);\r\n }\r\n return retVal;\r\n }\r\n\r\n getInstitutionList = () => {\r\n const { institutionData } = this.props;\r\n let realInstitutions = Object.keys(institutionData).reduce(\r\n (obj, k) => ({\r\n ...obj,\r\n [k]: institutionData[k].institutionName,\r\n }),\r\n {}\r\n );\r\n let institutions = { ...realInstitutions };\r\n return institutions;\r\n };\r\n\r\n render() {\r\n const {\r\n data = {},\r\n form,\r\n institutionData,\r\n errors = {},\r\n getRequest,\r\n request,\r\n handleChange,\r\n id,\r\n institutionErrors,\r\n } = this.props;\r\n const { showForm } = this.state;\r\n const terms = [];\r\n let hasEditableTerms = false;\r\n\r\n return (\r\n <>\r\n <Header2>Term Information</Header2>\r\n\r\n <AsyncLoader request={getRequest} empty={this.noInstitutionSelected()}>\r\n {data.institutionId && (\r\n <>\r\n <Header3>Institution: {institutionData[data.institutionId].institutionName}</Header3>\r\n\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n {institutionData[data.institutionId].terms.length > 0 && (\r\n <InputWrapper error={!!safeAccess(errors, 'termId')}>\r\n {hasEditableTerms && (\r\n <div>\r\n <InputLabel htmlFor=\"termId\">Select a Term:</InputLabel>\r\n <InputError>{safeAccess(errors, 'termId.detail')}</InputError>\r\n </div>\r\n )}\r\n\r\n {Object.keys(institutionData[data.institutionId].terms).forEach((term) => {\r\n if (institutionData[data.institutionId].terms[term].editable) {\r\n hasEditableTerms = true;\r\n terms.push(\r\n <InputRadio\r\n name=\"termId\"\r\n value={institutionData[data.institutionId].terms[term].id}\r\n label={institutionData[data.institutionId].terms[term].termName}\r\n defaultChecked={this.termIdMatchCheck(\r\n institutionData[data.institutionId].terms[term].id,\r\n data.termId\r\n )}\r\n />\r\n );\r\n }\r\n })}\r\n {data.institutionId && terms.length > 0 && <>{terms}</>}\r\n </InputWrapper>\r\n )}\r\n {data.institutionId && terms.length === 0 && this.noTermsOnFile()}\r\n </div>\r\n </div>\r\n </Form>\r\n </>\r\n )}\r\n {!data.institutionId && this.noInstitutionSelected()}\r\n </AsyncLoader>\r\n {data.institutionId && (\r\n <Lede>\r\n <Button brand=\"primary\" onClick={() => this.addTerm()}>\r\n Add New Term\r\n </Button>\r\n </Lede>\r\n )}\r\n {showForm && (\r\n <TuitionInstitutionTermForm\r\n action={'Add'}\r\n closeForm={this.closeForm}\r\n data={form}\r\n errors={institutionErrors}\r\n isLoading={request.isLoading}\r\n getResource={getRequest}\r\n isOpen={showForm}\r\n onChange={this.onChangeTerm}\r\n onSubmit={this.onCreateTerm}\r\n institutionList={this.getInstitutionList()}\r\n defaultInstitutionId={this.props.data.institutionId}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n const termForm = safeAccess(state.tuitionInstitutionTerm, 'form');\r\n const termRequests = safeAccess(state.tuitionInstitutionTerm, 'requests');\r\n const termErrors = safeAccess(state.tuitionInstitutionTerm, 'errors');\r\n return {\r\n institutionData: getTuitionInstitutionData(state),\r\n token: getToken(state),\r\n getRequest: requests.loadCollection,\r\n institutionErrors: termErrors,\r\n request: mergeRequestStatuses([\r\n termRequests.createResource,\r\n termRequests.updateResource,\r\n termRequests.deleteResource,\r\n ]),\r\n form: termForm,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadInstitution: () => dispatch(tuitionInstitutionLoadCollection()),\r\n clearTermForm: () => dispatch(tuitionInstitutionTermClearForm()),\r\n createTerm: async () => {\r\n let addedId = await dispatch(termCreateResource());\r\n if (addedId && addedId > 0) {\r\n dispatch(authLoadPermissions());\r\n dispatch(tuitionInstitutionLoadCollection());\r\n dispatch(todosLoadCollection());\r\n }\r\n return addedId;\r\n },\r\n handleTermForm: (tuitionInstitutionTerm, attributes) =>\r\n dispatch(tuitionInstitutionTermHandleFormChange(tuitionInstitutionTerm, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TabTerm));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport {\r\n Form,\r\n Header2,\r\n Header3,\r\n Header4,\r\n Header5,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputSelect,\r\n InputText,\r\n InputWrapper,\r\n AsyncLoader,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess, mergeRequestStatuses, getApi } from '../../../utils';\r\n\r\nimport { getTuitionInstitutionData } from '../../../benefits/tuition';\r\n\r\nimport { tuitionInstitutionLoadCollection } from '../../../tuition-institution';\r\n\r\nimport {\r\n tuitionInstitutionTermClearForm,\r\n tuitionInstitutionTermHandleFormChange,\r\n termCreateResource,\r\n} from '../../../tuition-institution-term';\r\n\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport { todosLoadCollection } from '../../../todos';\r\n\r\nimport { getToken, authLoadPermissions } from '../../../auth';\r\n\r\nclass TabClass extends React.Component {\r\n static propTypes = {\r\n institutionData: t.object,\r\n data: t.object,\r\n errors: t.object,\r\n institutionErrors: t.object,\r\n request: t.object,\r\n getRequest: t.object,\r\n handleChange: t.func,\r\n loadInstitution: t.func.isRequired,\r\n clearTermForm: t.func.isRequired,\r\n handleTermForm: t.func.isRequired,\r\n createTerm: t.func.isRequired,\r\n id: t.string.isRequired,\r\n form: t.object,\r\n token: t.any,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { allowedCertifications: {} };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadInstitution();\r\n this.getCertificationDropDownOptions();\r\n }\r\n\r\n getCertificationDropDownOptions = () => {\r\n getApi(this.props.token, '/drop-down-list/Certification__A').then((data) => {\r\n let certifications = {};\r\n Object.keys(data).forEach((a) => {\r\n certifications[data[a].description] = data[a].description;\r\n });\r\n this.setState({ ...this.state, allowedCertifications: certifications });\r\n });\r\n };\r\n\r\n noTermsOnFile() {\r\n return (\r\n <Header4>\r\n You have no terms on file to select. Please use the Add New Term button below to add a new\r\n one.\r\n </Header4>\r\n );\r\n }\r\n\r\n noInstitutionSelected() {\r\n return (\r\n <Header4>\r\n You have not yet selected an institution. Please go back to the Institution section and\r\n select an existing institution or add a new institution.\r\n </Header4>\r\n );\r\n }\r\n\r\n noTermSelected() {\r\n return (\r\n <Header4>\r\n You have not yet selected a term. Please go back to the Term section and select an existing\r\n term or add a new term.\r\n </Header4>\r\n );\r\n }\r\n\r\n termIdMatchCheck(termIdA, termIdB) {\r\n let retVal = false;\r\n if (termIdA !== undefined && termIdA !== null && termIdB !== undefined && termIdB !== null) {\r\n retVal = parseInt(termIdA) === parseInt(termIdB);\r\n //alert((parseInt(termIdA) === parseInt(termIdB)) + ': ' + termIdA + ' === ' + termIdB);\r\n }\r\n return retVal;\r\n }\r\n\r\n getInstitutionList = () => {\r\n const { institutionData } = this.props;\r\n let realInstitutions = Object.keys(institutionData).reduce(\r\n (obj, k) => ({\r\n ...obj,\r\n [k]: institutionData[k].institutionName,\r\n }),\r\n {}\r\n );\r\n let institutions = { ...realInstitutions };\r\n return institutions;\r\n };\r\n\r\n getExistingInfo = () => {\r\n const { data = {}, institutionData } = this.props;\r\n\r\n const institution = institutionData[data.institutionId];\r\n const termId = Object.keys(institution.terms).find((termId) =>\r\n this.termIdMatchCheck(institution.terms[termId].id, data.termId)\r\n );\r\n const term = institution.terms[termId];\r\n const classes = [];\r\n if (term.classes.length > 0) {\r\n Object.keys(term.classes).forEach((classId) =>\r\n classes.push(<li>{term.classes[classId].className}</li>)\r\n );\r\n }\r\n return (\r\n <>\r\n <Header3>\r\n {institution.institutionName} - {term.termName}\r\n </Header3>\r\n <Header5>Existing Classes {classes.length === 0 && <> - No classes on file</>}</Header5>\r\n {classes.length > 0 && <ul>{classes}</ul>}\r\n </>\r\n );\r\n };\r\n\r\n isCertification() {\r\n const { data = {}, institutionData } = this.props;\r\n return institutionData[data.institutionId].degreeType === 'CERT';\r\n }\r\n\r\n render() {\r\n const { data = {}, errors = {}, getRequest, handleChange, id } = this.props;\r\n const { allowedCertifications } = this.state;\r\n return (\r\n <>\r\n <Header2>Class Information</Header2>\r\n\r\n <AsyncLoader request={getRequest} empty={this.noInstitutionSelected()}>\r\n {data.institutionId && data.termId && (\r\n <>\r\n {this.getExistingInfo()}\r\n\r\n <Form handleChange={handleChange} id={id} defaults={data}>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <InputWrapper error={!!errors.className}>\r\n <InputLabel htmlFor=\"className\" required>\r\n Class Name\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'className.detail')}</InputError>\r\n <InputGroup>\r\n {this.isCertification() &&\r\n Object.keys(allowedCertifications).length > 1 && (\r\n <InputSelect\r\n name=\"className\"\r\n value={data.className}\r\n options={allowedCertifications}\r\n />\r\n )}\r\n {(!this.isCertification() ||\r\n Object.keys(allowedCertifications).length === 1) && (\r\n <InputText name=\"className\" defaultValue={data.className} />\r\n )}\r\n </InputGroup>\r\n </InputWrapper>\r\n\r\n <InputWrapper error={!!errors.hours}>\r\n <InputLabel htmlFor=\"hours\">Hours</InputLabel>\r\n <InputError>{safeAccess(errors, 'hours.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"hours\" defaultValue={data.hours} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n </>\r\n )}\r\n {!data.institutionId && this.noInstitutionSelected()}\r\n {data.institutionId && !data.termId && this.noTermSelected()}\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.tuitionInstitution;\r\n const termForm = safeAccess(state.tuitionInstitutionTerm, 'form');\r\n const termRequests = safeAccess(state.tuitionInstitutionTerm, 'requests');\r\n const termErrors = safeAccess(state.tuitionInstitutionTerm, 'errors');\r\n return {\r\n institutionData: getTuitionInstitutionData(state),\r\n token: getToken(state),\r\n getRequest: requests.loadCollection,\r\n institutionErrors: termErrors,\r\n request: mergeRequestStatuses([\r\n termRequests.createResource,\r\n termRequests.updateResource,\r\n termRequests.deleteResource,\r\n ]),\r\n form: termForm,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadInstitution: () => dispatch(tuitionInstitutionLoadCollection()),\r\n clearTermForm: () => dispatch(tuitionInstitutionTermClearForm()),\r\n createTerm: async () => {\r\n let shouldUpdate = await dispatch(termCreateResource());\r\n if (shouldUpdate) {\r\n await dispatch(authLoadPermissions());\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n dispatch(todosLoadCollection());\r\n }\r\n },\r\n handleTermForm: (tuitionInstitutionTerm, attributes) =>\r\n dispatch(tuitionInstitutionTermHandleFormChange(tuitionInstitutionTerm, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(TabClass));\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('tuitionInstitutionClass');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('tuitionInstitutionClass', types);\r\n","import { FormValidator } from '../../../utils';\r\n\r\nexport class TuitionValidator extends FormValidator {\r\n institutionId(validator, state) {\r\n validator.isRequired();\r\n }\r\n\r\n termId(validator, state) {\r\n if (state.institutionId !== undefined) {\r\n validator.isRequired();\r\n }\r\n }\r\n\r\n className(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(150);\r\n }\r\n\r\n hours(validator) {\r\n if (validator.value) {\r\n validator.validNumber();\r\n validator.isLessThan(100);\r\n }\r\n }\r\n}\r\n\r\nexport default TuitionValidator;\r\n","import { resourceOperationsGenerator } from '../../../utils';\r\n\r\nimport actions from './actions';\r\nimport { TuitionValidator } from './validators';\r\n\r\nconst tuitionValidator = new TuitionValidator();\r\n\r\nconst endpointHandler = {\r\n endpoint: '/tuition-reimbursement-class',\r\n customResponseHandler: null,\r\n resourceType: 'tuition-reimbursement-class',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'tuitionInstitutionClass',\r\n actions,\r\n null,\r\n tuitionValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n tuitionInstitutionClassClearForm,\r\n tuitionInstitutionClassCopyResourceToForm,\r\n tuitionInstitutionClassHandleFormChange,\r\n tuitionInstitutionClassCreateResource,\r\n tuitionInstitutionClassValidateAttributes,\r\n} = operations;\r\n\r\nconst classCreateResource = () => async (dispatch, getState) => {\r\n await dispatch(tuitionInstitutionClassCreateResource());\r\n};\r\n\r\nexport {\r\n tuitionInstitutionClassClearForm,\r\n tuitionInstitutionClassCopyResourceToForm,\r\n tuitionInstitutionClassHandleFormChange,\r\n tuitionInstitutionClassValidateAttributes,\r\n classCreateResource,\r\n};\r\n\r\nexport default operations;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\n\r\nimport { BrandColor, Header2, Header3, Loader, Button } from 'fiducius-ui';\r\n\r\nimport { getTuitionInstitutionData } from '../../../benefits/tuition';\r\n\r\nimport { classCreateResource } from '../redux/operations';\r\n\r\nimport { todosLoadCollection } from '../../../todos';\r\nimport { tuitionInstitutionLoadCollection } from '../../../tuition-institution';\r\n\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nconst Flex = styled.div`\r\n align-items: center;\r\n display: flex;\r\n justify-content: center;\r\n height: 100%;\r\n width: 100%;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\n\r\nclass TabReview extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n institutionData: t.object,\r\n classSave: t.func.isRequired,\r\n errors: t.object,\r\n request: t.object,\r\n handleChange: t.func,\r\n addAnotherClass: t.func,\r\n id: t.string.isRequired,\r\n brand: t.string,\r\n };\r\n\r\n async componentDidMount() {\r\n const { classSave } = this.props;\r\n await classSave();\r\n }\r\n\r\n termIdMatchCheck(termIdA, termIdB) {\r\n let retVal = false;\r\n if (termIdA !== undefined && termIdA !== null && termIdB !== undefined && termIdB !== null) {\r\n retVal = parseInt(termIdA) === parseInt(termIdB);\r\n }\r\n return retVal;\r\n }\r\n\r\n getExistingInfo = () => {\r\n const { data = {}, institutionData } = this.props;\r\n\r\n const institution = institutionData[data.institutionId];\r\n const termId = Object.keys(institution.terms).find((termId) =>\r\n this.termIdMatchCheck(institution.terms[termId].id, data.termId)\r\n );\r\n const term = institution.terms[termId];\r\n const classes = [];\r\n let maxClassId = 0;\r\n if (term.classes.length > 0) {\r\n Object.keys(term.classes).forEach((classId) => {\r\n maxClassId = classId > maxClassId ? classId : maxClassId;\r\n });\r\n Object.keys(term.classes).forEach((classId) => {\r\n if (classId === maxClassId || term.classes.length === 1) {\r\n classes.push(\r\n <li>\r\n <BrandColor brand=\"success\">\r\n {term.classes[classId].className}{' '}\r\n {!isNaN(term.classes[classId].hours) && (\r\n <>( {term.classes[classId].hours} Credit Hours )</>\r\n )}\r\n </BrandColor>\r\n </li>\r\n );\r\n } else {\r\n classes.push(\r\n <li>\r\n {term.classes[classId].className}{' '}\r\n {!isNaN(term.classes[classId].hours) && (\r\n <>( {term.classes[classId].hours} Credit Hours )</>\r\n )}\r\n </li>\r\n );\r\n }\r\n });\r\n }\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Header3>\r\n {institution.institutionName} - {term.termName}\r\n </Header3>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <ul>{classes}</ul>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n };\r\n\r\n render() {\r\n const { request, addAnotherClass } = this.props;\r\n\r\n if (request.isLoading) {\r\n return (\r\n <Flex>\r\n <Loader variant=\"atom\" size={3} />\r\n </Flex>\r\n );\r\n } else if (request.hasFailed) {\r\n return (\r\n <Flex>\r\n <Header2>An error has occured.</Header2>\r\n </Flex>\r\n );\r\n } else {\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <Header2>You've successfully added a class!</Header2>\r\n </div>\r\n {this.getExistingInfo()}\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n <StyledButton brand=\"primary\" onClick={() => addAnotherClass()}>\r\n Add Another Class\r\n </StyledButton>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n If you have added a class incorrectly, it can be edited or deleted on your My Classes\r\n page.\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests, form, errors } = state.tuitionInstitutionClass;\r\n\r\n return {\r\n institutionData: getTuitionInstitutionData(state),\r\n data: form,\r\n errors: errors,\r\n request: mergeRequestStatuses([\r\n requests.createResource,\r\n requests.updateResource,\r\n requests.deleteResource,\r\n state.tuitionInstitution.requests.loadCollection,\r\n ]),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n classSave: async () => {\r\n await dispatch(classCreateResource());\r\n await dispatch(tuitionInstitutionLoadCollection());\r\n dispatch(todosLoadCollection());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TabReview);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { Workflow, Button } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { debounce, safeAccess } from '../../../utils';\r\n\r\nimport TabInstitution from './tab-institution';\r\nimport TabTerm from './tab-term';\r\nimport TabClass from './tab-class';\r\nimport TabReview from './tab-review';\r\nimport {\r\n tuitionInstitutionClassClearForm,\r\n tuitionInstitutionClassHandleFormChange,\r\n tuitionInstitutionClassValidateAttributes,\r\n} from '../redux/operations';\r\n\r\nclass TuitionWorkflow extends React.Component {\r\n static propTypes = {\r\n current: t.number,\r\n data: t.object,\r\n errors: t.object,\r\n hasAdvisorResults: t.bool.isRequired,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n request: t.object.isRequired,\r\n updateForm: t.func.isRequired,\r\n validateTab: t.func.isRequired,\r\n clearForm: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { current: props.current || 0, farthest: props.current || 0, redirectURI: '' };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { data, updateForm } = this.props;\r\n if (formState.institutionId !== data.institutionId) {\r\n formState.termId = undefined;\r\n }\r\n const newData = { ...data, ...formState };\r\n updateForm(newData, this.getDependentAttributes(attribute));\r\n }, 250);\r\n\r\n getDependentAttributes = (attribute) => {\r\n switch (attribute) {\r\n case 'institutionId':\r\n return ['institutionId', 'termId'];\r\n default:\r\n return [attribute];\r\n }\r\n };\r\n\r\n handleTabChange = (index) => {\r\n this.props.validateTab(Object.keys(tabs)[this.state.current]);\r\n this.setState({\r\n current: index,\r\n farthest: index > this.state.farthest ? index : this.state.farthest,\r\n });\r\n };\r\n\r\n sectionValidationStatus(section, index) {\r\n const { data, errors } = this.props;\r\n let exists = false;\r\n if (index <= this.state.farthest) {\r\n for (let i = 0; i < tabs[section].length; i++) {\r\n let attribute = tabs[section][i];\r\n if (safeAccess(errors, `[${attribute}]`)) {\r\n return 'danger';\r\n } else if (!safeAccess(data, `[${attribute}]`) || data.hours >= 100) {\r\n exists = false;\r\n } else if (safeAccess(errors, `[${attribute}]`) === false) {\r\n exists = true;\r\n }\r\n }\r\n }\r\n return exists ? 'success' : null;\r\n }\r\n\r\n reviewValidationStatus = () => {\r\n const institution = this.sectionValidationStatus('institution', 0);\r\n const term = this.sectionValidationStatus('term', 1);\r\n const classSection = this.sectionValidationStatus('class', 2);\r\n\r\n if (institution === 'success' && term === 'success' && classSection === 'success') {\r\n return 'success';\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n addAnotherClass = () => {\r\n this.props.clearForm();\r\n this.setState({ ...this.state, redirectURI: '/tuition/new-class' });\r\n };\r\n\r\n render() {\r\n const { data = {}, errors } = this.props;\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <>\r\n <>\r\n <Workflow\r\n tabs={[\r\n <TabInstitution\r\n key=\"1\"\r\n id=\"institution\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('institution', 0)}\r\n name=\"Institution\"\r\n handleChange={this.handleChange}\r\n />,\r\n <TabTerm\r\n key=\"2\"\r\n id=\"term\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('term', 1)}\r\n name=\"Term\"\r\n handleChange={this.handleChange}\r\n />,\r\n <TabClass\r\n key=\"3\"\r\n id=\"class\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('class', 2)}\r\n name=\"Class\"\r\n handleChange={this.handleChange}\r\n />,\r\n <TabReview\r\n key=\"4\"\r\n id=\"summary\"\r\n data={data}\r\n errors={errors}\r\n brand={this.reviewValidationStatus()}\r\n name=\"Summary\"\r\n handleChange={this.handleChange}\r\n addAnotherClass={this.addAnotherClass}\r\n />,\r\n ]}\r\n finalButton={\r\n <Button\r\n brand=\"primary\"\r\n invert\r\n onClick={() => {\r\n this.setState({ ...this.state, redirectURI: '/benefits/tuition/overview' });\r\n }}\r\n >\r\n Back to Tuition Reimbursement Dashboard\r\n </Button>\r\n }\r\n handleTabChange={this.handleTabChange}\r\n next\r\n prev\r\n finalPageLocksFlow\r\n finalPageCheck={this.reviewValidationStatus}\r\n penUltimateButton={'Add Class'}\r\n />\r\n </>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst tabs = {\r\n institution: ['institutionId'],\r\n term: ['termId'],\r\n class: ['className'],\r\n results: [],\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form } = state.tuitionInstitutionClass;\r\n return {\r\n id: getUserId(state),\r\n data: form,\r\n errors: errors,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n updateForm: (data, attributes) => {\r\n dispatch(tuitionInstitutionClassHandleFormChange(data, attributes));\r\n },\r\n clearForm: () => {\r\n dispatch(tuitionInstitutionClassClearForm());\r\n },\r\n validateTab: async (tab) => {\r\n await dispatch(tuitionInstitutionClassValidateAttributes(tabs[tab]));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionWorkflow);\r\n","import React from 'react';\r\nimport { Card, CardBody, CardText, Header1 } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer } from '../../../routing';\r\n\r\nimport TuitionWorkflow from '../components/tuition-workflow';\r\n\r\nconst Tuition = () => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <Header1>Tuition Reimbursement</Header1>\r\n <CardText>\r\n <TuitionWorkflow />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nexport default Tuition;\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('tuitionApproval');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('tuitionInstitutionClass', types);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('tuitionApproval', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Header3,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputRadio,\r\n InputText,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\n\r\nconst ApprovalClass = ({ data, errors = {}, id }) => (\r\n <>\r\n <Header3>Class: {data.className}</Header3>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.approvalStatus}>\r\n <InputLabel htmlFor={'approvalStatus' + id}>Approval Status</InputLabel>\r\n <InputError>{safeAccess(errors, 'approvalStatus.detail')}</InputError>\r\n <InputRadio\r\n name={'approvalStatus' + id}\r\n value=\"Y\"\r\n label=\"Approve\"\r\n defaultChecked={data.approvalStatus === 'Y'}\r\n />\r\n <InputRadio\r\n name={'approvalStatus' + id}\r\n value=\"N\"\r\n label=\"Deny\"\r\n defaultChecked={data.approvalStatus === 'N'}\r\n />\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.classNote}>\r\n <InputLabel htmlFor={'classNote' + id}>Class Note</InputLabel>\r\n <InputError>{safeAccess(errors, 'classNote.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name={'classNote' + id} defaultValue={data.classNote} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </>\r\n);\r\n\r\nApprovalClass.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.number.isRequired,\r\n};\r\n\r\nexport default ApprovalClass;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardTitle,\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n Header4,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\nimport ApprovalClass from './approval-class';\r\n\r\nconst StyledInputError = styled(InputError)`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nclass TuitionApprovalForm extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n cache: t.object,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n getResource: t.object,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n institutionList: t.object.isRequired,\r\n defaultInstitutionId: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.modalRef = React.createRef();\r\n this.firstInput = React.createRef();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n // if (!prevProps.isOpen && this.props.isOpen) {\r\n // // TODO: this focuses correctly, but loses focus right afterwards for some reason\r\n // this.firstInput.current.focus();\r\n // }\r\n /*if (!prevProps.errors.generalErrors && this.props.errors.generalErrors) {\r\n this.modalRef.current.scrollTo(0, 0);\r\n }*/\r\n }\r\n\r\n getClasses = (data, errors) => {\r\n const { cache } = this.props;\r\n let forms = [];\r\n const size = data.classLength;\r\n\r\n for (let i = 0; i < size; i++) {\r\n let newData = {};\r\n let formErrors = {};\r\n\r\n if (data.classes[i].className === undefined) {\r\n data.classes[i].className = cache[data.id].classes[i].className;\r\n data.classes[i].classStatus = cache[data.id].classes[i].classStatus;\r\n data.classes[i].classId = cache[data.id].classes[i].classId;\r\n data.classes[i].approvalStatus = cache[data.id].classes[i].approvalStatus;\r\n data.classes[i].classNote = cache[data.id].classes[i].classNote;\r\n }\r\n\r\n newData['approvalStatus'] = data.classes[i].approvalStatus;\r\n newData['classNote'] = data.classes[i].classNote;\r\n newData['className'] = data.classes[i].className;\r\n formErrors['approvalStatus'] = safeAccess(errors, 'approvalStatus' + i);\r\n formErrors['classNote'] = safeAccess(errors, 'classNote' + i);\r\n forms.push(\r\n <ApprovalClass data={newData} id={i} errors={formErrors} handleChange={this.handleChange} />\r\n );\r\n }\r\n return forms;\r\n };\r\n\r\n allowedToSubmit = () => {\r\n const { cache, data, errors } = this.props;\r\n let retVal = true;\r\n if (!data.email) {\r\n retVal = false;\r\n } else {\r\n for (let i = 0; i < data.classLength; i++) {\r\n if (\r\n !cache[data.id].classes[i].approvalStatus ||\r\n cache[data.id].classes[i].approvalStatus === ''\r\n ) {\r\n retVal = false;\r\n } else if (\r\n cache[data.id].classes[i].approvalStatus === 'N' &&\r\n (cache[data.id].classes[i].classNote === undefined ||\r\n cache[data.id].classes[i].classNote.trim() === '')\r\n ) {\r\n retVal = false;\r\n }\r\n }\r\n }\r\n\r\n if (safeAccess(errors, 'email')) {\r\n retVal = false;\r\n }\r\n\r\n for (let i = 0; i < data.classLength; i++) {\r\n if (safeAccess(errors, 'approvalStatus' + i)) {\r\n retVal = false;\r\n } else if (safeAccess(errors, 'classNote' + i)) {\r\n retVal = false;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { data, errors = {}, onSubmit, onChange } = this.props;\r\n\r\n if (data && data.message && data.message.length > 0) {\r\n return <Card>{data.message}</Card>;\r\n } else {\r\n return (\r\n <>\r\n {errors.generalErrors &&\r\n errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n <CardTitle>Term/Semester Information for {data.customerName}</CardTitle>\r\n <Header4>Institution: {data.institutionName}</Header4>\r\n <Header4>Degree Type: {data.degreeType}</Header4>\r\n <Header4>Term/Semester: {data.termName}</Header4>\r\n <Form defaults={data} handleChange={onChange} id={'tuitionApproval'} onSubmit={onSubmit}>\r\n {this.getClasses(data, errors)}\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel>Approver's Email</InputLabel>\r\n <StyledInputError\r\n dangerouslySetInnerHTML={{ __html: safeAccess(errors, 'email.detail') }}\r\n />\r\n <InputGroup>\r\n <InputText\r\n name=\"email\"\r\n autoComplete=\"email\"\r\n placeholder=\"Email\"\r\n defaultValue={data.email}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n {this.allowedToSubmit() ? (\r\n <Button className=\"col-4\" brand=\"primary\" onClick={onSubmit}>\r\n Submit Response(s)\r\n </Button>\r\n ) : (\r\n <>To submit, please finish filling out the above information correctly.</>\r\n )}\r\n </Form>\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default TuitionApprovalForm;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { CardText } from 'fiducius-ui';\r\n\r\nconst TuitionApprovalSuccess = () => {\r\n return (\r\n <>\r\n <CardText>\r\n <p>The information you submitted has been processed successfully!</p>\r\n </CardText>\r\n </>\r\n );\r\n};\r\n\r\nTuitionApprovalSuccess.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionApprovalSuccess);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { CardText } from 'fiducius-ui';\r\n\r\nconst TuitionApprovalInvalid = () => {\r\n return (\r\n <>\r\n <CardText>\r\n <p>You've used an invalid link to come to this page.</p>\r\n </CardText>\r\n </>\r\n );\r\n};\r\n\r\nTuitionApprovalInvalid.propTypes = {};\r\n\r\nconst mapStateToProps = (state) => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionApprovalInvalid);\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('tuitionApproval', types);\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\nimport { TuitionApprovalValidator } from './validators';\r\n\r\nconst tuitionApprovalValidator = new TuitionApprovalValidator();\r\n\r\nconst fixData = (data) => {\r\n return data.map((resource) => {\r\n //resource.email = resource.email;\r\n //resource.classes = resource.classes;\r\n resource.classLength = resource.classes.length;\r\n for (let i = 0; i < resource.classes.length; i++) {\r\n resource['classId' + i] = resource.classes[i].classId;\r\n resource['approvalStatus' + i] = getValueFromNullableBool(resource.classes[i].approvalStatus);\r\n resource['classNote' + i] = resource.classes[i].classNote;\r\n }\r\n return { ...resource };\r\n });\r\n};\r\n\r\nconst getValueFromNullableBool = (initialValue) => {\r\n if (initialValue) {\r\n if (initialValue === true) {\r\n return 'Y';\r\n }\r\n return 'N';\r\n }\r\n return null;\r\n};\r\n\r\nconst endpointHandler = {\r\n endpoint: '/tuition-approval',\r\n customResponseHandler: fixData,\r\n resourceType: 'tuition-approval',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'tuitionApproval',\r\n actions,\r\n null,\r\n tuitionApprovalValidator,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null,\r\n null\r\n);\r\n\r\nconst {\r\n tuitionApprovalClearForm,\r\n tuitionApprovalCopyResourceToForm,\r\n tuitionApprovalHandleFormChange,\r\n tuitionApprovalLoadResource,\r\n tuitionApprovalUpdateResource,\r\n} = operations;\r\n\r\nconst tuitionApprovalSaveApprovalInfo = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n let data = state.tuitionApproval.form;\r\n\r\n data.email = data.email.trim();\r\n let classes = [];\r\n for (let i = 0; i < data.classes.length; i++) {\r\n let myClass = {\r\n 'class-id': data.classes[i].classId,\r\n 'class-name': data.classes[i].className,\r\n 'approval-status': data.classes[i].approvalStatus === 'Y',\r\n 'class-note': (data.classes[i].classNote || '').trim(),\r\n 'class-status': (data.classes[i].classStatus || '').trim(),\r\n };\r\n classes.push(myClass);\r\n }\r\n\r\n data.classes = classes;\r\n state.tuitionApproval.form = data;\r\n await dispatch(tuitionApprovalUpdateResource(id));\r\n};\r\n\r\nexport {\r\n tuitionApprovalClearForm,\r\n tuitionApprovalCopyResourceToForm,\r\n tuitionApprovalHandleFormChange,\r\n tuitionApprovalLoadResource,\r\n tuitionApprovalSaveApprovalInfo,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class TuitionApprovalValidator extends FormValidator {\r\n email(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n validator.isValidEmail();\r\n }\r\n\r\n approvalStatus0(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus1(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus2(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus3(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus4(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus5(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus6(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus7(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus8(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus9(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n approvalStatus10(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n classNote0(validator, state) {\r\n if (state.approvalStatus0 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote1(validator, state) {\r\n if (state.approvalStatus1 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote2(validator, state) {\r\n if (state.approvalStatus2 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote3(validator, state) {\r\n if (state.approvalStatus3 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote4(validator, state) {\r\n if (state.approvalStatus4 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote5(validator, state) {\r\n if (state.approvalStatus5 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote6(validator, state) {\r\n if (state.approvalStatus6 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote7(validator, state) {\r\n if (state.approvalStatus7 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote8(validator, state) {\r\n if (state.approvalStatus8 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote9(validator, state) {\r\n if (state.approvalStatus9 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n\r\n classNote10(validator, state) {\r\n if (state.approvalStatus10 === 'N') {\r\n validator.isRequired();\r\n }\r\n validator.hasMaxLength(500);\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport queryString from 'query-string';\r\nimport { Card, CardBody, Loader } from 'fiducius-ui';\r\n\r\nimport { safeAccess, debounce, mergeRequestStatuses } from '../../utils';\r\n\r\nimport LoaderWrapper from '../../auth/styles/loader-wrapper';\r\nimport TuitionApprovalForm from '../components/tuition-approval-form';\r\nimport TuitionApprovalSuccess from '../components/tuition-approval-success';\r\nimport TuitionApprovalInvalid from '../components/tuition-approval-invalid';\r\n\r\nimport {\r\n tuitionApprovalLoadResource,\r\n tuitionApprovalCopyResourceToForm,\r\n tuitionApprovalHandleFormChange,\r\n tuitionApprovalSaveApprovalInfo,\r\n} from '../redux/operations';\r\n\r\nimport { ContrastDisplay, FullscreenContainer } from '../../routing';\r\n\r\nclass TuitionApproval extends React.Component {\r\n static propTypes = {\r\n errors: t.object,\r\n request: t.object,\r\n updateRequest: t.object,\r\n form: t.object,\r\n data: t.object,\r\n location: t.shape({\r\n search: t.string,\r\n }),\r\n load: t.func.isRequired,\r\n handleForm: t.func.isRequired,\r\n update: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { submitSuccessful: false, hasSubmitted: false };\r\n }\r\n\r\n componentDidMount() {\r\n const { load, location } = this.props;\r\n const params = queryString.parse(location.search);\r\n load(params.token);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { updateRequest } = this.props;\r\n if (updateRequest.hasFinished) {\r\n if (!this.state.submitSuccessful && this.state.hasSubmitted) {\r\n const { errors } = this.props;\r\n if (!updateRequest.hasFailed && !this.hasServerErrors(errors)) {\r\n this.setState({ ...this.state, submitSuccessful: true });\r\n } else {\r\n this.setState({ ...this.state, hasSubmitted: false });\r\n }\r\n }\r\n }\r\n }\r\n\r\n hasServerErrors(errors) {\r\n let retVal = false;\r\n for (let i = 0; i <= 10; i++) {\r\n if (safeAccess(errors, 'approvalStatus' + i)) {\r\n retVal = true;\r\n } else if (safeAccess(errors, 'classNote' + i)) {\r\n retVal = true;\r\n }\r\n }\r\n return retVal;\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { form, handleForm } = this.props;\r\n const newData = { ...form, ...formState };\r\n\r\n if (attribute.includes('approvalStatus') || attribute.includes('classNote')) {\r\n for (let i = 0; i < newData.classes.length; i++) {\r\n newData.classes[i].approvalStatus = newData['approvalStatus' + i];\r\n newData.classes[i].classNote = newData['classNote' + i];\r\n }\r\n }\r\n\r\n handleForm(newData, this.getDependentAttributes(attribute));\r\n }, 250);\r\n\r\n getDependentAttributes = (attribute) => {\r\n switch (attribute) {\r\n case 'approvalStatus0':\r\n return ['approvalStatus0', 'classNote0'];\r\n case 'approvalStatus1':\r\n return ['approvalStatus1', 'classNote1'];\r\n case 'approvalStatus2':\r\n return ['approvalStatus2', 'classNote2'];\r\n case 'approvalStatus3':\r\n return ['approvalStatus3', 'classNote3'];\r\n case 'approvalStatus4':\r\n return ['approvalStatus4', 'classNote4'];\r\n case 'approvalStatus5':\r\n return ['approvalStatus5', 'classNote5'];\r\n case 'approvalStatus6':\r\n return ['approvalStatus6', 'classNote6'];\r\n case 'approvalStatus7':\r\n return ['approvalStatus7', 'classNote7'];\r\n case 'approvalStatus8':\r\n return ['approvalStatus8', 'classNote8'];\r\n case 'approvalStatus9':\r\n return ['approvalStatus9', 'classNote9'];\r\n case 'approvalStatus10':\r\n return ['approvalStatus10', 'classNote10'];\r\n default:\r\n return [attribute];\r\n }\r\n };\r\n\r\n onSubmit = () => {\r\n this.props.update(this.props.form.id);\r\n this.setState({ ...this.state, hasSubmitted: true });\r\n };\r\n\r\n render() {\r\n const { errors, request, form, data } = this.props;\r\n const { submitSuccessful } = this.state;\r\n\r\n return (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <ContrastDisplay>Tuition Reimbursement Approval</ContrastDisplay>\r\n <Card brand={(request.hasFailed && 'danger') || 'primary'}>\r\n <CardBody>\r\n {request.isLoading ? (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n ) : !submitSuccessful ? (\r\n form.classes !== undefined && form.classes.length > 0 ? (\r\n <TuitionApprovalForm\r\n data={form}\r\n cache={data}\r\n errors={errors}\r\n onSubmit={this.onSubmit}\r\n onChange={this.handleChange}\r\n />\r\n ) : (\r\n <TuitionApprovalInvalid />\r\n )\r\n ) : (\r\n <TuitionApprovalSuccess />\r\n )}\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n errors: safeAccess(state, 'tuitionApproval.errors') || {},\r\n request: mergeRequestStatuses([\r\n safeAccess(state, 'tuitionApproval.requests.loadResource'),\r\n safeAccess(state, 'tuitionApproval.requests.updateResource'),\r\n ]),\r\n updateRequest: safeAccess(state, 'tuitionApproval.requests.updateResource'),\r\n data: state.tuitionApproval.cache,\r\n form: safeAccess(state, 'tuitionApproval.form'),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n load: async (id) => {\r\n await dispatch(tuitionApprovalLoadResource(id));\r\n dispatch(tuitionApprovalCopyResourceToForm(id));\r\n },\r\n handleForm: (tuitionApproval, attributes) =>\r\n dispatch(tuitionApprovalHandleFormChange(tuitionApproval, attributes)),\r\n update: async (id) => {\r\n await dispatch(tuitionApprovalSaveApprovalInfo(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TuitionApproval);\r\n","import styled from 'styled-components';\r\nimport { Header1 } from 'fiducius-ui';\r\n\r\nconst ContrastDisplay = styled(Header1)`\r\n color: ${(p) => p.theme.white};\r\n font-size: 3rem;\r\n margin-bottom: 0.5rem;\r\n`;\r\n\r\nexport default ContrastDisplay;\r\n","import styled from 'styled-components';\r\n\r\nconst FullscreenContainer = styled.div`\r\n display: block;\r\n justify-content: center;\r\n margin-top: 6rem;\r\n min-height: 100vh;\r\n & > .row {\r\n display: flex;\r\n flex-grow: 1;\r\n justify-content: center;\r\n }\r\n`;\r\n\r\n//display: block; - could possibly fix overflow doc sign documents.\r\nexport default FullscreenContainer;\r\n","import styled from 'styled-components';\r\nimport { Card } from 'fiducius-ui';\r\n\r\nconst ShadowAddCard = styled(Card)`\r\n box-shadow: ${(p) => p.theme.boxShadowLarge};\r\n`;\r\n\r\nexport default ShadowAddCard;\r\n","import styled from 'styled-components';\r\n\r\nconst FullscreenSpacer = styled.div`\r\n width: 1px;\r\n height: 20vh;\r\n`;\r\n\r\nexport default FullscreenSpacer;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { CardBody, CardText, Header2, Link, Undraw } from 'fiducius-ui';\r\n\r\nimport ContrastDisplay from '../styles/contrast-display';\r\nimport FullscreenContainer from '../styles/fullscreen-container';\r\nimport ShadowAddCard from '../styles/shadow-add-card';\r\nimport FullscreenSpacer from '../styles/fullscreen-spacer';\r\n\r\nconst TextCenter = styled(CardText)`\r\n align-items: center;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n text-align: center;\r\n & > div,\r\n & > h2,\r\n & > a {\r\n margin: 1rem 0;\r\n }\r\n`;\r\n\r\nconst errors = {\r\n '401': 'Unauthorized Access',\r\n '404': 'Page not found',\r\n '500': 'Something went wrong',\r\n};\r\n\r\nconst ErrorPage = ({ match }) => (\r\n <FullscreenContainer className=\"container-fluid\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-10 col-md-8\">\r\n <ContrastDisplay>{match.params.code}</ContrastDisplay>\r\n <ShadowAddCard>\r\n <CardBody>\r\n <TextCenter>\r\n <Header2>{errors[match.params.code]}</Header2>\r\n <Undraw image=\"thought\" />\r\n <Link to=\"/\">Return home</Link>\r\n </TextCenter>\r\n </CardBody>\r\n </ShadowAddCard>\r\n <FullscreenSpacer />\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nErrorPage.propTypes = {\r\n match: t.shape({\r\n params: t.shape({\r\n code: t.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport default ErrorPage;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect, Route } from 'react-router-dom';\r\nimport { withPermissions } from '../../routing';\r\n\r\nimport { authSilentRenew, isAuthenticated, shouldSilentRenew } from '../../auth';\r\nclass PrivateRoute extends React.Component {\r\n componentDidMount() {\r\n this.props.shouldRenewToken && this.props.silentRenewToken();\r\n }\r\n\r\n render() {\r\n const {\r\n component: Component,\r\n isAuthenticated = false,\r\n location,\r\n permissions,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n <Route\r\n {...rest}\r\n render={(props) => {\r\n if (isAuthenticated) {\r\n if (\r\n window.location.pathname === '/dashboard' ||\r\n window.location.pathname === '/contact' ||\r\n (permissions &&\r\n permissions.clientStatus !== 'CLOSE' &&\r\n permissions.clientStatus !== 'OHPAY')\r\n ) {\r\n return <Component {...rest} />;\r\n } else if (permissions.clientStatus === 'OHPAY' && location.pathname === '/payment') {\r\n return <Component {...rest} />;\r\n } else if (permissions.clientStatus === 'CLOSE' && location.pathname === '/renewal') {\r\n return <Component {...rest} />;\r\n } else if (\r\n !(\r\n window.location.pathname === '/security-questions' ||\r\n window.location.pathname === '/security-question-check' ||\r\n window.location.pathname === '/password-out-of-date'\r\n )\r\n ) {\r\n return <Redirect to={{ pathname: '/dashboard', state: { from: location } }} />;\r\n } else {\r\n return <Component {...rest} />;\r\n }\r\n } else {\r\n return <Redirect to={{ pathname: '/login', state: { from: location } }} />;\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n}\r\n\r\nPrivateRoute.propTypes = {\r\n component: t.oneOfType([t.string, t.func]),\r\n isAuthenticated: t.bool,\r\n location: t.any,\r\n shouldRenewToken: t.bool,\r\n silentRenewToken: t.func.isRequired,\r\n permissions: t.object,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n isAuthenticated: isAuthenticated(state),\r\n shouldRenewToken: shouldSilentRenew(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n silentRenewToken: () => dispatch(authSilentRenew()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(PrivateRoute));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { Workflow, Button } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { debounce, stringIsNullOrEmpty, safeAccess } from '../../../utils';\r\nimport { withPermissions } from '../../../routing';\r\n\r\nimport TabUpload from './tab-upload';\r\nimport TabValidate from './tab-validate';\r\nimport TabReview from './tab-review';\r\nimport {\r\n nsldsClearForm,\r\n nsldsHandleFormChange,\r\n nsldsValidateAttributes,\r\n} from '../redux/operations';\r\n\r\nimport { documentsLoadCollection, documentsDisableValidation } from '../../../documents';\r\nimport { todosLoadCollection } from '../../../todos/redux/operations';\r\n\r\nclass NSLDSWorkflow extends React.Component {\r\n static propTypes = {\r\n current: t.number,\r\n data: t.object,\r\n errors: t.object,\r\n id: t.string,\r\n todos: t.array,\r\n permissions: t.object.isRequired,\r\n request: t.object.isRequired,\r\n updateForm: t.func.isRequired,\r\n validateTab: t.func.isRequired,\r\n clearForm: t.func.isRequired,\r\n loadDocs: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n current: props.current || 0,\r\n farthest: props.current || 0,\r\n redirectURI: '',\r\n nsldsUploaded: false,\r\n toDoItemForRedirect: 0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadDocs();\r\n }\r\n\r\n componentDidUpdate() {\r\n if (\r\n this.props.permissions.showLwo &&\r\n this.state.toDoItemForRedirect === 0 &&\r\n this.props.todos.length > 0\r\n ) {\r\n let currentLwoToDo = this.props.todos.find(\r\n (a) => a.id === 602 || a.id === 603 || a.id === 609 || a.id === 610\r\n );\r\n if (currentLwoToDo !== undefined) {\r\n this.setState({\r\n toDoItemForRedirect: currentLwoToDo.id,\r\n });\r\n }\r\n }\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { data, updateForm } = this.props;\r\n const newData = { ...data, ...formState };\r\n updateForm(newData, this.getDependentAttributes(attribute));\r\n }, 250);\r\n\r\n getDependentAttributes = (attribute) => {\r\n switch (attribute) {\r\n default:\r\n return [attribute];\r\n }\r\n };\r\n\r\n handleTabChange = (index) => {\r\n this.props.validateTab(Object.keys(tabs)[this.state.current]);\r\n this.setState({\r\n current: index,\r\n farthest: index > this.state.farthest ? index : this.state.farthest,\r\n });\r\n };\r\n\r\n sectionValidationStatus(section, index) {\r\n let exists = false;\r\n if (index <= this.state.farthest) {\r\n if (index === 0) {\r\n if (index < this.state.farthest) {\r\n return !this.state.nsldsUploaded ? 'danger' : 'success';\r\n } else {\r\n exists = this.state.nsldsUploaded;\r\n }\r\n } else if (index === 1) {\r\n if (this.state.nsldsUploaded) {\r\n return this.validateNsldsInfo();\r\n }\r\n }\r\n }\r\n return exists ? 'success' : null;\r\n }\r\n\r\n validateNsldsInfo() {\r\n const { data } = this.props;\r\n let retVal = 'success';\r\n if (stringIsNullOrEmpty(data.fileRequestDate)) {\r\n retVal = 'danger';\r\n } else if (data.loans === undefined || data.loans.length === 0) {\r\n retVal = 'danger';\r\n } else if (\r\n stringIsNullOrEmpty(data.undergraduateAggregateSubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.undergraduateAggregateUnsubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.undergraduateAggregateCombinedTotal) ||\r\n stringIsNullOrEmpty(data.graduateAggregateSubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.graduateAggregateUnsubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.graduateAggregateCombinedTotal) ||\r\n stringIsNullOrEmpty(data.aggregateSubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.aggregateUnsubsidizedTotal) ||\r\n stringIsNullOrEmpty(data.aggregateCombinedTotal)\r\n ) {\r\n retVal = 'danger';\r\n }\r\n return retVal;\r\n }\r\n\r\n reviewValidationStatus = (index) => {\r\n const upload = this.sectionValidationStatus('upload', 0);\r\n const validate = this.sectionValidationStatus('review', 1);\r\n\r\n if (this.state.farthest === 2 || index === 3) {\r\n if (upload === 'success' && validate === 'success') {\r\n return 'success';\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n allowedNavigate = (i) => {\r\n let retVal = true;\r\n return retVal;\r\n };\r\n\r\n updateNsldsUploaded = (uploaded) => {\r\n this.setState({ ...this.state, nsldsUploaded: uploaded });\r\n };\r\n\r\n uploadDifferentNslds = () => {\r\n this.setState({ ...this.state, redirectURI: '/nslds' });\r\n };\r\n\r\n getRedirectUrl = () => {\r\n const { permissions } = this.props;\r\n let retVal = '/documents';\r\n if (permissions.showLwo) {\r\n const currentToDo = this.state.toDoItemForRedirect;\r\n if (currentToDo > 0) {\r\n retVal = '/benefits/limited-waiver-opportunity';\r\n switch (currentToDo) {\r\n case 602:\r\n retVal += '/questionnaire';\r\n break;\r\n case 609:\r\n retVal += '/complete';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n getRedirectButtonText = () => {\r\n const { permissions } = this.props;\r\n let retVal = 'Back to My Documents';\r\n if (permissions.showLwo) {\r\n const lwoStep = permissions.lwoSteps.find((a) => a.stepCurrent);\r\n if (\r\n lwoStep.id === 'Questionnaire' ||\r\n lwoStep.id === 'Complete' ||\r\n lwoStep.id === 'LoanInformation' ||\r\n lwoStep.id === 'QualifyingPaymentCheck'\r\n ) {\r\n retVal = <>Back to Assure℠</>;\r\n }\r\n }\r\n return retVal;\r\n };\r\n\r\n render() {\r\n const { data = {}, errors } = this.props;\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n return (\r\n <>\r\n <>\r\n <Workflow\r\n tabs={[\r\n <TabUpload\r\n key=\"1\"\r\n id=\"upload\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('upload', 0)}\r\n name=\"Upload\"\r\n handleChange={this.handleChange}\r\n updateNsldsUploaded={this.updateNsldsUploaded}\r\n />,\r\n <TabValidate\r\n key=\"2\"\r\n id=\"review\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('review', 1)}\r\n name=\"Review\"\r\n handleChange={this.handleChange}\r\n nsldsUploaded={this.state.nsldsUploaded}\r\n updateNsldsUploaded={this.updateNsldsUploaded}\r\n uploadDifferentNslds={this.uploadDifferentNslds}\r\n inScreening={false}\r\n />,\r\n <TabReview\r\n key=\"3\"\r\n id=\"complete\"\r\n data={data}\r\n errors={errors}\r\n brand={this.reviewValidationStatus(2)}\r\n name=\"Complete\"\r\n handleChange={this.handleChange}\r\n inScreening={false}\r\n />,\r\n ]}\r\n finalButton={\r\n <Button\r\n brand=\"primary\"\r\n invert\r\n onClick={() => {\r\n this.setState({ ...this.state, redirectURI: this.getRedirectUrl() });\r\n }}\r\n >\r\n {this.getRedirectButtonText()}\r\n </Button>\r\n }\r\n handleTabChange={this.handleTabChange}\r\n next\r\n prev\r\n finalPageLocksFlow\r\n finalPageCheck={() => this.reviewValidationStatus(3)}\r\n penUltimateButton={'Finish'}\r\n allowedNavigate={this.allowedNavigate}\r\n />\r\n </>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst tabs = {\r\n upload: [],\r\n validate: [],\r\n review: [],\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, cache } = state.nslds;\r\n const id = getUserId(state);\r\n const data = cache;\r\n return {\r\n id: id,\r\n data: data,\r\n errors: errors,\r\n request: state.documents.requests.loadCollection,\r\n todos: Object.values(state.todos.cache),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadDocs: () => {\r\n dispatch(documentsDisableValidation());\r\n dispatch(documentsLoadCollection());\r\n },\r\n updateForm: (data, attributes) => {\r\n dispatch(nsldsHandleFormChange(data, attributes));\r\n },\r\n clearForm: () => {\r\n dispatch(nsldsClearForm());\r\n },\r\n validateTab: async (tab) => {\r\n await dispatch(nsldsValidateAttributes(tabs[tab]));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(NSLDSWorkflow));\r\n","import React from 'react';\r\nimport { Card, CardBody, CardText, Header1 } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer } from '../../../routing';\r\n\r\nimport NSLDSWorkflow from '../components/nslds-workflow';\r\n\r\nconst NSLDSContainer = () => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <Header1>NSLDS</Header1>\r\n <CardText>\r\n <NSLDSWorkflow />\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nexport default NSLDSContainer;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('nslds', types);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('lwoAgreement');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('lwoAgreement', types);\r\n","import { FormValidator } from '../../../utils';\r\n\r\nexport class LwoAgreementValidator extends FormValidator {\r\n item(validator) {\r\n // validator.isRequired();\r\n }\r\n}\r\n\r\nexport default LwoAgreementValidator;\r\n","import actions from './actions';\r\nimport { LwoAgreementValidator } from './validators';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst lwoAgreementValidator = new LwoAgreementValidator();\r\n\r\nconst endpointHandler = {\r\n endpoint: '/lwo-contract-questions',\r\n customResponseHandler: null,\r\n resourceType: 'lwo-contract-questions',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'lwoAgreement',\r\n actions,\r\n null,\r\n lwoAgreementValidator,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n lwoAgreementCopyResourceToForm,\r\n lwoAgreementHandleFormChange,\r\n lwoAgreementInvalidateCache,\r\n lwoAgreementLoadResource,\r\n lwoAgreementUpdateResource,\r\n lwoAgreementValidateAttributes,\r\n lwoAgreementValidateState,\r\n lwoAgreementClearForm,\r\n} = operations;\r\n\r\nexport {\r\n lwoAgreementCopyResourceToForm,\r\n lwoAgreementHandleFormChange,\r\n lwoAgreementInvalidateCache,\r\n lwoAgreementLoadResource,\r\n lwoAgreementUpdateResource,\r\n lwoAgreementValidateAttributes,\r\n lwoAgreementValidateState,\r\n lwoAgreementClearForm,\r\n};\r\n\r\nexport default operations;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport {\r\n AsyncLoader,\r\n Form,\r\n Header4,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n Alert,\r\n} from 'fiducius-ui';\r\n\r\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../../utils';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n fulfillmentCopyResourceToForm,\r\n fulfillmentHandleFormChange,\r\n fulfillmentLoadResource,\r\n PdfViewer,\r\n Signature,\r\n} from '../../../fulfillment';\r\nimport { paymentTypes } from '../../../payment';\r\nimport { lwoAgreementUpdateResource } from '../redux/operations';\r\n\r\nexport const AGREEMENT_DOC_ID = 21;\r\n\r\nconst InputLabel2 = styled(InputLabel)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nclass TabAgreement extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n loadHtml: t.func.isRequired,\r\n request: t.object,\r\n saveContract: t.func.isRequired,\r\n signRequest: t.object,\r\n skipSave: t.bool,\r\n updateForm: t.func.isRequired,\r\n setPaymentType: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.scrollRef = React.createRef();\r\n this.state = { hasHtml: false, redirect: false };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.saveContract();\r\n\r\n if (this.scrollRef.current) {\r\n this.scrollRef.current.focus();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { request, signRequest } = this.props;\r\n if (prevProps.request.isLoading && request.hasFinished && !request.hasFailed) {\r\n if (!this.state.hasHtml) {\r\n this.setState({ hasHtml: true }, () => this.props.loadHtml());\r\n }\r\n }\r\n\r\n if (prevProps.signRequest.isLoading && signRequest.hasFinished && !signRequest.hasFailed) {\r\n this.setState({ redirect: true });\r\n }\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { form, updateForm } = this.props;\r\n formState.docId = AGREEMENT_DOC_ID;\r\n const newData = { ...form, ...formState };\r\n updateForm(newData, [attribute]);\r\n }, 250);\r\n\r\n handleClientSignature = (data) => {\r\n this.props.updateForm({ ...this.props.form, signaturePadClient: data }, ['signaturePadClient']);\r\n };\r\n\r\n handleSpouseSignature = (data) => {\r\n this.props.updateForm({ ...this.props.form, signaturePadSpouse: data }, ['signaturePadSpouse']);\r\n };\r\n\r\n render() {\r\n const { data = {}, errors = {}, form, request } = this.props;\r\n\r\n if (this.state.redirect && data.email !== null) {\r\n //we check that email is not null to ensure the update resource has populated the data object\r\n //Email is null before signing.\r\n if (data.paymentType === paymentTypes.LWO) {\r\n return <Redirect to=\"/payment\" />;\r\n } else {\r\n return <Redirect to=\"/dashboard\" />;\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <PdfViewer base64={safeAccess(data, 'fileData', '')} isFulfillment={true} />\r\n\r\n <Form id=\"signatureForm\" handleChange={this.handleChange} defaults={form}>\r\n {safeAccess(errors, 'na') && (\r\n <Alert key={'invalid-info'} brand=\"danger\">\r\n {errors.na.detail}\r\n </Alert>\r\n )}\r\n <Header4>\r\n For your security, please input the correct information below to sign the application.\r\n </Header4>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.firstName}>\r\n <InputLabel2>First Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'firstName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"firstName\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.lastName}>\r\n <InputLabel2>Last Name</InputLabel2>\r\n <InputError>{safeAccess(errors, 'lastName.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"lastName\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel2>Email</InputLabel2>\r\n <InputError>{safeAccess(errors, 'email.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"email\" type=\"email\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <InputWrapper error={!!errors.password}>\r\n <InputLabel2>Password</InputLabel2>\r\n <InputError>{safeAccess(errors, 'password.detail')}</InputError>\r\n <InputGroup>\r\n <InputText name=\"password\" type=\"password\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <Signature handleChange={this.handleClientSignature} label=\"Your signature\" />\r\n {data.needSpouseSignature && (\r\n <Signature handleChange={this.handleSpouseSignature} label=\"Spouse's Signature\" />\r\n )}\r\n </Form>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: state.fulfillment.cache[AGREEMENT_DOC_ID],\r\n form: state.fulfillment.form,\r\n errors: state.fulfillment.errors,\r\n request: mergeRequestStatuses([\r\n state.fulfillment.requests.loadResource,\r\n state.lwoAgreement.requests.updateResource,\r\n ]), // separate and then componentdidupdate stuff\r\n signRequest: state.fulfillment.requests.updateResource,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadHtml: async () => {\r\n await dispatch(fulfillmentLoadResource(AGREEMENT_DOC_ID));\r\n await dispatch(fulfillmentCopyResourceToForm(AGREEMENT_DOC_ID));\r\n },\r\n saveContract: () => dispatch(lwoAgreementUpdateResource(AGREEMENT_DOC_ID)),\r\n updateForm: (data, attributes) => dispatch(fulfillmentHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TabAgreement);\r\n","import { Header2 } from 'fiducius-ui';\r\nimport styled from 'styled-components';\r\n\r\nconst AdjustedHeader = styled(Header2)`\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nexport default AdjustedHeader;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { Form, InputWrapper, InputLabel, InputRadio, Button } from 'fiducius-ui';\r\n\r\nimport AdjustedHeader from '../styles/adjusted-header';\r\n\r\nimport { useScrollToTopOnMount } from '../../../utils';\r\n\r\nimport { EmploymentHistoryTable } from '../../../employment-history';\r\n\r\nconst StyledButton = styled(Button)`\r\n margin: 0.5em;\r\n`;\r\nconst InputLabel2 = styled(InputLabel)`\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst TabEmployment = ({\r\n data = {},\r\n errors = {},\r\n handleChange,\r\n id,\r\n employers = {},\r\n employmentIncorrect,\r\n showEmployerIncorrect,\r\n}) => {\r\n useScrollToTopOnMount();\r\n\r\n return (\r\n <>\r\n <AdjustedHeader>Review Employment</AdjustedHeader>\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n Please review the employer information you provided to ensure all employers are included\r\n and the details are correct. Once you sign your agreement, you can no longer change this\r\n information. If you need to make changes, we'll take you back to the input section now.\r\n </div>\r\n </div>\r\n\r\n <EmploymentHistoryTable employers={employers} showEdit={false} />\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n <br></br>\r\n </div>\r\n </div>\r\n <Form id={id} handleChange={handleChange} defaults={data}>\r\n <InputWrapper>\r\n <InputLabel2>All my employer information is correct.</InputLabel2>\r\n <InputRadio name=\"employersCorrect\" value=\"true\" label=\"Yes\" />\r\n <InputRadio name=\"employersCorrect\" value=\"false\" label=\"No\" />\r\n </InputWrapper>\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n {showEmployerIncorrect && (\r\n <StyledButton brand=\"primary\" onClick={() => employmentIncorrect()}>\r\n Go to Employment Information\r\n </StyledButton>\r\n )}\r\n </div>\r\n </div>\r\n </Form>\r\n </>\r\n );\r\n};\r\n\r\nTabEmployment.propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n employers: t.object,\r\n employmentIncorrect: t.func,\r\n showEmployerIncorrect: t.bool,\r\n};\r\n\r\nexport default TabEmployment;\r\n","import { Card } from 'fiducius-ui';\r\nimport styled from 'styled-components';\r\n\r\nconst PlanCard = styled(Card)`\r\n box-shadow: ${(p) => p.theme.boxShadow};\r\n margin: -1.5rem 0 1.5rem -2.5rem;\r\n padding-left: 1.5rem;\r\n transition: box-shadow 200ms ease-in-out;\r\n width: 100%;\r\n word-wrap: break-word;\r\n\r\n &:hover {\r\n box-shadow: ${(p) => p.theme.boxShadowLarge};\r\n transition: box-shadow 200ms ease-in-out;\r\n }\r\n`;\r\n\r\nexport default PlanCard;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { BrandColor, CardBody, CardText, CardTitle, Form, Header2, InputRadio } from 'fiducius-ui';\r\n\r\nimport { useScrollToTopOnMount } from '../../../utils';\r\n\r\nimport PlanCard from '../styles/plan-card';\r\nimport AdjustedHeader from '../styles/adjusted-header';\r\n\r\nconst FlexTitle = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst selfServicePlan = {\r\n //message:\r\n // 'Our Do It Yourself Toolkit is recommended for those that are comfortable and confident taking the wheel into their own hands. This toolkit includes the following:',\r\n message: 'The expertise and support needed to get all your qualifying payments, including:',\r\n points: [\r\n 'Step-by-step instructions ensure you meet all program requirements',\r\n 'Accurate documentation to provide all mandatory information',\r\n 'Dashboard to monitor and manage your progress',\r\n 'Experienced support team you can trust if you have questions',\r\n ],\r\n //title: 'Do It Yourself Toolkit',\r\n title: 'Confirm Your LWO Eligibility',\r\n type: 'SLWO',\r\n};\r\n\r\nconst getPlan = (type, plan, disabled, cost, companyPaid, originationPaid, partnershipName) => {\r\n const planLabel = (\r\n <PlanCard>\r\n <CardBody>\r\n <CardTitle>\r\n <FlexTitle>\r\n <span>{plan.title}</span>\r\n <BrandColor brand=\"success\">\r\n {companyPaid\r\n ? 'Paid for by ' + partnershipName\r\n : originationPaid\r\n ? '$0.00'\r\n : '$' + cost}{' '}\r\n </BrandColor>\r\n </FlexTitle>\r\n </CardTitle>\r\n <CardText>\r\n <p>{plan.message}</p>\r\n <ul>\r\n {plan.points.map((p, i) => (\r\n <li key={plan.title + i.toString()}>{p}</li>\r\n ))}\r\n </ul>\r\n </CardText>\r\n </CardBody>\r\n </PlanCard>\r\n );\r\n\r\n return (\r\n <InputRadio\r\n name=\"planType\"\r\n value={plan.type}\r\n label={planLabel}\r\n defaultChecked={true}\r\n disabled={disabled}\r\n />\r\n );\r\n};\r\n\r\nconst TabPlan = ({ data = {}, handleChange, id }) => {\r\n useScrollToTopOnMount();\r\n return (\r\n <>\r\n <AdjustedHeader>Your Assure℠</AdjustedHeader>\r\n <Form id={id} handleChange={handleChange}>\r\n {getPlan(\r\n data.planType,\r\n selfServicePlan,\r\n true,\r\n data.selfServiceCost,\r\n data.companyPaid,\r\n data.originationPaid,\r\n data.partnershipName\r\n )}\r\n </Form>\r\n </>\r\n );\r\n};\r\n\r\nTabPlan.propTypes = {\r\n data: t.object,\r\n handleChange: t.func,\r\n id: t.string.isRequired,\r\n};\r\n\r\nexport default TabPlan;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { Redirect } from 'react-router-dom';\r\nimport { Alert, AsyncLoader, Button, Loader, Workflow } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { fulfillmentUpdateResource } from '../../../fulfillment';\r\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../../utils';\r\nimport { authLoadPermissions } from '../../../auth';\r\n\r\nimport TabAgreement, { AGREEMENT_DOC_ID } from './tab-agreement';\r\nimport TabEmployment from './tab-employment';\r\nimport TabPlan from './tab-plan';\r\nimport {\r\n lwoAgreementCopyResourceToForm,\r\n lwoAgreementHandleFormChange,\r\n lwoAgreementLoadResource,\r\n lwoAgreementValidateAttributes,\r\n lwoAgreementClearForm,\r\n lwoAgreementUpdateResource,\r\n} from '../redux/operations';\r\nimport { employmentHistoryLoadCollection } from '../../../employment-history';\r\n\r\nimport { paymentSetTypeLWO } from '../../../payment';\r\n\r\nclass AgreementWorkflow extends React.Component {\r\n static propTypes = {\r\n current: t.number,\r\n data: t.object,\r\n fulfillData: t.object,\r\n errors: t.object,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n request: t.object.isRequired,\r\n signContract: t.func.isRequired,\r\n signRequest: t.object.isRequired,\r\n updateForm: t.func.isRequired,\r\n validateTab: t.func.isRequired,\r\n employers: t.object,\r\n invalidEmployers: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n current: props.current || 0,\r\n redirect: false,\r\n redirectUrl: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadData(this.props.id);\r\n }\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n const { data, updateForm } = this.props;\r\n const newData = { ...data, ...formState };\r\n updateForm(newData, [attribute]);\r\n }, 250);\r\n\r\n handleTabChange = (index) => {\r\n this.props.validateTab(Object.keys(tabs)[this.state.current]);\r\n this.setState({ current: index });\r\n };\r\n\r\n sectionValidationStatus(section) {\r\n const { errors, data } = this.props;\r\n\r\n let exists = false;\r\n for (let i = 0; i < tabs[section].length; i++) {\r\n let attribute = tabs[section][i];\r\n if (safeAccess(errors, `[${attribute}]`)) {\r\n return 'danger';\r\n } else if (\r\n (safeAccess(errors, `[${attribute}]`) === false) & (attribute !== 'employersCorrect') ||\r\n data.employersCorrect === 'true'\r\n ) {\r\n exists = true;\r\n }\r\n }\r\n return exists ? 'success' : null;\r\n }\r\n\r\n employmentIncorrect = () => {\r\n const { data, updateForm, invalidEmployers, id } = this.props;\r\n const newData = { ...data, employersCorrect: false };\r\n updateForm(newData, ['employersCorrect']);\r\n invalidEmployers(id).then(() => {\r\n this.setState({ redirectUrl: '/benefits/limited-waiver-opportunity/questionnaire' });\r\n });\r\n };\r\n\r\n getTabs = (data, errors, agreementStatus, employers) => {\r\n let tabs = [\r\n <TabPlan\r\n key=\"1\"\r\n id=\"plan\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('plan')}\r\n name=\"Your Assure™\"\r\n handleChange={this.handleChange}\r\n />,\r\n <TabEmployment\r\n key=\"2\"\r\n id=\"employment\"\r\n data={data}\r\n errors={errors}\r\n brand={this.sectionValidationStatus('employment')}\r\n name=\"Review Employment\"\r\n handleChange={this.handleChange}\r\n employers={employers}\r\n employmentIncorrect={this.employmentIncorrect}\r\n showEmployerIncorrect={data.employersCorrect === 'false' ? true : false}\r\n />,\r\n <TabAgreement\r\n key=\"3\"\r\n id=\"agreement\"\r\n data={data}\r\n errors={errors}\r\n brand={agreementStatus}\r\n name=\"Sign Agreement\"\r\n />,\r\n ];\r\n\r\n return tabs;\r\n };\r\n\r\n reviewValidationStatus = () => {\r\n const plan = this.sectionValidationStatus('plan');\r\n const employment = this.sectionValidationStatus('employment');\r\n\r\n if (plan === 'success' && employment === 'success') {\r\n return 'success';\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n submit = async (e) => {\r\n e.preventDefault();\r\n if (!this.props.signRequest.isLoading) {\r\n await this.props.signContract();\r\n }\r\n };\r\n\r\n render() {\r\n const { data, errors, request, signRequest, employers } = this.props;\r\n\r\n if (this.state.redirectUrl !== null) {\r\n return <Redirect to={this.state.redirectUrl} />;\r\n }\r\n\r\n let agreementStatus = this.sectionValidationStatus('agreement');\r\n if (agreementStatus !== 'danger' && signRequest.hasFinished) {\r\n agreementStatus = signRequest.hasFailed ? 'danger' : 'success';\r\n }\r\n\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <>\r\n {safeAccess(errors, 'generalErrors')\r\n ? errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))\r\n : null}\r\n {/* TODO: Fix AsyncLoader so that it doesn't need this check for data */}\r\n {data && (\r\n <Workflow\r\n tabs={this.getTabs(data, errors, agreementStatus, employers)}\r\n finalButton={\r\n <Button brand=\"primary\" onClick={(e) => this.submit(e)}>\r\n {signRequest.isLoading ? <Loader variant=\"push\" size={1.5} /> : 'Sign contract'}\r\n </Button>\r\n }\r\n handleTabChange={this.handleTabChange}\r\n next\r\n prev\r\n finalPageLocksFlow\r\n finalPageCheck={this.reviewValidationStatus}\r\n />\r\n )}\r\n </>\r\n </AsyncLoader>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst tabs = {\r\n plan: ['planType'],\r\n employment: ['employersCorrect'],\r\n agreement: [],\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.lwoAgreement;\r\n return {\r\n id: getUserId(state),\r\n data: form,\r\n fulfillData: state.fulfillment.cache[AGREEMENT_DOC_ID],\r\n errors: errors,\r\n request: mergeRequestStatuses([\r\n requests.loadResource,\r\n requests.copyResourceToForm,\r\n state.employmentHistory.requests.loadCollection,\r\n ]),\r\n employers: state.employmentHistory.cache,\r\n signRequest: state.fulfillment.requests.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(lwoAgreementClearForm(id));\r\n await dispatch(lwoAgreementLoadResource(id));\r\n await dispatch(lwoAgreementCopyResourceToForm(id));\r\n await dispatch(employmentHistoryLoadCollection());\r\n },\r\n updateForm: (data, attributes) => {\r\n dispatch(lwoAgreementHandleFormChange(data, attributes));\r\n },\r\n signContract: async () => {\r\n await dispatch(fulfillmentUpdateResource(AGREEMENT_DOC_ID));\r\n dispatch(paymentSetTypeLWO());\r\n await dispatch(authLoadPermissions());\r\n },\r\n validateTab: async (tab) => {\r\n await dispatch(lwoAgreementValidateAttributes(tabs[tab]));\r\n },\r\n invalidEmployers: async (id) => {\r\n await dispatch(lwoAgreementUpdateResource(AGREEMENT_DOC_ID));\r\n await dispatch(lwoAgreementClearForm(id));\r\n await dispatch(authLoadPermissions());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AgreementWorkflow);\r\n","import React from 'react';\r\nimport { Card, CardBody, CardFooter, CardText, Header1, Link } from 'fiducius-ui';\r\n\r\nimport { FullscreenContainer } from '../../../routing';\r\n\r\nimport AgreementWorkflow from '../components/agreement-workflow';\r\n\r\nconst LwoAgreement = () => (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Card>\r\n <CardBody>\r\n <Header1>Assure℠ Agreement</Header1>\r\n <CardText>\r\n <AgreementWorkflow />\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <Link to=\"/dashboard\">Return home</Link>\r\n </CardFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n);\r\n\r\nexport default LwoAgreement;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('lwoAgreement', types);\r\n","// References redux types\r\nimport { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('securityQuestionsSetup');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('securityQuestionsSetup', types);\r\n","import actions from './actions';\r\nimport { SecurityQuestionsSetupValidator } from './validators';\r\nimport { resourceOperationsGenerator, safeAccess, keyById, postApi, normalize } from '../../utils';\r\nimport { getToken } from '../../auth';\r\n\r\nconst securityQuestionsSetupValidator = new SecurityQuestionsSetupValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/customer-security-question-setup',\r\n resourceType: 'customer-security-question-setup',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'securityQuestionsSetup',\r\n actions,\r\n null,\r\n securityQuestionsSetupValidator,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n null\r\n);\r\n\r\nconst {\r\n securityQuestionsSetupClearForm,\r\n securityQuestionsSetupCopyResourceToForm,\r\n securityQuestionsSetupHandleFormChange,\r\n securityQuestionsSetupLoadResource,\r\n} = operations;\r\n\r\nconst securityQuestionsSetupCreateResource = () => async (dispatch, getState) => {\r\n const state = getState();\r\n let segment = state.securityQuestionsSetup;\r\n\r\n try {\r\n if (safeAccess(segment, 'errors.length') > 0) {\r\n throw new Error('The form contains errors and cannot be saved until they are fixed.');\r\n }\r\n\r\n if (segment.meta.isReadOnly) {\r\n throw new Error('The form is readonly. Any changes will not be saved.');\r\n }\r\n\r\n dispatch(actions['securityQuestionsSetupCreateResourceRequest']());\r\n const postData = normalize('customer-security-question-setup', segment.form);\r\n let data = await postApi(getToken(state), '/customer-security-question-setup', postData);\r\n dispatch(actions['securityQuestionsSetupCreateResourceResponse']());\r\n\r\n const addedId = safeAccess(data[0], 'id') || -1;\r\n const cache = { ...segment.cache, ...keyById(data) };\r\n\r\n const auth = getState().auth;\r\n\r\n auth.cache.accessToken = data[0].accessToken;\r\n auth.cache.tokenExpiresIn = data[0].tokenExpiresIn;\r\n\r\n await dispatch(operations['securityQuestionsSetupHandleCacheChange'](cache));\r\n\r\n dispatch(actions['securityQuestionsSetupCreateResourceSuccess']());\r\n return addedId;\r\n } catch (error) {\r\n dispatch(operations['securityQuestionsSetupHandleError'](error));\r\n dispatch(actions['securityQuestionsSetupCreateResourceFailure'](error));\r\n }\r\n};\r\n\r\nexport {\r\n securityQuestionsSetupClearForm,\r\n securityQuestionsSetupCopyResourceToForm,\r\n securityQuestionsSetupHandleFormChange,\r\n securityQuestionsSetupLoadResource,\r\n securityQuestionsSetupCreateResource,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class SecurityQuestionsSetupValidator extends FormValidator {\r\n securityResponse1(validator) {\r\n validator.noBlankSpace();\r\n }\r\n\r\n securityResponse2(validator) {\r\n validator.noBlankSpace();\r\n }\r\n\r\n securityResponse3(validator) {\r\n validator.noBlankSpace();\r\n }\r\n\r\n securityQuestion1(validator) {\r\n validator.isValidSecurityQuestion();\r\n }\r\n\r\n securityQuestion2(validator) {\r\n validator.isValidSecurityQuestion();\r\n }\r\n\r\n securityQuestion3(validator) {\r\n validator.isValidSecurityQuestion();\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport {\r\n Button,\r\n Form,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n InputError,\r\n InputSelect,\r\n AsyncLoader,\r\n CardBody,\r\n CardFooter,\r\n Loader,\r\n CardText,\r\n} from 'fiducius-ui';\r\nimport { safeAccess, debounce, stringIsNullOrEmpty } from '../../utils';\r\nimport { withPermissions, Fade } from '../../routing';\r\nimport { getToken, authLoadPermissions, getUserId, LoaderWrapper } from '../../auth';\r\nimport { todosLoadCollection } from '../../todos';\r\nimport { mergeRequestStatuses } from '../../utils';\r\nimport { FlexBetween } from '../../root';\r\nimport {\r\n securityQuestionsSetupClearForm,\r\n securityQuestionsSetupCopyResourceToForm,\r\n securityQuestionsSetupHandleFormChange,\r\n securityQuestionsSetupLoadResource,\r\n securityQuestionsSetupCreateResource,\r\n} from '../redux/operations';\r\n\r\nclass SecurityQuestionsForm extends React.Component {\r\n static propTypes = {\r\n id: t.string.isRequired,\r\n token: t.any,\r\n data: t.object,\r\n form: t.object,\r\n errors: t.object,\r\n request: t.object,\r\n saveRequest: t.object,\r\n onLoad: t.func,\r\n clearForm: t.func,\r\n saveSecurityQuestions: t.func,\r\n handleForm: t.func,\r\n hydrateForm: t.func,\r\n group1Questions: t.object.isRequired,\r\n group2Questions: t.object.isRequired,\r\n group3Questions: t.object.isRequired,\r\n onSubmit: t.func.isRequired,\r\n showSaveButton: t.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n stateSecurityQuestion1: 0,\r\n stateSecurityQuestion2: 0,\r\n stateSecurityQuestion3: 0,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n this.props.clearForm();\r\n await this.props.onLoad(this.props.id);\r\n this.props.handleForm({ ...this.props.form, ...this.props.data }, [\r\n 'securityQuestion1',\r\n 'securityQuestion2',\r\n 'securityQuestion3',\r\n 'securityResponse1',\r\n 'securityResponse2',\r\n 'securityResponse3',\r\n ]);\r\n const { data, showSaveButton } = this.props;\r\n\r\n this.setState({\r\n ...this.state,\r\n stateSecurityQuestion1: data.securityQuestion1,\r\n stateSecurityQuestion2: data.securityQuestion2,\r\n stateSecurityQuestion3: data.securityQuestion3,\r\n stateShowSaveButton: showSaveButton,\r\n });\r\n }\r\n\r\n onChange = debounce((securityQuestionsSetup, id, attributes) => {\r\n this.props.handleForm({ ...this.props.form, ...securityQuestionsSetup }, [attributes]);\r\n this.setState({\r\n ...this.state,\r\n stateShowSaveButton: false,\r\n });\r\n }, 250);\r\n\r\n onCreate = () => this.props.saveSecurityQuestions();\r\n\r\n enableSubmit = () => {\r\n const { stateShowSaveButton } = this.state;\r\n return (this.checkNoMissingData() && this.checkNoErrors()) || stateShowSaveButton;\r\n };\r\n\r\n checkNoMissingData = () => {\r\n const { data = {}, form } = this.props;\r\n\r\n let missingData = false;\r\n missingData =\r\n !stringIsNullOrEmpty(form.securityResponse1) &&\r\n !stringIsNullOrEmpty(form.securityResponse2) &&\r\n !stringIsNullOrEmpty(form.securityResponse3) &&\r\n form.securityQuestion1 !== 0 &&\r\n form.securityQuestion2 !== 0 &&\r\n form.securityQuestion3 !== 0;\r\n\r\n return missingData;\r\n };\r\n\r\n checkNoErrors = () => {\r\n const { data = {}, errors = {} } = this.props;\r\n\r\n return (\r\n !errors.securityResponse1 &&\r\n !errors.securityResponse2 &&\r\n !errors.securityResponse3 &&\r\n !errors.securityQuestion1 &&\r\n !errors.securityQuestion2 &&\r\n !errors.securityQuestion3\r\n );\r\n\r\n //return true;\r\n };\r\n\r\n submit = async (e) => {\r\n e.preventDefault();\r\n if (!this.props.request.isLoading && !this.props.saveRequest.isLoading) {\r\n await this.props.saveSecurityQuestions();\r\n this.props.onSubmit();\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n data,\r\n form,\r\n errors,\r\n request,\r\n saveRequest,\r\n group1Questions,\r\n group2Questions,\r\n group3Questions,\r\n } = this.props;\r\n\r\n const { stateShowSaveButton } = this.state;\r\n\r\n if (request.isLoading) {\r\n return (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <AsyncLoader request={request}>\r\n <CardBody>\r\n <CardText>\r\n <p>\r\n Keeping your data secure is one of our top priorities. As an extra layer of\r\n protection for your information, we ask that you complete security questions and\r\n answers for your Fiducius account.\r\n </p>\r\n <p>\r\n Please select the security questions from the available options and provide\r\n answers to complete your account setup. The answers you provide will allow access\r\n to your account and unlock it if you forget your password.\r\n </p>\r\n </CardText>\r\n <Form id=\"create\" handleChange={this.onChange} defaults={data}>\r\n <InputWrapper error={!!errors.securityQuestion1}>\r\n <InputLabel>Question 1:</InputLabel>\r\n <InputError>{safeAccess(errors, 'securityQuestion1.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"securityQuestion1\"\r\n options={group1Questions}\r\n value={form.securityQuestion1}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper\r\n error={\r\n !!errors.securityResponse1 ||\r\n (!stateShowSaveButton && form.securityResponse1 === null)\r\n }\r\n >\r\n <InputError>{safeAccess(errors, 'securityResponse1.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name=\"securityResponse1\"\r\n defaultValue={form.securityResponse1}\r\n placeholder={\r\n this.state.stateSecurityQuestion1 === 0\r\n ? ''\r\n : !stateShowSaveButton && form.securityResponse1 === null\r\n ? ''\r\n : '*********'\r\n }\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.securityQuestion2}>\r\n <InputLabel>Question 2:</InputLabel>\r\n <InputError>{safeAccess(errors, 'securityQuestion2.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"securityQuestion2\"\r\n options={group2Questions}\r\n value={form.securityQuestion2}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper\r\n error={\r\n !!errors.securityResponse2 ||\r\n (!stateShowSaveButton && form.securityResponse2 === null)\r\n }\r\n >\r\n <InputError>{safeAccess(errors, 'securityResponse2.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name=\"securityResponse2\"\r\n defaultValue={form.securityResponse2}\r\n placeholder={\r\n this.state.stateSecurityQuestion2 === 0\r\n ? ''\r\n : !stateShowSaveButton && form.securityResponse2 === null\r\n ? ''\r\n : '*********'\r\n }\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.securityQuestion3}>\r\n <InputLabel>Question 3:</InputLabel>\r\n <InputError>{safeAccess(errors, 'securityQuestion3.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"securityQuestion3\"\r\n options={group3Questions}\r\n value={form.securityQuestion3}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper\r\n error={\r\n !!errors.securityResponse3 ||\r\n (!stateShowSaveButton && form.securityResponse3 === null)\r\n }\r\n >\r\n <InputError>{safeAccess(errors, 'securityResponse3.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name=\"securityResponse3\"\r\n defaultValue={form.securityResponse3}\r\n placeholder={\r\n this.state.stateSecurityQuestion3 === 0\r\n ? ''\r\n : !stateShowSaveButton && form.securityResponse3 === null\r\n ? ''\r\n : '*********'\r\n }\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Form>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Fade show={this.enableSubmit() && !stateShowSaveButton}>\r\n <Button brand=\"success\" onClick={(e) => this.submit(e)}>\r\n {saveRequest.isLoading ? (\r\n <Loader variant=\"push\" size={1.5} />\r\n ) : (\r\n 'Save Security Questions'\r\n )}\r\n </Button>\r\n </Fade>\r\n <Fade\r\n show={\r\n !saveRequest.isLoading && !this.checkNoMissingData() && !stateShowSaveButton\r\n }\r\n >\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade\r\n show={\r\n !saveRequest.isLoading &&\r\n this.checkNoMissingData() &&\r\n !this.checkNoErrors() &&\r\n !stateShowSaveButton\r\n }\r\n >\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cache, errors, form, requests } = state.securityQuestionsSetup;\r\n let id = getUserId(state);\r\n return {\r\n id: id,\r\n token: getToken(state),\r\n request: requests.loadResource,\r\n saveRequest: mergeRequestStatuses([\r\n requests.createResource,\r\n state.todos.requests.loadCollection,\r\n state.auth.requests.loadPermissions,\r\n ]),\r\n form: form,\r\n errors: errors,\r\n data: safeAccess(cache, '[' + id + ']') || {},\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onLoad: async (id) => {\r\n await dispatch(securityQuestionsSetupLoadResource(id));\r\n },\r\n clearForm: () => dispatch(securityQuestionsSetupClearForm()),\r\n saveSecurityQuestions: async () => {\r\n await dispatch(securityQuestionsSetupCreateResource());\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n },\r\n handleForm: (securityQuestionsSetup, attributes) =>\r\n dispatch(securityQuestionsSetupHandleFormChange(securityQuestionsSetup, attributes)),\r\n hydrateForm: async (id) => await dispatch(securityQuestionsSetupCopyResourceToForm(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(SecurityQuestionsForm));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter, Redirect } from 'react-router-dom';\r\nimport { Card, Loader } from 'fiducius-ui';\r\nimport { FullscreenContainer, ContrastDisplay } from '../../routing';\r\n\r\nimport { authGetRedirectPath, getToken, LoaderWrapper } from '../../auth';\r\nimport SecurityQuestionsForm from '../components/security-questions-form';\r\nimport { getApi, mergeRequestStatuses } from '../../utils';\r\n\r\nclass SecurityQuestionsAuth extends React.Component {\r\n static propTypes = {\r\n getRedirectPath: t.string,\r\n saveRequest: t.object,\r\n token: t.any,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n group1Questions: {},\r\n group2Questions: {},\r\n group3Questions: {},\r\n isLoading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getQuestions().then((data) => {\r\n this.setState({\r\n ...this.state,\r\n group1Questions: data[0],\r\n group2Questions: data[1],\r\n group3Questions: data[2],\r\n isLoading: false,\r\n isSubmitted: false,\r\n });\r\n });\r\n }\r\n\r\n getQuestions = async () => {\r\n const group1Questions = await this.getSecurityQuestionGroup('1');\r\n const group2Questions = await this.getSecurityQuestionGroup('2');\r\n const group3Questions = await this.getSecurityQuestionGroup('3');\r\n\r\n return [group1Questions, group2Questions, group3Questions];\r\n };\r\n\r\n getSecurityQuestionGroup = async (groupId) => {\r\n const data = await getApi(this.props.token, '/drop-down-list/SecurityQuestions__' + groupId);\r\n let questions = {};\r\n questions['0'] = '';\r\n Object.keys(data).forEach((a) => {\r\n questions[data[a].id] = data[a].description;\r\n });\r\n return questions;\r\n };\r\n\r\n onSubmit = () => {\r\n this.setState({ ...this.state, isSubmitted: true });\r\n };\r\n\r\n render() {\r\n const { getRedirectPath, saveRequest } = this.props;\r\n const { isSubmitted } = this.state;\r\n\r\n if (\r\n isSubmitted &&\r\n saveRequest &&\r\n !saveRequest.isLoading &&\r\n saveRequest.hasFinished &&\r\n !saveRequest.hasFailed\r\n ) {\r\n return <Redirect to={getRedirectPath === 'referrer' ? '/dashboard' : getRedirectPath} />;\r\n }\r\n const { group1Questions, group2Questions, group3Questions, isLoading } = this.state;\r\n return (\r\n <>\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row no-gutters\">\r\n <div className=\"col-12\">\r\n <ContrastDisplay>Complete Your Security Questions</ContrastDisplay>\r\n <Card>\r\n {isLoading && (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n )}\r\n {!isLoading && (\r\n <SecurityQuestionsForm\r\n group1Questions={group1Questions}\r\n group2Questions={group2Questions}\r\n group3Questions={group3Questions}\r\n onSubmit={this.onSubmit}\r\n showSaveButton={false}\r\n />\r\n )}\r\n </Card>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.securityQuestionsSetup;\r\n\r\n return {\r\n token: getToken(state),\r\n getRedirectPath: authGetRedirectPath(state, true, true),\r\n saveRequest: mergeRequestStatuses([\r\n requests.createResource,\r\n state.todos.requests.loadCollection,\r\n state.auth.requests.loadPermissions,\r\n ]),\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(withRouter(SecurityQuestionsAuth));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter, Redirect } from 'react-router-dom';\r\nimport { DashboardSection, Card, Loader } from 'fiducius-ui';\r\n\r\nimport { authGetRedirectPath, getToken, LoaderWrapper } from '../../auth';\r\nimport SecurityQuestionsForm from '../components/security-questions-form';\r\nimport { getApi, mergeRequestStatuses } from '../../utils';\r\n\r\nclass SecurityQuestionsDashboard extends React.Component {\r\n static propTypes = {\r\n getRedirectPath: t.string,\r\n saveRequest: t.object,\r\n token: t.any,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n group1Questions: {},\r\n group2Questions: {},\r\n group3Questions: {},\r\n isLoading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getQuestions().then((data) => {\r\n this.setState({\r\n ...this.state,\r\n group1Questions: data[0],\r\n group2Questions: data[1],\r\n group3Questions: data[2],\r\n isLoading: false,\r\n isSubmitted: true,\r\n });\r\n });\r\n }\r\n\r\n getQuestions = async () => {\r\n const group1Questions = await this.getSecurityQuestionGroup('1');\r\n const group2Questions = await this.getSecurityQuestionGroup('2');\r\n const group3Questions = await this.getSecurityQuestionGroup('3');\r\n\r\n return [group1Questions, group2Questions, group3Questions];\r\n };\r\n\r\n getSecurityQuestionGroup = async (groupId) => {\r\n const data = await getApi(this.props.token, '/drop-down-list/SecurityQuestions__' + groupId);\r\n let questions = {};\r\n questions['0'] = '';\r\n Object.keys(data).forEach((a) => {\r\n questions[data[a].id] = data[a].description;\r\n });\r\n return questions;\r\n };\r\n\r\n onSubmit = () => {\r\n this.setState({ ...this.state, isSubmitted: true });\r\n };\r\n\r\n render() {\r\n const { group1Questions, group2Questions, group3Questions, isLoading } = this.state;\r\n return (\r\n <DashboardSection title=\"Complete Your Security Questions\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-6\">\r\n <Card>\r\n {isLoading && (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n )}\r\n {!isLoading && (\r\n <SecurityQuestionsForm\r\n group1Questions={group1Questions}\r\n group2Questions={group2Questions}\r\n group3Questions={group3Questions}\r\n onSubmit={this.onSubmit}\r\n showSaveButton={true}\r\n />\r\n )}\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { requests } = state.securityQuestionsSetup;\r\n\r\n return {\r\n token: getToken(state),\r\n getRedirectPath: authGetRedirectPath(state, true),\r\n saveRequest: mergeRequestStatuses([\r\n requests.createResource,\r\n state.todos.requests.loadCollection,\r\n state.auth.requests.loadPermissions,\r\n ]),\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(withRouter(SecurityQuestionsDashboard));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('securityQuestionsSetup', types);\r\n","// References redux types\r\nimport { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('securityQuestions');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('securityQuestions', types);\r\n","import actions from './actions';\r\nimport { SecurityQuestionsValidator } from './validators';\r\nimport { resourceOperationsGenerator, safeAccess, keyById, patchApi, normalize } from '../../utils';\r\nimport { getToken } from '../../auth';\r\n\r\nconst securityQuestionsValidator = new SecurityQuestionsValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/customer-security-question',\r\n resourceType: 'customer-security-question',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'securityQuestions',\r\n actions,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n securityQuestionsClearForm,\r\n securityQuestionsCopyResourceToForm,\r\n securityQuestionsHandleFormChange,\r\n securityQuestionsLoadResource,\r\n} = operations;\r\n\r\nconst securityQuestionsUpdateResource = (id) => async (dispatch, getState) => {\r\n const state = getState();\r\n let segment = state.securityQuestions;\r\n\r\n try {\r\n if (safeAccess(segment, 'errors.length') > 0) {\r\n throw new Error('The form contains errors and cannot be saved until they are fixed.');\r\n }\r\n\r\n if (segment.meta.isReadOnly) {\r\n throw new Error('The form is readonly. Any changes will not be saved.');\r\n }\r\n\r\n dispatch(actions['securityQuestionsUpdateResourceRequest']());\r\n const patchData = normalize('customer-security-question', segment.form, id);\r\n let data = await patchApi(getToken(state), `/customer-security-question/${id}`, patchData);\r\n\r\n dispatch(actions['securityQuestionsUpdateResourceResponse']());\r\n\r\n const cache = { ...segment.cache, ...keyById(data) };\r\n await dispatch(operations['securityQuestionsHandleCacheChange'](cache));\r\n\r\n const auth = getState().auth;\r\n auth.cache.accessToken = data[0].accessToken;\r\n auth.cache.tokenExpiresIn = data[0].tokenExpiresIn;\r\n\r\n dispatch(actions['securityQuestionsUpdateResourceSuccess']());\r\n } catch (error) {\r\n dispatch(operations['securityQuestionsHandleError'](error));\r\n dispatch(actions['securityQuestionsUpdateResourceFailure'](error));\r\n }\r\n};\r\n\r\nexport {\r\n securityQuestionsClearForm,\r\n securityQuestionsCopyResourceToForm,\r\n securityQuestionsHandleFormChange,\r\n securityQuestionsLoadResource,\r\n securityQuestionsUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class SecurityQuestionsValidator extends FormValidator {}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport {\r\n Button,\r\n Form,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n InputError,\r\n InputSelect,\r\n AsyncLoader,\r\n CardBody,\r\n CardFooter,\r\n Loader,\r\n CardText,\r\n} from 'fiducius-ui';\r\n\r\nclass SecurityQuestionForm extends React.Component {\r\n static propTypes = {\r\n onChange: t.func.isRequired,\r\n data: t.object,\r\n form: t.object,\r\n errors: t.object,\r\n handleKeyPress: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n render() {\r\n const { data, form, errors, onChange, handleKeyPress } = this.props;\r\n return (\r\n <Form id=\"check\" handleChange={onChange}>\r\n <InputWrapper error={!!errors.securityQuestionResponse}>\r\n <InputLabel>{data.securityQuestion}</InputLabel>\r\n <InputError>{safeAccess(errors, 'securityQuestionResponse.detail')}</InputError>\r\n <InputGroup>\r\n <InputText\r\n name=\"securityQuestionResponse\"\r\n type=\"password\"\r\n defaultValue={form.securityQuestionResponse}\r\n onKeyPress={handleKeyPress}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default SecurityQuestionForm;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter, Redirect } from 'react-router-dom';\r\nimport { AsyncLoader, Card, CardBody, CardText, CardFooter, Button, Loader } from 'fiducius-ui';\r\nimport { FullscreenContainer, ContrastDisplay, Fade } from '../../routing';\r\nimport { FlexBetween } from '../../root';\r\nimport { authGetRedirectPath, getToken, getUserId } from '../../auth';\r\nimport { safeAccess, debounce } from '../../utils';\r\nimport {\r\n securityQuestionsClearForm,\r\n securityQuestionsCopyResourceToForm,\r\n securityQuestionsHandleFormChange,\r\n securityQuestionsLoadResource,\r\n securityQuestionsUpdateResource,\r\n} from '../redux/operations';\r\nimport SecurityQuestionForm from '../components/security-question-form';\r\n\r\nclass SecurityQuestionsCheck extends React.Component {\r\n static propTypes = {\r\n getRedirectPath: t.string,\r\n id: t.string.isRequired,\r\n token: t.any,\r\n data: t.object,\r\n form: t.object,\r\n errors: t.object,\r\n request: t.object,\r\n responseRequest: t.object,\r\n onLoad: t.func,\r\n clearForm: t.func,\r\n checkResponse: t.func,\r\n handleForm: t.func,\r\n hydrateForm: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n shouldLogout: false,\r\n shouldRedirect: false,\r\n securityQuestionAttemptCount: 0,\r\n securityQuestion: null,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n this.props.clearForm();\r\n await this.props.onLoad(this.props.id);\r\n this.props.handleForm({ ...this.props.form, ...this.props.data }, ['securityChecksum']);\r\n }\r\n\r\n onChange = debounce((securityQuestions, id, attributes) => {\r\n this.props.handleForm({ ...this.props.form, ...securityQuestions }, [attributes]);\r\n }, 250);\r\n\r\n enableSubmit = () => {\r\n return this.checkNoMissingData() && this.checkNoErrors();\r\n };\r\n\r\n checkNoMissingData = () => {\r\n return true;\r\n };\r\n\r\n checkNoErrors = () => {\r\n return true;\r\n };\r\n\r\n handleKeyPress = async (e) => {\r\n if (e.key === 'Enter') {\r\n this.submit(e);\r\n }\r\n };\r\n\r\n submit = async (e) => {\r\n e.preventDefault();\r\n const { shouldRedirect, securityQuestionAttemptCount, securityQuestion } = this.state;\r\n this.setState({\r\n ...this.state,\r\n securityQuestionAttemptCount: securityQuestionAttemptCount + 1,\r\n securityQuestion: this.props.data.securityQuestion,\r\n });\r\n\r\n if (!this.props.request.isLoading && !this.props.responseRequest.isLoading) {\r\n await this.props.checkResponse(this.props.id);\r\n if (\r\n this.props.responseRequest.hasFinished &&\r\n !this.props.responseRequest.hasFailed &&\r\n this.props.data.securityChecksum !== 'LOCKED'\r\n ) {\r\n this.props.clearForm();\r\n this.setState({ ...this.state, shouldRedirect: true });\r\n } else if (this.props.data.securityChecksum === 'LOCKED') {\r\n this.props.clearForm();\r\n this.setState({ ...this.state, shouldLogout: true });\r\n } else if (this.state.securityQuestionAttemptCount === 3) {\r\n do {\r\n await this.props.onLoad(this.props.id);\r\n this.props.handleForm({ ...this.props.form, ...this.props.data }, ['securityChecksum']);\r\n } while (securityQuestion === this.props.data.securityQuestion);\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n const { request, data, form, errors, responseRequest, getRedirectPath } = this.props;\r\n\r\n if (this.state.shouldLogout) {\r\n return <Redirect to={'/logout'} />;\r\n } else if (this.state.shouldRedirect) {\r\n return <Redirect to={getRedirectPath === 'referrer' ? '/dashboard' : getRedirectPath} />;\r\n }\r\n\r\n return (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row no-gutters\">\r\n <div className=\"col-12\">\r\n <ContrastDisplay>Security Question Check</ContrastDisplay>\r\n <AsyncLoader request={request}>\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <p>Please answer the following question to continue to your dashboard:</p>\r\n <SecurityQuestionForm\r\n data={data}\r\n form={form}\r\n errors={errors}\r\n onChange={this.onChange}\r\n handleKeyPress={this.handleKeyPress}\r\n />\r\n </CardText>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Fade show={this.enableSubmit()}>\r\n <Button brand=\"success\" onClick={(e) => this.submit(e)}>\r\n {responseRequest.isLoading ? (\r\n <Loader variant=\"push\" size={1.5} />\r\n ) : (\r\n 'Submit'\r\n )}\r\n </Button>\r\n </Fade>\r\n <Fade show={!responseRequest.isLoading && !this.checkNoMissingData()}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade\r\n show={\r\n !responseRequest.isLoading &&\r\n this.checkNoMissingData() &&\r\n !this.checkNoErrors()\r\n }\r\n >\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </AsyncLoader>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cache, errors, form, requests } = state.securityQuestions;\r\n let id = getUserId(state);\r\n return {\r\n id: id,\r\n token: getToken(state),\r\n getRedirectPath: authGetRedirectPath(state, true, true),\r\n request: requests.loadResource,\r\n responseRequest: requests.updateResource,\r\n form: form,\r\n errors: errors,\r\n data: safeAccess(cache, '[' + id + ']') || {},\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onLoad: async (id) => {\r\n await dispatch(securityQuestionsLoadResource(id));\r\n },\r\n clearForm: () => dispatch(securityQuestionsClearForm()),\r\n checkResponse: async (id) => {\r\n await dispatch(securityQuestionsUpdateResource(id));\r\n },\r\n handleForm: (securityQuestions, attributes) =>\r\n dispatch(securityQuestionsHandleFormChange(securityQuestions, attributes)),\r\n hydrateForm: async (id) => await dispatch(securityQuestionsCopyResourceToForm(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(SecurityQuestionsCheck));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('securityQuestions', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { AnimationGroup } from 'fiducius-ui';\r\nimport { Route, Switch } from 'react-router-dom';\r\n\r\nimport { Agreement } from '../../workflows/agreement';\r\nimport { Fulfillment } from '../../fulfillment';\r\nimport { Idr } from '../../workflows/idr';\r\nimport { QuestionnaireBTS } from '../../workflows/questionnaire-bts';\r\nimport { Renewal } from '../../workflows/renewal';\r\nimport { Payment } from '../../payment';\r\nimport { Screening } from '../../workflows/screening';\r\nimport { Prescreening } from '../../workflows/screening';\r\nimport { Tuition } from '../../workflows/tuition';\r\nimport { TuitionApproval } from '../../tuition-approval';\r\nimport { EmpcertApproval } from '../../empcert-approval';\r\nimport ErrorPage from './error-page';\r\nimport PrivateRoute from './private-route';\r\nimport { Privacy, SharedData, TermsOfUse } from '../../legal';\r\nimport { NSLDSContainer } from '../../workflows/nslds';\r\nimport { LwoAgreement } from '../../workflows/lwo-agreement';\r\nimport { SecurityQuestionsAuth } from '../../security-questions-setup';\r\nimport { SecurityQuestionCheck } from '../../security-questions';\r\n\r\nconst RouterFullscreen = (props) => {\r\n //const domain = props.domain || 'islsoffice';\r\n return (\r\n <Route\r\n render={({ location }) => (\r\n <AnimationGroup key={location.key} animation=\"fade\">\r\n <Switch location={location}>\r\n {/* Errors */}\r\n <Route path=\"/error/:code\" component={ErrorPage} />\r\n\r\n <Route\r\n exact\r\n path=\"/tuition-approval\"\r\n render={() => <TuitionApproval location={location} />}\r\n />\r\n\r\n <Route\r\n exact\r\n path=\"/empcert-approval\"\r\n render={() => <EmpcertApproval location={location} />}\r\n />\r\n\r\n <Route exact path=\"/privacy\" component={Privacy} />\r\n <Route exact path=\"/shared-data\" component={SharedData} />\r\n <Route exact path=\"/terms-of-use\" component={TermsOfUse} />\r\n {/* Private routes */}\r\n <PrivateRoute exact path=\"/agreement\" component={Agreement} />\r\n <PrivateRoute exact path=\"/fulfillment/:fileId\" component={Fulfillment} />\r\n <PrivateRoute exact path=\"/idr\" component={Idr} />\r\n <PrivateRoute exact path=\"/bts\" component={QuestionnaireBTS} />\r\n <PrivateRoute exact path=\"/payment\" component={Payment} />\r\n <PrivateRoute exact path=\"/renewal\" component={Renewal} />\r\n <PrivateRoute exact path=\"/screening\" component={Screening} />\r\n <PrivateRoute exact path=\"/prescreening\" component={Prescreening} />\r\n <PrivateRoute exact path=\"/tuition/new-class\" component={Tuition} />\r\n <PrivateRoute exact path=\"/nslds\" component={NSLDSContainer} />\r\n <PrivateRoute exact path=\"/lwo-agreement\" component={LwoAgreement} />\r\n <PrivateRoute exact path=\"/security-questions\" component={SecurityQuestionsAuth} />\r\n <PrivateRoute exact path=\"/security-question-check\" component={SecurityQuestionCheck} />\r\n </Switch>\r\n </AnimationGroup>\r\n )}\r\n />\r\n );\r\n};\r\n\r\nRouterFullscreen.propTypes = {\r\n domain: t.string,\r\n changeTheme: t.func.isRequired,\r\n};\r\n\r\nexport default RouterFullscreen;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { Header1, Header3, LogoDisplay } from 'fiducius-ui';\r\nimport { faPlus } from '@fortawesome/pro-light-svg-icons/faPlus';\r\n\r\nimport { safeAccess } from '../../utils';\r\nimport { authGetPartnerLocations, getCRMUserId, getUserId } from '../../auth';\r\n\r\nimport RouterFullscreen from './router-fullscreen';\r\n\r\nconst Logo = styled.div`\r\n /*position: absolute;\r\n top: 0;\r\n left: 0;*/\r\n width: 100%;\r\n margin: 0.75em 1.25em;\r\n & > h1 {\r\n font-size: 3rem;\r\n color: ${(p) => (p.invert ? p.theme.textPrimary : p.theme.white)};\r\n }\r\n`;\r\n\r\nconst Wrapper = styled.div`\r\n align-items: center;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: ${(p) => p.align};\r\n min-height: 10vh;\r\n position: absolute;\r\n width: 100%;\r\n background-image: radial-gradient(\r\n at left top,\r\n ${(p) =>\r\n p.theme.themeName === 'light'\r\n ? p.theme.colorLevel(p.theme.primary, -3)\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.colorLevel(p.theme.primaryA, -3)\r\n : p.theme.colorLevel(p.theme.level1, -3)},\r\n ${(p) =>\r\n p.theme.themeName === 'light'\r\n ? p.theme.colorLevel(p.theme.primary, 4)\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.colorLevel(p.theme.primaryA, 4)\r\n : p.theme.colorLevel(p.theme.level1, 4)}\r\n 70%,\r\n ${(p) =>\r\n p.theme.themeName === 'light'\r\n ? p.theme.colorLevel(p.theme.primary, 5)\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.colorLevel(p.theme.primaryA, 5)\r\n : p.theme.colorLevel(p.theme.level1, 5)}\r\n );\r\n\r\n a {\r\n color: ${(p) => p.theme.secondary};\r\n }\r\n`;\r\n\r\nconst StyledLogo = styled(LogoDisplay)`\r\n padding-left: 1rem;\r\n`;\r\nconst LogoWrapper = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n padding: 0.25rem 1rem;\r\n padding-left: 1rem;\r\n`;\r\n\r\nconst StyledLogoWrapper = styled.div`\r\n padding-left: 1rem;\r\n`;\r\n\r\nconst StyledHeader1 = styled(Header1)`\r\n color: ${(p) => p.theme.white};\r\n`;\r\n\r\nconst StyledHeader3 = styled(Header3)`\r\n color: ${(p) => p.theme.white};\r\n`;\r\n\r\nclass LayoutFullscreen extends React.Component {\r\n static propTypes = {\r\n align: t.string,\r\n children: t.node,\r\n company: t.string,\r\n greeting: t.string,\r\n loadPartnerLocations: t.func.isRequired,\r\n shouldLoadLocations: t.bool.isRequired,\r\n getCRMUserId: t.func.isRequired,\r\n getUserId: t.func.isRequired,\r\n changeTheme: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n partnerDomain: this.parseSubdomain(),\r\n isEmulation: false,\r\n emulationId: 0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.shouldLoadLocations) {\r\n this.props.loadPartnerLocations(this.state.partnerDomain);\r\n }\r\n const { getCRMUserId, getUserId } = this.props;\r\n const crmId = getCRMUserId();\r\n\r\n if (crmId !== 'Error') {\r\n const userId = parseInt(getUserId()) + 1000;\r\n this.setState({ ...this.state, isEmulation: true, emulationId: userId });\r\n }\r\n }\r\n\r\n parseSubdomain() {\r\n // subdomain.domain.tld <=> app.getfiducius.com\r\n // domains = [subdomain, domain, tld];\r\n const domains = window.location.hostname.split('.');\r\n // If there's more than the domain and top level domain,\r\n // return the first sub-domain\r\n return domains.length > 2 ? domains[domains.length - 3] : 'islsoffice';\r\n }\r\n\r\n render() {\r\n const { align = 'center', company, children, greeting, changeTheme } = this.props;\r\n const { isEmulation, emulationId } = this.state;\r\n let emulationMessage = '';\r\n if (isEmulation) {\r\n emulationMessage = 'You are currently emulating account X' + emulationId.toString() + '.';\r\n }\r\n return (\r\n <>\r\n <Wrapper align={align}>\r\n <Logo>\r\n {company && (\r\n <>\r\n <div className=\"row no-gutters\">\r\n <StyledLogoWrapper>\r\n <StyledLogo />\r\n </StyledLogoWrapper>\r\n <div className=\"col-auto\">\r\n <StyledHeader1>\r\n <FontAwesomeIcon size=\"1x\" fixedWidth icon={faPlus} />\r\n {company}\r\n </StyledHeader1>\r\n </div>\r\n </div>\r\n <LogoWrapper>\r\n <StyledHeader3>{greeting}</StyledHeader3>\r\n </LogoWrapper>\r\n <LogoWrapper>\r\n {isEmulation && <StyledHeader3>{emulationMessage}</StyledHeader3>}\r\n </LogoWrapper>\r\n </>\r\n )}\r\n {!company && (\r\n <>\r\n <div className=\"row no-gutters\">\r\n <StyledLogoWrapper>\r\n <StyledLogo />\r\n </StyledLogoWrapper>\r\n </div>\r\n <LogoWrapper>\r\n {isEmulation && <StyledHeader3>{emulationMessage}</StyledHeader3>}\r\n </LogoWrapper>\r\n </>\r\n )}\r\n </Logo>\r\n {children || (\r\n <RouterFullscreen\r\n changeTheme={changeTheme}\r\n greeting={''}\r\n domain={this.state.partnerDomain}\r\n />\r\n )}\r\n </Wrapper>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n shouldLoadLocations:\r\n safeAccess(state, 'persist.requests.load.hasFinished', false) &&\r\n !safeAccess(state, 'auth.cache.partnerLocations') &&\r\n safeAccess(state, 'auth.requests.partnerLocation.notStarted', true),\r\n company:\r\n safeAccess(state, 'auth.cache.permissions.partnerLine1') ||\r\n safeAccess(state, 'auth.cache.partnerLocations.partnerLine1'),\r\n greeting:\r\n safeAccess(state, 'auth.cache.permissions.partnerLine2') ||\r\n safeAccess(state, 'auth.cache.partnerLocations.partnerLine2'),\r\n getCRMUserId: () => getCRMUserId(state),\r\n getUserId: () => getUserId(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadPartnerLocations: (domain) => dispatch(authGetPartnerLocations(domain)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LayoutFullscreen);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Loader } from 'fiducius-ui';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { persistLoadState } from '../../persist';\r\nimport LayoutFullscreen from './layout-fullscreen';\r\nimport FullscreenContainer from '../styles/fullscreen-container';\r\n\r\nclass RouterPersist extends React.Component {\r\n static propTypes = {\r\n children: t.node,\r\n hasFinished: t.bool.isRequired,\r\n initialLoad: t.bool.isRequired,\r\n loadState: t.func.isRequired,\r\n };\r\n\r\n componentDidMount() {\r\n if (!this.props.initialLoad) {\r\n this.props.loadState();\r\n }\r\n }\r\n\r\n render() {\r\n if (this.props.initialLoad) {\r\n return this.props.children;\r\n } else {\r\n return (\r\n <LayoutFullscreen>\r\n <FullscreenContainer className=\"container-fluid\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-10 col-md-8\">\r\n <Loader variant=\"atom\" size={3} />\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n </LayoutFullscreen>\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n hasFinished: state.persist.requests.load.hasFinished,\r\n initialLoad: state.persist.cache.initialLoad || false,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadState: () => dispatch(persistLoadState()),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RouterPersist);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('planTool');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('planTool', types);\r\n","export const defaultState = {\r\n General: {\r\n 'Plan Type': {\r\n type: 'plantype',\r\n value: 'NFP',\r\n multiplier: 1.0,\r\n help: 'Select Plan Type.',\r\n },\r\n 'Household Size': {\r\n type: 'number',\r\n value: 1,\r\n help:\r\n 'How many total people are a part of your household? This includes adults and dependents.',\r\n },\r\n 'Marital Status': {\r\n type: 'marital',\r\n value: 'Single',\r\n help: 'Are you married?',\r\n },\r\n 'Client Gross Income': {\r\n type: 'number',\r\n value: 0,\r\n help:\r\n 'This number is your total income per year, before taxes and any other pre-tax deductions are subtracted.',\r\n },\r\n 'Spouse Gross Income': {\r\n type: 'number',\r\n value: 0,\r\n hide: (s) => s['General']['Marital Status'].value === 'Single',\r\n help:\r\n \"This number is your spouse's total income per year, before taxes and any other pre-tax deductions are subtracted.\",\r\n },\r\n 'IDR Type': {\r\n type: 'idrtype',\r\n value: 'IBR',\r\n help: 'Select IDR Type.',\r\n },\r\n 'Client Loan Balance': {\r\n type: 'number',\r\n value: 0,\r\n help: 'This number is your current total student loan balance.',\r\n },\r\n 'Spouse Loan Balance': {\r\n type: 'number',\r\n value: 0,\r\n hide: (s) => s['General']['Marital Status'].value === 'Single',\r\n help: \"This number is your spouse's current total student loan balance.\",\r\n },\r\n 'Current Loan Payment': {\r\n type: 'number',\r\n value: 0,\r\n help: 'This number is your monthly student loan payment.',\r\n },\r\n 'Qualifying Payments': {\r\n type: 'number',\r\n value: 0,\r\n help:\r\n \"This is how many monthly student loan payments you've made that count towards public student loan forgiveness. If you don't know whether you've made any payments that qualify, leave this as 0.\",\r\n },\r\n },\r\n Taxes: {\r\n 'Filing Status': {\r\n type: 'filing',\r\n value: 'Filing Separately',\r\n hide: (s) => s['General']['Marital Status'].value === 'Single',\r\n help: 'Will you be filing your taxes this year jointly with your spouse or separately?',\r\n },\r\n 'Tax Cost': {\r\n type: 'number',\r\n value: 0,\r\n min: -99999,\r\n help:\r\n 'Enter the amount of taxes you will owe this year. This is the total annual number that the government expects you to pay when you file your taxes.',\r\n },\r\n },\r\n 'Monthly Retirement Contribution': {\r\n projectedRetirementDate: {\r\n type: 'date',\r\n value: '',\r\n label: 'Projected Retirement Date',\r\n width: 'full',\r\n help: 'Enter your projected retirement date.',\r\n },\r\n 'Retirement Percentage': {\r\n type: 'number',\r\n value: 1,\r\n help:\r\n 'Enter the montly percentage of your income before taxes and other deductions that you would like to save for retirement. For example, if you make $50,000 and you enter 1% here, that means you are saving $500 each month for retirement. Increasing this number will lower your taxable income, increase your monthly retirement savings, and possibly lower your monthly payment on a student loan income-driven payment plan.',\r\n },\r\n 'Monthly Retirement Amount': {\r\n type: 'number',\r\n value: 0,\r\n help:\r\n 'If you would prefer to enter an absolute dollar value instead of a percentage, enter it here. Any change to either of these fields will update the other. They are not additive and the value in this box is what will be used when calculating your taxable income.',\r\n },\r\n 'Modified Retirement Percentage': {\r\n type: 'number',\r\n value: 0,\r\n help:\r\n 'Enter the montly percentage of your income before taxes and other deductions that you would like to save for retirement. For example, if you make $50,000 and you enter 1% here, that means you are saving $500 each month for retirement. Increasing this number will lower your taxable income, increase your monthly retirement savings, and possibly lower your monthly payment on a student loan income-driven payment plan.',\r\n },\r\n 'Modified Retirement Amount': {\r\n type: 'number',\r\n value: 0,\r\n help:\r\n 'If you would prefer to enter an absolute dollar value instead of a percentage, enter it here. Any change to either of these fields will update the other. They are not additive and the value in this box is what will be used when calculating your taxable income.',\r\n },\r\n },\r\n 'Health Insurance': {\r\n 'Insurance Type': {\r\n type: 'insurance',\r\n value: 'PPO',\r\n help: 'Select the type of health insurance you have.',\r\n },\r\n 'Insurance Coverage': {\r\n type: 'coverage',\r\n value: 'Employee Only',\r\n help: 'Select the level of coverage you have on your health insurance.',\r\n },\r\n 'Pre-Tax Insurance Cost': {\r\n type: 'number',\r\n value: 0,\r\n help:\r\n 'Enter any monthly pre-tax deductions made from your pay towards health insurance coverage. Pre-tax contributions like these reduce your taxable income and could possibly lower your monthly payment on a student loan income-driven payment plan. ',\r\n },\r\n 'Annual HSA Contribution': {\r\n type: 'number',\r\n value: 0,\r\n hide: (s) => s['Health Insurance']['Insurance Type'].value !== 'HSA',\r\n help:\r\n 'Enter the total annual dollar amount you will contribute to your HSA this year. Using an HSA plan and contributing pre-tax deductions from your pay can help lower your taxable income, save for medical expenses, and possibly lower your monthly payment on a student loan income-driven payment plan.',\r\n },\r\n },\r\n 'Other Pre-Tax Costs / Contributions': {\r\n 'Deduction 1 Value': {\r\n type: 'number',\r\n customInput: 'deduction',\r\n value: 0,\r\n help: 'Enter the monthly value of any other pre-tax deductions here.',\r\n showDeleteButton: false,\r\n },\r\n },\r\n 'Modified Other Pre-Tax Costs / Contributions': {\r\n 'Modified Deduction 1 Value': {\r\n type: 'number',\r\n customInput: 'deduction',\r\n value: 0,\r\n help: 'Enter the monthly value of any other pre-tax deductions here.',\r\n showDeleteButton: false,\r\n },\r\n },\r\n UIData: {\r\n ChartData: {\r\n value: '',\r\n },\r\n ComparisonChartData: {\r\n value: '',\r\n },\r\n GraphData: {\r\n value: '',\r\n },\r\n },\r\n};\r\n\r\nconst getMonthlyPaymentByPaymentType = (state, exp, modified) => {\r\n let paymentAmount = 0;\r\n let paymentType = state['General']['IDR Type'].value;\r\n\r\n // multiplier is either a percentage, or could be a weighted amount for the SAVE plan type\r\n let multiplier = 1;\r\n\r\n switch (paymentType.toLowerCase()) {\r\n case 'repaye':\r\n multiplier = 10 / 100;\r\n paymentAmount = getMonthlyPayment(state, exp, 150, multiplier, modified);\r\n break;\r\n case 'paye':\r\n multiplier = 10 / 100;\r\n paymentAmount = getMonthlyPayment(state, exp, 150, multiplier, modified);\r\n break;\r\n case 'ibr':\r\n multiplier = 15 / 100;\r\n paymentAmount = getMonthlyPayment(state, exp, 150, multiplier, modified);\r\n break;\r\n case 'icr':\r\n multiplier = 20 / 100;\r\n paymentAmount = getMonthlyPayment(state, exp, 100, multiplier, modified);\r\n break;\r\n case '5%repaye':\r\n multiplier = 5 / 100;\r\n paymentAmount = getMonthlyPayment(state, exp, 225, multiplier, modified);\r\n break;\r\n case 'save':\r\n multiplier = state['General']['Plan Type'].multiplier;\r\n paymentAmount = getMonthlyPayment(state, exp, 225, multiplier, modified);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return paymentAmount;\r\n};\r\n\r\nconst getNumberOfMonths = (state) => {\r\n let numOfMonths = 0;\r\n let planType = state['General']['Plan Type'].value;\r\n switch (planType) {\r\n case 'NFP':\r\n //120 months\r\n numOfMonths = 120;\r\n break;\r\n case 'FP20YR':\r\n //240 months - qualified payments\r\n numOfMonths = 240;\r\n break;\r\n case 'FP25YR':\r\n //300 months - qualified payments\r\n numOfMonths = 300;\r\n break;\r\n default:\r\n numOfMonths = 120;\r\n break;\r\n }\r\n\r\n return numOfMonths;\r\n};\r\n\r\nconst getMonthlyPayment = (state, exp, povertyTablePercentage, multiplier, modified = false) => {\r\n let houseHoldSize = state['General']['Household Size'].value;\r\n const povertyGuidelinesDB = state['PovertyGuidelines'];\r\n let hhSizeFromDB = 1;\r\n\r\n if (houseHoldSize > 10) {\r\n hhSizeFromDB =\r\n (povertyGuidelinesDB[9].lower48Value - povertyGuidelinesDB[8].lower48Value) *\r\n (houseHoldSize - 10) +\r\n povertyGuidelinesDB[9].lower48Value;\r\n } else {\r\n hhSizeFromDB =\r\n povertyGuidelinesDB === undefined\r\n ? 1\r\n : houseHoldSize > 0 && Object.keys(povertyGuidelinesDB).length > 0\r\n ? povertyGuidelinesDB[houseHoldSize - 1].lower48Value\r\n : 1;\r\n }\r\n\r\n let retVal = 0;\r\n if (modified) {\r\n retVal =\r\n ((modifiedAgi(state, exp) - (povertyTablePercentage / 100) * hhSizeFromDB) * multiplier) / 12;\r\n } else {\r\n retVal = ((agi(state, exp) - (povertyTablePercentage / 100) * hhSizeFromDB) * multiplier) / 12;\r\n }\r\n\r\n return retVal;\r\n};\r\n\r\nconst agi = (state, exp) => {\r\n const gi = +state['General']['Client Gross Income'].value * 1.02 ** exp;\r\n\r\n let otherDeductionsTotal = 0;\r\n Object.keys(state['Other Pre-Tax Costs / Contributions']).forEach((e) => {\r\n otherDeductionsTotal += state['Other Pre-Tax Costs / Contributions'][e].value * 12;\r\n });\r\n\r\n const deductions =\r\n +state['Monthly Retirement Contribution']['Monthly Retirement Amount'].value * 12 +\r\n +state['Health Insurance']['Pre-Tax Insurance Cost'].value * 12 +\r\n +state['Health Insurance']['Annual HSA Contribution'].value +\r\n otherDeductionsTotal;\r\n\r\n return gi - deductions;\r\n};\r\n\r\nconst modifiedAgi = (state, exp) => {\r\n const gi = +state['General']['Client Gross Income'].value * 1.02 ** exp;\r\n\r\n let otherDeductionsTotal = 0;\r\n Object.keys(state['Modified Other Pre-Tax Costs / Contributions']).forEach((e) => {\r\n otherDeductionsTotal += state['Modified Other Pre-Tax Costs / Contributions'][e].value * 12;\r\n });\r\n\r\n const deductions =\r\n +state['Monthly Retirement Contribution']['Modified Retirement Amount'].value * 12 +\r\n +state['Health Insurance']['Pre-Tax Insurance Cost'].value * 12 +\r\n +state['Health Insurance']['Annual HSA Contribution'].value +\r\n otherDeductionsTotal;\r\n\r\n return gi - deductions;\r\n};\r\n\r\nexport const usd = (n) => n.toLocaleString('en-US', { style: 'currency', currency: 'usd' });\r\n\r\nexport const forgiveness = (state, modified) => {\r\n let years = [];\r\n\r\n const pmts = state.General['Qualifying Payments'].value;\r\n const numMonths = getNumberOfMonths(state);\r\n const fullYears = numMonths / 12 - Math.floor(pmts / 12);\r\n const partialYear = (numMonths - pmts) % 12;\r\n const lastYearMonths = partialYear === 0 ? 12 : partialYear;\r\n\r\n for (let i = 0; i < fullYears; i++) {\r\n const ibp = getMonthlyPaymentByPaymentType(state, i, modified);\r\n const std = +state['General']['Current Loan Payment'].value;\r\n const payment = Math.round((ibp <= std ? ibp : std) * 100) / 100;\r\n const months = i + 1 === fullYears ? lastYearMonths : 12;\r\n const savings = Math.round((std - payment) * months);\r\n const accSavings = i - 1 >= 0 ? years[i - 1].accSavings + savings : savings;\r\n\r\n // Amortization of 8% on retirement account\r\n const ret = modified\r\n ? +state['Monthly Retirement Contribution']['Modified Retirement Amount'].value * 12\r\n : +state['Monthly Retirement Contribution']['Monthly Retirement Amount'].value * 12;\r\n const accRetirement = i - 1 >= 0 ? (years[i - 1].accRetirement + ret) * 1.08 : ret * 1.08;\r\n\r\n const hsa = +state['Health Insurance']['Annual HSA Contribution'].value;\r\n const accHsa = i - 1 >= 0 ? (years[i - 1].accHsa + hsa) * 1.06 : hsa * 1.06;\r\n\r\n years.push({\r\n id: i + 1,\r\n payment: payment < 0 ? 0 : payment, // payment can never be negative\r\n savings,\r\n accSavings,\r\n accRetirement,\r\n accHsa,\r\n });\r\n }\r\n return years;\r\n};\r\n\r\nconst reOrderDeductionNames = (state) => {\r\n // Re-order the deduction names\r\n let i = 1;\r\n Object.keys(state['Other Pre-Tax Costs / Contributions']).forEach((e) => {\r\n let newObj = state['Other Pre-Tax Costs / Contributions'][e];\r\n delete state['Other Pre-Tax Costs / Contributions'][e];\r\n state['Other Pre-Tax Costs / Contributions']['Deduction ' + i + ' Value'] = newObj;\r\n i++;\r\n });\r\n\r\n i = 1;\r\n Object.keys(state['Modified Other Pre-Tax Costs / Contributions']).forEach((e) => {\r\n let newObj = state['Modified Other Pre-Tax Costs / Contributions'][e];\r\n delete state['Modified Other Pre-Tax Costs / Contributions'][e];\r\n state['Modified Other Pre-Tax Costs / Contributions'][\r\n 'Modified Deduction ' + i + ' Value'\r\n ] = newObj;\r\n i++;\r\n });\r\n};\r\n\r\nexport const getNewState = (state, page, name, value) => {\r\n let newState = { ...state };\r\n\r\n if (name === 'Add Deduction') {\r\n reOrderDeductionNames(state);\r\n\r\n let nextDeductionObject = Object.keys(state['Other Pre-Tax Costs / Contributions']).length + 1;\r\n let newDeductionObjectName = 'Deduction ' + nextDeductionObject + ' Value';\r\n\r\n let newDeductionObject = {\r\n type: 'number',\r\n customInput: 'deduction',\r\n value: 0,\r\n help: 'Enter the monthly value of any other pre-tax deductions here.',\r\n showDeleteButton: true,\r\n };\r\n\r\n newState[page][newDeductionObjectName] = newDeductionObject;\r\n } else if (name === 'Add Modified Deduction') {\r\n reOrderDeductionNames(state);\r\n\r\n let nextDeductionObject =\r\n Object.keys(state['Modified Other Pre-Tax Costs / Contributions']).length + 1;\r\n let newDeductionObjectName = 'Modified Deduction ' + nextDeductionObject + ' Value';\r\n\r\n let newDeductionObject = {\r\n type: 'number',\r\n customInput: 'deduction',\r\n value: 0,\r\n help: 'Enter the monthly value of any other pre-tax deductions here.',\r\n showDeleteButton: true,\r\n };\r\n\r\n newState['Modified Other Pre-Tax Costs / Contributions'][\r\n newDeductionObjectName\r\n ] = newDeductionObject;\r\n } else if (name === 'Delete Deduction') {\r\n // For Delete Deduction, the id of the button matches the name in the state\r\n delete newState[page][value];\r\n reOrderDeductionNames(state);\r\n } else if (name === 'Delete Modified Deduction') {\r\n // For Delete Deduction, the id of the button matches the name in the state\r\n delete newState['Modified Other Pre-Tax Costs / Contributions'][value];\r\n reOrderDeductionNames(state);\r\n } else if (defaultState[page][name].type === 'number') {\r\n newState[page][name].value = +value;\r\n } else {\r\n newState[page][name].value = value;\r\n }\r\n\r\n // reset spouse values if changing marital status back to single\r\n if (name === 'Marital Status' && value === 'Single') {\r\n newState['General']['Spouse Gross Income'].value = 0;\r\n newState['General']['Spouse Loan Balance'].value = 0;\r\n newState['Taxes']['Filing Status'].value = 'Filing Separate';\r\n if (state['Health Insurance']['Insurance Coverage'].value === 'Employee + Spouse') {\r\n newState['Health Insurance']['Insurance Coverage'].value = 'Employee Only';\r\n }\r\n }\r\n\r\n // reset hsa contribution if changing plan type\r\n if (name === 'Insurance Type' && value !== 'HSA') {\r\n newState['Health Insurance']['Annual HSA Contribution'].value = 0;\r\n }\r\n\r\n // retirement contributions should update each other\r\n if (name === 'Retirement Percentage') {\r\n newState['Monthly Retirement Contribution']['Monthly Retirement Amount'].value = Math.round(\r\n (newState['General']['Client Gross Income'].value * (value / 100)) / 12\r\n );\r\n } else if (name === 'Monthly Retirement Amount') {\r\n newState['Monthly Retirement Contribution']['Retirement Percentage'].value = Math.round(\r\n (value / (newState['General']['Client Gross Income'].value / 12)) * 100\r\n );\r\n }\r\n\r\n // retirement contributions should update each other\r\n if (name === 'Modified Retirement Percentage') {\r\n newState['Monthly Retirement Contribution']['Modified Retirement Amount'].value = Math.round(\r\n (newState['General']['Client Gross Income'].value * (value / 100)) / 12\r\n );\r\n } else if (name === 'Modified Retirement Amount') {\r\n newState['Monthly Retirement Contribution'][\r\n 'Modified Retirement Percentage'\r\n ].value = Math.round((value / (newState['General']['Client Gross Income'].value / 12)) * 100);\r\n }\r\n\r\n // Update retirement if client gross income is changed\r\n if (name === 'Client Gross Income') {\r\n newState['Monthly Retirement Contribution']['Monthly Retirement Amount'].value = Math.round(\r\n (value * (newState['Monthly Retirement Contribution']['Retirement Percentage'].value / 100)) /\r\n 12\r\n );\r\n }\r\n\r\n //console.log(state, newState);\r\n return newState;\r\n};\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('planTool', types);\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\nimport { PlanToolValidator } from './validators';\r\n\r\nconst planToolValidator = new PlanToolValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/plan-tool',\r\n resourceType: 'plan-tool',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'planTool',\r\n actions,\r\n null,\r\n planToolValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst loadPolarisData = (id) => async (dispatch, getState) => {\r\n await dispatch(planToolLoadResource(id));\r\n await dispatch(\r\n operations.planToolHandleCacheChange({\r\n ...getState().planTool.cache,\r\n })\r\n );\r\n dispatch(actions.planToolLoadResourceSuccess());\r\n};\r\n\r\nconst {\r\n planToolLoadResource,\r\n planToolClearForm,\r\n planToolUpdateResource,\r\n planToolHandleFormChange,\r\n planToolHandleCacheChange,\r\n planToolCopyResourceToForm,\r\n planToolCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n planToolLoadResource,\r\n planToolClearForm,\r\n planToolUpdateResource,\r\n planToolHandleFormChange,\r\n planToolHandleCacheChange,\r\n planToolCreateResource,\r\n planToolCopyResourceToForm,\r\n loadPolarisData,\r\n};\r\n\r\nexport default operations;\r\n","import { FormValidator } from '../../../utils';\r\n\r\nexport class PlanToolValidator extends FormValidator {\r\n // Retirement Date validator\r\n projectedRetirementDate(validator) {\r\n validator.isRequired();\r\n validator.validDate();\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Chart as ChartJS, registerables } from 'chart.js-new';\r\nimport { Line } from 'react-chartjs-2';\r\nimport { usd } from '../components/state';\r\n\r\nChartJS.register(...registerables);\r\nChartJS.defaults.font.size = 16;\r\n\r\nconst chartData = (years) => ({\r\n labels: years.map((y) => y.id),\r\n datasets: [\r\n {\r\n label: 'Accumulated Savings',\r\n data: years.map((y) => y.accSavings),\r\n borderColor: 'rgb(24, 188, 112)',\r\n fill: true,\r\n backgroundColor: 'rgba(24, 188, 112, 0.25)',\r\n },\r\n ],\r\n});\r\n\r\nconst options = {\r\n interaction: { intersect: false },\r\n responsive: false,\r\n plugins: {\r\n tooltip: {\r\n mode: 'index',\r\n callbacks: {\r\n title: (ts) => `Year ${ts[0].label}`,\r\n label: (ts) =>\r\n ts.dataset.label === 'Yearly Savings'\r\n ? `Year ${ts.label} Savings: ${usd(ts.parsed.y)}`\r\n : `${ts.dataset.label}: ${usd(ts.parsed.y)}`,\r\n },\r\n },\r\n },\r\n scales: {\r\n x: { title: { display: true, text: 'Years' } },\r\n y: {\r\n title: { display: true, text: 'Savings' },\r\n ticks: {\r\n callback: (v) => usd(v),\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const PlanGraph = ({ years }) => (\r\n <div className=\"polaris-plan-graph\">\r\n <Line id=\"planGraph\" data={chartData(years)} options={options} width={775} height={400} />\r\n </div>\r\n);\r\n\r\nPlanGraph.propTypes = {\r\n years: t.arrayOf(t.object).isRequired,\r\n};\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { usd } from '../components/state';\r\nimport { CardTitle } from 'fiducius-ui';\r\n\r\nexport const PlanTable = ({ stdPayment, years, chartRef }) => (\r\n <div className=\"polaris-plan-table\">\r\n <div className=\"polaris-plan-table-window\" ref={chartRef}>\r\n <CardTitle>Plan Projection</CardTitle>\r\n <table>\r\n <thead>\r\n <tr>\r\n <td>Year</td>\r\n <td>\r\n Current Monthly\r\n <br />\r\n Payment\r\n </td>\r\n <td>\r\n New Monthly\r\n <br />\r\n Payment\r\n </td>\r\n <td>\r\n Yearly\r\n <br />\r\n Savings\r\n </td>\r\n <td>\r\n Accumulated\r\n <br />\r\n Loan Savings\r\n </td>\r\n <td>\r\n Retirement\r\n <br />\r\n Account\r\n <br />\r\n Accumulation\r\n </td>\r\n <td>\r\n HSA\r\n <br />\r\n Account\r\n </td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {years.map((y) => (\r\n <tr key={y.id}>\r\n <td>{y.id}</td>\r\n <td>{usd(stdPayment)}</td>\r\n <td>{usd(y.payment)}</td>\r\n <td>{usd(y.savings)}</td>\r\n <td>{usd(y.accSavings)}</td>\r\n <td>{usd(y.accRetirement)}</td>\r\n <td>{usd(y.accHsa)}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n);\r\n\r\nPlanTable.propTypes = {\r\n stdPayment: t.number.isRequired,\r\n years: t.arrayOf(t.object).isRequired,\r\n};\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { usd } from './state';\r\nimport { CardTitle } from 'fiducius-ui';\r\n\r\nexport const PlanTableCompare = ({ years, yearsToCompare, type, compareRef }) => {\r\n return (\r\n <div className=\"polaris-plan-table\">\r\n <div className=\"polaris-plan-table-window\" ref={compareRef}>\r\n <CardTitle>Modified Contributions</CardTitle>\r\n <table>\r\n <thead>\r\n <tr>\r\n <td>Year</td>\r\n <td>\r\n New Monthly\r\n <br />\r\n Payment\r\n </td>\r\n <td>\r\n Modified Monthly\r\n <br />\r\n Payment\r\n </td>\r\n <td>\r\n Accumulated\r\n <br />\r\n Loan Savings\r\n </td>\r\n <td>\r\n Modified\r\n <br />\r\n Accumulated\r\n <br />\r\n Loan Savings\r\n </td>\r\n <td>\r\n Retirement\r\n <br />\r\n Account\r\n <br />\r\n Accumulation\r\n </td>\r\n <td>\r\n Modified\r\n <br />\r\n Retirement\r\n <br />\r\n Account\r\n <br />\r\n Accumulation\r\n </td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {years.map((y) => (\r\n <tr key={y.id}>\r\n <td>{y.id}</td>\r\n <td>{usd(y.payment)}</td>\r\n <td>{usd(yearsToCompare[y.id - 1].payment)}</td>\r\n <td>{usd(y.accSavings)}</td>\r\n <td>{usd(yearsToCompare[y.id - 1].accSavings)}</td>\r\n <td>{usd(y.accRetirement)}</td>\r\n <td>{usd(yearsToCompare[y.id - 1].accRetirement)}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nPlanTableCompare.propTypes = {\r\n stdPayment: t.number.isRequired,\r\n years: t.arrayOf(t.object).isRequired,\r\n};\r\n","import React, { useContext } from 'react';\r\n\r\nimport { PlanGraph } from './plan-graph';\r\nimport { PlanTable } from './plan-table';\r\nimport { AppContext } from '../containers/plan-tool';\r\nimport { forgiveness } from './state';\r\nimport { PlanTableCompare } from './plan-table-compare';\r\n\r\nexport const DataColumn = React.forwardRef((props, ref) => {\r\n const { state } = useContext(AppContext);\r\n const years = forgiveness(state, false);\r\n const projectedYears = forgiveness(state, true);\r\n return (\r\n <div className=\"polaris-data-column\">\r\n <>\r\n <PlanTable\r\n stdPayment={state.General['Current Loan Payment'].value}\r\n years={years}\r\n chartRef={ref}\r\n />\r\n <PlanGraph years={years} />\r\n <PlanTableCompare\r\n stdPayment={state.General['Current Loan Payment'].value}\r\n years={years}\r\n yearsToCompare={projectedYears}\r\n compareRef={props.compareChartRef}\r\n />\r\n </>\r\n </div>\r\n );\r\n});\r\n","import { animated, useSpring } from '@react-spring/web';\r\nimport React, { useEffect, useState } from 'react';\r\nimport t from 'prop-types';\r\n\r\nconst duration = 100;\r\nconst CENTER = 'translateX(0%)';\r\nconst RIGHT = 'translateX(100%)';\r\nconst LEFT = 'translateX(-100%)';\r\n\r\nexport const Fade = ({ children, reverse = false, show, id }) => {\r\n // return <div>{children}</div>;\r\n const [skip, setSkip] = useState(true);\r\n const out = reverse ? RIGHT : LEFT;\r\n const [styles, spring] = useSpring(() => ({\r\n config: { duration },\r\n opacity: show ? 1 : 0,\r\n transform: show ? CENTER : out,\r\n }));\r\n\r\n useEffect(() => {\r\n setSkip(false);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (skip) return;\r\n if (show) {\r\n spring.stop();\r\n spring.set({ opacity: 0, transform: out });\r\n spring.update({ opacity: 1, transform: CENTER });\r\n spring.start();\r\n } else {\r\n spring.stop();\r\n spring.set({ opacity: 1, transform: CENTER });\r\n spring.update({ opacity: 0, transform: out });\r\n spring.start();\r\n }\r\n // Need this to skip the first render.\r\n // All deps except `skip` should be present\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [show, spring, out]);\r\n\r\n return (\r\n <animated.div className=\"polaris-fader\" style={styles}>\r\n {children}\r\n </animated.div>\r\n );\r\n};\r\n\r\nFade.propTypes = {\r\n children: t.node.isRequired,\r\n id: t.string.isRequired,\r\n reverse: t.bool,\r\n show: t.bool.isRequired,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { Button } from 'fiducius-ui';\r\n\r\nimport { FocusContext } from '../containers/plan-tool';\r\n\r\nexport const FocusButton = ({ focus }) => {\r\n const { focusPage } = useContext(FocusContext);\r\n return (\r\n <Button brand=\"primary\" onClick={() => focusPage(focus)}>\r\n {focus ? 'See more details' : 'Back to summary'}\r\n </Button>\r\n );\r\n};\r\n\r\nFocusButton.propTypes = {};\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport { Button, InputMask, InputError, InputWrapper } from 'fiducius-ui';\r\nimport { convertIsoToSlash, safeAccess } from '../../../utils';\r\n\r\n// export type ChangeEvent =\r\n// | FormEvent<HTMLInputElement>\r\n// | FormEvent<HTMLSelectElement>;\r\n\r\n// type InputHandler = { onChange: (e: FormEvent<HTMLInputElement>) => void };\r\n// type SelectHandler = { onChange: (e: FormEvent<HTMLSelectElement>) => void };\r\n\r\n// type BaseInput = { hide?: (state: AppState) => boolean; help?: ReactNode };\r\n// export type Text = BaseInput & { type: 'text'; value: string };\r\n// export type Num = BaseInput & { type: 'number'; value: number };\r\n// export type Filing = BaseInput & {\r\n// type: 'filing';\r\n// value: 'Filing Separate' | 'Filing Jointly';\r\n// };\r\n// export type Marital = BaseInput & {\r\n// type: 'marital';\r\n// value: 'Married' | 'Single';\r\n// };\r\n// export type Insurance = BaseInput & {\r\n// type: 'insurance';\r\n// value: 'HSA' | 'PPO' | 'HMO';\r\n// };\r\n// export type Coverage = BaseInput & {\r\n// type: 'coverage';\r\n// value: 'Employee Only' | 'Employee + Spouse' | 'Employee + Family';\r\n// };\r\n\r\n// export type Inputs = {\r\n// [key: string]: Text | Num | Marital | Insurance | Coverage;\r\n// };\r\n\r\n// type BaseProps = { name: string; hidden: boolean; withHelp?: boolean };\r\n// type TextProps = Text & BaseProps & InputHandler;\r\n// type NumberProps = Num & BaseProps & InputHandler;\r\n// type FilingProps = Filing & BaseProps & SelectHandler;\r\n// type MaritalProps = Marital & BaseProps & SelectHandler;\r\n// type InsuranceProps = Insurance & BaseProps & SelectHandler;\r\n// type CoverageProps = Coverage & BaseProps & SelectHandler;\r\n// type InputProps =\r\n// | TextProps\r\n// | NumberProps\r\n// | FilingProps\r\n// | MaritalProps\r\n// | InsuranceProps\r\n// | CoverageProps;\r\n\r\nconst inputProps = {\r\n name: t.string.isRequired,\r\n onChange: t.func.isRequired,\r\n value: t.any,\r\n};\r\n\r\nconst StyledButton = styled(Button)`\r\n margin-right: 1em;\r\n`;\r\n\r\nconst DeleteButtonDiv = styled.div`\r\n position: relative;\r\n width: 100%;\r\n padding-right: 15px;\r\n padding-left: 0px;\r\n flex: 0 0 33.333333%;\r\n max-width: 33.333333%;\r\n`;\r\n\r\nconst DeductionInputDiv = styled.div`\r\n position: relative;\r\n width: 100%;\r\n padding-right: 5px;\r\n padding-left: 15px;\r\n flex: 0 0 66.666667%;\r\n max-width: 66.666667%;\r\n`;\r\n\r\nconst IDRTypeInput = (props) => (\r\n <InputWrapper>\r\n <select name={props.name} onChange={props.onChange} value={props.value}>\r\n <option value=\"IBR\">IBR</option>\r\n <option value=\"ICR\">ICR</option>\r\n <option value=\"PAYE\">PAYE</option>\r\n <option value=\"REPAYE\">REPAYE</option>\r\n <option value=\"SAVE\">SAVE</option>\r\n </select>\r\n </InputWrapper>\r\n);\r\nIDRTypeInput.propTypes = inputProps;\r\n\r\nconst PlanTypeInput = (props) => (\r\n <InputWrapper>\r\n <select name={props.name} onChange={props.onChange} value={props.value}>\r\n <option value=\"NFP\">NFP</option>\r\n <option value=\"FP20YR\">FP - 20yr</option>\r\n <option value=\"FP25YR\">FP - 25yr</option>\r\n </select>\r\n </InputWrapper>\r\n);\r\nPlanTypeInput.propTypes = inputProps;\r\n\r\nconst FilingInput = (props) => (\r\n <InputWrapper>\r\n <select name={props.name} onChange={props.onChange} value={props.value}>\r\n <option value=\"Filing Separate\">Filing Separate</option>\r\n <option value=\"Filing Jointly\">Filing Jointly</option>\r\n </select>\r\n </InputWrapper>\r\n);\r\nFilingInput.propTypes = inputProps;\r\n\r\nconst MaritalInput = (props) => (\r\n <InputWrapper>\r\n <select name={props.name} onChange={props.onChange} value={props.value}>\r\n <option value=\"Single\">Single</option>\r\n <option value=\"Married\">Married</option>\r\n </select>\r\n </InputWrapper>\r\n);\r\nMaritalInput.propTypes = inputProps;\r\n\r\nconst InsuranceInput = (props) => (\r\n <InputWrapper>\r\n <select name={props.name} onChange={props.onChange} value={props.value}>\r\n <option value=\"HSA\">HSA</option>\r\n <option value=\"PPO\">PPO</option>\r\n <option value=\"HMO\">HMO</option>\r\n </select>\r\n </InputWrapper>\r\n);\r\nInsuranceInput.propTypes = inputProps;\r\n\r\nconst CoverageInput = (props) => (\r\n <InputWrapper>\r\n <select name={props.name} onChange={props.onChange} value={props.value}>\r\n <option value=\"Employee Only\">Employee Only</option>\r\n <option value=\"Employee + Spouse\">Employee + Spouse</option>\r\n <option value=\"Employee + Family\">Employee + Family</option>\r\n </select>\r\n </InputWrapper>\r\n);\r\nCoverageInput.propTypes = inputProps;\r\n\r\nconst DeductionInput = (props) => (\r\n <>\r\n <div className=\"row\">\r\n <DeductionInputDiv>\r\n <InputWrapper>\r\n <input\r\n name={props.name}\r\n value={props.value}\r\n onChange={props.onChange}\r\n min=\"0\"\r\n type={props.type}\r\n onFocus={(e) => e.target.select()}\r\n />\r\n </InputWrapper>\r\n </DeductionInputDiv>\r\n <DeleteButtonDiv>\r\n {props.showDeleteButton && (\r\n <StyledButton brand=\"primary\" name={props.name} onClick={props.onClick}>\r\n Delete\r\n </StyledButton>\r\n )}\r\n </DeleteButtonDiv>\r\n </div>\r\n </>\r\n);\r\nDeductionInput.propTypes = inputProps;\r\n\r\nconst HtmlInput = ({ name, onChange, value, type, min = 0 }) => {\r\n return (\r\n <InputWrapper>\r\n <input\r\n name={name}\r\n value={value}\r\n onChange={onChange}\r\n min={min}\r\n type={type}\r\n onFocus={(e) => e.target.select()}\r\n />\r\n </InputWrapper>\r\n );\r\n};\r\nHtmlInput.propTypes = { ...inputProps };\r\n\r\nconst HtmlInputMaskDate = ({ name, onChange, value, errors = {}, type, min = 0 }) => {\r\n return (\r\n <>\r\n <InputWrapper error={!!errors.projectedRetirementDate}>\r\n <InputError>{safeAccess(errors, 'projectedRetirementDate.detail')}</InputError>\r\n <InputMask\r\n value={convertIsoToSlash(value)}\r\n mask=\"##/##/####\"\r\n name={name}\r\n placeholder=\"MM/DD/YYYY\"\r\n onChange={onChange}\r\n />\r\n </InputWrapper>\r\n </>\r\n );\r\n};\r\nHtmlInputMaskDate.propTypes = { ...inputProps };\r\n\r\nconst Input = ({ withHelp, help, ...props }) => {\r\n if (props.hidden) return null;\r\n let delegate = null;\r\n if (props.type === 'idrtype') delegate = <IDRTypeInput {...props} />;\r\n if (props.type === 'plantype') delegate = <PlanTypeInput {...props} />;\r\n if (props.customInput === 'deduction') delegate = <DeductionInput {...props} />;\r\n else if (props.type === 'number') delegate = <HtmlInput {...props} />;\r\n if (props.type === 'filing') delegate = <FilingInput {...props} />;\r\n if (props.type === 'marital') delegate = <MaritalInput {...props} />;\r\n if (props.type === 'insurance') delegate = <InsuranceInput {...props} />;\r\n if (props.type === 'coverage') delegate = <CoverageInput {...props} />;\r\n if (props.type === 'date') delegate = <HtmlInputMaskDate {...props} />;\r\n\r\n if (!delegate) return null;\r\n const hasLabel = props.label;\r\n return (\r\n <>\r\n {hasLabel ? (\r\n <label htmlFor={props.label}>{props.label}</label>\r\n ) : (\r\n <label htmlFor={props.name}>{props.name}</label>\r\n )}\r\n {withHelp && help && <p className=\"polaris-help\">{help}</p>}\r\n {delegate}\r\n </>\r\n );\r\n};\r\nInput.propTypes = {\r\n ...inputProps,\r\n withHelp: t.bool,\r\n help: t.string,\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors } = state.planTool;\r\n return {\r\n errors: errors,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = () => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Input);\r\n","import React, { useContext } from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\n\r\nimport Input from './input';\r\nimport { Button } from 'fiducius-ui';\r\nimport { AppContext } from '../containers/plan-tool';\r\n\r\nconst StyledButton = styled(Button)`\r\n margin-right: 1em;\r\n margin-top: 0.5em;\r\n width: inherit;\r\n`;\r\n\r\nexport const FocusPageInputs = ({ page }) => {\r\n const { state, onChange, onChangeDeductionAction } = useContext(AppContext);\r\n if (!page) return null;\r\n return (\r\n <>\r\n {Object.entries(state[page]).map(([k, v]) => (\r\n <Input\r\n {...v}\r\n key={`focus-${page}-${k}`}\r\n name={k}\r\n hidden={v && v.hide && !!v.hide(state)}\r\n onChange={onChange(page)}\r\n onClick={onChangeDeductionAction(page, 'Delete Deduction')}\r\n withHelp\r\n />\r\n ))}\r\n {page === 'Other Pre-Tax Costs / Contributions' && (\r\n <div className=\"row\">\r\n <div className=\"col-2\">\r\n <StyledButton brand=\"primary\" onClick={onChangeDeductionAction(page, 'Add Deduction')}>\r\n Add\r\n </StyledButton>\r\n </div>\r\n </div>\r\n )}\r\n {page === 'Modified Other Pre-Tax Costs / Contributions' && (\r\n <div className=\"row\">\r\n <div className=\"col-2\">\r\n <StyledButton\r\n brand=\"primary\"\r\n onClick={onChangeDeductionAction(\r\n 'Modified Other Pre-Tax Costs / Contributions',\r\n 'Add Propsed Deduction'\r\n )}\r\n >\r\n Add\r\n </StyledButton>\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nFocusPageInputs.propTypes = {\r\n page: t.string,\r\n};\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\n\r\nimport { CardTitle } from 'fiducius-ui';\r\nimport { FocusButton } from './focus-button';\r\nimport { FocusPageInputs } from './focus-page-inputs';\r\n\r\nexport const FocusPage = ({ page }) => {\r\n return (\r\n <div className=\"polaris-focus-page\">\r\n <CardTitle>{page}</CardTitle>\r\n <FocusPageInputs page={page} />\r\n <FocusButton focus={null} />\r\n </div>\r\n );\r\n};\r\n\r\nFocusPage.propTypes = {\r\n page: t.string.isRequired,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport t from 'prop-types';\r\nimport { CardTitle } from 'fiducius-ui';\r\nimport { FocusButton } from './focus-button';\r\nimport Input from './input';\r\nimport { AppContext } from '../containers/plan-tool';\r\n\r\nexport const GeneralCard = ({ inputs, page }) => {\r\n const { state, onChange } = useContext(AppContext);\r\n const inputDict = Object.entries(inputs).filter((o) => o[1].width !== 'full');\r\n const fullDict = Object.entries(inputs).filter((o) => o[1].width === 'full');\r\n const half = Math.ceil(inputDict.length / 2);\r\n const left = inputDict.slice(0, half);\r\n const right = inputDict.slice(half);\r\n return (\r\n <div className=\"polaris-input-card full\" key=\"General\">\r\n <CardTitle>{page}</CardTitle>\r\n\r\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\r\n <div style={{ width: '100%' }}>\r\n {fullDict.map(([k, v]) => (\r\n <Input\r\n {...v}\r\n key={`General-${k}`}\r\n name={k}\r\n hidden={v && v.hide && !!v.hide(state)}\r\n onChange={onChange(page)}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\r\n <div style={{ width: 'calc(50% - 2rem)' }}>\r\n {left.map(([k, v]) => (\r\n <Input\r\n {...v}\r\n key={`General-${k}`}\r\n name={k}\r\n hidden={v && v.hide && !!v.hide(state)}\r\n onChange={onChange(page)}\r\n />\r\n ))}\r\n </div>\r\n <div style={{ width: 'calc(50% - 2rem)' }}>\r\n {right.map(([k, v]) => (\r\n <Input\r\n {...v}\r\n key={`General-${k}`}\r\n name={k}\r\n hidden={v && v.hide && !!v.hide(state)}\r\n onChange={onChange(page)}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n <FocusButton focus={page} />\r\n </div>\r\n );\r\n};\r\n\r\nGeneralCard.propTypes = {\r\n inputs: t.object.isRequired,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { CardTitle, Button } from 'fiducius-ui';\r\nimport { FocusButton } from './focus-button';\r\nimport Input from './input';\r\nimport { AppContext } from '../containers/plan-tool';\r\n\r\nconst StyledButton = styled(Button)`\r\n margin-right: 1em;\r\n width: inherit;\r\n`;\r\n\r\nexport const PretaxCard = ({ inputs, page, modifiedInputs }) => {\r\n const { state, onChange, onChangeDeductionAction } = useContext(AppContext);\r\n const left = Object.entries(inputs);\r\n const right = Object.entries(modifiedInputs);\r\n return (\r\n <div className=\"polaris-input-card full\" key=\"General\">\r\n <CardTitle>{page}</CardTitle>\r\n\r\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\r\n <div style={{ width: 'calc(50% - 2rem)' }}>\r\n {left.map(([k, v]) => (\r\n <Input\r\n {...v}\r\n key={`General-${k}`}\r\n name={k}\r\n hidden={v && v.hide && !!v.hide(state)}\r\n onChange={onChange(page)}\r\n onClick={onChangeDeductionAction(page, 'Delete Deduction')}\r\n />\r\n ))}\r\n <div className=\"row\">\r\n <div className=\"col-4\">\r\n <StyledButton\r\n brand=\"primary\"\r\n onClick={onChangeDeductionAction(page, 'Add Deduction')}\r\n >\r\n Add\r\n </StyledButton>\r\n </div>\r\n </div>\r\n <FocusButton focus={page} />\r\n </div>\r\n <div style={{ width: 'calc(50% - 2rem)' }}>\r\n {right.map(([k, v]) => (\r\n <Input\r\n {...v}\r\n key={`General-${k}`}\r\n name={k}\r\n hidden={v && v.hide && !!v.hide(state)}\r\n onChange={onChange('Modified Other Pre-Tax Costs / Contributions')}\r\n onClick={onChangeDeductionAction(\r\n 'Modified Other Pre-Tax Costs / Contributions',\r\n 'Delete Modified Deduction'\r\n )}\r\n />\r\n ))}\r\n <div className=\"row\">\r\n <div className=\"col-4\">\r\n <StyledButton\r\n brand=\"primary\"\r\n onClick={onChangeDeductionAction(\r\n 'Modified Other Pre-Tax Costs / Contributions',\r\n 'Add Modified Deduction'\r\n )}\r\n >\r\n Add\r\n </StyledButton>\r\n </div>\r\n </div>\r\n <FocusButton focus={'Modified Other Pre-Tax Costs / Contributions'} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nPretaxCard.propTypes = {\r\n inputs: t.object.isRequired,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport t from 'prop-types';\r\n\r\nimport Input from './input';\r\nimport { CardTitle } from 'fiducius-ui';\r\nimport { AppContext } from '../containers/plan-tool';\r\nimport { FocusButton } from './focus-button';\r\nimport { GeneralCard } from './general-card';\r\nimport { PretaxCard } from './pretax-card';\r\n\r\nexport const InputCard = ({ page, inputs, modifiedInputs }) => {\r\n const { state, onChange, onChangeDeductionAction } = useContext(AppContext);\r\n if (page === 'General') return <GeneralCard inputs={inputs} page={page} />;\r\n else if (page === 'Monthly Retirement Contribution')\r\n return <GeneralCard inputs={inputs} page={page} />;\r\n else if (page === 'Other Pre-Tax Costs / Contributions')\r\n return <PretaxCard inputs={inputs} modifiedInputs={modifiedInputs} page={page} />;\r\n return (\r\n <div className=\"polaris-input-card\" key={page}>\r\n <CardTitle>{page}</CardTitle>\r\n {Object.entries(inputs).map(([k, v]) => (\r\n <Input\r\n {...v}\r\n key={`${page}-${k}`}\r\n name={k}\r\n hidden={v && v.hide && !!v.hide(state)}\r\n onChange={onChange(page)}\r\n onClick={onChangeDeductionAction(page, 'Delete Deduction')}\r\n />\r\n ))}\r\n <FocusButton focus={page} />\r\n </div>\r\n );\r\n};\r\n\r\nInputCard.propTypes = {\r\n page: t.string.isRequired,\r\n inputs: t.object.isRequired,\r\n};\r\n","import React, { forwardRef, useContext } from 'react';\r\n\r\nimport { InputCard } from './input-card';\r\nimport { AppContext } from '../containers/plan-tool';\r\n\r\nexport const InputGrid = forwardRef((_props, ref) => {\r\n const { state } = useContext(AppContext);\r\n const {\r\n General: general,\r\n 'Monthly Retirement Contribution': month,\r\n 'Other Pre-Tax Costs / Contributions': pretax,\r\n 'Modified Other Pre-Tax Costs / Contributions': modifiedPretax,\r\n ...rest\r\n } = state;\r\n return (\r\n <div ref={ref} className=\"polaris-input-grid\">\r\n <div className=\"polaris-input-sub-grid\">\r\n <InputCard key=\"General\" page=\"General\" inputs={general} />\r\n </div>\r\n <div className=\"polaris-input-sub-grid\">\r\n <InputCard\r\n key=\"Monthly Retirement Contribution\"\r\n page=\"Monthly Retirement Contribution\"\r\n inputs={month}\r\n />\r\n </div>\r\n <div className=\"polaris-input-sub-grid\">\r\n <InputCard\r\n key=\"Other Pre-Tax Costs / Contributions\"\r\n page=\"Other Pre-Tax Costs / Contributions\"\r\n inputs={pretax}\r\n modifiedInputs={modifiedPretax}\r\n />\r\n </div>\r\n <div className=\"polaris-input-sub-grid\">\r\n {Object.entries(rest)\r\n .filter(([key]) => !key.includes('PovertyGuidelines') && !key.includes('UIData'))\r\n .map(([page, inputs]) => (\r\n <InputCard key={page} page={page} inputs={inputs} />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nInputGrid.displayName = 'InputGrid';\r\n","import React, { useContext, useEffect, useLayoutEffect, useRef } from 'react';\r\n\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Form, Button } from 'fiducius-ui';\r\nimport { getUserId } from '../../../auth';\r\nimport { mergeRequestStatuses } from '../../../utils';\r\n\r\nimport {\r\n planToolCopyResourceToForm,\r\n planToolHandleFormChange,\r\n planToolUpdateResource,\r\n} from '../redux/operations';\r\n\r\nimport { DataColumn } from './data-column';\r\nimport { Fade } from './fade';\r\nimport { Fade as OrigFade } from '../../../routing';\r\nimport { FocusPage } from './focus-page';\r\nimport { InputGrid } from './input-grid';\r\nimport { AppContext, FocusContext } from '../containers/plan-tool';\r\n\r\nconst Summary = ({ id, request, formDefaults = {}, loadFormObject, savePlanToolData, errors }) => {\r\n const scrollDiv = useRef(null);\r\n const absFix = useRef(null);\r\n const gridRef = useRef(null);\r\n const chartRef = useRef(null);\r\n const compareChartRef = useRef(null);\r\n const { state } = useContext(AppContext);\r\n const { focused, focusPage } = useContext(FocusContext);\r\n\r\n useEffect(() => {\r\n formDefaults = loadFormObject(id);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (scrollDiv.current) {\r\n scrollDiv.current.scrollTo(0, 0); // eslint-disable-line no-unused-expressions\r\n scrollDiv.current.scrollIntoView(); // eslint-disable-line no-unused-expressions\r\n }\r\n }, [scrollDiv, focused]);\r\n\r\n useLayoutEffect(() => {\r\n if (absFix.current && gridRef.current) {\r\n absFix.current.style.height = `${gridRef.current.scrollHeight + 50}px`;\r\n }\r\n }, [absFix, gridRef]);\r\n\r\n const onSubmit = () => {\r\n //savePlanToolData(id);\r\n focusPage('Confirmation');\r\n\r\n //delete errors.na;\r\n //update(form.id);\r\n\r\n //setHasSubmitted(true);\r\n };\r\n\r\n const onCancel = () => {\r\n focusPage(null);\r\n\r\n //delete errors.na;\r\n //update(form.id);\r\n\r\n //setHasSubmitted(true);\r\n };\r\n\r\n const onSave = () => {\r\n state['UIData']['ChartData'].value = chartRef.current.innerHTML;\r\n state['UIData']['ComparisonChartData'].value = compareChartRef.current.innerHTML;\r\n state['UIData']['GraphData'].value = document.getElementById('planGraph').toDataURL();\r\n loadFormObject();\r\n savePlanToolData(id);\r\n\r\n //focusPage('Confirmation');\r\n\r\n //delete errors.na;\r\n //update(form.id);\r\n\r\n //setHasSubmitted(true);\r\n };\r\n\r\n const checkNoErrors = () => {\r\n return !errors.projectedRetirementDate || errors.projectedRetirementDate.detail === undefined;\r\n };\r\n\r\n return (\r\n <div className=\"polaris polaris-app\">\r\n <div className=\"polaris-title\">\r\n <h1>\r\n Polaris Student Loan Financial Planner<sup> SM</sup>\r\n </h1>\r\n </div>\r\n\r\n <Fade id=\"confirmation_fade\" show={focused === 'Confirmation'}>\r\n <div className=\"polaris-container\">\r\n <p>New Page Here</p>\r\n <p>\r\n <Button brand=\"primary\" onClick={onSave}>\r\n Save\r\n </Button>\r\n <Button brand=\"primary\" onClick={onCancel}>\r\n Cancel\r\n </Button>\r\n </p>\r\n <AsyncLoader request={request}>\r\n <DataColumn request={request} />\r\n </AsyncLoader>\r\n </div>\r\n </Fade>\r\n\r\n <Fade id=\"main_fade\" show={focused !== 'Confirmation'}>\r\n <div className=\"polaris-container\">\r\n <div className=\"polaris-input-column\" ref={scrollDiv}>\r\n <div ref={absFix} />\r\n <Fade show={focused === null} id=\"grid\">\r\n <Form defaults={formDefaults} id={'planToolForm'}>\r\n {/* <Form defaults={formDefaults} id={'planToolForm'} onSubmit={onSubmit}> */}\r\n\r\n <InputGrid ref={gridRef} key=\"grid\" />\r\n\r\n {/* <OrigFade id=\"submit_fade\" show={checkNoErrors()}>\r\n <Button brand=\"primary\" onClick={onSubmit}>\r\n Submit\r\n </Button>\r\n </OrigFade> */}\r\n </Form>\r\n </Fade>\r\n {Object.keys(state).map((p) => (\r\n <Fade key={p} show={focused === p} reverse id={p}>\r\n <FocusPage page={p} />\r\n </Fade>\r\n ))}\r\n </div>\r\n <AsyncLoader request={request}>\r\n <DataColumn\r\n request={request.isLoading}\r\n ref={chartRef}\r\n compareChartRef={compareChartRef}\r\n />\r\n </AsyncLoader>\r\n </div>\r\n </Fade>\r\n </div>\r\n );\r\n};\r\n\r\nSummary.propTypes = {\r\n actionRequest: t.object,\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n hasData: t.bool,\r\n id: t.string,\r\n permissions: t.object,\r\n request: t.object,\r\n modeler: t.object,\r\n updateFormState: t.func.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.planTool;\r\n return {\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n form: form,\r\n errors: errors,\r\n id: getUserId(state),\r\n request: state.planTool.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n updateFormState: (data, attributes) => dispatch(planToolHandleFormChange(data, attributes)),\r\n handleForm: (data, attributes) => dispatch(planToolHandleFormChange(data, attributes)),\r\n hydrateForm: async (id) => await dispatch(planToolCopyResourceToForm(id)),\r\n savePlanToolData: async (id) => await dispatch(planToolUpdateResource(id)),\r\n loadFormFromData: async (id) => await dispatch(planToolCopyResourceToForm(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Summary);\r\n","import { safeAccess } from '../../../utils';\r\n\r\nexport const getBenefitData = (state, id) => safeAccess(state, `planTool.cache[${id}]`, {});\r\n","import React, { createContext, useState, useEffect } from 'react';\r\nimport { defaultState, getNewState } from '../components/state';\r\nimport { connect } from 'react-redux';\r\nimport Summary from '../components/summary';\r\nimport '../styles/styles.css';\r\n\r\nimport { planToolHandleFormChange, loadPolarisData } from '../redux/operations';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { getBenefitData } from '../redux/selectors';\r\n\r\nexport const AppContext = createContext({\r\n state: defaultState,\r\n onChange: () => () => {},\r\n onChangeDeductionAction: () => () => {},\r\n});\r\n\r\nexport const FocusContext = createContext({\r\n focusPage: () => {},\r\n focused: null,\r\n});\r\n\r\nconst PlanTool = ({ handleForm, defaultData, id, loadData2 }) => {\r\n const [focused, setFocused] = useState(null);\r\n const focusPage = (page) => {\r\n setFocused(page);\r\n };\r\n\r\n const [state, setState] = useState(defaultState);\r\n const [dataLoaded, setDataLoaded] = useState(false);\r\n const onChange = (page) => (e) => {\r\n const { name, value } = e.currentTarget;\r\n setState((s) => getNewState(s, page, name, value));\r\n };\r\n\r\n useEffect(() => {\r\n loadData2(id).then(() => setDataLoaded(true));\r\n }, []);\r\n\r\n useEffect(() => {\r\n loadFormObject();\r\n }, [state]);\r\n\r\n useEffect(() => {\r\n if (Object.keys(defaultData).length > 0) {\r\n state['PovertyGuidelines'] = defaultData.povertyTable;\r\n\r\n // Set the default values in the state object\r\n state['General']['Plan Type'].value =\r\n defaultData.planType === null ? state['General']['Plan Type'].value : defaultData.planType;\r\n state['General']['Plan Type'].multiplier =\r\n defaultData.planTypeMultiplier === null ? 1.0 : defaultData.planTypeMultiplier;\r\n state['General']['Household Size'].value = defaultData.householdSize;\r\n state['General']['Marital Status'].value = defaultData.maritalStatus;\r\n state['General']['Client Gross Income'].value = defaultData.clientGrossIncome;\r\n state['General']['Spouse Gross Income'].value = defaultData.spouseGrossIncome;\r\n state['General']['IDR Type'].value =\r\n defaultData.idrType === null ? state['General']['IDR Type'].value : defaultData.idrType;\r\n state['General']['Client Loan Balance'].value = defaultData.clientLoanBalance;\r\n state['General']['Spouse Loan Balance'].value = defaultData.spouseLoanBalance;\r\n state['General']['Current Loan Payment'].value = defaultData.currentLoanPayment;\r\n state['General']['Qualifying Payments'].value = defaultData.qualifyingPayments;\r\n\r\n state['Taxes']['Filing Status'].value = defaultData.filingStatus;\r\n state['Taxes']['Tax Cost'].value = defaultData.taxCost;\r\n\r\n state['Monthly Retirement Contribution']['projectedRetirementDate'].value =\r\n defaultData.projectedRetirementDate === null ? '' : defaultData.projectedRetirementDate;\r\n state['Monthly Retirement Contribution']['Retirement Percentage'].value =\r\n defaultData.retirementPercentage;\r\n state['Monthly Retirement Contribution']['Monthly Retirement Amount'].value =\r\n defaultData.monthlyRetirementAmount;\r\n state['Monthly Retirement Contribution']['Modified Retirement Percentage'].value =\r\n defaultData.modifiedRetirementPercentage;\r\n state['Monthly Retirement Contribution']['Modified Retirement Amount'].value =\r\n defaultData.modifiedMonthlyRetirementAmount;\r\n\r\n state['Health Insurance']['Insurance Type'].value = defaultData.insuranceType;\r\n state['Health Insurance']['Insurance Coverage'].value = defaultData.insuranceCoverage;\r\n state['Health Insurance']['Pre-Tax Insurance Cost'].value = defaultData.preTaxInsuranceCost;\r\n state['Health Insurance']['Annual HSA Contribution'].value =\r\n defaultData.annualHsaContribution;\r\n\r\n // Other Pre-Tax Costs / Contributions\r\n defaultData.deductions &&\r\n defaultData.deductions.map((k, v) => {\r\n state['Other Pre-Tax Costs / Contributions'][k.name] = Object.assign({\r\n type: 'number',\r\n customInput: 'deduction',\r\n value: k.value,\r\n help: 'Enter the monthly value of any other pre-tax deductions here.',\r\n showDeleteButton: v !== 0,\r\n });\r\n });\r\n\r\n defaultData.modifiedDeductions &&\r\n defaultData.modifiedDeductions.map((k, v) => {\r\n state['Modified Other Pre-Tax Costs / Contributions'][k.name] = Object.assign({\r\n type: 'number',\r\n customInput: 'deduction',\r\n value: k.value,\r\n help: 'Enter the monthly value of any other pre-tax deductions here.',\r\n showDeleteButton: v !== 0,\r\n });\r\n });\r\n\r\n loadFormObject();\r\n } else {\r\n state['PovertyGuidelines'] = {};\r\n }\r\n }, [dataLoaded]);\r\n\r\n const onChangeDeductionAction = (page, action) => (e) => {\r\n const { name } = e.currentTarget;\r\n setState((s) => getNewState(s, page, action, name));\r\n };\r\n\r\n const loadFormObject = () => {\r\n const {\r\n General: general,\r\n 'Health Insurance': healthInsurance,\r\n 'Monthly Retirement Contribution': monthlyRetirementContribution,\r\n Taxes: taxes,\r\n } = state;\r\n const { 'Other Pre-Tax Costs / Contributions': otherPreTaxCosts } = state;\r\n const { 'Modified Other Pre-Tax Costs / Contributions': modifiedOtherPreTaxCosts } = state;\r\n const { UIData: UIData } = state;\r\n\r\n const mergedObject = {\r\n ...general,\r\n ...healthInsurance,\r\n ...monthlyRetirementContribution,\r\n ...taxes,\r\n ...UIData,\r\n };\r\n\r\n let formObject = Object.keys(mergedObject).reduce((tmp, x) => {\r\n tmp[x] = mergedObject[x].value;\r\n\r\n return tmp;\r\n }, {});\r\n\r\n let index = 0;\r\n let deductionArray = [];\r\n let deductionsObjects = { ...otherPreTaxCosts };\r\n for (let value in deductionsObjects) {\r\n let newDeduction = {\r\n name: Object.keys(otherPreTaxCosts)[index],\r\n value: deductionsObjects[value].value,\r\n };\r\n deductionArray.push(newDeduction);\r\n index += 1;\r\n }\r\n\r\n index = 0;\r\n let modifiedDeductionArray = [];\r\n let modifiedDeductionsObjects = { ...modifiedOtherPreTaxCosts };\r\n for (let value in modifiedDeductionsObjects) {\r\n let newModifiedDeduction = {\r\n name: Object.keys(modifiedOtherPreTaxCosts)[index],\r\n value: modifiedDeductionsObjects[value].value,\r\n };\r\n modifiedDeductionArray.push(newModifiedDeduction);\r\n index += 1;\r\n }\r\n\r\n formObject = {\r\n ...formObject,\r\n deductions: deductionArray,\r\n modifiedDeductions: modifiedDeductionArray,\r\n };\r\n\r\n handleForm(formObject, Object.keys(formObject));\r\n return formObject;\r\n };\r\n\r\n return (\r\n <FocusContext.Provider value={{ focusPage, focused }}>\r\n <AppContext.Provider value={{ state, onChange, onChangeDeductionAction }}>\r\n <Summary loadFormObject={loadFormObject} data={state} />\r\n </AppContext.Provider>\r\n </FocusContext.Provider>\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n defaultData: getBenefitData(state, getUserId(state)),\r\n id: getUserId(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n handleForm: (data, attributes) => dispatch(planToolHandleFormChange(data, attributes)),\r\n loadData2: async (id) => await dispatch(loadPolarisData(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PlanTool);\r\n","import { getUserId } from '../../auth';\r\nimport { safeAccess } from '../../utils';\r\n\r\nexport const getPasswordData = (state) =>\r\n safeAccess(state, `passwordauth.cache[${getUserId(state)}]`, {});\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('passwordauth');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\nimport { PasswordAuthValidator } from './validators';\r\n\r\nconst passwordAuthValidator = new PasswordAuthValidator();\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/update-password',\r\n resourceType: 'update-password',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'passwordauth',\r\n actions,\r\n null,\r\n passwordAuthValidator,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n passwordauthLoadResource,\r\n passwordauthUpdateResource,\r\n passwordauthHandleFormChange,\r\n passwordauthCopyResourceToForm,\r\n passwordauthClearForm,\r\n passwordauthCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n passwordauthLoadResource,\r\n passwordauthUpdateResource,\r\n passwordauthHandleFormChange,\r\n passwordauthCopyResourceToForm,\r\n passwordauthClearForm,\r\n passwordauthCreateResource,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('passwordauth', types);\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class PasswordAuthValidator extends FormValidator {\r\n newPassword(validator) {\r\n validator.isValidPassword();\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Button,\r\n Form,\r\n InputAddon,\r\n InputWrapper,\r\n InputHelp,\r\n InputLabel,\r\n InputGroup,\r\n InputText,\r\n} from 'fiducius-ui';\r\n\r\nclass PasswordText extends React.Component {\r\n static propTypes = {\r\n auth: t.object,\r\n handleChange: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n resestToken: '',\r\n show: false,\r\n };\r\n this.handleShow = this.handleShow.bind(this);\r\n }\r\n\r\n handleShow(value) {\r\n this.setState({ show: value });\r\n }\r\n\r\n render() {\r\n const { handleChange } = this.props;\r\n return (\r\n <Form handleChange={handleChange}>\r\n <InputWrapper>\r\n <InputLabel>Current Password</InputLabel>\r\n <InputGroup>\r\n <InputText\r\n name={'currentPassword'}\r\n type={this.state.show ? 'text' : 'password'}\r\n autoComplete=\"new-password\"\r\n placeholder={'Password'}\r\n />\r\n <InputAddon>\r\n <Button\r\n brand=\"primary\"\r\n onPointerDown={() => this.handleShow(true)}\r\n onPointerUp={() => this.handleShow(false)}\r\n >\r\n show\r\n </Button>\r\n </InputAddon>\r\n </InputGroup>\r\n <InputHelp>\r\n Please logout and request a new password at the login page if you forgot your current\r\n password.\r\n </InputHelp>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default PasswordText;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\n\r\nimport { safeAccess } from '../../utils';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n Button,\r\n Form,\r\n InputAddon,\r\n InputError,\r\n InputWrapper,\r\n InputLabel,\r\n InputGroup,\r\n InputText,\r\n} from 'fiducius-ui';\r\n\r\nconst StyledInputError = styled(InputError)`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nclass NewPasswordText extends React.Component {\r\n static propTypes = {\r\n auth: t.object,\r\n errors: t.object,\r\n handleChange: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n show: false,\r\n showMeToo: false,\r\n };\r\n this.handleShow = this.handleShow.bind(this);\r\n }\r\n\r\n handleShow(value) {\r\n this.setState({ show: value });\r\n }\r\n handleShowMeToo(value) {\r\n this.setState({ showMeToo: value });\r\n }\r\n\r\n render() {\r\n const { handleChange, errors = {} } = this.props;\r\n\r\n return (\r\n <Form handleChange={handleChange}>\r\n <InputWrapper error={!!errors.newPassword}>\r\n <InputLabel htmlFor=\"newPassword\">New Password</InputLabel>\r\n <StyledInputError\r\n dangerouslySetInnerHTML={{ __html: safeAccess(errors, 'newPassword.detail') }}\r\n />\r\n <InputGroup>\r\n <InputText\r\n name=\"newPassword\"\r\n type={this.state.show ? 'text' : 'password'}\r\n autoComplete=\"new-password\"\r\n placeholder={'Password'}\r\n />\r\n <InputAddon>\r\n <Button\r\n brand=\"primary\"\r\n onPointerDown={() => this.handleShow(true)}\r\n onPointerUp={() => this.handleShow(false)}\r\n >\r\n show\r\n </Button>\r\n </InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n\r\n <InputWrapper>\r\n <InputLabel>Confirm New Password</InputLabel>\r\n <InputGroup>\r\n <InputText\r\n name={'confirmPassword'}\r\n type={this.state.showMeToo ? 'text' : 'password'}\r\n autoComplete=\"new-password\"\r\n placeholder={'Password'}\r\n />\r\n <InputAddon>\r\n <Button\r\n brand=\"primary\"\r\n onPointerDown={() => this.handleShowMeToo(true)}\r\n onPointerUp={() => this.handleShowMeToo(false)}\r\n >\r\n show\r\n </Button>\r\n </InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default NewPasswordText;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Alert } from 'fiducius-ui';\r\nimport { connect } from 'react-redux';\r\n\r\nclass ContactResult extends React.Component {\r\n static propTypes = {\r\n getPaymentStatus: t.string,\r\n request: t.object,\r\n status: t.string,\r\n };\r\n\r\n componentDidMount() {}\r\n\r\n getMessage = () => {\r\n switch (this.props.status) {\r\n case 'success':\r\n return 'Your password has been successfully updated!';\r\n\r\n default:\r\n return 'There was an error updating your password.';\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <Alert brand={this.props.status === 'success' ? 'success' : 'danger'}>\r\n {this.getMessage()}\r\n </Alert>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n //status: safeAccess(state, 'passwordauth.cache.contactStatus', ''),\r\n //request: safeAccess(state, 'contact.requests.updateResource'),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n //getPaymentStatus: 'success',\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ContactResult);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport LoaderWrapper from '../../auth/styles/loader-wrapper';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n DashboardSection,\r\n InputHelp,\r\n InputGroup,\r\n InputLabel,\r\n InputText,\r\n InputWrapper,\r\n Loader,\r\n} from 'fiducius-ui';\r\nimport { Fade } from '../../routing';\r\n\r\nimport { authLogout, isAuthenticated } from '../../auth';\r\nimport { getUserId } from '../../auth';\r\nimport { getPasswordData } from '../redux/selectors';\r\n\r\nimport { debounce, mergeRequestStatuses, flatten } from '../../utils';\r\nimport {\r\n passwordauthLoadResource,\r\n passwordauthHandleFormChange,\r\n passwordauthUpdateResource,\r\n} from '../redux/operations';\r\n\r\nimport PasswordText from '../components/password-text';\r\nimport NewPasswordText from '../components/new-password-text';\r\nimport PasswordResult from '../components/password-result';\r\n\r\nclass PasswordAuth extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n auth: t.object,\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n isAuthenticated: t.bool.isRequired,\r\n isProcessing: t.bool.isRequired,\r\n request: t.object.isRequired,\r\n reload: t.func.isRequired,\r\n savePasswordData: t.func.isRequired,\r\n signOut: t.func.isRequired,\r\n updateFormState: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n confirmPassword: '',\r\n oldPassword: '',\r\n password: '',\r\n username: '',\r\n step: 1,\r\n };\r\n\r\n this.handleUsername = this.handleUsername.bind(this);\r\n }\r\n\r\n handleUsername(event) {\r\n this.setState({ username: event.target.value });\r\n }\r\n\r\n componentDidMount() {\r\n const { isAuthenticated, signOut, auth, id, loadData } = this.props;\r\n loadData(id);\r\n if (!isAuthenticated) {\r\n signOut(auth.username);\r\n }\r\n }\r\n\r\n handleChange = debounce((formState) => {\r\n //##Variables## currentPassword, newPassword, confirmNewPassword\r\n const { data, updateFormState } = this.props;\r\n\r\n if (formState.currentPassword !== undefined) {\r\n this.setState({\r\n username: this.state.username,\r\n password: this.state.password,\r\n confirmPassword: this.state.confirmPassword,\r\n oldPassword: formState.currentPassword,\r\n });\r\n }\r\n\r\n if (formState.newPassword !== undefined) {\r\n this.setState({\r\n username: this.state.username,\r\n oldPassword: this.state.oldPassword,\r\n confirmPassword: this.state.confirmPassword,\r\n password: formState.newPassword,\r\n });\r\n }\r\n\r\n if (formState.confirmPassword !== undefined) {\r\n this.setState({\r\n username: this.state.username,\r\n oldPassword: this.state.oldPassword,\r\n confirmPassword: formState.confirmPassword,\r\n password: this.state.password,\r\n });\r\n }\r\n\r\n /*for(let [key, value] of Object.entries(this.state)) {\r\n alert(`${key}: ${value}`);\r\n }*/\r\n const newData = { ...flatten(data), ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 150);\r\n\r\n enableSubmit = () => {\r\n const { data = {}, errors } = this.props;\r\n let retval = false;\r\n\r\n if (data.username !== undefined && data.username !== null) {\r\n if (\r\n data.username.toUpperCase() === this.state.username.toUpperCase() &&\r\n this.state.password !== '' &&\r\n this.state.currentPassword !== '' &&\r\n this.state.username !== '' &&\r\n this.state.oldPassword !== '' &&\r\n this.state.password === this.state.confirmPassword &&\r\n this.state.password !== this.state.oldPassword &&\r\n (!errors.newPassword || errors.newPassword.detail === undefined)\r\n ) {\r\n retval = true;\r\n }\r\n }\r\n return retval;\r\n };\r\n\r\n save = () => {\r\n const { data, savePasswordData, id, updateFormState } = this.props;\r\n updateFormState(this.state, Object.keys(this.state));\r\n data.requestStatus = 'failed';\r\n this.setState({ step: 3 });\r\n savePasswordData(id).then((data) => {\r\n this.setState({ step: 2 });\r\n });\r\n };\r\n\r\n stepBack = () => {\r\n this.setState({\r\n step: 1,\r\n confirmPassword: '',\r\n oldPassword: '',\r\n password: '',\r\n });\r\n };\r\n\r\n render() {\r\n const { data, errors } = this.props;\r\n\r\n let MatchStatus = '';\r\n if (this.state.password !== this.state.confirmPassword) {\r\n MatchStatus = 'New passwords do not match';\r\n }\r\n /*for(let [key, value] of Object.entries(data)) {\r\n alert(`${key}: ${value}`);\r\n };*/\r\n return (\r\n <DashboardSection>\r\n <div className=\"col-12 col-lg-8 col-xl-6\">\r\n <Card>\r\n <CardBody>\r\n {this.state.step === 1 && (\r\n <div>\r\n <InputWrapper>\r\n <InputLabel>Username</InputLabel>\r\n <InputGroup>\r\n <InputText\r\n name={'username'}\r\n type={'text'}\r\n autoComplete=\"username\"\r\n placeholder={'username/email'}\r\n onChange={this.handleUsername}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n\r\n <PasswordText handleChange={this.handleChange} />\r\n <NewPasswordText handleChange={this.handleChange} errors={errors} />\r\n <InputHelp>{MatchStatus}</InputHelp>\r\n </div>\r\n )}\r\n {this.state.step === 2 && <PasswordResult status={data.requestStatus} />}\r\n {this.state.step === 3 && (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={5} />\r\n </LoaderWrapper>\r\n )}\r\n </CardBody>\r\n {this.state.step === 1 && (\r\n <div className=\"col-10 col-lg-10 col-xl-8\">\r\n <Fade show={this.enableSubmit()}>\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={this.save}>\r\n Save\r\n </Button>\r\n </InputWrapper>\r\n </Fade>\r\n <Fade show={!this.enableSubmit()}>\r\n <InputWrapper>\r\n <Button brand=\"primary\">Save</Button>\r\n <InputHelp>There is incorrect or missing information.</InputHelp>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n )}\r\n\r\n {this.state.step === 2 && (\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={this.stepBack}>\r\n Back\r\n </Button>\r\n </InputWrapper>\r\n )}\r\n </Card>\r\n </div>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, requests, form } = state.passwordauth;\r\n return {\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n isAuthenticated: isAuthenticated(state),\r\n auth: state.auth.cache,\r\n data: getPasswordData(state),\r\n errors: errors,\r\n form: form,\r\n id: getUserId(state),\r\n request: state.passwordauth.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n loadData: async (id) => await dispatch(passwordauthLoadResource(id)),\r\n updateFormState: (data, attributes) => dispatch(passwordauthHandleFormChange(data, attributes)),\r\n savePasswordData: async (id) => await dispatch(passwordauthUpdateResource(id)),\r\n signOut: (username) => dispatch(authLogout(username)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PasswordAuth);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('passwordauth', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSun } from '@fortawesome/pro-light-svg-icons/faSun';\r\nimport { faMoonStars } from '@fortawesome/pro-solid-svg-icons/faMoonStars';\r\nimport { Header3, InputCheckbox } from 'fiducius-ui';\r\n\r\nclass MySettings extends React.Component {\r\n render() {\r\n const { changeFluid, changeTheme, darkTheme, fluid } = this.props;\r\n return (\r\n <>\r\n <Header3>Settings</Header3>\r\n <InputCheckbox\r\n key=\"fluidTheme\"\r\n onChange={changeFluid}\r\n name=\"fluid\"\r\n label=\"Fluid\"\r\n defaultChecked={fluid}\r\n />\r\n <InputCheckbox\r\n key=\"darkTheme\"\r\n onChange={changeTheme}\r\n name=\"dark\"\r\n label={<FontAwesomeIcon icon={darkTheme ? faMoonStars : faSun} size=\"lg\" fixedWidth />}\r\n defaultChecked={darkTheme}\r\n />\r\n </>\r\n );\r\n }\r\n}\r\n\r\nMySettings.propTypes = {\r\n changeFluid: t.func.isRequired,\r\n changeTheme: t.func.isRequired,\r\n darkTheme: t.bool.isRequired,\r\n fluid: t.bool.isRequired,\r\n};\r\n\r\nexport default MySettings;\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default {\r\n ...resourceTypesGenerator('customerFaq'),\r\n};\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default {\r\n ...resourceActionsGenerator('customerFaq', types),\r\n};\r\n","import actions from './actions';\r\n\r\nimport { getToken } from '../../auth';\r\nimport { getApi, getApiSingle, resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/customer-faq',\r\n resourceType: 'customer-faq',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'customerFaq',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst faqLoadSubjects = () => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n const state = getState();\r\n let data = null;\r\n try {\r\n await dispatch(operations.customerFaqHandleCacheChange({}));\r\n dispatch(actions.customerFaqLoadCollectionRequest());\r\n data = await getApi(getToken(state), '/customer-faq/0/SUBJ');\r\n\r\n const cache = {\r\n subjects: data,\r\n };\r\n\r\n await dispatch(operations.customerFaqHandleCacheChange(cache));\r\n\r\n dispatch(actions.customerFaqLoadCollectionResponse());\r\n\r\n dispatch(actions.customerFaqLoadCollectionSuccess());\r\n } catch (error) {\r\n dispatch(operations.customerFaqHandleError(error));\r\n dispatch(actions.customerFaqLoadCollectionFailure(error));\r\n }\r\n return data;\r\n};\r\n\r\nlet dataAlreadyExists = (subjectId, faq) => {\r\n let retVal = false;\r\n\r\n if (faq !== undefined && Object.values(faq).find((a) => a.id === subjectId)) {\r\n retVal = true;\r\n }\r\n return retVal;\r\n};\r\n\r\nconst faqLoadQuestionAnswers = (subjId) => async (dispatch, getState) => {\r\n const state = getState();\r\n let data =\r\n state.customerFaq.cache.questionAnswers === undefined\r\n ? {}\r\n : state.customerFaq.cache.questionAnswers;\r\n\r\n try {\r\n dispatch(actions.customerFaqLoadResourceRequest());\r\n\r\n if (state.customerFaq.cache.questionAnswers === undefined || !dataAlreadyExists(subjId, data)) {\r\n data[subjId] = await getApiSingle(getToken(state), '/customer-faq/' + subjId + '/QA');\r\n\r\n const cache = {\r\n ...state.customerFaq.cache,\r\n questionAnswers: data,\r\n };\r\n await dispatch(operations.customerFaqHandleCacheChange(cache));\r\n }\r\n\r\n dispatch(actions.customerFaqLoadResourceResponse());\r\n\r\n dispatch(actions.customerFaqLoadResourceSuccess());\r\n } catch (error) {\r\n dispatch(operations.customerFaqHandleError(error));\r\n dispatch(actions.customerFaqLoadResourceFailure(error));\r\n }\r\n};\r\n\r\nconst { customerFaqHandleFormChange } = operations;\r\nexport { customerFaqHandleFormChange, faqLoadSubjects, faqLoadQuestionAnswers };\r\n\r\nexport default operations;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { AsyncLoader, Card, CardBody, CardTitle } from 'fiducius-ui';\r\nimport { connect } from 'react-redux';\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport FaqQuestion from './faq-question';\r\nimport { faqLoadQuestionAnswers } from '../redux/operations';\r\n\r\nclass QuestionAnswer extends React.Component {\r\n static propTypes = {\r\n faqs: t.object,\r\n loadQuestionAnswers: t.func.isRequired,\r\n request: t.object,\r\n subject: t.string,\r\n subjectId: t.number,\r\n selectedId: t.number,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n const { loadQuestionAnswers, subjectId } = this.props;\r\n\r\n loadQuestionAnswers(subjectId);\r\n }\r\n\r\n componentDidUpdate() {\r\n const { faqs, loadQuestionAnswers, subjectId, request } = this.props;\r\n\r\n if (\r\n faqs !== undefined &&\r\n faqs !== null &&\r\n faqs[subjectId] === undefined &&\r\n !request.isLoading\r\n ) {\r\n loadQuestionAnswers(subjectId);\r\n }\r\n }\r\n\r\n getQuestionAndAnswers = (faqs) => {\r\n let faqComponents = [];\r\n if (faqs !== undefined && faqs !== null && faqs[this.props.subjectId] !== undefined) {\r\n let faqItem = faqs[this.props.subjectId];\r\n\r\n Object.keys(faqItem.questionAnswer).forEach((key) => {\r\n faqComponents.push(\r\n <FaqQuestion question={faqItem.questionAnswer[key].question}>\r\n <div dangerouslySetInnerHTML={{ __html: faqItem.questionAnswer[key].answer }}></div>\r\n </FaqQuestion>\r\n );\r\n });\r\n }\r\n\r\n return faqComponents;\r\n };\r\n\r\n render() {\r\n const { faqs = {}, request } = this.props;\r\n return (\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>{this.props.subject}</CardTitle>\r\n <AsyncLoader request={request}>{this.getQuestionAndAnswers(faqs)}</AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n faqs: safeAccess(state, 'customerFaq.cache.questionAnswers'),\r\n request: state.customerFaq.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadQuestionAnswers: (id) => dispatch(faqLoadQuestionAnswers(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(QuestionAnswer);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport { safeAccess } from '../../utils';\r\nimport {\r\n AsyncLoader,\r\n ButtonCarousel,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nimport { faqLoadSubjects, faqLoadQuestionAnswers } from '../redux/operations';\r\nimport QuestionAnswer from '../components/question-answer';\r\n\r\nconst BottomRow = styled.div`\r\n padding-top: 10px;\r\n`;\r\n\r\nclass Faq extends React.Component {\r\n static propTypes = {\r\n cache: t.object,\r\n loadFaqSubjects: t.func.isRequired,\r\n loadQustionAnswers: t.func.isRequired,\r\n questionRequest: t.object,\r\n request: t.object,\r\n token: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this.props.loadFaqSubjects();\r\n }\r\n\r\n getFaqSubects = (data) => {\r\n let retButtons = [];\r\n if (data !== undefined && data !== {} && data.subjects !== undefined) {\r\n Object.values(data.subjects).forEach((item) => {\r\n retButtons.push(item.subject);\r\n });\r\n }\r\n return retButtons;\r\n };\r\n\r\n getFaqComponents = (data) => {\r\n let retComponents = [];\r\n if (data !== undefined && data !== {} && data.subjects !== undefined) {\r\n Object.values(data.subjects).forEach((item) => {\r\n retComponents.push(<QuestionAnswer subject={item.subject} subjectId={item.id} />);\r\n });\r\n }\r\n return retComponents;\r\n };\r\n\r\n render() {\r\n const { cache = {}, request, questionRequest } = this.props;\r\n return (\r\n <>\r\n <DashboardSection title=\"Frequently Asked Questions\" ref={this.myRef}>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>What do you have questions about?</CardTitle>\r\n <AsyncLoader request={request}>\r\n <p>\r\n <ButtonCarousel\r\n buttonLocation={1}\r\n components={this.getFaqComponents(cache)}\r\n componentDisplayNames={this.getFaqSubects(cache)}\r\n />\r\n </p>\r\n </AsyncLoader>\r\n <BottomRow>\r\n <CardText>\r\n <p>\r\n If you can't find the answer to your question in one of the above categories,\r\n please submit a Contact Us request.\r\n </p>\r\n </CardText>\r\n </BottomRow>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n cache: safeAccess(state, 'customerFaq.cache'),\r\n request: state.customerFaq.requests.loadCollection,\r\n questionRequest: state.customerFaq.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadFaqSubjects: () => dispatch(faqLoadSubjects()),\r\n loadQuestionAnswers: (id) => dispatch(faqLoadQuestionAnswers(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Faq);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('customerFaq', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Button,\r\n Form,\r\n InputHelp,\r\n InputLabel,\r\n InputWrapper,\r\n InputGroup,\r\n InputAddon,\r\n InputText,\r\n Lede,\r\n} from 'fiducius-ui';\r\n\r\nclass PretaxItems extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n onChange: t.func.isRequired,\r\n handleChange: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.retirementVal = React.createRef();\r\n\r\n this.state = {\r\n deductions: [],\r\n deductionAmount: 0,\r\n deductionName: '',\r\n };\r\n\r\n this.handleAddDeduction = this.handleAddDeduction.bind(this);\r\n this.handleDeductionAmount = this.handleDeductionAmount.bind(this);\r\n this.handleDeductionName = this.handleDeductionName.bind(this);\r\n }\r\n\r\n handleAddDeduction() {\r\n this.setState({ deductions: [...this.state.deductions, ''] });\r\n this.setState({ deductionName: '' });\r\n }\r\n\r\n handleDeductionName(event) {\r\n this.setState({ deductionName: event.target.value });\r\n }\r\n\r\n handleDeductionAmount(e, index) {\r\n let newArray = this.state.deductions; //we don't want to mutate state directly.\r\n newArray.splice(index, 1, e.target.value);\r\n this.setState({ deductions: newArray });\r\n }\r\n\r\n render() {\r\n const { handleChange } = this.props;\r\n /*for(let [key, value] of Object.entries(this.state.deductions)) {\r\n alert(`${key}: ${value}`);\r\n }*/\r\n return (\r\n <Form handleChange={handleChange}>\r\n {this.state.deductions.map((deduction, index) => {\r\n return (\r\n <div key={index}>\r\n <div className=\"col-6 col-lg-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"income\">Deduction {(index + 1).toString()}</InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputText\r\n id=\"deduction\"\r\n defaultValue={deduction}\r\n onChange={(e) => this.handleDeductionAmount(e, index)}\r\n name={'income' + (index + 1).toString()}\r\n type=\"number\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n {}\r\n <Lede>\r\n <Button brand=\"primary\" onClick={this.handleAddDeduction}>\r\n Add Deduction\r\n </Button>\r\n </Lede>\r\n <InputHelp>Please only input deductions that are considered Pre-Tax Deductions.</InputHelp>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default PretaxItems;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Form, InputLabel, InputWrapper, InputGroup, InputAddon, InputText } from 'fiducius-ui';\r\n\r\nclass PretaxExistingItems extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n handleChange: t.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.retirementVal = React.createRef();\r\n\r\n this.state = {\r\n deductions: [],\r\n deductionAmount: 0,\r\n };\r\n\r\n this.handleDeductionAmount = this.handleDeductionAmount.bind(this);\r\n }\r\n\r\n handleDeductionAmount(e, index) {\r\n //alert(this.state.deductions)\r\n let newArray = this.state.deductions; //we don't want to mutate state directly.\r\n newArray.splice(index, 1, e.target.value);\r\n this.setState({ deductions: newArray });\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n const { data = {}, handleChange } = this.props;\r\n\r\n let newArray = [];\r\n let deductionType = [];\r\n let deductionAmount = [];\r\n\r\n data.deductions !== undefined && (newArray = data.deductions.flatten());\r\n\r\n for (let [key, value] of Object.entries(newArray)) {\r\n for (let [key, value] of Object.entries(value)) {\r\n if (key === 'deductionName') {\r\n deductionType.push(value);\r\n }\r\n if (key === 'deductionAmount') {\r\n deductionAmount.push(value);\r\n this.state.deductions.push(value);\r\n this.state.deductionAmount += value * 26;\r\n }\r\n }\r\n }\r\n /*for(let [key, value] of Object.entries(deductionType)) {\r\n alert(`${key}: ${value}`);\r\n }\r\n\r\n for(let [key, value] of Object.entries(deductionAmount)) {\r\n alert(`${key}: ${value}`);\r\n }*/\r\n return (\r\n <Form handleChange={handleChange}>\r\n {deductionType.map((deduction, index) => {\r\n return (\r\n <div key={index}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"income\">{deductionType[index]}</InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputText\r\n id=\"existingDeduction\"\r\n defaultValue={(deductionAmount[index] * data.payPeriods).toFixed(2)}\r\n onChange={(e) => this.handleDeductionAmount(e, index)}\r\n name={'existing' + (index + 1).toString()}\r\n type=\"existing\"\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n );\r\n })}\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default PretaxExistingItems;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Card,\r\n ChartBar,\r\n CardTitle,\r\n CardBody,\r\n Form,\r\n InputLabel,\r\n InputWrapper,\r\n InputGroup,\r\n InputAddon,\r\n InputNumeric,\r\n} from 'fiducius-ui';\r\n\r\nimport { formatAsMoney } from '../../../utils/format';\r\nimport { debounce } from '../../../utils';\r\nimport PretaxItems from './pretax-items';\r\nimport PretaxExistingItems from './pretax-existing-items';\r\nimport { MessageDiv } from '../../../messages';\r\n\r\nclass PretaxForm extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.childDeduction = React.createRef();\r\n\r\n this.state = {\r\n income: this.props.agi,\r\n famSize: '',\r\n totalDeductions: 0,\r\n totalNewDeductions: 0,\r\n totalExistingDeductions: 0,\r\n existingDeductions: [],\r\n\r\n renderCount: 0,\r\n };\r\n\r\n this.handleIncomeChange = this.handleIncomeChange.bind(this);\r\n this.handleFamSizeChange = this.handleFamSizeChange.bind(this);\r\n this.handleExistingDeductions = this.handleExistingDeductions.bind(this);\r\n\r\n this.handleTotalDeductions = this.handleTotalDeductions.bind(this);\r\n }\r\n\r\n handleExistingDeductions(array) {\r\n this.setState({ existingDeductions: array });\r\n }\r\n\r\n handleIncomeChange(event) {\r\n this.setState({ income: event.target.value });\r\n }\r\n handleFamSizeChange(event) {\r\n this.setState({ famSize: event.target.value });\r\n }\r\n\r\n handleTotalDeductions(total) {\r\n this.setState({ totalDeductions: total });\r\n }\r\n\r\n handleChange = debounce((formState) => {\r\n let sum = 0;\r\n let regex = /existing/;\r\n\r\n //Updates the total sum of deductions depending on if existing or new deduction is updated.\r\n if (regex.test(Object.entries(formState))) {\r\n //existing deductions\r\n\r\n let values = Object.values(formState);\r\n let index = [];\r\n let count = 0;\r\n\r\n for (let items in formState) {\r\n index.push(items.slice(8, 9));\r\n this.state.existingDeductions.splice(index[count] - 1, 1, values[count]);\r\n count += 1;\r\n }\r\n\r\n for (const value in this.state.existingDeductions) {\r\n sum += this.state.existingDeductions[value] / 1;\r\n }\r\n\r\n this.state.totalExistingDeductions = sum;\r\n sum += this.state.totalNewDeductions;\r\n } else {\r\n //added deductions\r\n for (const value in formState) {\r\n sum += formState[value] / 1;\r\n }\r\n\r\n this.state.totalNewDeductions = sum;\r\n sum += this.state.totalExistingDeductions;\r\n }\r\n\r\n this.handleTotalDeductions(sum);\r\n }, 150);\r\n\r\n render() {\r\n const { data = {}, onChange } = this.props;\r\n\r\n const householdSize = data.householdSize || 1;\r\n const agiIncome = this.state.income || data.agi;\r\n let povertyGuideline = data.povertyGuideline;\r\n\r\n let repaymentPlanValue;\r\n if (data.repaymentPlan === 'PAYE' || data.repaymentPlan === 'REPAYE') {\r\n repaymentPlanValue = 0.1;\r\n } else if (data.repaymentPlan === 'ICR') {\r\n repaymentPlanValue = 0.2;\r\n } else if (data.repaymentPlan === 'SAVE') {\r\n repaymentPlanValue = data.saveMultiplier;\r\n povertyGuideline = data.savePovertyGuideline;\r\n } else {\r\n repaymentPlanValue = 0.15;\r\n }\r\n\r\n const agi = this.state.income || data.agi;\r\n let idr = ((agi - povertyGuideline) * repaymentPlanValue) / 12;\r\n\r\n const newAgi = agiIncome - this.state.totalDeductions;\r\n let newIdr = ((newAgi - povertyGuideline) * repaymentPlanValue) / 12;\r\n\r\n if (idr < 0) {\r\n idr = 0;\r\n }\r\n if (newIdr < 0) {\r\n newIdr = 0;\r\n }\r\n\r\n ////EXISTING DEDUCTIONS - gets the ref prop from the component and gets total deductions from state.\r\n this.state.renderCount += 1;\r\n if (this.state.renderCount === 10) {\r\n const childDeduction = this.childDeduction.current || Object || null;\r\n\r\n if (childDeduction.state !== undefined) {\r\n let tempArray = [];\r\n for (let deduction of childDeduction.state.deductions) {\r\n tempArray.push(deduction * 26);\r\n }\r\n this.handleExistingDeductions(tempArray);\r\n }\r\n\r\n if (childDeduction.state !== undefined) {\r\n this.state.totalExistingDeductions = childDeduction.state.deductionAmount;\r\n this.handleTotalDeductions(childDeduction.state.deductionAmount);\r\n }\r\n }\r\n\r\n return (\r\n <Form id=\"retirement\" defaults={data} handleChange={onChange}>\r\n <CardTitle>Pre-Tax Deduction Tool</CardTitle>\r\n <p>\r\n <MessageDiv messageType={'PreTax_Tool'} />\r\n </p>\r\n <CardBody>\r\n <ui>\r\n <li>\r\n This tool will show how adding pre-tax deductions can lower your adjusted gross\r\n income, and in turn help lower your qualifying Income Driven Repayment amount.\r\n </li>\r\n </ui>\r\n </CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-7 col-sm-7 col-md-5 col-lg-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"income\">\r\n <strong>Annual Income</strong>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"income\"\r\n name=\"income\"\r\n defaultValue={data.agi}\r\n onChange={this.handleIncomeChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-7 col-sm-7 col-md-5 col-lg-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Household size\">\r\n <strong>Household Size</strong>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"famSize\"\r\n name=\"HouseHoldSize\"\r\n min=\"0\"\r\n defaultValue={householdSize}\r\n onChange={this.handleFamSizeChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-7 col-sm-7 col-md-5 col-lg-4\">\r\n <InputLabel htmlFor=\"deductions\">\r\n <strong>Annual Deduction Amounts</strong>\r\n </InputLabel>\r\n <PretaxExistingItems\r\n data={data}\r\n onChange={this.onChange}\r\n handleChange={this.handleChange}\r\n ref={this.childDeduction}\r\n />\r\n </div>\r\n </div>\r\n <PretaxItems data={data} onChange={this.onChange} handleChange={this.handleChange} />\r\n <p />\r\n <p />\r\n\r\n <div>\r\n <hr />\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-4 col-sm-10\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <div className=\"col\">\r\n <CardTitle>Results</CardTitle>\r\n <dl>\r\n <dt>Total Deductions</dt>\r\n <dd>{formatAsMoney(this.state.totalDeductions.toFixed(2)) || '—'}</dd>\r\n <dt>Adjusted Gross Income</dt>\r\n <dd>{formatAsMoney(newAgi.toFixed(2)) || '—'}</dd>\r\n <dt>Monthly {data.repaymentPlan} Payment Without Deductions</dt>\r\n <dd>{formatAsMoney(idr.toFixed(2)) || '—'}</dd>\r\n <dt>Monthly {data.repaymentPlan} Payment With Deductions</dt>\r\n <dd>{formatAsMoney(newIdr.toFixed(2)) || '—'}</dd>\r\n </dl>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-10 col-md-6\">\r\n <br />\r\n <br />\r\n <br />\r\n <InputWrapper>\r\n <ChartBar\r\n bars={[\r\n {\r\n label: '',\r\n dataType: 'currency',\r\n data: [idr.toFixed(2), newIdr.toFixed(2)],\r\n },\r\n ]}\r\n config={{\r\n labels: [\r\n (data.repaymentPlan || 'IDR') + ' Without Deductions',\r\n (data.repaymentPlan || 'IDR') + ' With Deductions',\r\n ],\r\n formatter: formatAsMoney,\r\n }}\r\n />\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default PretaxForm;\r\n","import { createSelector } from 'reselect';\r\nimport { getUserId } from '../../../auth';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nexport const getBenefitData = (state) =>\r\n safeAccess(state, `modeler.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getGrossPayment = createSelector(\r\n [getBenefitData],\r\n (data = {}) => data.grossPay || 0\r\n);\r\n\r\nexport const getHouseholdSize = createSelector(\r\n [getBenefitData],\r\n (data = {}) => data.householdSize || 0\r\n);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('modeler');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/benefit-modeler',\r\n resourceType: 'benefit-modeler',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'modeler',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCopyResourceToForm,\r\n modelerCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCreateResource,\r\n modelerCopyResourceToForm,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('modeler', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardText, DashboardSection, Header2 } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { getBenefitData } from '../redux/selectors';\r\n\r\nimport { debounce, mergeRequestStatuses, flatten } from '../../../utils';\r\n\r\nimport {\r\n modelerLoadResource,\r\n modelerCopyResourceToForm,\r\n modelerHandleFormChange,\r\n} from '../redux/operations';\r\n\r\nimport PretaxForm from '../components/pretax-form';\r\n\r\n//I need this too\r\nclass modeler extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n copyRequest: t.object.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n hasData: t.bool,\r\n handleForm: t.func.isRequired,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n reload: t.func.isRequired,\r\n request: t.object,\r\n modeler: t.object,\r\n updateFormState: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const { id, loadData } = this.props;\r\n loadData(id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const wasLoading = prevProps.actionRequest.isLoading;\r\n const currently = this.props.actionRequest;\r\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\r\n this.setState({ ...this.state, showForm: true }, () => this.props.reload());\r\n }\r\n }\r\n\r\n //I need this - but there is more too it\r\n //make this call to a function that does the calculations\r\n onChange = debounce((modeler, attributes, formState) => {\r\n const { data, updateFormState } = this.props;\r\n const newData = { ...flatten(data), ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 250);\r\n\r\n render() {\r\n const { request, data } = this.props;\r\n\r\n return (\r\n <DashboardSection title=\"Benefits for your financial well-being\">\r\n <Card>\r\n <CardBody>\r\n <Header2>Lower your payments and better benefit your financial wellness</Header2>\r\n <CardText>\r\n <AsyncLoader request={request}>\r\n <PretaxForm data={data} isLoading={request.isLoading} onChange={this.onChange} />\r\n </AsyncLoader>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.modeler;\r\n return {\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n data: getBenefitData(state),\r\n form: form,\r\n errors: errors,\r\n id: getUserId(state),\r\n request: state.modeler.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(modelerLoadResource(id));\r\n dispatch(modelerCopyResourceToForm(id));\r\n },\r\n updateFormState: (data, attributes) => dispatch(modelerHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(modeler);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n Form,\r\n InputLabel,\r\n InputWrapper,\r\n InputGroup,\r\n InputAddon,\r\n InputHelp,\r\n InputNumeric,\r\n InputText,\r\n} from 'fiducius-ui';\r\n\r\nimport { formatAsMoney } from '../../../utils/format';\r\nimport { MessageDiv } from '../../../messages';\r\n\r\nclass RetirementForm extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n agi: t.number,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.retirementVal = React.createRef();\r\n\r\n this.state = {\r\n income: this.props.agi,\r\n famSize: '',\r\n retirementAmount: 0,\r\n retirementAmountOmega: 0,\r\n totalLoan: 0,\r\n };\r\n this.handleIncomeChange = this.handleIncomeChange.bind(this);\r\n this.handleFamSizeChange = this.handleFamSizeChange.bind(this);\r\n this.handleRetirementAmount = this.handleRetirementAmount.bind(this);\r\n this.handleRetirementAmountOmega = this.handleRetirementAmountOmega.bind(this);\r\n\r\n this.handleSliderChange = this.handleSliderChange.bind(this);\r\n this.handleRetirementFormChange = this.handleRetirementFormChange.bind(this);\r\n this.handleTotalLoan = this.handleTotalLoan.bind(this);\r\n }\r\n\r\n handleIncomeChange(event) {\r\n this.setState({\r\n income: event.target.value,\r\n retirementAmount: (event.target.value * 0.05).toFixed(2),\r\n retirementAmountOmega: (event.target.value * 0.08).toFixed(2),\r\n });\r\n }\r\n handleFamSizeChange(event) {\r\n this.setState({ famSize: event.target.value });\r\n }\r\n handleRetirementFormChange(event) {\r\n this.handleRetirementChange(event.target.value);\r\n }\r\n\r\n handleRetirementChange = (value) => {\r\n this.setState({ ...this.state, retirementPercent: value });\r\n };\r\n\r\n handleSliderChange = (value) => {\r\n this.handleRetirementChange(value);\r\n this.retirementVal = value;\r\n };\r\n\r\n handleRetirementAmount(event) {\r\n this.setState({ retirementAmount: event.target.value });\r\n }\r\n\r\n handleRetirementAmountOmega(event) {\r\n this.setState({ retirementAmountOmega: event.target.value });\r\n }\r\n handleTotalLoan(event) {\r\n this.setState({ totalLoan: event.target.value });\r\n }\r\n\r\n render() {\r\n const { data = {}, onChange } = this.props;\r\n\r\n const agiIncome = this.state.income || data.agi;\r\n const retirePct = this.state.retirementPercent || 0;\r\n\r\n const agi = agiIncome - agiIncome * (retirePct / 100);\r\n const totalLoanBal = this.state.totalLoan || data.totalPrincipal;\r\n let povertyGuideline = data.povertyGuideline;\r\n\r\n let repaymentPlanValue;\r\n //assigns a value modifier depending on repayment plan time you qualify for.\r\n if (data.repaymentPlan === 'PAYE' || data.repaymentPlan === 'REPAYE') {\r\n repaymentPlanValue = 0.1;\r\n } else if (data.repaymentPlan === 'ICR') {\r\n repaymentPlanValue = 0.2;\r\n } else if (data.repaymentPlan === 'SAVE') {\r\n repaymentPlanValue = data.saveMultiplier;\r\n povertyGuideline = data.savePovertyGuideline;\r\n } else {\r\n repaymentPlanValue = 0.15;\r\n }\r\n\r\n let idr = ((agi - povertyGuideline) * repaymentPlanValue) / 12;\r\n\r\n if (idr < 0) {\r\n idr = 0;\r\n }\r\n\r\n //default values for retirement amounts\r\n let alpha = 0;\r\n let omega = 0;\r\n if (this.state.retirementAmount === 0) {\r\n alpha = 0.05 * agiIncome;\r\n } else {\r\n alpha = this.state.retirementAmount;\r\n }\r\n\r\n if (this.state.retirementAmountOmega === 0) {\r\n omega = 0.08 * agiIncome;\r\n } else {\r\n omega = this.state.retirementAmountOmega;\r\n }\r\n\r\n //forgiveness calculation with 2% increase to AGI\r\n let forgivenessAGIAlpha = agiIncome - alpha;\r\n let forgivenessAGIOmega = agiIncome - omega;\r\n let totalIDRPaymentsAlpha = 0;\r\n let totalIDRPaymentsOmega = 0;\r\n let i;\r\n for (i = 0; i < 10; i++) {\r\n if ((forgivenessAGIAlpha - povertyGuideline) * repaymentPlanValue > 0) {\r\n totalIDRPaymentsAlpha += (forgivenessAGIAlpha - povertyGuideline) * repaymentPlanValue;\r\n totalIDRPaymentsOmega += (forgivenessAGIOmega - povertyGuideline) * repaymentPlanValue;\r\n forgivenessAGIAlpha *= 1.02;\r\n forgivenessAGIOmega *= 1.02;\r\n } else {\r\n forgivenessAGIAlpha *= 1.02;\r\n forgivenessAGIOmega *= 1.02;\r\n }\r\n }\r\n\r\n //Retirement Nest Egg Calculation. Compounding interest, compounding once annually.\r\n let principalAlpha = alpha;\r\n let principalOmega = omega;\r\n\r\n for (i = 0; i < 9; i++) {\r\n principalAlpha = (principalAlpha * 1.06) / 1;\r\n principalOmega = (principalOmega * 1.06) / 1;\r\n\r\n principalAlpha = alpha / 1 + principalAlpha / 1;\r\n principalOmega = omega / 1 + principalOmega / 1;\r\n }\r\n\r\n // table calcs\r\n let alphaIDR = ((agiIncome - alpha - povertyGuideline) * repaymentPlanValue) / 12;\r\n let omegaIDR = ((agiIncome - omega - povertyGuideline) * repaymentPlanValue) / 12;\r\n\r\n if (alphaIDR < 0) {\r\n alphaIDR = 0;\r\n }\r\n if (omegaIDR < 0) {\r\n omegaIDR = 0;\r\n }\r\n\r\n let totalForgivenessAlpha = totalLoanBal - totalIDRPaymentsAlpha;\r\n let totalForgivenessOmega = totalLoanBal - totalIDRPaymentsOmega;\r\n\r\n if (totalForgivenessAlpha < 0) {\r\n totalForgivenessAlpha = 0;\r\n }\r\n if (totalForgivenessOmega < 0) {\r\n totalForgivenessOmega = 0;\r\n }\r\n //const id = data.id || 'create';\r\n\r\n let alphaPercent = 0;\r\n let omegaPercent = 0;\r\n\r\n if ((alpha / agiIncome) * 100 > 0) {\r\n alphaPercent = ((alpha / agiIncome) * 100).toFixed(1);\r\n }\r\n\r\n if ((omega / agiIncome) * 100 > 0) {\r\n omegaPercent = ((omega / agiIncome) * 100).toFixed(1);\r\n }\r\n\r\n return (\r\n <Form id=\"retirement\" defaults={data} handleChange={onChange}>\r\n <CardTitle>Retirement Contribution Tool</CardTitle>\r\n <p>\r\n <MessageDiv messageType={'Retirement_Comparison'} />\r\n </p>\r\n <CardBody>\r\n <ui>\r\n <li>\r\n This tool is used to show the benefit of contributing more to a retirement fund\r\n annually.\r\n </li>\r\n </ui>\r\n </CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-lg-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"income\">Annual Income</InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputText\r\n id=\"income\"\r\n name=\"income\"\r\n defaultValue={agiIncome}\r\n onChange={this.handleIncomeChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Household size\">Loan Balance</InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputText\r\n id=\"famSize\"\r\n name=\"HouseHoldSize\"\r\n min=\"0\"\r\n defaultValue={totalLoanBal}\r\n onChange={this.handleTotalLoan}\r\n />\r\n </InputGroup>\r\n {/*<InputHelp>This information is only used for the Income Driven Repaymnet estimation</InputHelp>*/}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Household size\">\r\n Yearly Retirement Contribution <br /> {alphaPercent}% of your Annual Income\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"famSize\"\r\n name=\"CurrentYearlyRetirement\"\r\n min=\"0\"\r\n value={this.state.retirementAmount || (alpha / 1).toFixed(2)}\r\n onChange={this.handleRetirementAmount}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Household size\">\r\n Yearly Retirement Contribution <br /> {omegaPercent}% of your Annual Income\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"famSize\"\r\n name=\"NewYearlyRetirement\"\r\n min=\"0\"\r\n value={this.state.retirementAmountOmega || (omega / 1).toFixed(2)}\r\n onChange={this.handleRetirementAmountOmega}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"col-9 col-md-9\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-6\">\r\n <CardTitle>{alphaPercent} % Retirement Contribution</CardTitle>\r\n <dl>\r\n <dt>Income After Retirement Contribution</dt>\r\n <dd>{formatAsMoney((agiIncome - alpha).toFixed(2)) || '—'}</dd>\r\n <dt>Monthly Retirement Contribution</dt>\r\n <dd>{formatAsMoney((alpha / 12).toFixed(2)) || '—'}</dd>\r\n <dt>Estimated Loan Forgiveness</dt>\r\n <dd>{formatAsMoney((totalForgivenessAlpha / 1).toFixed(2)) || '—'}</dd>\r\n <InputHelp>This figures assumes a 2% raise in income each year</InputHelp>\r\n <dt>Retirement Balance in 10 years</dt>\r\n <dd>{formatAsMoney((principalAlpha / 1).toFixed(2)) || '—'}</dd>\r\n <InputHelp>This figure assumes a 6% rate of growth</InputHelp>\r\n <dt>Estimated Monthly {data.repaymentPlan} Payment </dt>\r\n <dd>{formatAsMoney((alphaIDR / 1).toFixed(2)) || '—'}</dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-6 col-md-6\">\r\n <CardTitle>{omegaPercent} % Retirement Contribution</CardTitle>\r\n <dl>\r\n <dt>Income After Retirement Contribution</dt>\r\n <dd>{formatAsMoney((agiIncome - omega).toFixed(2)) || '—'}</dd>\r\n <dt>Monthly Retirement Contribution</dt>\r\n <dd>{formatAsMoney((omega / 12).toFixed(2)) || '—'}</dd>\r\n <dt>Estimated Loan Forgiveness</dt>\r\n <dd>{formatAsMoney((totalForgivenessOmega / 1).toFixed(2)) || '—'}</dd>\r\n <InputHelp>This figures assumes a 2% raise in income each year</InputHelp>\r\n <dt>Retirement Balance in 10 years</dt>\r\n <dd>{formatAsMoney((principalOmega / 1).toFixed(2)) || '—'}</dd>\r\n <InputHelp>This figure assumes a 6% rate of growth</InputHelp>\r\n <dt>Estimated Monthly {data.repaymentPlan} Payment </dt>\r\n <dd>{formatAsMoney((omegaIDR / 1).toFixed(2)) || '—'}</dd>\r\n </dl>\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default RetirementForm;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('modeler', types);\r\n","import { createSelector } from 'reselect';\r\nimport { getUserId } from '../../../auth';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nexport const getBenefitData = (state) =>\r\n safeAccess(state, `modeler.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getGrossPayment = createSelector([getBenefitData], (data = {}) => data.grossPay || 0);\r\n\r\nexport const getHouseholdSize = createSelector(\r\n [getBenefitData],\r\n (data = {}) => data.householdSize || 0\r\n);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('modeler');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/benefit-modeler',\r\n resourceType: 'benefit-modeler',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'modeler',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCopyResourceToForm,\r\n modelerCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCreateResource,\r\n modelerCopyResourceToForm,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('modeler', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardText, DashboardSection, Header2 } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { getBenefitData } from '../redux/selectors';\r\n\r\nimport { debounce, mergeRequestStatuses, flatten } from '../../../utils';\r\n\r\nimport {\r\n modelerLoadResource,\r\n modelerCopyResourceToForm,\r\n modelerHandleFormChange,\r\n} from '../redux/operations';\r\n\r\nimport RetirementForm from '../components/retirement-form';\r\n\r\n//I need this too\r\nclass Modeler extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n copyRequest: t.object.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n hasData: t.bool,\r\n handleForm: t.func.isRequired,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n reload: t.func.isRequired,\r\n request: t.object,\r\n modeler: t.object,\r\n updateFormState: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const { id, loadData } = this.props;\r\n loadData(id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const wasLoading = prevProps.actionRequest.isLoading;\r\n const currently = this.props.actionRequest;\r\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\r\n this.setState({ ...this.state, showForm: true }, () => this.props.reload());\r\n }\r\n }\r\n\r\n //I need this - but there is more too it\r\n //make this call to a function that does the calculations\r\n onChange = debounce((modeler, attributes, formState) => {\r\n const { data, updateFormState } = this.props;\r\n const newData = { ...flatten(data), ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 250);\r\n\r\n render() {\r\n const { request, data } = this.props;\r\n\r\n return (\r\n <DashboardSection title=\"Benefits for your financial well-being\">\r\n <Card>\r\n <CardBody>\r\n <Header2>Lower your payments and better benefit your financial wellness</Header2>\r\n <CardText>\r\n <AsyncLoader request={request}>\r\n <RetirementForm\r\n data={data}\r\n isLoading={request.isLoading}\r\n onChange={this.onChange}\r\n />\r\n </AsyncLoader>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.modeler;\r\n return {\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n data: getBenefitData(state),\r\n form: form,\r\n errors: errors,\r\n id: getUserId(state),\r\n request: state.modeler.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(modelerLoadResource(id));\r\n dispatch(modelerCopyResourceToForm(id));\r\n },\r\n updateFormState: (data, attributes) => dispatch(modelerHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Modeler);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('modeler', types);\r\n","import React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport t from 'prop-types';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardText,\r\n Form,\r\n InputLabel,\r\n InputWrapper,\r\n InputGroup,\r\n InputAddon,\r\n InputHelp,\r\n InputText,\r\n Header2,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexEnd } from '../../../root';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimes as faXIcon } from '@fortawesome/pro-regular-svg-icons/faTimes';\r\n\r\nimport { formatAsMoney } from '../../../utils/format';\r\n\r\nimport { MessageDiv } from '../../../messages';\r\n\r\nconst StyledDiv = styled.div``;\r\n\r\nconst StyledDivCentered = styled.div`\r\n text-align: center;\r\n`;\r\n\r\nconst StyledDivLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst StyledRow = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n width:100%\r\n text-align: center;\r\n`;\r\n\r\nconst StyledColumn = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n flex-basis: 100%;\r\n flex: 1;\r\n`;\r\n\r\nconst InputLabelCentered = styled(InputLabel)`\r\n text-align: center;\r\n`;\r\n\r\nconst StyledCard = styled(Card)`\r\n margin: 5px;\r\n\r\n @media only screen and (min-width: 0px) {\r\n width: 95%;\r\n }\r\n\r\n @media only screen and (min-width: 1024px) {\r\n width: 45%;\r\n }\r\n`;\r\n\r\nconst StyledCardLoanBalance = styled(Card)`\r\n margin: 5px;\r\n max-height: 550px;\r\n width: 100%;\r\n`;\r\n\r\nconst StyledCardFinal = styled(Card)`\r\n margin: 5px;\r\n max-height: 900px;\r\n`;\r\n\r\nconst StyledCardStacked = styled(Card)`\r\n margin: 5px;\r\n min-height: 350px;\r\n max-width: 370px;\r\n`;\r\n\r\nconst StyledCardText = styled(CardText)``;\r\n\r\nconst StyledCardTextTopMargin = styled(CardText)`\r\n margin-top: 10px;\r\n`;\r\n\r\nconst StyledHeader2NoBottom = styled(Header2)`\r\n margin-bottom: 0px;\r\n`;\r\n\r\nconst StyledDd = styled.dd`\r\n margin-left: 0;\r\n margin-bottom: 0;\r\n text-align: center;\r\n`;\r\n\r\nconst StyledLinkButton = styled.button`\r\n background-color: transparent;\r\n border: none;\r\n cursor: pointer;\r\n color: rgb(0, 123, 255);\r\n display: inline;\r\n margin: 0;\r\n padding: 0;\r\n`;\r\n\r\nconst MessagePaddedDiv = styled.div`\r\n padding: 5px;\r\n margin: 5px;\r\n color: ${(p) => p.theme.textPrimary};\r\n`;\r\n\r\nconst StyledInputTextDisabled = styled(InputText)`\r\n background-color: ${(p) => (p.theme.themeName === 'dark' ? '#2b3035' : '#d0d1d2')};\r\n`;\r\n\r\nconst TaxEstimatorForm = ({ data = {}, onChange, messageContent, dataLoaded }) => {\r\n const [showFinalPage, setShowFinalPage] = useState(false);\r\n const [showAGIModal, setShowAGIModal] = useState(false);\r\n const [showHouseholdInformationModal, setShowHouseholdInformationModal] = useState(false);\r\n const [showAssistantModal, setShowAssistantModal] = useState(false);\r\n\r\n const [income, setIncome] = useState(0);\r\n const [clientAndSpouseIncome, setClientAndSpouseIncome] = useState(0);\r\n const [clientAndSpouseHouseholdSizeState, setClientAndSpouseHouseholdSize] = useState(0);\r\n const [householdSizeState, setHouseholdSize] = useState(0);\r\n const [repaymentPlan, setRepaymentPlan] = useState('');\r\n //const [clientAndSpouseRepaymentPlan, setClientAndSpouseRepaymentPlan] = useState('');\r\n const [clientMonthlyPayment, setClientMonthlyPayment] = useState(0);\r\n const [clientAndSpouseMonthlyPayment, setClientAndSpouseMonthlyPayment] = useState(0);\r\n const [spouseMonthlyPayment, setSpouseMonthlyPayment] = useState(0);\r\n const [clientAnnualLoanPayment, setClientAnnualLoanPayment] = useState(0);\r\n const [clientAndSpouseAnnualLoanPayment, setClientAndSpouseAnnualLoanPayment] = useState(0);\r\n const [repaymentSavings, setRepaymentSavings] = useState(0);\r\n const [clientLoanBalance, setClientLoanBalance] = useState(0);\r\n const [spouseLoanBalance, setSpouseLoanBalance] = useState(0);\r\n const [resultText, setResultText] = useState('');\r\n\r\n useEffect(() => {\r\n if (Object.keys(data).length > 0 && dataLoaded) {\r\n //setIncome(data.agi);\r\n //setClientAndSpouseIncome(data.agi);\r\n let initialRepaymentPlan =\r\n data.repaymentPlan === undefined || data.repaymentPlan === null\r\n ? 'IBR'\r\n : data.repaymentPlan;\r\n setIncome(null);\r\n setClientAndSpouseIncome(null);\r\n setClientAndSpouseHouseholdSize(data.householdSize);\r\n const clientHouseholdSize =\r\n data.householdSize > 1 && data.maritalStatus === 'MARRY'\r\n ? data.householdSize - 1\r\n : data.householdSize;\r\n setHouseholdSize(clientHouseholdSize);\r\n setRepaymentPlan(initialRepaymentPlan);\r\n setClientLoanBalance(data.totalPrincipal);\r\n //setSpouseLoanBalance(data.totalPrincipal);\r\n //setClientMonthlyAndAnnualPayment(data.agi, data.repaymentPlan, clientHouseholdSize);\r\n //setClientAndSpouseMonthlyAndAnnualPayment(data.agi, data.repaymentPlan, data.householdSize, data.totalPrincipal, data.totalPrincipal);\r\n setClientMonthlyAndAnnualPayment(\r\n 0,\r\n initialRepaymentPlan,\r\n clientHouseholdSize,\r\n spouseMonthlyPayment\r\n );\r\n setClientAndSpouseMonthlyAndAnnualPayment(\r\n 0,\r\n initialRepaymentPlan,\r\n data.householdSize,\r\n data.totalPrincipal,\r\n data.totalPrincipal,\r\n spouseMonthlyPayment\r\n );\r\n }\r\n }, [dataLoaded]);\r\n\r\n useEffect(() => {\r\n calculateRepaymentSavingsAndResultText();\r\n }, [clientAnnualLoanPayment, clientAndSpouseAnnualLoanPayment]);\r\n\r\n const calculateRepaymentSavingsAndResultText = () => {\r\n //const repaymentSavingsValue = clientAndSpouseAnnualLoanPayment - clientAnnualLoanPayment < 0 ? 0 : clientAndSpouseAnnualLoanPayment - clientAnnualLoanPayment;\r\n const repaymentSavingsValue = clientAndSpouseAnnualLoanPayment - clientAnnualLoanPayment;\r\n setRepaymentSavings(Math.abs(repaymentSavingsValue.toFixed(2)));\r\n setResultText(\r\n getResultText(\r\n clientAnnualLoanPayment,\r\n clientAndSpouseAnnualLoanPayment,\r\n repaymentSavingsValue\r\n )\r\n );\r\n };\r\n\r\n const setClientMonthlyAndAnnualPayment = (\r\n agi,\r\n repaymentPlan,\r\n householdSize,\r\n spMonthlyPayment\r\n ) => {\r\n let monthlyPayment = getMonthlyPaymentByPaymentType(agi, repaymentPlan, householdSize).toFixed(\r\n 2\r\n );\r\n if (monthlyPayment < 0) {\r\n monthlyPayment = 0;\r\n }\r\n setClientMonthlyPayment(monthlyPayment);\r\n setSpouseMonthlyPayment(spMonthlyPayment || 0);\r\n let annualLoanPayment = (\r\n (parseFloat(monthlyPayment) + parseFloat(spMonthlyPayment || 0)) *\r\n 12\r\n ).toFixed(2);\r\n setClientAnnualLoanPayment(annualLoanPayment);\r\n };\r\n\r\n const setClientAndSpouseMonthlyAndAnnualPayment = (\r\n agi,\r\n repaymentPlan,\r\n householdSize,\r\n spLoanBalance,\r\n clLoanBalance,\r\n spMonthlyPayment\r\n ) => {\r\n let balanceRatio = 1;\r\n if (parseFloat(clLoanBalance) + parseFloat(spLoanBalance) > 0) {\r\n balanceRatio =\r\n parseFloat(clLoanBalance) / (parseFloat(clLoanBalance) + parseFloat(spLoanBalance));\r\n }\r\n\r\n let monthlyPayment = (\r\n getMonthlyPaymentByPaymentType(agi, repaymentPlan, householdSize) * balanceRatio\r\n ).toFixed(2);\r\n\r\n if (monthlyPayment < 0) {\r\n monthlyPayment = 0;\r\n }\r\n setClientAndSpouseMonthlyPayment(monthlyPayment);\r\n\r\n let annualLoanPayment = (\r\n (parseFloat(monthlyPayment) + parseFloat(spMonthlyPayment || 0)) *\r\n 12\r\n ).toFixed(2);\r\n setClientAndSpouseAnnualLoanPayment(annualLoanPayment);\r\n };\r\n\r\n const getMonthlyPayment = (agi, povertyTablePercentage, multiplier, householdSize) => {\r\n const povertyGuidelinesDB = data.povertyTable;\r\n let hhSizeFromDB = 1;\r\n\r\n if (householdSize > 10) {\r\n hhSizeFromDB =\r\n (povertyGuidelinesDB[9].lower48Value - povertyGuidelinesDB[8].lower48Value) *\r\n (householdSize - 10) +\r\n povertyGuidelinesDB[9].lower48Value;\r\n } else {\r\n hhSizeFromDB =\r\n povertyGuidelinesDB === undefined\r\n ? 1\r\n : householdSize > 0 && Object.keys(povertyGuidelinesDB).length > 0\r\n ? povertyGuidelinesDB[householdSize - 1].lower48Value\r\n : 1;\r\n }\r\n\r\n let retVal = ((agi - (povertyTablePercentage / 100) * hhSizeFromDB) * multiplier) / 12;\r\n return retVal;\r\n };\r\n\r\n const getMonthlyPaymentByPaymentType = (agi, paymentType, householdSize) => {\r\n let paymentAmount = 0;\r\n\r\n // multiplier is either a percentage, or could be a weighted amount for the SAVE plan type\r\n let multiplier = 1;\r\n\r\n switch (paymentType.toLowerCase()) {\r\n case 'repaye':\r\n multiplier = 10 / 100;\r\n paymentAmount = getMonthlyPayment(agi, 150, multiplier, householdSize);\r\n break;\r\n case 'paye':\r\n multiplier = 10 / 100;\r\n paymentAmount = getMonthlyPayment(agi, 150, multiplier, householdSize);\r\n break;\r\n case 'ibr':\r\n multiplier = 15 / 100;\r\n paymentAmount = getMonthlyPayment(agi, 150, multiplier, householdSize);\r\n break;\r\n case 'icr':\r\n multiplier = 20 / 100;\r\n paymentAmount = getMonthlyPayment(agi, 100, multiplier, householdSize);\r\n break;\r\n case '5%repaye':\r\n multiplier = 5 / 100;\r\n paymentAmount = getMonthlyPayment(agi, 225, multiplier, householdSize);\r\n break;\r\n case 'save':\r\n multiplier = data.saveMultiplier;\r\n paymentAmount = getMonthlyPayment(agi, 225, multiplier, householdSize);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return paymentAmount;\r\n };\r\n\r\n const getResultText = (\r\n clientAnnualLoanPayment,\r\n clientAndSpouseAnnualLoanPayment,\r\n repaymentSavings\r\n ) => {\r\n let finalResult = '';\r\n if (\r\n parseFloat(clientAnnualLoanPayment) + parseFloat(clientAndSpouseAnnualLoanPayment) === 0 &&\r\n (parseFloat(income) || 0) + (parseFloat(clientAndSpouseIncome) || 0) === 0\r\n ) {\r\n finalResult = 'Annual Loan Payment total is zero.';\r\n } else if (parseFloat(clientAnnualLoanPayment) < parseFloat(clientAndSpouseAnnualLoanPayment)) {\r\n finalResult =\r\n 'If your tax cost is less than ' +\r\n formatAsMoney(Math.abs(repaymentSavings)) +\r\n ' you should file separately to create the most savings.';\r\n } else {\r\n finalResult =\r\n 'If your tax cost is more than ' +\r\n formatAsMoney(Math.abs(repaymentSavings)) +\r\n ' you should file jointly to create the most savings.';\r\n }\r\n\r\n return finalResult;\r\n };\r\n\r\n const scrollToTop = () => {\r\n document.getElementById('taxtooltop').scrollIntoView({ behavior: 'smooth' });\r\n };\r\n\r\n const handleClientIncomeChange = (e) => {\r\n setIncome(e.target.value);\r\n setClientMonthlyAndAnnualPayment(\r\n e.target.value,\r\n clientRepaymentPlan,\r\n householdSizeState,\r\n spouseMonthlyPayment\r\n );\r\n };\r\n\r\n const handleClientAndSpouseIncomeChange = (e) => {\r\n setClientAndSpouseIncome(e.target.value);\r\n setClientAndSpouseMonthlyAndAnnualPayment(\r\n e.target.value,\r\n clientAndSpouseRepaymentPlan,\r\n clientAndSpouseHouseholdSizeState,\r\n spouseLoanBalance,\r\n clientLoanBalance,\r\n spouseMonthlyPayment\r\n );\r\n };\r\n\r\n const handleHouseholdSizeChange = (e) => {\r\n setHouseholdSize(e.target.value);\r\n setClientMonthlyAndAnnualPayment(\r\n clientAgiIncome,\r\n clientRepaymentPlan,\r\n e.target.value,\r\n spouseMonthlyPayment\r\n );\r\n };\r\n\r\n const handleClientAndSpouseHouseholdSizeChange = (e) => {\r\n setClientAndSpouseHouseholdSize(e.target.value);\r\n setClientAndSpouseMonthlyAndAnnualPayment(\r\n clientAndSpouseAgiIncome,\r\n clientAndSpouseRepaymentPlan,\r\n e.target.value,\r\n spouseLoanBalance,\r\n clientLoanBalance,\r\n spouseMonthlyPayment\r\n );\r\n };\r\n\r\n const handleClientRepaymentPlanChange = (e) => {\r\n setRepaymentPlan(e.target.value);\r\n setClientMonthlyAndAnnualPayment(\r\n clientAgiIncome,\r\n e.target.value,\r\n householdSizeState,\r\n spouseMonthlyPayment\r\n );\r\n setClientAndSpouseMonthlyAndAnnualPayment(\r\n clientAndSpouseAgiIncome,\r\n e.target.value,\r\n clientAndSpouseHouseholdSizeState,\r\n spouseLoanBalance,\r\n clientLoanBalance,\r\n spouseMonthlyPayment\r\n );\r\n //calculateRepaymentSavingsAndResultText();\r\n };\r\n\r\n // const handleClientAndSpouseRepaymentPlanChange = (e) => {\r\n // setClientAndSpouseRepaymentPlan(e.target.value);\r\n // }\r\n\r\n const handleClientMonthlyPaymentChange = (e) => {\r\n setClientMonthlyPayment(e.target.value);\r\n let annualLoanPayment = (e.target.value * 12).toFixed(2);\r\n setClientAnnualLoanPayment(annualLoanPayment);\r\n };\r\n\r\n const handleClientAndSpouseMonthlyPaymentChange = (e) => {\r\n setClientAndSpouseMonthlyPayment(e.target.value);\r\n let annualLoanPayment = (e.target.value * 12).toFixed(2);\r\n setClientAndSpouseAnnualLoanPayment(annualLoanPayment);\r\n };\r\n\r\n const handleClientAnnualLoanPaymentChange = (e) => {\r\n setClientAnnualLoanPayment(e.target.value);\r\n };\r\n\r\n const handleClientAndSpouseAnnualLoanPaymentChange = (e) => {\r\n setClientAndSpouseAnnualLoanPayment(e.target.value);\r\n };\r\n\r\n const handleRepaymentSavingsChange = (e) => {\r\n setRepaymentSavings(e.target.value);\r\n };\r\n\r\n const handleClientLoanBalanceChange = (e) => {\r\n setClientLoanBalance(e.target.value);\r\n\r\n setClientAndSpouseMonthlyAndAnnualPayment(\r\n clientAndSpouseAgiIncome,\r\n clientAndSpouseRepaymentPlan,\r\n clientAndSpouseHouseholdSizeState,\r\n spouseLoanBalance,\r\n e.target.value,\r\n spouseMonthlyPayment\r\n );\r\n };\r\n\r\n const handleSpouseLoanBalanceChange = (e) => {\r\n setSpouseLoanBalance(e.target.value);\r\n\r\n setClientAndSpouseMonthlyAndAnnualPayment(\r\n clientAndSpouseAgiIncome,\r\n clientAndSpouseRepaymentPlan,\r\n clientAndSpouseHouseholdSizeState,\r\n e.target.value,\r\n clientLoanBalance,\r\n spouseMonthlyPayment\r\n );\r\n };\r\n\r\n const handleSpouseMonthlyPaymentChange = (e) => {\r\n setSpouseMonthlyPayment(e.target.value);\r\n setClientMonthlyAndAnnualPayment(\r\n clientAgiIncome,\r\n clientAndSpouseRepaymentPlan,\r\n householdSizeState,\r\n e.target.value\r\n );\r\n setClientAndSpouseMonthlyAndAnnualPayment(\r\n clientAndSpouseAgiIncome,\r\n clientAndSpouseRepaymentPlan,\r\n clientAndSpouseHouseholdSizeState,\r\n spouseLoanBalance,\r\n clientLoanBalance,\r\n e.target.value\r\n );\r\n };\r\n\r\n const clientAgiIncome = income; // || data.agi;\r\n const clientAndSpouseAgiIncome = clientAndSpouseIncome; // || data.agi;\r\n const clientAndSpouseHouseholdSize = clientAndSpouseHouseholdSizeState || data.householdSize;\r\n //const clientHouseholdSize = clientAndSpouseHouseholdSize > 1 ? clientAndSpouseHouseholdSize - 1 : clientAndSpouseHouseholdSize;\r\n //const clientHouseholdSize = data.householdSize > 1 && data.maritalStatus === 'MARRY' ? data.householdSize - 1 : data.householdSize;\r\n const clientRepaymentPlan = repaymentPlan || data.repaymentPlan;\r\n const clientAndSpouseRepaymentPlan = repaymentPlan || data.repaymentPlan;\r\n const clientFederalLoanBalance = clientLoanBalance || data.totalPrincipal;\r\n const spouseFederalLoanBalance = spouseLoanBalance; // || data.totalPrincipal;\r\n\r\n return (\r\n <>\r\n <Form id=\"taxtoolcalculator\" defaults={data} handleChange={onChange}>\r\n <div className=\"row\">\r\n <StyledCard brand=\"secondary\">\r\n <CardBody>\r\n <StyledDiv>\r\n <StyledRow className=\"row\">\r\n <StyledColumn className=\"col-4 col-sm-4\">\r\n <InputLabelCentered htmlFor=\"income\">You Only</InputLabelCentered>\r\n </StyledColumn>\r\n <StyledColumn className=\"col-4 col-sm-4\"></StyledColumn>\r\n <StyledColumn className=\"col-4 col-sm-4\">\r\n <InputLabelCentered htmlFor=\"income\">You + Spouse</InputLabelCentered>\r\n </StyledColumn>\r\n </StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputText\r\n id=\"clientAgiIncome\"\r\n name=\"clientAgiIncome\"\r\n defaultValue={clientAgiIncome}\r\n onChange={handleClientIncomeChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n <StyledColumn>\r\n <StyledCardText>\r\n <dl>\r\n <StyledDd>Adjusted Gross Income</StyledDd>\r\n <StyledDd>\r\n <InputHelp>\r\n <StyledLinkButton\r\n onClick={(e) => {\r\n e.preventDefault();\r\n setShowAGIModal(true);\r\n }}\r\n >\r\n How Do I Determine?\r\n </StyledLinkButton>\r\n </InputHelp>\r\n </StyledDd>\r\n </dl>\r\n </StyledCardText>\r\n </StyledColumn>\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputText\r\n id=\"clientAndSpouseAgiIncome\"\r\n name=\"clientAndSpouseAgiIncome\"\r\n defaultValue={clientAndSpouseAgiIncome}\r\n onChange={handleClientAndSpouseIncomeChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n </StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <StyledInputTextDisabled\r\n id=\"clientHouseHoldSize\"\r\n key=\"clientHouseHoldSize\"\r\n name=\"clientHouseHoldSize\"\r\n //defaultValue={householdSizeState}\r\n value={householdSizeState}\r\n onChange={handleHouseholdSizeChange}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n <StyledColumn>\r\n <StyledCardText>\r\n <dl>\r\n <StyledDd>Household Size</StyledDd>\r\n <StyledDd>\r\n <InputHelp>\r\n <StyledLinkButton\r\n onClick={(e) => {\r\n e.preventDefault();\r\n setShowHouseholdInformationModal(true);\r\n }}\r\n >\r\n Household Information\r\n </StyledLinkButton>\r\n </InputHelp>\r\n </StyledDd>\r\n </dl>\r\n </StyledCardText>\r\n </StyledColumn>\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <StyledInputTextDisabled\r\n id=\"clientAndSpouseHouseholdSize\"\r\n name=\"clientAndSpouseHouseholdSize\"\r\n defaultValue={clientAndSpouseHouseholdSize}\r\n onChange={handleClientAndSpouseHouseholdSizeChange}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n </StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n {/* <InputSelect\r\n id=\"clientRepaymentPlan\"\r\n name=\"clientRepaymentPlan\"\r\n options={{\r\n '': '',\r\n PAYE: 'PAYE',\r\n IBR: 'IBR',\r\n ICR: 'ICR',\r\n SAVE: 'SAVE',\r\n }}\r\n value={clientRepaymentPlan}\r\n onChange={handleClientRepaymentPlanChange}\r\n disabled={true}\r\n /> */}\r\n <StyledInputTextDisabled\r\n id=\"clientRepaymentPlan\"\r\n name=\"clientRepaymentPlan\"\r\n value={clientRepaymentPlan}\r\n onChange={handleClientRepaymentPlanChange}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n <StyledColumn>\r\n <StyledCardText>\r\n <dl>\r\n <StyledDd>Repayment Plan Type</StyledDd>\r\n </dl>\r\n </StyledCardText>\r\n </StyledColumn>\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n {/* <InputSelect\r\n id=\"clientAndSpouseRepaymentPlan\"\r\n name=\"clientAndSpouseRepaymentPlan\"\r\n options={{\r\n '': '',\r\n PAYE: 'PAYE',\r\n IBR: 'IBR',\r\n ICR: 'ICR',\r\n SAVE: 'SAVE',\r\n }}\r\n value={clientAndSpouseRepaymentPlan}\r\n onChange={handleClientRepaymentPlanChange}\r\n disabled={true}\r\n /> */}\r\n <StyledInputTextDisabled\r\n id=\"clientAndSpouseRepaymentPlan\"\r\n name=\"clientAndSpouseRepaymentPlan\"\r\n value={clientAndSpouseRepaymentPlan}\r\n onChange={handleClientRepaymentPlanChange}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n </StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <StyledInputTextDisabled\r\n id=\"clientMonthlyPayment\"\r\n name=\"clientMonthlyPayment\"\r\n //defaultValue={clientMonthlyPayment}\r\n value={clientMonthlyPayment}\r\n onChange={handleClientMonthlyPaymentChange}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n <StyledColumn>\r\n <StyledCardText>\r\n <dl>\r\n <StyledDd>Monthly Payment</StyledDd>\r\n </dl>\r\n </StyledCardText>\r\n </StyledColumn>\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <StyledInputTextDisabled\r\n id=\"clientAndSpouseMonthlyPayment\"\r\n name=\"clientAndSpouseMonthlyPayment\"\r\n //defaultValue={clientAndSpouseMonthlyPayment}\r\n value={clientAndSpouseMonthlyPayment}\r\n onChange={handleClientAndSpouseMonthlyPaymentChange}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n </StyledRow>\r\n\r\n <StyledRow className=\"row\">\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <StyledInputTextDisabled\r\n id=\"spouseMonthlyPayment\"\r\n name=\"spouseMonthlyPayment\"\r\n //defaultValue={clientMonthlyPayment}\r\n value={spouseMonthlyPayment}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n <StyledColumn>\r\n <StyledCardText>\r\n <dl>\r\n <StyledDd>Spouse Monthly Payment</StyledDd>\r\n </dl>\r\n </StyledCardText>\r\n </StyledColumn>\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <StyledInputTextDisabled\r\n id=\"spouseMonthlyPaymentBoth\"\r\n name=\"spouseMonthlyPaymentBoth\"\r\n //defaultValue={clientAndSpouseMonthlyPayment}\r\n value={spouseMonthlyPayment}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n </StyledRow>\r\n\r\n <StyledRow className=\"row\">\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <StyledInputTextDisabled\r\n id=\"clientAnnualLoanPayment\"\r\n name=\"clientAnnualLoanPayment\"\r\n //defaultValue={clientAnnualLoanPayment}\r\n value={clientAnnualLoanPayment}\r\n onChange={handleClientAnnualLoanPaymentChange}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n <StyledColumn>\r\n <StyledCardText>\r\n <dl>\r\n <StyledDd>Annual Loan Payment</StyledDd>\r\n </dl>\r\n </StyledCardText>\r\n </StyledColumn>\r\n <StyledColumn className=\"col-6 col-sm-6\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <StyledInputTextDisabled\r\n id=\"clientAndSpouseAnnualLoanPayment\"\r\n name=\"clientAndSpouseAnnualLoanPayment\"\r\n //defaultValue={clientAndSpouseAnnualLoanPayment}\r\n value={clientAndSpouseAnnualLoanPayment}\r\n onChange={handleClientAndSpouseAnnualLoanPaymentChange}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n </StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn className=\"col-6 col-sm-6\"></StyledColumn>\r\n <StyledColumn>\r\n <InputWrapper>\r\n <InputLabelCentered htmlFor=\"income\">Repayment Savings</InputLabelCentered>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <StyledInputTextDisabled\r\n id=\"repaymentSavings\"\r\n name=\"repaymentSavings\"\r\n //defaultValue={repaymentSavings}\r\n value={repaymentSavings}\r\n onChange={handleRepaymentSavingsChange}\r\n disabled={true}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n <StyledColumn className=\"col-4 col-sm-4\"></StyledColumn>\r\n </StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn className=\"col-2 col-sm-2\"></StyledColumn>\r\n <StyledColumn>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <dl>\r\n <StyledDd>\r\n <StyledHeader2NoBottom>Results</StyledHeader2NoBottom>\r\n </StyledDd>\r\n </dl>\r\n <StyledCardText>\r\n <dl>\r\n <StyledDd>{resultText}</StyledDd>\r\n </dl>\r\n </StyledCardText>\r\n </CardBody>\r\n </Card>\r\n </StyledColumn>\r\n <StyledColumn className=\"col-2 col-sm-2\"></StyledColumn>\r\n </StyledRow>\r\n </StyledDiv>\r\n </CardBody>\r\n </StyledCard>\r\n {showFinalPage && (\r\n <>\r\n <StyledColumn>\r\n <StyledRow>\r\n <StyledCardFinal brand=\"secondary\">\r\n <CardBody>\r\n <StyledDivCentered>\r\n <StyledHeader2NoBottom>Helpful Information</StyledHeader2NoBottom>\r\n <StyledRow>\r\n <StyledCardTextTopMargin>\r\n <StyledDivLeft>\r\n <ul>\r\n <li>\r\n Your household size may differ from the number you claim on your\r\n taxes and is generated from what you provided to Fiducius. When\r\n filing taxes, either spouse may claim dependents. (Please complete\r\n a Contact Us request if this needs to be updated.)\r\n </li>\r\n <br />\r\n <li>\r\n Your spouse will not be included in the household size based on\r\n recent legislation and rules surrounding income-driven repayment\r\n plans. However, their income will still be excluded from the\r\n calculation if you file separately.\r\n </li>\r\n <br />\r\n <li>\r\n Want to lower your spouse's student loan payment too?\r\n <ul>\r\n <li>\r\n <a href=\"https://myfiducius.com/register\" target=\"_blank\">\r\n Register an account\r\n </a>{' '}\r\n and let us help them today.\r\n </li>\r\n </ul>\r\n </li>\r\n <br />\r\n <li>\r\n The results will provide your annual student loan repayment\r\n savings between filing your taxes jointly or separately. This\r\n should be used when comparing your tax filing difference.\r\n </li>\r\n <br />\r\n <li>\r\n Please consult a tax professional for specific tax related needs\r\n and share your results with them by printing a copy.\r\n </li>\r\n <br />\r\n <li>\r\n If you live in a community property state, See{' '}\r\n <a\r\n href=\"https://www.irs.gov/pub/irs-pdf/p555.pdf\"\r\n target=\"_blank\"\r\n >\r\n IRS Publication 555\r\n </a>{' '}\r\n page 10 for more information regarding filing separate returns.\r\n </li>\r\n </ul>\r\n </StyledDivLeft>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n window.print();\r\n }}\r\n >\r\n {' '}\r\n {'Print'}{' '}\r\n </Button>\r\n </StyledCardTextTopMargin>\r\n </StyledRow>\r\n </StyledDivCentered>\r\n </CardBody>\r\n </StyledCardFinal>\r\n </StyledRow>\r\n <StyledRow>\r\n <StyledColumn>\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n <MessagePaddedDiv>\r\n <StyledDivCentered></StyledDivCentered>\r\n </MessagePaddedDiv>\r\n </div>\r\n </div>\r\n </StyledColumn>\r\n </StyledRow>\r\n </StyledColumn>\r\n <StyledRow>\r\n <StyledColumn></StyledColumn>\r\n <StyledColumn>\r\n <div className=\"row\">\r\n <div className=\"col-2\"></div>\r\n <div id=\"backbutton\" className=\"col-6\">\r\n <InputWrapper>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n setShowFinalPage(false);\r\n scrollToTop();\r\n }}\r\n >\r\n {' '}\r\n {'Back'}{' '}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-2\"></div>\r\n </div>\r\n </StyledColumn>\r\n </StyledRow>\r\n </>\r\n )}\r\n {!showFinalPage && (\r\n <>\r\n <StyledColumn>\r\n <StyledRow>\r\n <StyledCardLoanBalance brand=\"secondary\">\r\n <CardBody>\r\n <StyledDivCentered>\r\n <StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn>\r\n <InputLabelCentered htmlFor=\"income\">\r\n Your Spouse's Loan Balance\r\n </InputLabelCentered>\r\n </StyledColumn>\r\n </StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn>\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputText\r\n id=\"spouseLoanBalance\"\r\n name=\"spouseLoanBalance\"\r\n defaultValue={spouseFederalLoanBalance}\r\n onChange={handleSpouseLoanBalanceChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n </StyledRow>\r\n\r\n <StyledRow className=\"row\">\r\n <StyledColumn>\r\n <InputLabelCentered htmlFor=\"income\">\r\n Your Spouse's Monthly Payment\r\n </InputLabelCentered>\r\n </StyledColumn>\r\n </StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn>\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputText\r\n id=\"spouseLoanBalance\"\r\n name=\"spouseLoanBalance\"\r\n defaultValue={spouseMonthlyPayment}\r\n onChange={handleSpouseMonthlyPaymentChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n </StyledRow>\r\n\r\n <StyledRow className=\"row\">\r\n <StyledColumn>\r\n <InputLabelCentered htmlFor=\"income\">\r\n Your Loan Balance\r\n </InputLabelCentered>\r\n </StyledColumn>\r\n </StyledRow>\r\n <StyledRow className=\"row\">\r\n <StyledColumn>\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputText\r\n id=\"clientLoanBalance\"\r\n name=\"clientLoanBalance\"\r\n defaultValue={clientFederalLoanBalance}\r\n onChange={handleClientLoanBalanceChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </StyledColumn>\r\n </StyledRow>\r\n </StyledRow>\r\n </StyledDivCentered>\r\n <StyledRow>\r\n <StyledDivLeft>\r\n <InputHelp>\r\n *Include only federal student loans not in school deferment or default.\r\n </InputHelp>\r\n <br />\r\n <InputHelp>\r\n *If Your Loan Balance is showing a significantly different balance,\r\n please complete a Contact Us request to let us know.\r\n </InputHelp>\r\n </StyledDivLeft>\r\n </StyledRow>\r\n </CardBody>\r\n </StyledCardLoanBalance>\r\n </StyledRow>\r\n </StyledColumn>\r\n <StyledColumn>\r\n {messageContent.length > 0 && (\r\n <div id=\"informationbox\">\r\n <StyledRow>\r\n <StyledCardStacked brand=\"secondary\">\r\n <CardBody>\r\n <StyledHeader2NoBottom>Information</StyledHeader2NoBottom>\r\n <StyledRow>\r\n <StyledCardTextTopMargin>\r\n <div dangerouslySetInnerHTML={{ __html: messageContent }}></div>\r\n </StyledCardTextTopMargin>\r\n </StyledRow>\r\n </CardBody>\r\n </StyledCardStacked>\r\n </StyledRow>\r\n </div>\r\n )}\r\n <StyledRow>\r\n <StyledCardStacked brand=\"secondary\">\r\n <CardBody>\r\n <StyledDiv>\r\n <StyledHeader2NoBottom>Tax Preparer Assistant</StyledHeader2NoBottom>\r\n {/* <InputHelp>\r\n <StyledLinkButton\r\n onClick={(e) => {\r\n e.preventDefault();\r\n setShowAssistantModal(true);\r\n }}\r\n >\r\n What is this?\r\n </StyledLinkButton>\r\n </InputHelp> */}\r\n <StyledRow>\r\n <StyledCardTextTopMargin>\r\n <StyledDivLeft>\r\n <p>\r\n Click <b>Download</b> to print a copy of your results.\r\n </p>\r\n <p>\r\n Use it when preparing your taxes or provide it to your tax preparer\r\n for reference.\r\n </p>\r\n <p>\r\n The SAVE repayment plan is no longer viable under loan forgiveness.\r\n You are unable to submit a repayment application under the SAVE\r\n repayment plan.\r\n </p>\r\n </StyledDivLeft>\r\n </StyledCardTextTopMargin>\r\n </StyledRow>\r\n </StyledDiv>\r\n </CardBody>\r\n </StyledCardStacked>\r\n </StyledRow>\r\n <div className=\"row\">\r\n <div className=\"col-2\"></div>\r\n <div className=\"col\">\r\n <InputWrapper>\r\n <Button\r\n brand=\"primary\"\r\n onClick={() => {\r\n setShowFinalPage(true);\r\n scrollToTop();\r\n }}\r\n >\r\n {' '}\r\n {'Download'}{' '}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-2\"></div>\r\n </div>\r\n </StyledColumn>\r\n </>\r\n )}\r\n </div>\r\n </Form>\r\n\r\n <Modal isOpen={showAGIModal} theme={'position:fixed;'}>\r\n <Card>\r\n <FlexEnd>\r\n <InputWrapper>\r\n <Button\r\n brand=\"lowContrast\"\r\n onClick={() => {\r\n setShowAGIModal(false);\r\n }}\r\n >\r\n <FontAwesomeIcon icon={faXIcon} />\r\n </Button>\r\n </InputWrapper>\r\n </FlexEnd>\r\n\r\n <MessagePaddedDiv id=\"messageSection\">\r\n <Header2>Adjusted Gross Income</Header2>\r\n <StyledDivLeft>\r\n <p>\r\n There are three ways that you can input your income:\r\n <br />\r\n <br />\r\n <ul>\r\n <li>\r\n Enter the Wages reported in Box 1 on your <b>W2</b>.\r\n </li>\r\n <li>\r\n Enter the Year-to-Date taxable income from your last paycheck of the previous\r\n year.\r\n </li>\r\n <li>\r\n Enter Gross Income minus your total pre-tax deductions from your last{' '}\r\n <b>paycheck</b> of the previous year.\r\n </li>\r\n </ul>\r\n </p>\r\n <p>\r\n <InputHelp>*Enter all income for both you and your spouse in each field.</InputHelp>\r\n <br />\r\n <InputHelp>\r\n *If you live in a community property state, divide your and your spouse's income\r\n by two and put it under your income. Then, include both incomes in the next\r\n column.\r\n </InputHelp>\r\n <br />\r\n <InputHelp>\r\n *See{' '}\r\n <a href=\"https://www.irs.gov/pub/irs-pdf/p555.pdf\" target=\"_blank\">\r\n IRS Publication 555\r\n </a>{' '}\r\n page 10 for more information regarding filing separate returns in a community\r\n property state.\r\n </InputHelp>\r\n </p>\r\n </StyledDivLeft>\r\n </MessagePaddedDiv>\r\n <CardFooter>\r\n <Button\r\n brand=\"lowContrast\"\r\n onClick={() => {\r\n setShowAGIModal(false);\r\n }}\r\n >\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n <Modal isOpen={showHouseholdInformationModal} theme={'position:fixed;'}>\r\n <Card>\r\n <FlexEnd>\r\n <InputWrapper>\r\n <Button\r\n brand=\"lowContrast\"\r\n onClick={() => {\r\n setShowHouseholdInformationModal(false);\r\n }}\r\n >\r\n <FontAwesomeIcon icon={faXIcon} />\r\n </Button>\r\n </InputWrapper>\r\n </FlexEnd>\r\n\r\n <MessagePaddedDiv id=\"messageSection\">\r\n <Header2>Household Size</Header2>\r\n <StyledDivLeft>\r\n <p>\r\n Your household size may differ from the number you claim on your taxes and is\r\n generated from what you provided to Fiducius.\r\n </p>\r\n <p>\r\n The household size includes you and your children, including unborn children who\r\n will be born during the year, if the children will receive more than half their\r\n support from you.\r\n </p>\r\n <p>\r\n <i>Please complete a Contact Us request if this needs to be updated.</i>\r\n </p>\r\n <p>\r\n Your spouse will not be included in the household size based on recent legislation\r\n and rules surrounding income-driven repayment plans. However, their income will\r\n still be excluded from the calculation if you file separately.\r\n </p>\r\n </StyledDivLeft>\r\n </MessagePaddedDiv>\r\n <CardFooter>\r\n <Button\r\n brand=\"lowContrast\"\r\n onClick={() => {\r\n setShowHouseholdInformationModal(false);\r\n }}\r\n >\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n <Modal isOpen={showAssistantModal} theme={'position:fixed;'}>\r\n <Card>\r\n <FlexEnd>\r\n <InputWrapper>\r\n <Button\r\n brand=\"lowContrast\"\r\n onClick={() => {\r\n setShowAssistantModal(false);\r\n }}\r\n >\r\n <FontAwesomeIcon icon={faXIcon} />\r\n </Button>\r\n </InputWrapper>\r\n </FlexEnd>\r\n\r\n <MessagePaddedDiv id=\"messageSection\">\r\n <p>Assistant Modal Text Here!</p>\r\n </MessagePaddedDiv>\r\n <CardFooter>\r\n <Button\r\n brand=\"lowContrast\"\r\n onClick={() => {\r\n setShowAssistantModal(false);\r\n }}\r\n >\r\n Close\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\nTaxEstimatorForm.propTypes = {\r\n action: t.string,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n agi: t.number,\r\n};\r\n\r\nexport default TaxEstimatorForm;\r\n","import { createSelector } from 'reselect';\r\nimport { getUserId } from '../../../auth';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nexport const getBenefitData = (state) =>\r\n safeAccess(state, `modeler.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getGrossPayment = createSelector([getBenefitData], (data = {}) => data.grossPay || 0);\r\n\r\nexport const getHouseholdSize = createSelector(\r\n [getBenefitData],\r\n (data = {}) => data.householdSize || 0\r\n);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('modeler');\r\n","import actions from './actions';\r\nimport { getApiSingle, resourceOperationsGenerator } from '../../../utils';\r\nimport { getToken } from '../../../auth';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/benefit-modeler',\r\n resourceType: 'benefit-modeler',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'modeler',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCopyResourceToForm,\r\n modelerCreateResource,\r\n} = operations;\r\n\r\nconst getSingleMessage = (id) => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n const state = getState();\r\n let data = null;\r\n try {\r\n data = await getApiSingle(getToken(state), '/internal-message/' + id);\r\n } catch (error) {}\r\n return data;\r\n};\r\n\r\nexport {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCreateResource,\r\n modelerCopyResourceToForm,\r\n getSingleMessage,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('modeler', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Button, Card, CardBody, Header2, InputWrapper } from 'fiducius-ui';\r\n\r\nimport { MessageTile } from '../../../messages';\r\n\r\nconst TaxEstimatorIntro = ({ handleIntroButtonClick }) => {\r\n return (\r\n <>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-12\">\r\n <MessageTile messageType={'Tax_Tool'} />\r\n <Card brand=\"secondary\">\r\n <CardBody>\r\n <Header2>What You Need to Begin</Header2>\r\n <p>\r\n Your & your spouse's last paycheck from the prior year, W2's & federal 1040's (if\r\n completed).\r\n </p>\r\n <p>\r\n Your & your spouse's current federal student loan balances, visit{' '}\r\n <a href=\"https://studentaid.gov\" target=\"_blank\">\r\n https://studentaid.gov\r\n </a>{' '}\r\n for help.\r\n </p>\r\n <p>Take a few minutes to complete and get instant results!</p>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-4\"></div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={handleIntroButtonClick}>\r\n {' '}\r\n {'Continue to PaySmart Loan Navigator'}{' '}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-4\"></div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nTaxEstimatorIntro.propTypes = {\r\n handleIntroButtonClick: t.func.isRequired,\r\n};\r\n\r\nexport default TaxEstimatorIntro;\r\n","import React, { useEffect, useState } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardText, DashboardSection, Header2 } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { getBenefitData } from '../redux/selectors';\r\n\r\nimport { debounce, mergeRequestStatuses, flatten } from '../../../utils';\r\n\r\nimport {\r\n modelerLoadResource,\r\n modelerCopyResourceToForm,\r\n modelerHandleFormChange,\r\n getSingleMessage,\r\n} from '../redux/operations';\r\n\r\nimport TaxEstimatorForm from '../components/tax-estimator-form';\r\nimport TaxEstimatorIntro from '../components/tax-estimator-intro';\r\n\r\nconst Modeler = ({ id, loadData, request, data, updateFormState, getSingleMessage }) => {\r\n const [dataLoaded, setDataLoaded] = useState(false);\r\n\r\n useEffect(() => {\r\n loadData(id).then(() => setDataLoaded(true));\r\n getSingleMessage('Tax_Tool_Tab').then((data) => {\r\n if (data && data.messages !== null) {\r\n setMessageContent(data.messages[0].messageContent);\r\n }\r\n });\r\n }, []);\r\n\r\n const [showIntroPage, setShowIntroPage] = useState(true);\r\n const [messageContent, setMessageContent] = useState('');\r\n\r\n const handleIntroButtonClick = () => {\r\n setShowIntroPage(!showIntroPage);\r\n scrollToTop();\r\n };\r\n\r\n const scrollToTop = () => {\r\n document.getElementById('taxtooltop').scrollIntoView({ behavior: 'smooth' });\r\n };\r\n\r\n const onChange = debounce((modeler, attributes, formState) => {\r\n const newData = { ...flatten(data), ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 250);\r\n\r\n return (\r\n <div id=\"taxtooltop\">\r\n <style>\r\n {`@media print {\r\n @page {\r\n size: A3;\r\n }\r\n #taxtooltop{ \r\n position: fixed;\r\n left: 0;\r\n top: 0; \r\n }\r\n #maincard{\r\n max-width:75%\r\n } \r\n #launcher{display:none;}\r\n #informationbox{display:none;}\r\n #backbutton{display:none;}\r\n .nav-side{display:none;}\r\n .nav-top{display:none;}\r\n }`}\r\n </style>\r\n <DashboardSection title=\"Benefits for your financial well-being\">\r\n {showIntroPage && (\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <Header2>PaySmart Loan Navigator</Header2>\r\n <CardText>\r\n <AsyncLoader request={request}>\r\n <TaxEstimatorIntro\r\n isLoading={request.isLoading}\r\n handleIntroButtonClick={handleIntroButtonClick}\r\n />\r\n </AsyncLoader>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )}\r\n {!showIntroPage && (\r\n <div id=\"maincard\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <Header2>PaySmart Loan Navigator</Header2>\r\n <CardText>\r\n <AsyncLoader request={request}>\r\n <TaxEstimatorForm\r\n data={data}\r\n isLoading={request.isLoading}\r\n onChange={onChange}\r\n messageContent={messageContent}\r\n dataLoaded={dataLoaded}\r\n />\r\n </AsyncLoader>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n )}\r\n </DashboardSection>\r\n </div>\r\n );\r\n};\r\n\r\nModeler.propTypes = {\r\n actionRequest: t.object,\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n request: t.object,\r\n modeler: t.object,\r\n updateFormState: t.func.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.modeler;\r\n return {\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n data: getBenefitData(state),\r\n form: form,\r\n errors: errors,\r\n id: getUserId(state),\r\n request: state.modeler.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(modelerLoadResource(id));\r\n dispatch(modelerCopyResourceToForm(id));\r\n },\r\n updateFormState: (data, attributes) => dispatch(modelerHandleFormChange(data, attributes)),\r\n getSingleMessage: (id) => {\r\n return dispatch(getSingleMessage(id));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Modeler);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { formatAsMoney } from '../../../utils/format';\r\nimport {\r\n Alert,\r\n BrandColor,\r\n Card,\r\n CardTitle,\r\n CardBody,\r\n Form,\r\n Header5,\r\n InputAddon,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputSelect,\r\n InputNumeric,\r\n InputWrapper,\r\n Header2,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../../routing';\r\nimport { MessageDiv } from '../../../messages';\r\n\r\nclass TaxEstimateTool extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n longFilingStatus: t.string,\r\n onChange: t.func.isRequired,\r\n };\r\n\r\n constructor(props, data = {}) {\r\n super(props);\r\n\r\n this.state = {\r\n clientIncome: 0,\r\n spouseIncome: 0,\r\n\r\n clientChildCliam: 0,\r\n spouseChildClaim: 0,\r\n\r\n educationCredit: 0,\r\n childCareCredit: 0,\r\n singleEducationCredit: 0,\r\n singleChildCareCredit: 0,\r\n clientOtherCredit: 0,\r\n spouseOtherCredit: 0,\r\n jointOtherCredit: 0,\r\n\r\n clientDeductions: 0,\r\n spouseDeductions: 12200,\r\n\r\n clientLoanBalance: 0,\r\n spouseLoanBalance: 0,\r\n\r\n studentInterestDeduction: 0,\r\n jointInterestDeduction: 0,\r\n\r\n tuitionDeduction: 0,\r\n jointTuitionDeduction: 0,\r\n\r\n educatorExpense: 0,\r\n spouseEducatorExpense: 0,\r\n\r\n filingStatus: '',\r\n };\r\n\r\n this.handleFilingStatus = this.handleFilingStatus.bind(this);\r\n\r\n this.handleClientIncomeChange = this.handleClientIncomeChange.bind(this);\r\n this.handleSpouseIncomeChange = this.handleSpouseIncomeChange.bind(this);\r\n\r\n this.handleClientChildCliam = this.handleClientChildCliam.bind(this);\r\n this.handleSpouseChildCliam = this.handleSpouseChildCliam.bind(this);\r\n\r\n this.handleClientDeductionChange = this.handleClientDeductionChange.bind(this);\r\n this.handleSpouseDeductionChange = this.handleSpouseDeductionChange.bind(this);\r\n\r\n this.handleEducationCreditChange = this.handleEducationCreditChange.bind(this);\r\n this.handleChildCareCreditChange = this.handleChildCareCreditChange.bind(this);\r\n this.handleSingleEducationCreditChange = this.handleSingleEducationCreditChange.bind(this);\r\n this.handleSingleChildCareCreditChange = this.handleSingleChildCareCreditChange.bind(this);\r\n\r\n this.handleClientOtherCredit = this.handleClientOtherCredit.bind(this);\r\n this.handleSpouseOtherCredit = this.handleSpouseOtherCredit.bind(this);\r\n this.handleJointOtherCredit = this.handleJointOtherCredit.bind(this);\r\n\r\n this.handleClientLoanBalance = this.handleClientLoanBalance.bind(this);\r\n this.handleSpouseLoanBalance = this.handleSpouseLoanBalance.bind(this);\r\n\r\n this.handleStudentLoanIntDeduction = this.handleStudentLoanIntDeduction.bind(this);\r\n this.handleJointInterestDeduction = this.handleJointInterestDeduction.bind(this);\r\n this.handleTuitionDeduction = this.handleTuitionDeduction.bind(this);\r\n this.handleJointTuitionDeduction = this.handleJointTuitionDeduction.bind(this);\r\n this.handleEducatorExpense = this.handleEducatorExpense.bind(this);\r\n this.handleSpouseEducatorExpense = this.handleSpouseEducatorExpense.bind(this);\r\n }\r\n handleFilingStatus(event) {\r\n if (event.target.value === 'Married Filing Separate') {\r\n this.setState({\r\n filingStatus: event.target.value,\r\n singleEducationCredit: 0,\r\n singleChildCareCredit: 0,\r\n });\r\n } else {\r\n this.setState({ filingStatus: event.target.value });\r\n }\r\n }\r\n\r\n //Income changes\r\n handleClientIncomeChange(event) {\r\n this.setState({ clientIncome: event.target.value });\r\n }\r\n handleSpouseIncomeChange(event) {\r\n this.setState({ spouseIncome: event.target.value });\r\n }\r\n //Deduction Change\r\n handleClientDeductionChange(event) {\r\n this.setState({ clientDeductions: event.target.value });\r\n }\r\n handleSpouseDeductionChange(event) {\r\n this.setState({ spouseDeductions: event.target.value });\r\n }\r\n //Children claims\r\n handleClientChildCliam(event) {\r\n this.setState({ clientChildCliam: event.target.value });\r\n }\r\n handleSpouseChildCliam(event) {\r\n this.setState({ spouseChildCliam: event.target.value });\r\n }\r\n handleEducationCreditChange(event) {\r\n this.setState({ educationCredit: event.target.value });\r\n }\r\n handleChildCareCreditChange(event) {\r\n this.setState({ childCareCredit: event.target.value });\r\n }\r\n handleSingleEducationCreditChange(event) {\r\n this.setState({ singleEducationCredit: event.target.value });\r\n }\r\n handleSingleChildCareCreditChange(event) {\r\n this.setState({ singleChildCareCredit: event.target.value });\r\n }\r\n handleClientOtherCredit(event) {\r\n this.setState({ clientOtherCredit: event.target.value });\r\n }\r\n handleSpouseOtherCredit(event) {\r\n this.setState({ spouseOtherCredit: event.target.value });\r\n }\r\n handleJointOtherCredit(event) {\r\n this.setState({ jointOtherCredit: event.target.value });\r\n }\r\n handleClientLoanBalance(event) {\r\n this.setState({ clientLoanBalance: event.target.value });\r\n }\r\n handleSpouseLoanBalance(event) {\r\n this.setState({ spouseLoanBalance: event.target.value });\r\n }\r\n handleStudentInterestDeduction(event) {\r\n this.setState({ studentInterestDeduction: event.target.value });\r\n }\r\n handleJointInterestDeduction(event) {\r\n this.setState({ jointInterestDeduction: event.target.value });\r\n }\r\n handleStudentLoanIntDeduction(event) {\r\n this.setState({ studentInterestDeduction: event.target.value });\r\n }\r\n handleTuitionDeduction(event) {\r\n this.setState({ tuitionDeduction: event.target.value });\r\n }\r\n handleJointTuitionDeduction(event) {\r\n this.setState({ jointTuitionDeduction: event.target.value });\r\n }\r\n handleEducatorExpense(event) {\r\n this.setState({ educatorExpense: event.target.value });\r\n }\r\n handleSpouseEducatorExpense(event) {\r\n this.setState({ spouseEducatorExpense: event.target.value });\r\n }\r\n\r\n render() {\r\n const { data = {}, onChange } = this.props;\r\n const filingStatus = this.state.filingStatus || data.filingStatus;\r\n\r\n let clientIncome = this.state.clientIncome || data.agi;\r\n let spouseIncome = this.state.spouseIncome;\r\n\r\n const clientChildClaim = this.state.clientChildCliam || 0;\r\n const spouseChildClaim = this.state.spouseChildCliam || 0;\r\n\r\n let studentIntDeduction = this.state.studentInterestDeduction || 0;\r\n let jointIntDeduction = this.state.jointInterestDeduction || 0;\r\n let tuitionDeduction = this.state.tuitionDeduction || 0;\r\n let jointTuitionDeduction = this.state.jointTuitionDeduction || 0;\r\n let educatorDeduction = this.state.educatorExpense || 0;\r\n let spouseEducatorDed = this.state.spouseEducatorExpense;\r\n\r\n let educationCredit = this.state.educationCredit || 0;\r\n let childCareCredit = this.state.childCareCredit || 0;\r\n let singleEducationCredit = this.state.singleEducationCredit || 0;\r\n let singleChildCareCredit = this.state.singleChildCareCredit || 0;\r\n\r\n let clientLoanBalance = this.state.clientLoanBalance || data.totalPrincipal;\r\n let spouseLoanBalance = this.state.spouseLoanBalance || 0;\r\n\r\n /* DEDUCTION SECTION*/\r\n let clientDeductions = this.state.clientDeductions;\r\n let spouseDeductions = this.state.spouseDeductions;\r\n\r\n let itemizedOrStandardNameClient;\r\n let itemizedOrStandardNameSpouse;\r\n let defaultDeduction = 12200;\r\n if (this.state.filingStatus === 'Head of Household') {\r\n if (clientDeductions === 0) {\r\n clientDeductions = 18350;\r\n spouseDeductions = 0;\r\n }\r\n } else if (this.state.filingStatus === 'Married Filing Jointly') {\r\n if (clientDeductions === 0) {\r\n clientDeductions = 24400;\r\n spouseDeductions = 0;\r\n }\r\n } else {\r\n if (clientDeductions === 0) {\r\n clientDeductions = 12200;\r\n }\r\n }\r\n\r\n if (\r\n (clientDeductions === 12200 && this.state.filingStatus === 'Single') ||\r\n (clientDeductions === 12200 && this.state.filingStatus === 'Married Filing Separate') ||\r\n (clientDeductions === 18350 && this.state.filingStatus === 'Head of Household') ||\r\n (clientDeductions === 24400 && this.state.filingStatus === 'Married Filing Jointly')\r\n ) {\r\n itemizedOrStandardNameClient = 'Standard Deduction';\r\n } else {\r\n itemizedOrStandardNameClient = 'Itemized Deduction';\r\n }\r\n if (\r\n (spouseDeductions === 12200 && this.state.filingStatus === 'Single') ||\r\n (spouseDeductions === 12200 && this.state.filingStatus === 'Married Filing Separate') ||\r\n (spouseDeductions === 18350 && this.state.filingStatus === 'Head of Household') ||\r\n (spouseDeductions === 24400 && this.state.filingStatus === 'Married Filing Jointly')\r\n ) {\r\n itemizedOrStandardNameSpouse = 'Standard Deduction';\r\n } else {\r\n itemizedOrStandardNameSpouse = 'Itemized Deduction';\r\n }\r\n\r\n let jointDeductionsForm = clientDeductions / 1 + spouseDeductions / 1;\r\n let jointIncomeForm = clientIncome / 1 + spouseIncome / 1;\r\n\r\n //Student Loan Interest Deduction\r\n if (clientIncome > 82200) {\r\n studentIntDeduction = 0;\r\n } else {\r\n if (studentIntDeduction > 2500) {\r\n studentIntDeduction = 2500;\r\n }\r\n }\r\n if (jointIncomeForm > 164400) {\r\n jointIntDeduction = 0;\r\n } else {\r\n if (jointIntDeduction > 2500) {\r\n jointIntDeduction = 2500;\r\n }\r\n }\r\n\r\n //Tuition Deduction\r\n if (clientIncome > 77200 || singleEducationCredit > 0) {\r\n tuitionDeduction = 0;\r\n } else {\r\n if (tuitionDeduction > 4000) {\r\n tuitionDeduction = 4000;\r\n }\r\n }\r\n if (jointIncomeForm > 154400 || educationCredit > 0) {\r\n jointTuitionDeduction = 0;\r\n } else {\r\n if (jointIntDeduction > 4000) {\r\n jointTuitionDeduction = 4000;\r\n }\r\n }\r\n\r\n //Educator Deduction\r\n if (educatorDeduction > 250) {\r\n educatorDeduction = 250;\r\n }\r\n if (spouseEducatorDed > 250) {\r\n spouseEducatorDed = 250;\r\n }\r\n\r\n /* INCOME SECTION*/\r\n let jointTaxableIncome = jointIncomeForm - jointDeductionsForm;\r\n\r\n clientIncome -= studentIntDeduction / 1;\r\n clientIncome -= tuitionDeduction / 1;\r\n clientIncome -= educatorDeduction / 1;\r\n spouseIncome -= spouseEducatorDed / 1;\r\n jointTaxableIncome -= jointIntDeduction / 1;\r\n jointTaxableIncome -= jointTuitionDeduction / 1;\r\n jointTaxableIncome -= educatorDeduction / 1 + spouseEducatorDed / 1;\r\n\r\n const jointChildClaimForm = clientChildClaim / 1 + spouseChildClaim / 1;\r\n let clientTaxableIncome = clientIncome - clientDeductions;\r\n\r\n if (clientTaxableIncome < 0) {\r\n clientTaxableIncome = 0;\r\n }\r\n let spouseTaxableIncome = spouseIncome - spouseDeductions;\r\n if (spouseTaxableIncome < 0) {\r\n spouseTaxableIncome = 0;\r\n }\r\n\r\n if (jointTaxableIncome < 0) {\r\n jointTaxableIncome = 0;\r\n }\r\n\r\n //add differences for filing status\r\n let incomeCollection = [spouseTaxableIncome, jointTaxableIncome, clientTaxableIncome];\r\n\r\n /*TAX BRACKET SECTION*/\r\n let clientTaxBracket = 0;\r\n let spouseTaxBracket = 0;\r\n let jointTaxBracket;\r\n let index = 0;\r\n incomeCollection.forEach((income) => {\r\n if (filingStatus === 'Married Filing Jointly' || index === 1) {\r\n if (income <= 19400) {\r\n clientTaxBracket = income * 0.1;\r\n } else if (income > 19400 && income <= 78950) {\r\n clientTaxBracket = (income - 19400) * 0.12 + 1940;\r\n } else if (income > 78950 && income <= 168400) {\r\n clientTaxBracket = (income - 78950) * 0.22 + 9086;\r\n } else if (income > 168400 && income <= 321450) {\r\n clientTaxBracket = (income - 168400) * 0.24 + 28765;\r\n } else if (income > 321450 && income <= 408200) {\r\n clientTaxBracket = (income - 321450) * 0.32 + 65497;\r\n } else if (income > 408200 && income <= 612350) {\r\n clientTaxBracket = (income - 408200) * 0.35 + 93257;\r\n } else if (income > 612350) {\r\n clientTaxBracket = (income - 612350) * 0.37 + 164709.5;\r\n }\r\n } else if (filingStatus === 'Head of Household') {\r\n if (income <= 13850) {\r\n clientTaxBracket = income * 0.1;\r\n } else if (income > 13850 && income <= 52850) {\r\n clientTaxBracket = (income - 13850) * 0.12 + 1385;\r\n } else if (income > 52850 && income <= 84200) {\r\n clientTaxBracket = (income - 52850) * 0.22 + 6065;\r\n } else if (income > 84200 && income <= 160700) {\r\n clientTaxBracket = (income - 84200) * 0.24 + 12962;\r\n } else if (income > 160700 && income <= 204100) {\r\n clientTaxBracket = (income - 160700) * 0.32 + 31322;\r\n } else if (income > 204100 && income <= 510300) {\r\n clientTaxBracket = (income - 204100) * 0.35 + 45210;\r\n } else if (income > 510300) {\r\n clientTaxBracket = (income - 510300) * 0.37 + 152380;\r\n }\r\n } else if (filingStatus === 'Single' || filingStatus === 'Married Filing Separate') {\r\n if (income <= 9700) {\r\n clientTaxBracket = income * 0.1;\r\n } else if (income > 9700 && income <= 39475) {\r\n clientTaxBracket = (income - 9700) * 0.12 + 970;\r\n } else if (income > 39475 && income <= 84200) {\r\n clientTaxBracket = (income - 39475) * 0.22 + 4543;\r\n } else if (income > 84200 && income <= 160725) {\r\n clientTaxBracket = (income - 84200) * 0.24 + 14382.5;\r\n } else if (income > 160725 && income <= 204100) {\r\n clientTaxBracket = (income - 160725) * 0.32 + 32748.5;\r\n } else if (income > 204100 && income <= 510300) {\r\n clientTaxBracket = (income - 204100) * 0.35 + 46628.5;\r\n } else if (income > 510300) {\r\n clientTaxBracket = (income - 510300) * 0.37 + 153798.5;\r\n }\r\n }\r\n\r\n if (index === 0) {\r\n spouseTaxBracket = clientTaxBracket;\r\n } else if (index === 1) {\r\n jointTaxBracket = clientTaxBracket;\r\n } else if (index === 2) {\r\n //Do Nothing\r\n }\r\n index = index + 1;\r\n });\r\n\r\n /* CHILD TAX SECTION*/\r\n let clientChildTaxCredit = 0;\r\n if (\r\n clientIncome < 200000 ||\r\n (filingStatus === 'Married Filing Jointly' && clientIncome < 400000)\r\n ) {\r\n clientChildTaxCredit = clientChildClaim * 2000;\r\n if (clientTaxBracket < clientChildTaxCredit) {\r\n if (clientChildTaxCredit - clientTaxBracket > 1400) {\r\n clientTaxBracket = -1400;\r\n } else {\r\n clientTaxBracket = clientTaxBracket / 1 - clientChildTaxCredit;\r\n }\r\n } else {\r\n clientTaxBracket = clientTaxBracket / 1 - clientChildTaxCredit;\r\n }\r\n }\r\n\r\n let spouseChildTaxCredit = 0;\r\n if (\r\n spouseIncome < 200000 ||\r\n (filingStatus === 'Married Filing Jointly' && spouseIncome < 400000)\r\n ) {\r\n spouseChildTaxCredit = spouseChildClaim * 2000;\r\n if (spouseTaxBracket < spouseChildTaxCredit) {\r\n if (spouseChildTaxCredit - spouseTaxBracket > 1400) {\r\n spouseTaxBracket = -1400;\r\n } else {\r\n spouseTaxBracket = spouseTaxBracket - spouseChildTaxCredit;\r\n }\r\n } else {\r\n spouseTaxBracket = spouseTaxBracket - spouseChildTaxCredit;\r\n }\r\n }\r\n\r\n let TaxCredit = 0;\r\n if (jointIncomeForm < 400000) {\r\n TaxCredit = jointChildClaimForm * 2000;\r\n if (jointTaxBracket < TaxCredit) {\r\n if (TaxCredit - jointTaxBracket > 1400) {\r\n jointTaxBracket = -1400;\r\n } else {\r\n jointTaxBracket = jointTaxBracket - TaxCredit;\r\n }\r\n } else {\r\n jointTaxBracket = jointTaxBracket - TaxCredit;\r\n }\r\n }\r\n\r\n //Child Care Credit section (Only claimed by single, head of household, qualifying widow or widower with a qualifying child, or married filing jointly.)\r\n //Child care cannot reduce your taxes due below zero as of 2019 tax year.\r\n if (childCareCredit > 3000) {\r\n childCareCredit = 3000;\r\n } else if (childCareCredit < 1) {\r\n childCareCredit = null;\r\n }\r\n\r\n TaxCredit = TaxCredit / 1 + childCareCredit / 1;\r\n if (jointTaxBracket > 0) {\r\n if (jointTaxBracket - childCareCredit > 0) {\r\n jointTaxBracket = jointTaxBracket / 1 - childCareCredit / 1;\r\n } else {\r\n jointTaxBracket = 0;\r\n }\r\n }\r\n\r\n if (singleChildCareCredit > 3000) {\r\n singleChildCareCredit = 3000;\r\n } else if (singleChildCareCredit < 1) {\r\n singleChildCareCredit = null;\r\n }\r\n\r\n if (clientTaxBracket > 0) {\r\n clientChildTaxCredit = clientChildTaxCredit / 1 + singleChildCareCredit / 1;\r\n if (clientTaxBracket - singleChildCareCredit > 0) {\r\n clientTaxBracket = clientTaxBracket / 1 - singleChildCareCredit / 1;\r\n clientChildTaxCredit = clientChildTaxCredit / 1 + singleChildCareCredit / 1;\r\n } else if (clientTaxBracket > 0 && clientTaxBracket - singleChildCareCredit < 0) {\r\n clientTaxBracket = 0;\r\n }\r\n } else if (clientTaxBracket < 0) {\r\n clientChildTaxCredit = clientChildTaxCredit / 1 + singleChildCareCredit / 1;\r\n }\r\n\r\n //Education Credit section (Only claimed by joint taxes, not Separate)\r\n if (educationCredit > 2500) {\r\n educationCredit = 2500;\r\n } else if (educationCredit < 1) {\r\n educationCredit = null;\r\n }\r\n\r\n if (jointIncomeForm < 136000) {\r\n TaxCredit = TaxCredit / 1 + educationCredit / 1;\r\n if (jointTaxBracket - educationCredit >= 0) {\r\n jointTaxBracket = jointTaxBracket - educationCredit;\r\n } else if (\r\n jointTaxBracket - educationCredit < 0 &&\r\n jointTaxBracket - educationCredit > -1000\r\n ) {\r\n jointTaxBracket = jointTaxBracket - educationCredit;\r\n } else if (jointTaxBracket < -1000) {\r\n //Do Nothing clientTaxBracket = clientTaxBracket;\r\n } else {\r\n jointTaxBracket = -1000;\r\n }\r\n }\r\n\r\n if (singleEducationCredit > 2500) {\r\n singleEducationCredit = 2500;\r\n } else if (singleEducationCredit < 1) {\r\n singleEducationCredit = null;\r\n }\r\n\r\n if (clientIncome < 60000) {\r\n clientChildTaxCredit = clientChildTaxCredit / 1 + singleEducationCredit / 1;\r\n if (clientTaxBracket - singleEducationCredit >= 0) {\r\n clientTaxBracket = clientTaxBracket - singleEducationCredit;\r\n } else if (\r\n clientTaxBracket - singleEducationCredit < 0 &&\r\n clientTaxBracket - singleEducationCredit > -1000\r\n ) {\r\n clientTaxBracket = clientTaxBracket - singleEducationCredit;\r\n } else if (clientTaxBracket < -1000) {\r\n //Do Nothing clientTaxBracket = clientTaxBracket;\r\n } else {\r\n clientTaxBracket = -1000;\r\n }\r\n }\r\n\r\n //OTHER CREDITS SECTION\r\n clientChildTaxCredit = clientChildTaxCredit / 1 + this.state.clientOtherCredit / 1;\r\n clientTaxBracket = clientTaxBracket - this.state.clientOtherCredit;\r\n\r\n spouseTaxBracket = spouseTaxBracket - this.state.spouseOtherCredit;\r\n spouseChildTaxCredit = spouseChildTaxCredit / 1 + this.state.spouseOtherCredit / 1;\r\n\r\n jointTaxBracket = jointTaxBracket - this.state.jointOtherCredit;\r\n TaxCredit = TaxCredit / 1 + this.state.jointOtherCredit / 1;\r\n /* TAX DUE SECTION*/\r\n let clientTaxDue = clientTaxBracket;\r\n let spouseTaxDue = spouseTaxBracket;\r\n let jointTaxDue = jointTaxBracket;\r\n\r\n /* IDR SECTION*/\r\n\r\n let planMultiplier;\r\n let povertyGuideline = data.povertyGuideline;\r\n if (data.repaymentPlan === 'PAYE' || data.repaymentPlan === 'REPAYE') {\r\n planMultiplier = 0.1;\r\n } else if (data.repaymentPlan === 'ICR') {\r\n planMultiplier = 0.2;\r\n } else if (data.repaymentPlan === 'SAVE') {\r\n planMultiplier = data.saveMultiplier;\r\n povertyGuideline = data.savePovertyGuideline;\r\n } else {\r\n planMultiplier = 0.15;\r\n }\r\n\r\n let jointPlanMultiplier;\r\n if (data.repaymentPlan === 'ICR') {\r\n jointPlanMultiplier = 0.2;\r\n } else {\r\n jointPlanMultiplier = 0.1;\r\n }\r\n\r\n /*const povGuidCalc = (householdSize, povGuidelines) => {\r\n //modifies pov guidelines if a client lives in alaska or is ICR elegible.\r\n if (data.state === 'AK' && data.repaymentPlan === 'ICR') {\r\n return (povGuidelines = 15600 + 5530 * (householdSize - 1));\r\n } else if (data.state === 'AK') {\r\n return (povGuidelines = 23400 + 8295 * (householdSize - 1));\r\n } else if (data.repaymentPlan === 'ICR') {\r\n return (povGuidelines = 12490 + 4420 * (householdSize - 1));\r\n } else {\r\n return (povGuidelines = 18735 + 6630 * (householdSize - 1));\r\n }\r\n };*/\r\n\r\n let idrAmount = ((clientIncome - povertyGuideline) * planMultiplier) / 12;\r\n let jointIdrAmount = ((jointIncomeForm - povertyGuideline) * jointPlanMultiplier) / 12;\r\n let jointIdrName = 'Estimated Joint IDR Monthly Payment';\r\n\r\n if (spouseLoanBalance > 0) {\r\n jointIdrAmount =\r\n jointIdrAmount * (clientLoanBalance / (clientLoanBalance / 1 + spouseLoanBalance / 1));\r\n }\r\n\r\n if (jointIdrAmount > data.standardRepaymentAmt && data.standardRepaymentAmt != null) {\r\n jointIdrAmount = data.standardRepaymentAmt;\r\n jointIdrName = 'Estimated Standard Monthly Payment';\r\n }\r\n if (idrAmount < 0) {\r\n idrAmount = 0;\r\n }\r\n if (isNaN(jointIdrAmount) || jointIdrAmount === null || jointIdrAmount < 0) {\r\n jointIdrAmount = 0;\r\n }\r\n\r\n let overallSavings = (\r\n (jointIdrAmount - idrAmount) * 12 -\r\n (spouseTaxDue + clientTaxDue - jointTaxDue)\r\n ).toFixed(2);\r\n\r\n return (\r\n <Form id=\"retirement\" defaults={data} handleChange={onChange}>\r\n <CardTitle>Tax Estimator Tool</CardTitle>\r\n <Header2>\r\n Estimates are not exact. Please consult a tax professional for accurate estimates.\r\n </Header2>\r\n <p>\r\n <MessageDiv messageType={'Tax_Estimator_Tool'} />\r\n </p>\r\n <CardBody>\r\n <ui>\r\n <li>\r\n This tool will give you a rough estimate for your federal taxes and will show how your\r\n taxes can affect your Income Driven repayment amount. All figures are estimates, and\r\n do not include local and state tax. Please consult a professional for accurate\r\n estimates.\r\n </li>\r\n </ui>\r\n </CardBody>\r\n <div className=\"row\">\r\n <InputWrapper>\r\n <InputGroup>\r\n <Alert brand=\"info\">\r\n <p>\r\n <span>\r\n Haven't filed your taxes yet? Another benefit of being a client of ours is you\r\n (and your spouse) can utilize our national partner, TurboTax and receive a\r\n discounted rate to file. Visit{' '}\r\n </span>\r\n <span>\r\n <a\r\n href=\"https://turbotax.intuit.com/lp/aff/?zn1=c60KRkuK6,c44bb5xGe,c4CNdkWIA&priorityCode=6099000013&PID=8973232&cid=all_cjtto-8973232_int&sid=&ref_id=89e9d978219911ea821000a60a240612_800803290092577363%3AiPwCTCpIH4MQ\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n TurboTax\r\n </a>{' '}\r\n to start filing.\r\n </span>\r\n </p>\r\n </Alert>\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"state\">Filing Status</InputLabel>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"filingStatus\"\r\n onChange={this.handleFilingStatus}\r\n options={[\r\n '',\r\n 'Single',\r\n 'Head of Household',\r\n 'Married Filing Separate',\r\n 'Married Filing Jointly',\r\n ]}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"spouse size\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Client Federal Loan Balance</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"ClientLoanBalance\"\r\n name=\"ClientLoanBalance\"\r\n min=\"0\"\r\n defaultValue={clientLoanBalance}\r\n onChange={this.handleClientLoanBalance}\r\n />\r\n </InputGroup>\r\n <InputHelp></InputHelp>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"spouse size\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Spouse Federal Loan Balance</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"ClientLoanBalance\"\r\n name=\"ClientLoanBalance\"\r\n min=\"0\"\r\n defaultValue={0}\r\n onChange={this.handleSpouseLoanBalance}\r\n />\r\n </InputGroup>\r\n <InputHelp>\r\n Only include balance that are in a repayment or forbearance status. Do not include\r\n loans with a Parent Plus Loan balance.\r\n </InputHelp>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n </div>\r\n\r\n <Fade show={this.state.filingStatus !== ''}>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-lg-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"client income\">\r\n {' '}\r\n <BrandColor brand=\"highContrast\">\r\n <strong>My Annual Income</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"clientIncome\"\r\n name=\"income\"\r\n defaultValue={clientIncome}\r\n onChange={this.handleClientIncomeChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"spouse size\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Spouse's Annual Income</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"spouseIncome\"\r\n name=\"spouseIncome\"\r\n min=\"0\"\r\n value={this.state.spouseIncome}\r\n onChange={this.handleSpouseIncomeChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"spouse size\">\r\n <strong>Joint Income</strong>\r\n </InputLabel>\r\n <p></p>\r\n <Header5>\r\n <BrandColor brand=\"highContrast\">\r\n {formatAsMoney(jointIncomeForm.toFixed(2))}\r\n </BrandColor>\r\n </Header5>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-lg-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"client income\">\r\n {' '}\r\n <BrandColor brand=\"highContrast\">\r\n {' '}\r\n <strong>Children Under 17 You Claim</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"clientChildren\"\r\n name=\"clientChildren\"\r\n min={0}\r\n onChange={this.handleClientChildCliam}\r\n />\r\n </InputGroup>\r\n <InputHelp>\r\n $2,000 credit per child claimed. Phases out at $200,000 annual income.\r\n </InputHelp>\r\n </InputWrapper>\r\n </div>\r\n\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"spouse size\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Children Under 17 your Spouse Claims</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"spouseChildren\"\r\n name=\"spouseChildren\"\r\n min={0}\r\n onChange={this.handleSpouseChildCliam}\r\n />\r\n </InputGroup>\r\n <InputHelp>\r\n $2,000 credit per child claimed. Phases out at $200,000 annual income.\r\n </InputHelp>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"spouse size\">\r\n <strong>Total Children Under 17 claimed</strong>\r\n </InputLabel>\r\n <p></p>\r\n <Header5>\r\n <BrandColor brand=\"highContrast\">{jointChildClaimForm}</BrandColor>\r\n </Header5>\r\n <InputHelp>\r\n $2,000 credit per child claimed. Phases out at $400,000 joint annual income.\r\n </InputHelp>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-lg-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"client income\">\r\n {' '}\r\n <BrandColor brand=\"highContrast\">\r\n {' '}\r\n <strong>My Educator Expenses</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"clientChildren\"\r\n name=\"clientChildren\"\r\n min={0}\r\n value={educatorDeduction}\r\n onChange={this.handleEducatorExpense}\r\n />\r\n </InputGroup>\r\n <InputHelp>A teacher can claim a maximum of $250.</InputHelp>\r\n </InputWrapper>\r\n </div>\r\n\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"spouse size\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Spouse Educator Expenses</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"spouseEducatorExpense\"\r\n name=\"spouseEducatorExpense\"\r\n min={0}\r\n value={spouseEducatorDed}\r\n onChange={this.handleSpouseEducatorExpense}\r\n />\r\n </InputGroup>\r\n <InputHelp>A teacher can claim a maximum of $250.</InputHelp>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"spouse size\">\r\n <strong>Joint Educator Expenses</strong>\r\n </InputLabel>\r\n <p></p>\r\n <Header5>\r\n <BrandColor brand=\"highContrast\">\r\n {formatAsMoney(spouseEducatorDed / 1 + educatorDeduction / 1)}\r\n </BrandColor>\r\n </Header5>\r\n <InputHelp>Teachers can claim a maximum of $500 jointly.</InputHelp>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n </div>\r\n\r\n <Fade id=\"notMarried\" show={filingStatus !== 'Married Filing Separate'}>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Student Loan Interest Deduction</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"educationCredits\"\r\n min={0}\r\n defaultValue={studentIntDeduction}\r\n value={studentIntDeduction}\r\n onChange={this.handleStudentLoanIntDeduction}\r\n />\r\n </InputGroup>\r\n <InputHelp>You can claim a max of $2,500.</InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Fade>\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\"></div>\r\n <div className=\"col-6 col-md-4\"></div>\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Joint Student Loan Interest Deduction</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"educationCredits\"\r\n min={0}\r\n onChange={this.handleJointInterestDeduction}\r\n defaultValue={jointIntDeduction}\r\n value={jointIntDeduction}\r\n />\r\n </InputGroup>\r\n <InputHelp>\r\n You can claim a max of $2,500. You cannot claim this deduction when filing\r\n seperate.\r\n </InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Fade>\r\n\r\n <Fade id=\"notMarried\" show={filingStatus !== 'Married Filing Separate'}>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Tuition and Fee Deduction</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"educationCredits\"\r\n min={0}\r\n defaultValue={tuitionDeduction}\r\n value={tuitionDeduction}\r\n onChange={this.handleTuitionDeduction}\r\n />\r\n </InputGroup>\r\n <InputHelp>\r\n You can claim a max of $4,000. You cannot claim this deduction and Education\r\n Credits at the same time.\r\n </InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Fade>\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\"></div>\r\n <div className=\"col-6 col-md-4\"></div>\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Joint Tuition and Fee Deduction</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"educationCredits\"\r\n min={0}\r\n defaultValue={jointTuitionDeduction}\r\n value={jointTuitionDeduction}\r\n onChange={this.handleJointTuitionDeduction}\r\n />\r\n </InputGroup>\r\n <InputHelp>\r\n You can claim a max of $4,000. You cannot claim this deduction and Education\r\n Credits at the same time.\r\n </InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Fade>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>{itemizedOrStandardNameClient}</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"clientDeduction\"\r\n id=\"clientDeduction\"\r\n value={clientDeductions}\r\n onChange={this.handleClientDeductionChange}\r\n />\r\n </InputGroup>\r\n {itemizedOrStandardNameClient === 'Itemized Deduction' && (\r\n <InputHelp>\r\n For itemized deductions, it is recommended you do not claim less than the\r\n standard amount\r\n </InputHelp>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>{itemizedOrStandardNameSpouse}</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"spouseDeduction\"\r\n id=\"spouseDeduction\"\r\n defaultValue={defaultDeduction}\r\n //value={spouseDeductions}\r\n onChange={this.handleSpouseDeductionChange}\r\n />\r\n </InputGroup>\r\n {itemizedOrStandardNameSpouse === 'Itemized Deduction' && (\r\n <InputHelp>\r\n For itemized deductions, it is recommended you do not claim less than the\r\n standard amount\r\n </InputHelp>\r\n )}\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <strong>Joint Itemized / Standard Deduction</strong>\r\n </InputLabel>\r\n <p></p>\r\n <Header5>\r\n <BrandColor brand=\"highContrast\">\r\n {formatAsMoney(jointDeductionsForm)}\r\n </BrandColor>\r\n </Header5>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <hr />\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <strong>My Taxable Income</strong>\r\n </InputLabel>\r\n <p></p>\r\n <Header5>\r\n <BrandColor brand=\"highContrast\">\r\n {formatAsMoney(clientTaxableIncome.toFixed(2)) || '—'}\r\n </BrandColor>\r\n </Header5>\r\n {itemizedOrStandardNameClient === 'Itemized Deduction' && (\r\n <InputHelp>\r\n For itemized deductions, it is recommended you do not claim less than the\r\n standard amount\r\n </InputHelp>\r\n )}\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <strong>Spouse Taxable Income</strong>\r\n </InputLabel>\r\n <p></p>\r\n <Header5>\r\n <BrandColor brand=\"highContrast\">\r\n {formatAsMoney(spouseTaxableIncome.toFixed(2)) || '—'}\r\n </BrandColor>\r\n </Header5>\r\n {itemizedOrStandardNameSpouse === 'Itemized Deduction' && (\r\n <InputHelp>\r\n For itemized deductions, it is recommended you do not claim less than the\r\n standard amount\r\n </InputHelp>\r\n )}\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <strong>Joint Taxable Income</strong>\r\n </InputLabel>\r\n <p></p>\r\n <Header5>\r\n <BrandColor brand=\"highContrast\">\r\n {formatAsMoney(jointTaxableIncome.toFixed(2)) || '—'}\r\n </BrandColor>\r\n </Header5>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <hr />\r\n </div>\r\n\r\n {/*review values and onChange to make sure still works*/}\r\n <Fade id=\"notMarried\" show={filingStatus !== 'Married Filing Separate'}>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Education Credits Claimed</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"educationCredits\"\r\n min={0}\r\n value={singleEducationCredit}\r\n onChange={this.handleSingleEducationCreditChange}\r\n />\r\n </InputGroup>\r\n <InputHelp>You can claim a max of $2,500.</InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Child Care Credits Claimed</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"childCareCredits\"\r\n min={0}\r\n value={singleChildCareCredit}\r\n onChange={this.handleSingleChildCareCreditChange}\r\n />\r\n </InputGroup>\r\n <InputHelp>You can claim a max of $3,000.</InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Fade>\r\n\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\"></div>\r\n <div className=\"col-6 col-md-4\"></div>\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Education Credits Claimed</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"educationCredits\"\r\n min={0}\r\n value={educationCredit}\r\n onChange={this.handleEducationCreditChange}\r\n />\r\n </InputGroup>\r\n <InputHelp>\r\n You are unable to claim this credit when filing seperate. You can claim a max of\r\n $2,500.\r\n </InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\"></div>\r\n <div className=\"col-6 col-md-4\"></div>\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Child Care Credits Claimed</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"childCareCredits\"\r\n min={0}\r\n value={childCareCredit}\r\n onChange={this.handleChildCareCreditChange}\r\n />\r\n </InputGroup>\r\n <InputHelp>\r\n You are unable to claim this credit when filing seperate. You can claim a max of\r\n $3,000.\r\n </InputHelp>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Fade>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Other Credits</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"clientOtherCredits\"\r\n min={0}\r\n defaultValue={''}\r\n onChange={this.handleClientOtherCredit}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Other Credits Spouse Claims</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"spouseOutherCredits\"\r\n min={0}\r\n defaultValue={''}\r\n onChange={this.handleSpouseOtherCredit}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <BrandColor brand=\"highContrast\">\r\n <strong>Other Joint Credits</strong>\r\n </BrandColor>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"JointOtherCredits\"\r\n min={0}\r\n defaultValue={''}\r\n onChange={this.handleJointOtherCredit}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n </div>\r\n\r\n <div className=\"col-12 col-md-12\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-4 col-md-4\">\r\n <CardTitle>My Information</CardTitle>\r\n <dl>\r\n <dt>Credits Claimed</dt>\r\n <dd>{formatAsMoney(clientChildTaxCredit) || '—'}</dd>\r\n <dt>My Estimated Tax Due</dt>\r\n <dd>{formatAsMoney(clientTaxDue.toFixed(2)) || '—'}</dd>\r\n <InputHelp>\r\n This is an estimate before your Federal witholdings are taken out, and\r\n estimates may vary depending on your unique tax situation.\r\n </InputHelp>\r\n </dl>\r\n </div>\r\n <div className=\"col-4 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <CardTitle>Spouse Information</CardTitle>\r\n <dl>\r\n <dt>Spouse Credits Claimed</dt>\r\n <dd>{formatAsMoney(spouseChildTaxCredit) || '—'}</dd>\r\n <dt>Spouse Estimated Tax Due</dt>\r\n <dd>{formatAsMoney(spouseTaxDue.toFixed(2)) || '—'}</dd>\r\n <InputHelp>\r\n This is an estimate before your Federal witholdings are taken out, and\r\n estimates may vary depending on your unique tax situation.\r\n </InputHelp>\r\n </dl>\r\n </Fade>\r\n </div>\r\n <div className=\"col-4 col-md-4\">\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <CardTitle>Joint Information</CardTitle>\r\n <dl>\r\n <dt>Joint Credits Claimed</dt>\r\n <dd>{formatAsMoney(TaxCredit) || '—'}</dd>\r\n <dt>Joint Estimated Tax Due</dt>\r\n <dd>{formatAsMoney(jointTaxDue.toFixed(2)) || '—'}</dd>\r\n <InputHelp>\r\n This is an estimate before your Federal witholdings are taken out, and\r\n estimates may vary depending on your unique tax situation.\r\n </InputHelp>\r\n </dl>\r\n </Fade>\r\n </div>\r\n <Fade\r\n id=\"alertFilingStatus\"\r\n show={clientTaxDue < 0 && filingStatus !== 'Married Filing Separate'}\r\n >\r\n <InputWrapper>\r\n <InputGroup>\r\n <Alert brand=\"info\">\r\n <p>\r\n Your Estimated Tax due is less than zero, which means you don't owe tax\r\n and are elegible to be refund for more than just the amount of taxes\r\n withheld from your paycheck.\r\n </p>\r\n <p>Please be advised these are estimates and may not be exact.</p>\r\n </Alert>\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n <Fade\r\n id=\"alertFilingStatus\"\r\n show={\r\n (clientTaxDue < 0 || spouseTaxDue < 0 || jointTaxDue < 0) &&\r\n filingStatus === 'Married Filing Separate'\r\n }\r\n >\r\n <InputWrapper>\r\n <InputGroup>\r\n <Alert brand=\"info\">\r\n <p>\r\n One or more of your Estimated Tax Due fields is less than zero, which\r\n means you don't owe tax and are elegible to be refund for more than just\r\n the amount of taxes withheld from your paycheck.\r\n </p>\r\n <p>Please be advised these are estimates and may not be exact.</p>\r\n </Alert>\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n\r\n <Fade id=\"notMarried\" show={filingStatus === 'Married Filing Separate'}>\r\n <div className=\"col-12 col-md-12\">\r\n <Card brand=\"secondary\">\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-5\">\r\n <CardTitle>Results</CardTitle>\r\n <dl>\r\n <dt>Estimated Separate {data.repaymentPlan} Monthly Payment</dt>\r\n <dd>\r\n {formatAsMoney(idrAmount) || '—'} <br />{' '}\r\n <InputHelp>This is a rough estimate and may not be exact</InputHelp>\r\n </dd>\r\n\r\n <dt>{jointIdrName}</dt>\r\n <dd>\r\n {formatAsMoney(jointIdrAmount) || '—'} <br />{' '}\r\n <InputHelp>This is a rough estimate and may not be exact</InputHelp>\r\n </dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-6 col-md-5\">\r\n <dl>\r\n <br /> <br />\r\n {/*<Header5><BrandColor brand=\"highContrast\"> </strong></BrandColor></Header5>*/}\r\n <dt>Annual Separate IDR Savings</dt>\r\n <dd>{formatAsMoney((jointIdrAmount - idrAmount) * 12) || '—'}</dd>\r\n <dt>Tax Difference of Filing Joint vs Separate</dt>\r\n <dd>{formatAsMoney(spouseTaxDue + clientTaxDue - jointTaxDue) || '—'}</dd>\r\n <dt>Overall Savings When Filing Separately</dt>\r\n <dd>{formatAsMoney(overallSavings) || '—'}</dd>\r\n </dl>\r\n </div>\r\n <Fade id=\"alertFilingStatus\" show={overallSavings < 0}>\r\n <InputWrapper>\r\n <InputGroup>\r\n <Alert brand=\"secondary\">\r\n <p>\r\n Filing your taxes married filing jointly will be more beneficial for\r\n your forgiveness plan this year.\r\n </p>\r\n </Alert>\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n <Fade id=\"alertFilingStatus\" show={overallSavings >= 0}>\r\n <InputWrapper>\r\n <InputGroup>\r\n <Alert brand=\"primary\">\r\n <p>\r\n Filing your taxes as married filing separately will be more beneficial\r\n for your forgiveness plan this year.\r\n </p>\r\n </Alert>\r\n </InputGroup>\r\n </InputWrapper>\r\n </Fade>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </Fade>\r\n\r\n <Fade id=\"notMarried\" show={filingStatus !== 'Married Filing Separate'}>\r\n <div className=\"col-12 col-md-12\">\r\n <Card brand=\"secondary\">\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-5\">\r\n <CardTitle>Results</CardTitle>\r\n <dl>\r\n <dt>Estimated {data.repaymentPlan} Monthly Payment</dt>\r\n <dd>\r\n {formatAsMoney(idrAmount) || '—'} <br />{' '}\r\n <InputHelp>This is a rough estimate and may not be exact</InputHelp>\r\n </dd>\r\n </dl>\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </Fade>\r\n </Fade>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default TaxEstimateTool;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('modeler', types);\r\n","import { createSelector } from 'reselect';\r\nimport { getUserId } from '../../../auth';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nexport const getBenefitData = (state) =>\r\n safeAccess(state, `modeler.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getGrossPayment = createSelector([getBenefitData], (data = {}) => data.grossPay || 0);\r\n\r\nexport const getHouseholdSize = createSelector(\r\n [getBenefitData],\r\n (data = {}) => data.householdSize || 0\r\n);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('modeler');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/benefit-modeler',\r\n resourceType: 'benefit-modeler',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'modeler',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCopyResourceToForm,\r\n modelerCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCreateResource,\r\n modelerCopyResourceToForm,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('modeler', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, CardText, DashboardSection } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { getBenefitData } from '../redux/selectors';\r\n\r\nimport { debounce, mergeRequestStatuses, flatten } from '../../../utils';\r\n\r\nimport {\r\n modelerLoadResource,\r\n modelerCopyResourceToForm,\r\n modelerHandleFormChange,\r\n} from '../redux/operations';\r\n\r\nimport TaxEstimateTool from '../components/tax-estimate-tool';\r\n\r\n//I need this too\r\nclass modeler extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n copyRequest: t.object.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n hasData: t.bool,\r\n handleForm: t.func.isRequired,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n reload: t.func.isRequired,\r\n request: t.object,\r\n modeler: t.object,\r\n updateFormState: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const { id, loadData } = this.props;\r\n loadData(id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const wasLoading = prevProps.actionRequest.isLoading;\r\n const currently = this.props.actionRequest;\r\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\r\n this.setState({ ...this.state, showForm: true }, () => this.props.reload());\r\n }\r\n }\r\n\r\n //I need this - but there is more too it\r\n //make this call to a function that does the calculations\r\n onChange = debounce((formState) => {\r\n const { data, updateFormState } = this.props;\r\n const newData = { ...flatten(data), ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 250);\r\n\r\n render() {\r\n const { request, data } = this.props;\r\n\r\n return (\r\n <DashboardSection title=\"Benefits for your financial well-being\">\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n <AsyncLoader request={request}>\r\n <TaxEstimateTool\r\n data={data}\r\n isLoading={request.isLoading}\r\n onChange={this.onChange}\r\n />\r\n </AsyncLoader>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.modeler;\r\n return {\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n data: getBenefitData(state),\r\n form: form,\r\n errors: errors,\r\n id: getUserId(state),\r\n request: state.modeler.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(modelerLoadResource(id));\r\n dispatch(modelerCopyResourceToForm(id));\r\n },\r\n updateFormState: (data, attributes) => dispatch(modelerHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(modeler);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('taxtool', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Card,\r\n ChartLine,\r\n CardTitle,\r\n CardBody,\r\n CardText,\r\n Form,\r\n InputLabel,\r\n InputWrapper,\r\n InputGroup,\r\n InputNumeric,\r\n} from 'fiducius-ui';\r\n\r\nimport { formatAsMoney } from '../../../utils/format';\r\nimport { MessageDiv } from '../../../messages';\r\n\r\nclass InterestComparisonTool extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n currentBalance: 0,\r\n currentRepaymentTerm: 240,\r\n currentInterest: 0,\r\n\r\n newRepaymentTerm: 120,\r\n newInterest: 0,\r\n };\r\n\r\n this.handleCurrentBalanceChange = this.handleCurrentBalanceChange.bind(this);\r\n this.handleCurrentInterest = this.handleCurrentInterest.bind(this);\r\n this.handleCurrentTerm = this.handleCurrentTerm.bind(this);\r\n\r\n this.handleNewInterest = this.handleNewInterest.bind(this);\r\n this.handleNewTerm = this.handleNewTerm.bind(this);\r\n }\r\n\r\n handleCurrentBalanceChange(event) {\r\n this.setState({ currentBalance: event.target.value });\r\n }\r\n handleCurrentInterest(event) {\r\n this.setState({ currentInterest: event.target.value });\r\n }\r\n handleCurrentTerm(event) {\r\n this.setState({ currentRepaymentTerm: event.target.value });\r\n }\r\n handleNewInterest(event) {\r\n this.setState({ newInterest: event.target.value });\r\n }\r\n handleNewTerm(event) {\r\n this.setState({ newRepaymentTerm: event.target.value });\r\n }\r\n\r\n render() {\r\n const { data = {}, onChange } = this.props;\r\n const currentBalance = this.state.currentBalance || data.totalPrincipal;\r\n const currentRepaymentTerm = this.state.currentRepaymentTerm;\r\n const currentInterest = this.state.currentInterest || data.avgInterestRate;\r\n const cInterest = currentInterest / 100;\r\n\r\n const newRepaymentTerm = this.state.newRepaymentTerm;\r\n const newInterest = this.state.newInterest || data.avgInterestRate;\r\n const nInterest = newInterest / 100;\r\n\r\n let currentPayment = (\r\n (currentBalance * (cInterest / 12.0)) /\r\n (1 - Math.pow(1.0 + cInterest / 12.0, -currentRepaymentTerm))\r\n ).toFixed(2);\r\n let newPayment = (\r\n (currentBalance * (nInterest / 12.0)) /\r\n (1 - Math.pow(1.0 + nInterest / 12.0, -newRepaymentTerm))\r\n ).toFixed(2);\r\n\r\n let currentSchedule = [];\r\n let ticks = [];\r\n let longestPaymentTerm = this.state.currentRepaymentTerm;\r\n if (this.state.currentRepaymentTerm / 1 < this.state.newRepaymentTerm / 1) {\r\n longestPaymentTerm = this.state.newRepaymentTerm;\r\n }\r\n\r\n let loopPrincipal = currentBalance;\r\n let interestMonthlyPayment = 0;\r\n let principalMonthlyPayment = 0;\r\n\r\n for (let i = longestPaymentTerm - 1; i >= 0; i--) {\r\n interestMonthlyPayment = (cInterest / 12) * loopPrincipal;\r\n principalMonthlyPayment = currentPayment - interestMonthlyPayment;\r\n loopPrincipal = loopPrincipal - principalMonthlyPayment;\r\n\r\n if ((i % 12 === 0 && i !== 0 && loopPrincipal > 0) || i === longestPaymentTerm - 1) {\r\n if (i === longestPaymentTerm - 1) {\r\n ticks.push('0');\r\n currentSchedule.push(currentBalance);\r\n } else {\r\n ticks.push((longestPaymentTerm / 12 - i / 12).toFixed(2).toString());\r\n currentSchedule.push(loopPrincipal);\r\n }\r\n } else if (i % 12 === 0 && i !== 0 && loopPrincipal < 0) {\r\n ticks.push((longestPaymentTerm / 12 - i / 12).toFixed(2).toString());\r\n currentSchedule.push(0);\r\n } else if (i === 0) {\r\n ticks.push((longestPaymentTerm / 12 - i / 12).toFixed(2).toString());\r\n currentSchedule.push(0);\r\n }\r\n //loopPrincipal = loopPrincipal - principalMonthlyPayment\r\n }\r\n\r\n let newSchedule = [];\r\n let newLoopPrincipal = currentBalance;\r\n let newinterestMonthlyPayment = 0;\r\n let newprincipalMonthlyPayment = 0;\r\n\r\n for (let i = longestPaymentTerm - 1; i >= 0; i--) {\r\n newinterestMonthlyPayment = (nInterest / 12) * newLoopPrincipal;\r\n newprincipalMonthlyPayment = newPayment - newinterestMonthlyPayment;\r\n\r\n newLoopPrincipal = newLoopPrincipal - newprincipalMonthlyPayment;\r\n if ((i % 12 === 0 && i !== 0 && newLoopPrincipal > 0) || i === longestPaymentTerm - 1) {\r\n if (i === longestPaymentTerm - 1) {\r\n newSchedule.push(currentBalance);\r\n } else {\r\n newSchedule.push(newLoopPrincipal);\r\n }\r\n } else if (i % 12 === 0 && i !== 0 && newLoopPrincipal < 0) {\r\n newSchedule.push(0);\r\n } else if (i === 0) {\r\n newSchedule.push(0);\r\n }\r\n //newLoopPrincipal = newLoopPrincipal - newprincipalMonthlyPayment\r\n }\r\n\r\n return (\r\n <Form id=\"interestComparison\" defaults={data} handleChange={onChange}>\r\n <CardTitle>Interest Comparison Tool</CardTitle>\r\n <p>\r\n <MessageDiv messageType={'Interest_Comparison'} />\r\n </p>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <p></p>\r\n <p></p>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-12 col-sm-10 col-lg-6\">\r\n <p></p>\r\n <p></p>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"LoanBalance\">Total Balance</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"ClientTotalLoanBalance\"\r\n name=\"ClientTotalLoanBalance\"\r\n defaultValue={data.totalPrincipal}\r\n onChange={this.handleCurrentBalanceChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-12 col-sm-10 col-lg-6\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"state\">Interest Rate</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"CurrentInterestRate\"\r\n name=\"CurrentInterestRate\"\r\n defaultValue={currentInterest}\r\n onChange={this.handleCurrentInterest}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-12 col-sm-10 col-lg-6\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"state\">Repayment Term (Months)</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"CurrentTermMonths\"\r\n name=\"CurrentTermMonths\"\r\n defaultValue={240}\r\n onChange={this.handleCurrentTerm}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-12 col-sm-10 col-lg-6\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"state\">New Interest Rate</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"CurrentInterestRate\"\r\n name=\"CurrentInterestRate\"\r\n defaultValue={data.avgInterestRate}\r\n onChange={this.handleNewInterest}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-12 col-md-12 col-sm-10 col-lg-6\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"state\">New Repayment Term (Months)</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"CurrentTermMonths\"\r\n name=\"CurrentTermMonths\"\r\n defaultValue={this.state.newRepaymentTerm}\r\n onChange={this.handleNewTerm}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"col-10 col-md-10 col-sm-10 col-lg-6\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-10 col-md-10 col-sm-10 col-lg-6\">\r\n <CardTitle>Current Terms</CardTitle>\r\n <CardText>\r\n <dl>\r\n <dt>Monthly Payment</dt>\r\n <dd>{formatAsMoney(currentPayment) || '—'}</dd>\r\n <dt>Total Principal + Interest</dt>\r\n <dd>{formatAsMoney(currentPayment * currentRepaymentTerm) || '—'}</dd>\r\n <dt>Principal Paid</dt>\r\n <dd>{formatAsMoney(currentBalance) || '—'}</dd>\r\n <dt>Interest Paid</dt>\r\n <dd>\r\n {formatAsMoney(currentPayment * currentRepaymentTerm - currentBalance) ||\r\n '—'}\r\n </dd>\r\n </dl>\r\n </CardText>\r\n </div>\r\n <div className=\"col-8 col-md-6\">\r\n <CardTitle>New Terms</CardTitle>\r\n <CardText>\r\n <dl>\r\n <dt>Monthly Payment</dt>\r\n <dd>{formatAsMoney(newPayment)}</dd>\r\n <dt>Total Principal + Interest</dt>\r\n <dd>{formatAsMoney(newPayment * newRepaymentTerm) || '—'}</dd>\r\n <dt>Principal Paid</dt>\r\n <dd>{formatAsMoney(currentBalance) || '—'}</dd>\r\n <dt>Interest Paid</dt>\r\n <dd>\r\n {formatAsMoney(newPayment * newRepaymentTerm - currentBalance) || '—'}\r\n </dd>\r\n </dl>\r\n </CardText>\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n <Card brand=\"secondary\">\r\n <CardBody>\r\n <CardTitle>\r\n <span>Yearly Balance Comparison</span>\r\n </CardTitle>\r\n <ChartLine\r\n lines={[\r\n {\r\n brand: 'secondary',\r\n dataType: 'currency',\r\n fill: true,\r\n title: 'New Terms',\r\n data: newSchedule,\r\n xDataType: 'category',\r\n yDataType: 'linear',\r\n },\r\n {\r\n brand: 'primary',\r\n dataType: 'currency',\r\n fill: true,\r\n title: 'Current Terms',\r\n data: currentSchedule,\r\n xDataType: 'category',\r\n yDataType: 'linear',\r\n },\r\n ]}\r\n config={{\r\n labels: ticks,\r\n formatter: (value) => formatAsMoney(parseFloat(value)),\r\n titleFormatter: (value) => `Year ${value}`,\r\n yMin: 0,\r\n multiAxis: false,\r\n }}\r\n />\r\n </CardBody>\r\n </Card>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default InterestComparisonTool;\r\n","import { createSelector } from 'reselect';\r\nimport { getUserId } from '../../../auth';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nexport const getBenefitData = (state) =>\r\n safeAccess(state, `modeler.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getGrossPayment = createSelector([getBenefitData], (data = {}) => data.grossPay || 0);\r\n\r\nexport const getHouseholdSize = createSelector(\r\n [getBenefitData],\r\n (data = {}) => data.householdSize || 0\r\n);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('modeler');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/benefit-modeler',\r\n resourceType: 'benefit-modeler',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'modeler',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCopyResourceToForm,\r\n modelerCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCreateResource,\r\n modelerCopyResourceToForm,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('modeler', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, DashboardSection, Header2 } from 'fiducius-ui';\r\nimport { getUserId } from '../../../auth';\r\nimport { getBenefitData } from '../redux/selectors';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { debounce, mergeRequestStatuses, flatten } from '../../../utils';\r\n\r\nimport {\r\n modelerLoadResource,\r\n modelerCopyResourceToForm,\r\n modelerHandleFormChange,\r\n} from '../redux/operations';\r\n\r\nimport InterestComparisonTool from '../components/interest-comparison-tool';\r\n\r\n//I need this too\r\nclass modeler extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n copyRequest: t.object.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n hasData: t.bool,\r\n handleForm: t.func.isRequired,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n permissions: t.object,\r\n reload: t.func.isRequired,\r\n request: t.object,\r\n modeler: t.object,\r\n updateFormState: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const { id, loadData } = this.props;\r\n loadData(id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const wasLoading = prevProps.actionRequest.isLoading;\r\n const currently = this.props.actionRequest;\r\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\r\n this.setState({ ...this.state, showForm: true }, () => this.props.reload());\r\n }\r\n }\r\n\r\n //I need this - but there is more too it\r\n //make this call to a function that does the calculations\r\n onChange = debounce((modeler, attributes, formState) => {\r\n const { data, updateFormState } = this.props;\r\n const newData = { ...flatten(data), ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 250);\r\n\r\n render() {\r\n const { request, data } = this.props;\r\n\r\n return (\r\n <DashboardSection title=\"Benefits for your financial well-being\">\r\n <Card>\r\n <CardBody>\r\n <Header2>Lower your payments and better benefit your financial wellness</Header2>\r\n <AsyncLoader request={request}>\r\n <InterestComparisonTool\r\n data={data}\r\n isLoading={request.isLoading}\r\n onChange={this.onChange}\r\n />\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.modeler;\r\n return {\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n data: getBenefitData(state),\r\n form: form,\r\n errors: errors,\r\n id: getUserId(state),\r\n request: state.modeler.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(modelerLoadResource(id));\r\n dispatch(modelerCopyResourceToForm(id));\r\n },\r\n updateFormState: (data, attributes) => dispatch(modelerHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(modeler));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Card,\r\n ChartLine,\r\n CardTitle,\r\n CardBody,\r\n Form,\r\n InputLabel,\r\n InputWrapper,\r\n InputGroup,\r\n InputNumeric,\r\n} from 'fiducius-ui';\r\n\r\nimport { formatAsMoney } from '../../../utils/format';\r\n\r\nclass SLAComparisonTool extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n currentBalance: 0,\r\n currentRepaymentTerm: 240,\r\n currentInterest: 0,\r\n\r\n contributionAmount: 100,\r\n\r\n currentPayment: 0,\r\n newPayment: 0,\r\n };\r\n\r\n this.handleCurrentBalanceChange = this.handleCurrentBalanceChange.bind(this);\r\n this.handleCurrentInterest = this.handleCurrentInterest.bind(this);\r\n this.handleCurrentTerm = this.handleCurrentTerm.bind(this);\r\n\r\n this.handleContribution = this.handleContribution.bind(this);\r\n }\r\n\r\n handleCurrentBalanceChange(event) {\r\n this.setState({ currentBalance: event.target.value });\r\n }\r\n handleCurrentInterest(event) {\r\n this.setState({ currentInterest: event.target.value });\r\n }\r\n handleCurrentTerm(event) {\r\n this.setState({ currentRepaymentTerm: event.target.value });\r\n }\r\n handleContribution(event) {\r\n this.setState({ contributionAmount: event.target.value });\r\n }\r\n\r\n render() {\r\n const { data = {}, onChange } = this.props;\r\n\r\n const currentBalance = this.state.currentBalance || data.totalPrincipal || 0;\r\n const currentRepaymentTerm = this.state.currentRepaymentTerm;\r\n const currentInterest = this.state.currentInterest || data.avgInterestRate || 0;\r\n const contributionAmnt = this.state.contributionAmount;\r\n\r\n const cInterest = currentInterest / 100;\r\n\r\n let monthlyPayment = (\r\n (currentBalance * (cInterest / 12.0)) /\r\n (1 - Math.pow(1.0 + cInterest / 12.0, -currentRepaymentTerm))\r\n ).toFixed(2);\r\n const monthlyContributionPayment = monthlyPayment / 1 + this.state.contributionAmount / 1;\r\n\r\n let totalInterest = monthlyPayment * currentRepaymentTerm - currentBalance;\r\n\r\n let PaymentSchedule = [];\r\n let ContributionSchedule = [];\r\n let ticks = [];\r\n let loopPrincipal = currentBalance;\r\n let contributionPrincipal = currentBalance;\r\n\r\n let interestMonthlyPayment = 0;\r\n let principalMonthlyPayment = 0;\r\n for (let i = currentRepaymentTerm - 1; i >= 0; i--) {\r\n interestMonthlyPayment = (cInterest / 12) * loopPrincipal;\r\n principalMonthlyPayment = monthlyPayment - interestMonthlyPayment;\r\n\r\n if ((i % 12 === 0 && i !== 0 && loopPrincipal > 0) || i === currentRepaymentTerm - 1) {\r\n if (i === currentRepaymentTerm - 1) {\r\n ticks.push('0');\r\n PaymentSchedule.push(currentBalance);\r\n } else {\r\n ticks.push((currentRepaymentTerm / 12 - i / 12).toFixed(2).toString());\r\n PaymentSchedule.push(loopPrincipal);\r\n }\r\n } else if (i % 12 === 0 && i !== 0 && loopPrincipal < 0) {\r\n ticks.push((currentRepaymentTerm / 12 - i / 12).toFixed(2).toString());\r\n PaymentSchedule.push(0);\r\n } else if (i === 0) {\r\n ticks.push((currentRepaymentTerm / 12 - i / 12).toFixed(2).toString());\r\n PaymentSchedule.push(0);\r\n }\r\n loopPrincipal = loopPrincipal - principalMonthlyPayment;\r\n }\r\n\r\n interestMonthlyPayment = 0;\r\n principalMonthlyPayment = 0;\r\n let flag = 0;\r\n let ContrPayoffTime;\r\n let totalContributionInterest;\r\n for (let i = currentRepaymentTerm - 1; i >= 0; i--) {\r\n interestMonthlyPayment = (cInterest / 12) * contributionPrincipal;\r\n principalMonthlyPayment = monthlyContributionPayment - interestMonthlyPayment;\r\n if (\r\n (i % 12 === 0 && i !== 0 && contributionPrincipal > 0) ||\r\n i === currentRepaymentTerm - 1\r\n ) {\r\n if (i === currentRepaymentTerm - 1) {\r\n ContributionSchedule.push(currentBalance);\r\n } else {\r\n ContributionSchedule.push(contributionPrincipal - monthlyContributionPayment);\r\n }\r\n } else if (i % 12 === 0 && i !== 0 && contributionPrincipal < 0) {\r\n ContributionSchedule.push(0);\r\n } else if (i === 0) {\r\n ContributionSchedule.push(0);\r\n }\r\n\r\n if (contributionPrincipal <= 0 && flag < 1) {\r\n ContrPayoffTime = currentRepaymentTerm - i - 1;\r\n //TotalContrPayments = ContrPayoffTime * monthlyContributionPayment;\r\n totalContributionInterest = monthlyContributionPayment * ContrPayoffTime - currentBalance;\r\n flag = 1;\r\n }\r\n\r\n contributionPrincipal = contributionPrincipal - principalMonthlyPayment;\r\n }\r\n\r\n let TimeReduced = currentRepaymentTerm - ContrPayoffTime;\r\n let TimeReducedYear = Math.floor(TimeReduced / 12);\r\n let TimeReducedMonth = TimeReduced % 12;\r\n\r\n return (\r\n <Form id=\"interestComparison\" defaults={data} handleChange={onChange}>\r\n <CardTitle>Contribution Comparison Tool</CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-4\">\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>Loan Details</CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-10\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"LoanBalance\">Total Balance</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"ClientTotalLoanBalance\"\r\n name=\"ClientTotalLoanBalance\"\r\n defaultValue={currentBalance}\r\n onChange={this.handleCurrentBalanceChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-10\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"state\">Interest Rate</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"CurrentInterestRate\"\r\n name=\"CurrentInterestRate\"\r\n defaultValue={currentInterest}\r\n onChange={this.handleCurrentInterest}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-10\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"state\">Repayment Term (Months)</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"CurrentTermMonths\"\r\n name=\"CurrentTermMonths\"\r\n defaultValue={currentRepaymentTerm}\r\n onChange={this.handleCurrentTerm}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n\r\n {/*<Card brand=\"primary\">\r\n <CardBody> */}\r\n <CardTitle>Contribution</CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-10\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"LoanBalance\">Monthly Contribution</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"ClientTotalLoanBalance\"\r\n name=\"ClientTotalLoanBalance\"\r\n defaultValue={contributionAmnt}\r\n onChange={this.handleContribution}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n {/*</CardBody>\r\n </Card>*/}\r\n </div>\r\n <div className=\"col-12 col-md-8\">\r\n <Card brand=\"secondary\">\r\n <CardBody>\r\n <CardTitle>\r\n <span>Yearly Balance Comparison</span>\r\n </CardTitle>\r\n <ChartLine\r\n lines={[\r\n {\r\n brand: 'secondary',\r\n dataType: 'currency',\r\n fill: true,\r\n title: 'New Terms',\r\n data: ContributionSchedule,\r\n xDataType: 'category',\r\n yDataType: 'linear',\r\n },\r\n {\r\n brand: 'primary',\r\n dataType: 'currency',\r\n fill: true,\r\n title: 'Current Terms',\r\n data: PaymentSchedule,\r\n xDataType: 'category',\r\n yDataType: 'linear',\r\n },\r\n ]}\r\n config={{\r\n labels: ticks,\r\n formatter: (value) => formatAsMoney(parseFloat(value)),\r\n titleFormatter: (value) => `Year ${value}`,\r\n yMin: 0,\r\n multiAxis: false,\r\n }}\r\n />\r\n <br />\r\n <br />\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-5\">\r\n <dl>\r\n <dt>Time Reduced</dt>\r\n <dd>\r\n {TimeReducedYear + ' Year(s) ' + TimeReducedMonth + ' Month(s)' || '—'}\r\n </dd>\r\n <dt>Lifetime Savings</dt>\r\n <dd>\r\n {formatAsMoney(\r\n ContrPayoffTime * contributionAmnt +\r\n (totalInterest - totalContributionInterest)\r\n )}\r\n </dd>\r\n <dt>Monthly Payment</dt>\r\n <dd>{formatAsMoney(monthlyPayment) || '—'}</dd>\r\n <dt>total Interest Paid</dt>\r\n <dd>{formatAsMoney(totalInterest) || '—'}</dd>\r\n </dl>\r\n </div>\r\n <div className=\"col-6 col-md-5\">\r\n <dt>Total Employer Contribution</dt>\r\n <dd>{formatAsMoney(ContrPayoffTime * contributionAmnt) || '—'}</dd>\r\n <dt>Interest Savings</dt>\r\n <dd>{formatAsMoney(totalInterest - totalContributionInterest) || '—'}</dd>\r\n <dt>Monthly Contribution Payment</dt>\r\n <dd>{formatAsMoney(monthlyContributionPayment) || '—'}</dd>\r\n <dt>Total Contribution Interest Paid</dt>\r\n <dd>{formatAsMoney(totalContributionInterest) || '—'}</dd>\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default SLAComparisonTool;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('modeler', types);\r\n","import { createSelector } from 'reselect';\r\nimport { getUserId } from '../../../auth';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nexport const getBenefitData = (state) =>\r\n safeAccess(state, `modeler.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getGrossPayment = createSelector([getBenefitData], (data = {}) => data.grossPay || 0);\r\n\r\nexport const getHouseholdSize = createSelector(\r\n [getBenefitData],\r\n (data = {}) => data.householdSize || 0\r\n);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('modeler');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/benefit-modeler',\r\n resourceType: 'benefit-modeler',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'modeler',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCopyResourceToForm,\r\n modelerCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCreateResource,\r\n modelerCopyResourceToForm,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('modeler', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, DashboardSection, Header2 } from 'fiducius-ui';\r\nimport { getUserId } from '../../../auth';\r\nimport { getBenefitData } from '../redux/selectors';\r\n\r\nimport { withPermissions } from '../../../routing';\r\nimport { debounce, mergeRequestStatuses, flatten } from '../../../utils';\r\n\r\nimport {\r\n modelerLoadResource,\r\n modelerCopyResourceToForm,\r\n modelerHandleFormChange,\r\n} from '../redux/operations';\r\n\r\nimport SLAComparisonTool from '../components/sla-comparison-tool';\r\n\r\n//I need this too\r\nclass modeler extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n copyRequest: t.object.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n hasData: t.bool,\r\n handleForm: t.func.isRequired,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n permissions: t.object,\r\n reload: t.func.isRequired,\r\n request: t.object,\r\n modeler: t.object,\r\n updateFormState: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const { id, loadData } = this.props;\r\n loadData(id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const wasLoading = prevProps.actionRequest.isLoading;\r\n const currently = this.props.actionRequest;\r\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\r\n this.setState({ ...this.state, showForm: true }, () => this.props.reload());\r\n }\r\n }\r\n\r\n //I need this - but there is more too it\r\n //make this call to a function that does the calculations\r\n onChange = debounce((modeler, attributes, formState) => {\r\n const { data, updateFormState } = this.props;\r\n const newData = { ...flatten(data), ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 250);\r\n\r\n render() {\r\n const { request, data } = this.props;\r\n\r\n return (\r\n <DashboardSection title=\"Benefits for your financial well-being\">\r\n <Card>\r\n <CardBody>\r\n <Header2>Lower your payments and better benefit your financial wellness</Header2>\r\n <AsyncLoader request={request}>\r\n <SLAComparisonTool\r\n data={data}\r\n isLoading={request.isLoading}\r\n onChange={this.onChange}\r\n />\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.modeler;\r\n return {\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n data: getBenefitData(state),\r\n form: form,\r\n errors: errors,\r\n id: getUserId(state),\r\n request: state.modeler.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(modelerLoadResource(id));\r\n dispatch(modelerCopyResourceToForm(id));\r\n },\r\n updateFormState: (data, attributes) => dispatch(modelerHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(modeler));\r\n","import React from 'react';\r\nimport {\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardHeader,\r\n CardText,\r\n ChartLine,\r\n ChartBar,\r\n DashboardSection,\r\n BrandColor,\r\n Header4,\r\n Table,\r\n} from 'fiducius-ui';\r\n\r\nconst RetirementConfig = {\r\n multiAxis: false,\r\n //label: 'Years',\r\n max: 130000,\r\n min: 0,\r\n labels: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],\r\n};\r\n\r\nconst RetirementLines = [\r\n {\r\n brand: 'secondary',\r\n dataType: 'currency',\r\n fill: true,\r\n title: 'IDR',\r\n data: [\r\n 0.0,\r\n 1887.15,\r\n 3774.3,\r\n 5661.45,\r\n 7548.6,\r\n 9435.75,\r\n 11322.9,\r\n 13210.04,\r\n 15097.19,\r\n 16984.34,\r\n 18871.49,\r\n ],\r\n legend: {\r\n display: false,\r\n },\r\n // options:{\r\n scales: {\r\n xAxes: [\r\n {\r\n label: 'Years',\r\n },\r\n ],\r\n },\r\n // }\r\n },\r\n {\r\n brand: 'primary',\r\n dataType: 'currency',\r\n fill: true,\r\n title: 'STD',\r\n data: [\r\n 0.0,\r\n 14494.07,\r\n 28988.15,\r\n 43482.22,\r\n 57976.29,\r\n 72470.37,\r\n 86964.44,\r\n 101458.51,\r\n 115952.58,\r\n 130446.66,\r\n 144940.73,\r\n ],\r\n legend: {\r\n display: false,\r\n },\r\n // options:{\r\n scales: {\r\n xAxes: [\r\n {\r\n label: 'Years',\r\n },\r\n ],\r\n },\r\n // }\r\n },\r\n];\r\n\r\n// const paymentConfig = {\r\n// labels: ['Standard', 'IDR'],\r\n// max: 1400,\r\n// min: 0,\r\n// //options: {\r\n// scales: {\r\n// xAxes: [\r\n// {\r\n// stacked: true,\r\n// },\r\n// ],\r\n// yAxes: [\r\n// {\r\n// stacked: true,\r\n// },\r\n// ],\r\n// },\r\n// //}\r\n// };\r\n//\r\n// const paymentBars = [\r\n// {\r\n// //brand: 'secondary',\r\n// data: [\r\n// {\r\n// datasets: [\r\n// {\r\n// data: [\r\n// {\r\n// values: [147.75, 1200.0],\r\n// },\r\n// ],\r\n// },\r\n// ],\r\n// },\r\n// ],\r\n// },\r\n// ];\r\n\r\nconst taxConfig = {\r\n labels: ['Married, Filing Jointly', 'Married, Filing Separately'],\r\n max: 15000,\r\n min: 0,\r\n legend: {\r\n display: false,\r\n },\r\n horizontal: true,\r\n};\r\n\r\n// const taxBars = [\r\n// {\r\n// //brand: 'secondary',\r\n// data: [\r\n// {\r\n// datasets: [\r\n// {\r\n// title: 'IDR',\r\n// data: [\r\n// {\r\n// values: [14496, 2958],\r\n// },\r\n// ],\r\n// },\r\n// ],\r\n// },\r\n// ],\r\n// },\r\n// ];\r\n\r\nconst MyRetirement = () => (\r\n <DashboardSection title=\"My Retirement\">\r\n <Header4>\r\n With your current loan balance of <strong>$108,000</strong> and a retirement contribution rate\r\n of <strong>6%</strong>, your estimated forgiveness will be <strong>$126,152.57</strong>.\r\n <br />\r\n <br />\r\n Increasing your retirement contribution to a total of <strong>9%</strong>, will increase:\r\n <br />\r\n <ul>\r\n <li>\r\n Your forgiveness amount by <strong>$2,313</strong>\r\n </li>\r\n <li>\r\n Your retirement savings by at least <strong>$21,579</strong>\r\n </li>\r\n </ul>\r\n <br />\r\n Consult with your HR or Payroll Specialist to determine Pre-Tax benefit offerings.\r\n <br />\r\n <br />\r\n Common Pre-Tax Deductions include, but are not limited to:\r\n <br />\r\n <ul>\r\n <li>Medical/Dental/Vision Insurance</li>\r\n <li>FSA/HSA</li>\r\n <li>STD/LTD</li>\r\n <li>Retirement Contributions</li>\r\n </ul>\r\n We will assist you with your benefit decisions during your next open enrollment to determine\r\n the effect on your payment.\r\n <br />\r\n </Header4>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-8\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Retirement Details</CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-6\">\r\n <CardText>\r\n <dl>\r\n <dt>Current Contribution Rate</dt>\r\n <dt>(per pay)</dt>\r\n <dd>6%</dd>\r\n <dt>Est Retirement Balance</dt>\r\n <dt>after 10 years</dt>\r\n <dd>$43,158</dd>\r\n <dt>Est Total Forgiveness</dt>\r\n <dd>$126,152.57</dd>\r\n </dl>\r\n </CardText>\r\n </div>\r\n <div className=\"col-6\">\r\n <CardText>\r\n <dl>\r\n <dt>Increased Contribution Rate</dt>\r\n <dt>(per pay)</dt>\r\n <dd>9%</dd>\r\n <dt>Est Retirement Balance</dt>\r\n <dt>after 10 years</dt>\r\n <dd>\r\n <strong>\r\n <BrandColor brand=\"secondary\">$64,737</BrandColor>\r\n </strong>\r\n </dd>\r\n <dt>Est Total Forgiveness</dt>\r\n <dd>\r\n <strong>\r\n <BrandColor brand=\"secondary\">$167,702</BrandColor>\r\n </strong>\r\n </dd>\r\n </dl>\r\n </CardText>\r\n </div>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-12 col-lg-5 col-xl-4\">\r\n <Card brand=\"success\">\r\n {/* <CardHeader>Total Projected Forgiveness <strong>$119.334.60</strong></CardHeader> */}\r\n <CardHeader>\r\n <center>\r\n Total Repayment - Standard vs IDR\r\n <br />\r\n <strong>$126,152.57 Est Forgiveness</strong>\r\n </center>\r\n </CardHeader>\r\n <CardBody>\r\n {/*<ChartLine lines={lines} config={config} />*/}\r\n <ChartLine lines={RetirementLines} config={RetirementConfig} />\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-12 col-lg-6\">\r\n <Card brand=\"success\">\r\n <CardHeader>Retirement Plan: Increasing Contribution</CardHeader>\r\n <CardBody>\r\n <ChartBar\r\n values={[\r\n {\r\n label: '3% Growth',\r\n data: [23000, 33892, 56489],\r\n // backgroundColor: [\r\n // '#ff774d', // rgba(255,119,077,1) - Coral WIP: https://coolors.co/f96302-fa8d47-ff774d-ff6a4d-d7654f\r\n // '#18bc70', // rgba(024,188,112,1) - Sea Green WIP: https://coolors.co/709302-69995d-5a7f43-18bc70-00d081\r\n // '#6796eb', // rgba(084,097,110,1) - Teal WIP: https://coolors.co/38a6ea-5296eb-6796eb-25a9a3-6bdbe4\r\n // ],\r\n },\r\n {\r\n label: '6% Growth',\r\n data: [39275, 43158, 64737],\r\n // backgroundColor: [\r\n // '#ff774d', // rgba(255,119,077,1) - Coral WIP: https://coolors.co/f96302-fa8d47-ff774d-ff6a4d-d7654f\r\n // '#18bc70', // rgba(024,188,112,1) - Sea Green WIP: https://coolors.co/709302-69995d-5a7f43-18bc70-00d081\r\n // '#6796eb', // rgba(084,097,110,1) - Teal WIP: https://coolors.co/38a6ea-5296eb-6796eb-25a9a3-6bdbe4\r\n // ],\r\n },\r\n {\r\n label: '9% Growth',\r\n data: [64458, 76394, 89779],\r\n // backgroundColor: [\r\n // '#ff774d', // rgba(255,119,077,1) - Coral WIP: https://coolors.co/f96302-fa8d47-ff774d-ff6a4d-d7654f\r\n // '#18bc70', // rgba(024,188,112,1) - Sea Green WIP: https://coolors.co/709302-69995d-5a7f43-18bc70-00d081\r\n // '#6796eb', // rgba(084,097,110,1) - Teal WIP: https://coolors.co/38a6ea-5296eb-6796eb-25a9a3-6bdbe4\r\n // ],\r\n },\r\n ]}\r\n config={{\r\n min: 0,\r\n max: 80000,\r\n labels: ['6% Contribution', '9% Contribution'],\r\n options: {\r\n scales: {\r\n yAxes: [\r\n {\r\n stacked: true,\r\n ticks: {\r\n beginAtZero: true,\r\n },\r\n },\r\n ],\r\n xAxes: [\r\n {\r\n stacked: true,\r\n ticks: {\r\n beginAtZero: true,\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n }}\r\n />\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-12 col-lg-6\">\r\n <Card>\r\n <CardBody>\r\n <CardTitle>References</CardTitle>\r\n </CardBody>\r\n <Table\r\n columns={[{ sortable: true, width: '50%' }, { sortable: true }, { sortable: true }]}\r\n header={['Nam', 'Type', 'Status']}\r\n body={[\r\n ['John', 'Friend', 'Verified'],\r\n ['Joe', 'Family', 'Verified'],\r\n ['Jack', 'Friend', 'Verified'],\r\n ['Jill', 'Family', 'Verified'],\r\n ['Jane', 'Friend', 'Verified'],\r\n ]}\r\n />\r\n </Card>\r\n </div>\r\n <div className=\"col-12 col-lg-6\">\r\n <Card brand=\"success\">\r\n <CardHeader>\r\n <center>\r\n Tax Savings Filing Separately* <strong>$11,538</strong>\r\n </center>\r\n </CardHeader>\r\n <CardBody>\r\n <ChartBar\r\n values={[\r\n {\r\n label: '',\r\n data: [14496, 2958],\r\n backgroundColor: [\r\n '#ff774d', // rgba(255,119,077,1) - Coral WIP: https://coolors.co/f96302-fa8d47-ff774d-ff6a4d-d7654f\r\n '#18bc70', // rgba(024,188,112,1) - Sea Green WIP: https://coolors.co/709302-69995d-5a7f43-18bc70-00d081\r\n //'#6796eb', // rgba(084,097,110,1) - Teal WIP: https://coolors.co/38a6ea-5296eb-6796eb-25a9a3-6bdbe4\r\n ],\r\n },\r\n ]}\r\n //values={[14496, 2958]}\r\n config={taxConfig}\r\n />\r\n {/* <ChartLine lines={lines} config={config} /> */}\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n </DashboardSection>\r\n);\r\n\r\nexport default MyRetirement;\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('modeler', types);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('contact');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('contact', types);\r\n","import actions from './actions';\r\nimport { getToken } from '../../auth';\r\nimport { keyById, normalize, patchApi, resourceOperationsGenerator, safeAccess } from '../../utils';\r\nimport { ContactValidator } from './validators';\r\n\r\nconst contactValidator = new ContactValidator();\r\n\r\nconst endpointHandler = {\r\n endpoint: '/contact-us',\r\n customResponseHandler: null,\r\n resourceType: 'contact-us',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'contact',\r\n actions,\r\n null,\r\n contactValidator,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst contactLoadInfo = (key = null) => async (dispatch, getState) => {\r\n // TODO: serve from cache and short-circuit\r\n try {\r\n await dispatch(operations.contactHandleCacheChange({}));\r\n\r\n dispatch(actions.contactLoadResourceRequest(key));\r\n\r\n let data = await dispatch(contactLoadResource());\r\n dispatch(actions.contactLoadResourceResponse(key));\r\n\r\n const cache = {\r\n ...getState().contact.cache,\r\n ...keyById(data),\r\n };\r\n\r\n await dispatch(operations.contactHandleCacheChange(cache));\r\n\r\n dispatch(actions.contactLoadResourceSuccess(null, key));\r\n } catch (error) {\r\n dispatch(operations.contactHandleError(error));\r\n dispatch(actions.contactLoadResourceFailure(error, key));\r\n }\r\n};\r\n\r\nconst contactSaveBillingInfo = () => async (dispatch, getState) => {\r\n const state = getState();\r\n try {\r\n if (safeAccess(state, 'contact.errors.length', 0) > 0) {\r\n throw new Error('The form contains errors and cannot be saved until they are fixed.');\r\n }\r\n\r\n dispatch(actions.contactUpdateResourceRequest());\r\n const patchData = normalize('contact-us', state.contact.form, 1);\r\n let data = await patchApi(getToken(state), `/contact-us/${1}`, patchData);\r\n\r\n dispatch(actions.contactUpdateResourceResponse());\r\n\r\n const cache = { ...getState().contact.cache, ...keyById(data) };\r\n cache['contactStatus'] = 'success';\r\n await dispatch(operations.contactHandleCacheChange(cache));\r\n\r\n dispatch(actions.contactUpdateResourceSuccess());\r\n } catch (error) {\r\n const cache = { ...getState().contact.cache };\r\n cache['contactStatus'] = 'failure';\r\n await dispatch(operations.contactHandleCacheChange(cache));\r\n dispatch(operations.contactHandleError(error));\r\n dispatch(actions.contactUpdateResourceFailure(error));\r\n }\r\n};\r\n\r\nconst { contactCopyResourceToForm, contactHandleFormChange, contactLoadResource } = operations;\r\n\r\nexport {\r\n contactCopyResourceToForm,\r\n contactHandleFormChange,\r\n contactLoadInfo,\r\n contactSaveBillingInfo,\r\n};\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class ContactValidator extends FormValidator {\r\n subject(validator) {\r\n validator.requiredSelection();\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Header2,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputWrapper,\r\n InputSelect,\r\n InputTextarea,\r\n Form,\r\n} from 'fiducius-ui';\r\n\r\nimport { withPermissions } from '../../routing';\r\nimport { debounce, mergeRequestStatuses, safeAccess } from '../../utils';\r\n\r\nimport {\r\n contactCopyResourceToForm,\r\n contactHandleFormChange,\r\n contactLoadInfo,\r\n} from '../redux/operations';\r\n\r\nclass ContactForm extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n getInfo: t.func.isRequired,\r\n permissions: t.object,\r\n request: t.object,\r\n updateForm: t.func.isRequired,\r\n handleChange: t.func,\r\n };\r\n\r\n componentDidMount() {\r\n this.props.getInfo();\r\n this.props.form.subject = '';\r\n this.props.updateForm(this.props.form.subject, Object.keys(this.props.form));\r\n }\r\n\r\n handleChange = debounce((formState, id, attributes) => {\r\n this.props.updateForm({ ...this.props.form, ...formState }, [attributes]);\r\n }, 250);\r\n\r\n render() {\r\n const { data = {}, errors = {}, permissions } = this.props;\r\n let options = [];\r\n\r\n if (permissions.enrolledForgiveness && permissions.clientStatus !== 'OHPAY') {\r\n if (permissions.enterpriseEnabled) {\r\n options.push('');\r\n options.push('Forbearance');\r\n options.push('Consolidation');\r\n options.push('Employment Verification');\r\n options.push('Repayment');\r\n options.push('Tax Filing');\r\n options.push('Continuing Education');\r\n options.push('Billing');\r\n if (permissions.hasFreshStart) {\r\n options.push('Fresh Start');\r\n }\r\n if (permissions.hasReducedIDR) {\r\n options.push('Reduced IDR');\r\n }\r\n if (permissions.hasEducationalReengagement) {\r\n options.push('Educational Reengagement');\r\n }\r\n if (permissions.hasEnterpriseEmpCert) {\r\n options.push('Emplify');\r\n }\r\n if (permissions.hasOptimalSituation) {\r\n options.push('Additional Information');\r\n }\r\n if (permissions.hasMichiganProgram) {\r\n options.push('Michigan Loan Program');\r\n }\r\n options.push('Other');\r\n } else {\r\n options = [\r\n '',\r\n 'Forbearance',\r\n 'Consolidation',\r\n 'Employment Verification',\r\n 'Repayment',\r\n 'Tax Filing',\r\n 'Continuing Education',\r\n 'Billing',\r\n 'Other',\r\n ];\r\n }\r\n } else if (permissions.clientStatus === 'FUPHB') {\r\n if (permissions.enterpriseEnabled) {\r\n options.push('');\r\n if (permissions.hasFreshStart) {\r\n options.push('Fresh Start');\r\n }\r\n if (permissions.hasReducedIDR) {\r\n options.push('Reduced IDR');\r\n }\r\n if (permissions.hasEducationalReengagement) {\r\n options.push('Educational Reengagement');\r\n }\r\n if (permissions.hasEnterpriseEmpCert) {\r\n options.push('Emplify');\r\n }\r\n if (permissions.hasOptimalSituation) {\r\n options.push('Additional Information');\r\n }\r\n if (permissions.hasMichiganProgram) {\r\n options.push('Michigan Loan Program');\r\n }\r\n if (\r\n !(\r\n permissions.enrolledFreshStart ||\r\n permissions.enrolledEducationalReengagement ||\r\n permissions.enrollingReducedIDR\r\n )\r\n ) {\r\n options.push('General Information About Benefits');\r\n options.push('Miscellaneous');\r\n }\r\n } else {\r\n options = ['', 'General Information About Benefits', 'Miscellaneous'];\r\n }\r\n } else if (permissions.clientStatus === 'OHPAY') {\r\n options = ['', 'Billing'];\r\n } else if (permissions.showLwo) {\r\n options = [\r\n '',\r\n 'Schedule a Meeting',\r\n 'Change a Meeting',\r\n 'Assure/Limited Waiver Opportunity',\r\n 'General Information About Benefits',\r\n 'Miscellaneous',\r\n ];\r\n } else {\r\n if (permissions.enterpriseEnabled) {\r\n options.push('');\r\n if (!permissions.disableScheduling) {\r\n options.push('Schedule a Meeting');\r\n options.push('Change a Meeting');\r\n }\r\n if (permissions.hasMichiganProgram) {\r\n options.push('Michigan Loan Program');\r\n }\r\n if (\r\n !(\r\n permissions.enrolledFreshStart ||\r\n permissions.enrolledEducationalReengagement ||\r\n permissions.enrollingReducedIDR\r\n )\r\n ) {\r\n options.push('General Information About Benefits');\r\n options.push('Miscellaneous');\r\n }\r\n } else {\r\n options.push('');\r\n if (!permissions.disableScheduling) {\r\n options.push('Schedule a Meeting');\r\n options.push('Change a Meeting');\r\n }\r\n options.push('General Information About Benefits');\r\n options.push('Miscellaneous');\r\n }\r\n }\r\n\r\n return (\r\n <Form id=\"contactForm\" handleChange={this.handleChange} defaults={data}>\r\n <Header2>Please complete the below form to ask your question</Header2>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-5\">\r\n <InputWrapper error={errors && !!errors.subject}>\r\n <InputLabel htmlFor=\"subject\">Contact us regarding questions on:</InputLabel>\r\n <InputError>{safeAccess(errors, 'subject.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"subject\"\r\n options={options}\r\n onChange={(e) =>\r\n this.handleChange({ subject: e.target.value }, 'subject', 'subject')\r\n }\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-112\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"body\">\r\n Please describe your question providing as much detail as possible, including dates,\r\n amounts, and loan specifics (if applicable).\r\n </InputLabel>\r\n <InputGroup>\r\n <InputTextarea\r\n name=\"body\"\r\n placeholder=\"\"\r\n onChange={(e) => this.handleChange({ body: e.target.value }, 'body', 'body')}\r\n />\r\n </InputGroup>\r\n {/*<InputHelp>\r\n We can also be reached at <a href=\"tel:+15136455400\">(513) 645-5400</a> to answer\r\n any of your questions.\r\n </InputHelp>*/}\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: {},\r\n errors: safeAccess(state, 'contact.errors'),\r\n form: safeAccess(state, 'contact.form'),\r\n request: mergeRequestStatuses([\r\n safeAccess(state, 'contact.requests.loadResource', ''),\r\n safeAccess(state, 'contact.requests.updateResource', ''),\r\n safeAccess(state, 'contact.requests.createResource', ''),\r\n ]),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => ({\r\n updateForm: (data, attributes) => dispatch(contactHandleFormChange(data, attributes)),\r\n getInfo: async () => {\r\n await dispatch(contactLoadInfo());\r\n dispatch(contactCopyResourceToForm(ownProps.paymentType));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ContactForm));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Alert } from 'fiducius-ui';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { safeAccess } from '../../utils';\r\n\r\nclass ContactResult extends React.Component {\r\n static propTypes = {\r\n getPaymentStatus: t.string,\r\n request: t.object,\r\n status: t.string,\r\n };\r\n\r\n componentDidMount() {}\r\n\r\n getMessage = () => {\r\n switch (this.props.status) {\r\n case 'success':\r\n return 'Thank you for your submission, due to increased seasonal correspondence your reply may be delayed. We appreciate your patience.';\r\n //If your question is urgent, please contact us at 1-513-645-5400. Our business hours are M-Th 8am-6pm and Friday 8am-5pm EST.';\r\n //return 'Thank you for your question. We will respond to you within 3-5 business days.';\r\n default:\r\n return 'There was an error submitting your question. Please email us directly at customer.service@GetFiducius.com.';\r\n //Please call us at 513-645-5400.';\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <Alert brand={this.props.status === 'success' ? 'success' : 'danger'}>\r\n {this.getMessage()}\r\n </Alert>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n status: safeAccess(state, 'contact.cache.contactStatus', ''),\r\n request: safeAccess(state, 'contact.requests.updateResource'),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n getPaymentStatus: 'success',\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ContactResult);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { withPermissions } from '../../routing';\r\nimport { getApiSingle } from '../../utils';\r\nimport styled from 'styled-components';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardText,\r\n fade,\r\n Link,\r\n DashboardSection,\r\n Header2,\r\n Alert,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\n\r\nimport { safeAccess } from '../../utils';\r\n\r\nimport { contactSaveBillingInfo } from '../redux/operations';\r\nimport ContactForm from '../components/contact-form';\r\nimport ContactResult from '../components/contact-result';\r\nimport { Fade } from '../../routing';\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n justify-content: ${(p) => (p.double ? 'space-between' : 'flex-end')};\r\n`;\r\nconst Fragment = styled.div`\r\n ${fade};\r\n`;\r\nconst ButtonRight = styled(Button)`\r\n float: right;\r\n width: 150px;\r\n`;\r\n\r\nclass Contact extends React.Component {\r\n static propTypes = {\r\n form: t.object,\r\n paymentType: t.string,\r\n postRequest: t.object,\r\n postUrl: t.string,\r\n saveBillingInfo: t.func.isRequired,\r\n saveRequest: t.object,\r\n token: t.string,\r\n alertText: t.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n step: 1,\r\n data: {},\r\n errors: {},\r\n cache: {},\r\n alertText: undefined,\r\n show: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const pathName = window.location.pathname;\r\n let AlertText = '';\r\n getApiSingle(null, '/message/' + pathName).then((data) => {\r\n if (data.messages !== null) {\r\n const alertMessage = data.messages.find((a) => a.messageType === 'ContactUs_Alert');\r\n if (alertMessage !== null) {\r\n AlertText = alertMessage.messageContent;\r\n }\r\n }\r\n if (AlertText.length > 0) {\r\n this.setState({\r\n ...this.state,\r\n alertText: AlertText,\r\n });\r\n }\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const prevSave = prevProps.saveRequest;\r\n const currentSave = this.props.saveRequest;\r\n if (prevSave.isLoading && currentSave.hasFinished /* && !currentSave.hasFailed*/) {\r\n this.setState({ step: 2 });\r\n }\r\n }\r\n\r\n nextStep = () => {\r\n if (!this.props.saveRequest.isLoading) {\r\n if (this.props.form.subject !== undefined) {\r\n this.setState({ show: false });\r\n this.props.saveBillingInfo();\r\n } else {\r\n this.setState({ show: true });\r\n }\r\n }\r\n };\r\n\r\n prevStep = () => this.setState({ step: 1 });\r\n setRedirectURI = (urlInput) => {\r\n this.setState({ redirectURI: urlInput });\r\n };\r\n\r\n render() {\r\n let returnAlertText;\r\n if (this.state.alertText === undefined) {\r\n returnAlertText = <></>;\r\n } else {\r\n returnAlertText = (\r\n <Alert brand=\"primary\">\r\n <div dangerouslySetInnerHTML={{ __html: this.state.alertText }}></div>\r\n </Alert>\r\n );\r\n }\r\n\r\n if (this.state.redirectURI !== undefined) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n\r\n return (\r\n <Fragment className=\"container\">\r\n <div className=\"row\">\r\n <DashboardSection title=\"Contact Us\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-9\">\r\n <Header2>\r\n Your time is important, contact us and we will respond as soon as possible\r\n </Header2>\r\n </div>\r\n\r\n {this.props.permissions.hasLoanRepayment && (\r\n <div className=\"col-12 col-lg-3\">\r\n <ButtonRight\r\n brand=\"primary\"\r\n type=\"submit\"\r\n onClick={() => {\r\n this.setRedirectURI('/contact/need-assistance');\r\n }}\r\n >\r\n Need Assistance?\r\n </ButtonRight>\r\n </div>\r\n )}\r\n </div>\r\n </DashboardSection>\r\n <div className=\"col-12 col-sm-10 col-lg-10\">\r\n {returnAlertText}\r\n <Card>\r\n <CardBody>\r\n <CardText>\r\n {this.state.step === 1 && <ContactForm handleChange={this.handleChange} />}\r\n\r\n {this.state.step === 2 && <ContactResult />}\r\n </CardText>\r\n </CardBody>\r\n <CardBody>\r\n <Fade show={this.state.show}>\r\n <InputWrapper>\r\n <Alert>Please select a subject from the dropdown.</Alert>\r\n </InputWrapper>\r\n </Fade>\r\n <ButtonWrapper>\r\n {this.state.step === 1 && (\r\n <Button brand=\"primary\" onClick={this.nextStep}>\r\n Submit Question\r\n </Button>\r\n )}\r\n {this.state.step === 2 && (\r\n <Button invert brand=\"primary\" onClick={this.prevStep}>\r\n Ask Another Question\r\n </Button>\r\n )}\r\n </ButtonWrapper>\r\n </CardBody>\r\n <CardFooter>\r\n <Link to=\"/dashboard\">Return to dashboard</Link>\r\n </CardFooter>\r\n </Card>\r\n </div>\r\n </div>\r\n </Fragment>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n form: safeAccess(state, 'contact.form'),\r\n postRequest: safeAccess(state, 'contact.requests.createResource', {}),\r\n saveRequest: safeAccess(state, 'contact.requests.updateResource', {}),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n saveBillingInfo: () => dispatch(contactSaveBillingInfo()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(Contact));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, CardTitle, DashboardSection, Header1 } from 'fiducius-ui';\r\nimport { NeedAssistance } from '../../need-assistance';\r\nimport Scheduler from '../../meetings/containers/scheduler';\r\nimport { withPermissions } from '../../routing';\r\nimport FaqQuestion from '../../faq/components/faq-question';\r\nimport { isStringWithContent } from '../../utils';\r\n\r\nconst ContactNeedAssistance = ({ permissions, needAssistanceObject }) => {\r\n const needAssistanceText =\r\n needAssistanceObject.length &&\r\n needAssistanceObject.find((element) => {\r\n return element.id === 'MIK12_Assistance';\r\n }).messageContent;\r\n const needAssistanceAvatarLink =\r\n needAssistanceObject.length &&\r\n needAssistanceObject.find((element) => {\r\n return element.id === 'MIK12_Assistance';\r\n }).avatarLink;\r\n const blocktext =\r\n isStringWithContent(needAssistanceText) || isStringWithContent(needAssistanceAvatarLink)\r\n ? 'block'\r\n : 'none';\r\n\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-12\">\r\n <DashboardSection>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-9\">\r\n <Header1>Need Assistance?</Header1>\r\n </div>\r\n <>\r\n <div className=\"col-12 col-lg-3\" style={{ 'text-align': 'right' }}>\r\n <Scheduler buttonText=\"Speak to an Expert\" />\r\n </div>\r\n </>\r\n </div>\r\n\r\n <Card style={{ display: blocktext }}>\r\n <CardBody>\r\n <CardTitle>Information</CardTitle>\r\n <NeedAssistance messageType={'MIK12_Assistance'} />\r\n </CardBody>\r\n </Card>\r\n\r\n <Card>\r\n <CardBody>\r\n <CardTitle>FAQs</CardTitle>\r\n <FaqQuestion\r\n question={\r\n 'What are the eligibility requirements to be considered for the FY25 (Cohort 2) round of funding under the Michigan 27k Student Loan Repayment Program for Educators?'\r\n }\r\n >\r\n <p>\r\n The following is a list of eligibility requirements:\r\n <ul>\r\n <li>You must work 32 hours or more per week for an eligible employer.</li>\r\n <li>\r\n You must work directly with pre-K to grade 12 students for at least 50% of\r\n your working time.\r\n </li>\r\n <li>You must actively be making payments on your Federal student loans.</li>\r\n <li>You must enroll in an income-driven repayment plan, if eligible.</li>\r\n <li>\r\n You must make payments under the Public Service Loan Forgiveness Program.\r\n </li>\r\n <li>You must enroll in the Public Service Loan Forgiveness Program.</li>\r\n </ul>\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion\r\n question={'I applied for FY24 (Cohort 1) finds, but have yet to receive funds.'}\r\n >\r\n <p>\r\n At this time, all districts have reported fiscal numbers back to the state on\r\n money paid out. If you were deemed eligible & approved for Cohort 1 funding and\r\n have not received the money, we recommend contacting your District.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion\r\n question={\r\n 'Can I still request funding for payments I made between October of 2023 and September of 2024?'\r\n }\r\n >\r\n <p>\r\n You may not request funding for payments made during this time period, as FY24\r\n (Cohort 1) is now closed. You may request funding for FY25 (Cohort 2) once the\r\n application window opens. The date for this window has not yet been set by the\r\n State.\r\n </p>\r\n </FaqQuestion>\r\n <FaqQuestion question={'Can I receive funding for payments I am making right now?'}>\r\n <p>\r\n No, this time period is considered FY25 (Cohort 2), and the window to apply has\r\n not yet opened. We recommend you continue to make your eligible payments. When\r\n funding is disbursed, it will cover these months retroactively.\r\n </p>\r\n </FaqQuestion>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n todos: Object.values(state.todos.cache),\r\n needAssistanceObject: Object.values(state.needAssistance.cache),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(ContactNeedAssistance));\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('contact', types);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('plaid');\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('plaid', types);\r\n","import actions from './actions';\nimport { getApi, keyById, patchApi, normalize, resourceOperationsGenerator } from '../../utils';\nimport { getToken } from '../../auth';\n\nconst endpointHandler = {\n customResponseHandler: null,\n endpoint: '/plaid',\n resourceType: 'plaid',\n};\n\nconst operations = resourceOperationsGenerator(\n 'plaid',\n actions,\n null,\n null,\n null,\n null,\n null,\n endpointHandler,\n null\n);\n\nconst getActivePlaidConnections = () => async (dispatch, getState) => {\n let data = [];\n try {\n const state = getState();\n await dispatch(actions.plaidLoadResourceRequest());\n data = await getApi(getToken(state), `/plaid`);\n\n await dispatch(actions.plaidLoadResourceResponse());\n\n const cache = {\n ...getState().plaid.cache,\n ...keyById(data),\n };\n\n await dispatch(operations.plaidHandleCacheChange(cache));\n await dispatch(actions.plaidUpdateResourceSuccess());\n } catch (error) {\n dispatch(operations.plaidHandleError(error));\n dispatch(actions.plaidLoadResourceFailure(error));\n }\n};\n\nconst getPlaidToken = (id) => async (dispatch, getState) => {\n let data = [];\n try {\n const state = getState();\n await dispatch(actions.plaidLoadResourceRequest());\n data = await getApi(getToken(state), `/plaid/${id}`);\n\n await dispatch(actions.plaidLoadResourceResponse());\n\n const cache = {\n ...getState().plaid.cache,\n ...keyById(data),\n };\n\n await dispatch(operations.plaidHandleCacheChange(cache));\n await dispatch(actions.plaidUpdateResourceSuccess());\n } catch (error) {\n dispatch(operations.plaidHandleError(error));\n dispatch(actions.plaidLoadResourceFailure(error));\n }\n};\n\nconst setPlaidPublicToken = (id, token, metadata) => async (dispatch, getState) => {\n try {\n await dispatch(actions.plaidUpdateResourceRequest());\n let cache = getState().plaid.cache;\n cache = {\n cache,\n publicToken: token,\n linkToken: cache[id].linkToken,\n institutionId: metadata.institution.institution_id,\n };\n let patchData = normalize('plaid', cache);\n let data = await patchApi(getToken(getState()), `/plaid/${id}`, patchData);\n await dispatch(actions.plaidUpdateResourceResponse());\n cache = { ...getState().plaid.cache, ...keyById(data) };\n await dispatch(operations.plaidHandleCacheChange({ ...cache }));\n await dispatch(actions.plaidUpdateResourceSuccess());\n } catch (error) {\n dispatch(operations.plaidHandleError(error));\n dispatch(actions.plaidUpdateResourceFailure(error));\n }\n};\n\nconst unlinkPlaidAccount = (id) => async (dispatch, getState) => {\n try {\n dispatch(actions.plaidUpdateResourceRequest());\n let cache = getState().plaid.cache;\n cache = { cache, action: 'unlink' };\n let patchData = normalize('plaid', cache);\n let data = await patchApi(getToken(getState()), `/plaid/${id}`, patchData);\n dispatch(actions.plaidUpdateResourceResponse());\n cache = { ...getState().plaid.cache, ...keyById(data) };\n await dispatch(operations.plaidHandleCacheChange({ ...cache }));\n dispatch(actions.plaidUpdateResourceSuccess());\n } catch (error) {\n dispatch(operations.plaidHandleError(error));\n dispatch(actions.plaidUpdateResourceFailure(error));\n }\n};\n\nconst savePlaidLinkMetadata = (event, metadata) => async (dispatch, getState) => {\n try {\n let cache = getState().plaid.cache;\n cache = { cache, action: event, metadata: metadata };\n let patchData = normalize('plaid', cache);\n await patchApi(getToken(getState()), '/plaid/0', patchData);\n } catch (error) {\n dispatch(operations.plaidHandleError(error));\n dispatch(actions.plaidUpdateResourceFailure(error));\n }\n};\n\nconst { plaidHandleFormChange, plaidUpdateResource } = operations;\n\nexport {\n plaidHandleFormChange,\n plaidUpdateResource,\n getPlaidToken,\n setPlaidPublicToken,\n getActivePlaidConnections,\n unlinkPlaidAccount,\n savePlaidLinkMetadata,\n};\n\nexport default operations;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { usePlaidLink } from 'react-plaid-link';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\nimport { faCheck as faCheckDark } from '@fortawesome/pro-solid-svg-icons/faCheck';\nimport { faExclamation as faExclamationDark } from '@fortawesome/pro-solid-svg-icons/faExclamation';\nimport { AsyncLoader, Badge, Button, CardBody, CardText, Loader } from 'fiducius-ui';\n\nimport { todosLoadCollection } from '../../todos';\nimport { authLoadPermissions } from '../../auth';\nimport { mergeRequestStatuses } from '../../utils';\nimport LoaderWrapper from '../../auth/styles/loader-wrapper';\nimport {\n getPlaidToken,\n setPlaidPublicToken,\n unlinkPlaidAccount,\n savePlaidLinkMetadata,\n} from '../redux/operations';\n\nconst ButtonWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nconst PaddedBadge = styled(Badge)`\n margin-left: 0.45em;\n font-size: 0.85em;\n vertical-align: middle;\n`;\n\nconst PlaidLink = ({\n request,\n getPlaidToken,\n plaidData,\n setPlaidPublicToken,\n plaidConnectionId,\n keyId,\n setLoadingToggle,\n loadingToggle,\n unlinkPlaidAccount,\n savePlaidLinkMetadata,\n}) => {\n const [token, setToken] = useState(null);\n\n const [linkTokenGenerated, setLinkTokenGenerated] = useState(false);\n\n const onSuccess = useCallback(async (publicToken, metadata) => {\n await setPlaidPublicToken(plaidConnectionId, publicToken, metadata);\n setLoadingToggle(!loadingToggle);\n }, []);\n\n const onExit = () => {};\n\n const onEvent = useCallback(async (event, metadata) => {\n if (event === 'OPEN' || event === 'EXIT' || event === 'HANDOFF') {\n await savePlaidLinkMetadata(event, metadata);\n }\n }, []);\n\n let isOauth = false;\n\n const config = {\n token,\n onSuccess,\n onExit,\n onEvent,\n };\n\n // For OAuth, configure the received redirect URI\n if (window.location.href.includes('?oauth_state_id=')) {\n config.receivedRedirectUri = window.location.href;\n isOauth = true;\n }\n\n const { error, open, ready, exit } = usePlaidLink(config);\n\n useEffect(() => {\n let isMounted = true;\n if (token === null) {\n getPlaidToken(plaidConnectionId).then(() => {\n if (isMounted) setLinkTokenGenerated(true);\n });\n }\n if (isOauth && ready) {\n // open();\n }\n return () => {\n isMounted = false;\n };\n }, []);\n\n useEffect(() => {\n if (token === null && linkTokenGenerated) {\n setToken(plaidData[keyId].linkToken);\n }\n }, [linkTokenGenerated]);\n\n const plaidToken = plaidData[keyId];\n return (\n <>\n <AsyncLoader request={request}>\n {plaidToken.linkToken !== 'previously connected' && (\n <>\n {/* <CardText>\n {plaidToken.linkToken === 'previously connected' && (\n <> \n <ButtonWrapper>\n <Button brand=\"primary\" size=\"lg\" onClick={() => {\n setToken(null);\n setLinkTokenGenerated(false);\n unlinkPlaidAccount(plaidConnectionId); \n }}>\n Un-Link Account\n </Button> \n </ButtonWrapper> \n </>\n )}\n </CardText> */}\n {/* {plaidToken.linkToken === null && (\n <LoaderWrapper>\n <Loader variant=\"atom\" size={2} />\n </LoaderWrapper>\n )} */}\n {plaidToken.linkToken !== null &&\n plaidToken.linkToken !== 'previously connected' &&\n (plaidToken.plaidConnectionId === -1 ||\n plaidToken.connectionStatus === 'loginrequired') && (\n <>\n <CardBody>\n <ButtonWrapper>\n <Button\n brand=\"primary\"\n size=\"lg\"\n onClick={() => {\n open();\n }}\n disabled={!ready}\n >\n {plaidToken.connectionStatus === 'loginrequired' && (\n <div> Re-link Account </div>\n )}\n {plaidToken.connectionStatus !== 'loginrequired' && (\n <div> Link Account(s) </div>\n )}\n </Button>\n </ButtonWrapper>\n </CardBody>\n </>\n )}\n </>\n )}\n </AsyncLoader>\n </>\n );\n};\n\nPlaidLink.propTypes = {\n request: t.object,\n getPlaidToken: t.func.isRequired,\n setPlaidPublicToken: t.func.isRequired,\n unlinkPlaidAccount: t.func.isRequired,\n savePlaidLinkMetadata: t.func.isRequired,\n todos: t.array,\n};\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.plaid.requests.loadResource,\n state.plaid.requests.updateResource,\n state.plaid.requests.loadCollection,\n ]),\n plaidData: Object.values(state.plaid.cache),\n todos: Object.values(state.todos.cache),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n getPlaidToken: async (plaidConnectionId) => {\n await dispatch(getPlaidToken(plaidConnectionId));\n },\n setPlaidPublicToken: async (id, token, metadata) => {\n await dispatch(setPlaidPublicToken(id, token, metadata));\n dispatch(authLoadPermissions());\n dispatch(todosLoadCollection());\n },\n unlinkPlaidAccount: async (id) => {\n await dispatch(unlinkPlaidAccount(id));\n dispatch(authLoadPermissions());\n dispatch(todosLoadCollection());\n },\n savePlaidLinkMetadata: async (event, metadata) => {\n await dispatch(savePlaidLinkMetadata(event, metadata));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PlaidLink);\n","import React, { useState, useEffect } from 'react';\nimport t from 'prop-types';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport { Redirect } from 'react-router-dom';\nimport { AsyncLoader, Button, Card, CardBody, CardText, DashboardSection } from 'fiducius-ui';\nimport { mergeRequestStatuses } from '../../utils';\nimport { withPermissions } from '../../routing';\n\nimport { getActivePlaidConnections } from '../redux/operations';\n\nimport PlaidButton from '../components/plaid-button';\n\nimport { SharedDataConsent } from '../../legal';\n\nimport PlaidLogoLight from '../../maintenance/assets/Plaid_logo.png';\nimport PlaidLogoDark from '../../maintenance/assets/Plaid_logo_white.png';\n\nconst ButtonWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nconst PlaidOverview = ({ theme, request, todos, getActivePlaidConnections, plaidData }) => {\n const [redirectUri, setRedirectUri] = useState('');\n\n const checkAuthorizedUseCompleted = () => {\n let retVal = false;\n\n // if (plaidData && plaidData.length > 0 && plaidData[0].consentComplete)\n // {\n // retVal = true;\n // }\n\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 2020 || a.id === 6);\n if (currentToDo === undefined || currentToDo === null) {\n retVal = true;\n }\n }\n return retVal;\n };\n\n const checkForReconnectTodo = () => {\n let retVal = true;\n\n if (todos !== undefined && todos !== null) {\n const currentToDo = todos.find((a) => a.id === 2010);\n if (currentToDo === undefined || currentToDo === null) {\n retVal = false;\n }\n }\n return retVal;\n };\n\n const [modalOpen, setModalOpen] = useState(false);\n const [loadingToggle, setLoadingToggle] = useState(true);\n\n const toggleModal = () => {\n setModalOpen(!modalOpen);\n };\n\n const showPlaidConsentDialog = () => {\n setModalOpen(true);\n };\n\n useEffect(() => {\n getActivePlaidConnections();\n }, [modalOpen, loadingToggle]);\n\n if (redirectUri && redirectUri.length > 0) {\n return <Redirect to={redirectUri} />;\n } else {\n return (\n <>\n <div className=\"row\">\n <div className=\"col-12 col-lg-12\">\n <AsyncLoader request={request}>\n <DashboardSection>\n {theme === 'dark' && <img src={PlaidLogoDark} alt=\"Plaid Logo\" width=\"250\" />}\n {theme !== 'dark' && <img src={PlaidLogoLight} alt=\"Plaid Logo\" width=\"250\" />}\n <Card>\n <CardBody>\n <AsyncLoader request={request} loading={<></>}>\n <div className=\"row\">\n <div className=\"col\">\n {checkAuthorizedUseCompleted() &&\n plaidData &&\n plaidData.length > 1 &&\n !!!plaidData[0].optedOut && (\n <>\n {checkForReconnectTodo() && (\n <>\n <CardText>\n You have linked your loan servicer(s) via Plaid, but\n connectivity has been lost. To maintain all of your benefits,\n you need to re-link to your loan servicer(s), please select\n \"Re-link Account\" below.\n </CardText>\n <CardText>\n If you wish to link additional accounts, please select \"Link\n Account(s)\" below.\n </CardText>\n </>\n )}\n {!checkForReconnectTodo() && (\n <CardText>\n <p>\n Congratulations, you successfully linked your loan servicer(s)\n via Plaid!\n </p>\n <p>\n If you wish to link additional accounts, please select \"Link\n Account(s)\" below.\n </p>\n <p>\n We will reach out if there are ever steps required as it\n relates to your connection via Plaid.\n </p>\n </CardText>\n )}\n </>\n )}\n {checkAuthorizedUseCompleted() &&\n plaidData &&\n plaidData.length === 1 &&\n !!!plaidData[0].optedOut && (\n <CardText>\n In order to take advantage of all benefits available to you, Plaid\n connectivity is required. To start the process of linking your loan\n servicer(s) via Plaid, please select \"Link Account(s)\" below.\n </CardText>\n )}\n {checkAuthorizedUseCompleted() &&\n plaidData &&\n plaidData.length > 0 &&\n !!!plaidData[0].optedOut &&\n !!plaidData[0].consentComplete &&\n Object.keys(plaidData).map((p, i) => {\n return (\n <PlaidButton\n plaidConnectionId={plaidData[p].id}\n keyId={i}\n setLoadingToggle={setLoadingToggle}\n loadingToggle={loadingToggle}\n />\n );\n })}\n {plaidData &&\n plaidData.length > 0 &&\n plaidData[0].optedOut &&\n checkAuthorizedUseCompleted() && (\n <>\n {modalOpen && (\n <SharedDataConsent\n hideIcon={false}\n isOpen={modalOpen}\n toggleModal={toggleModal}\n />\n )}\n <CardText>\n <p>\n You previously opted to decline the Shared Data Consent. In\n order to take advantage of all benefits available to you, Plaid\n connectivity is required. To start the process of linking your\n loan servicer(s) via Plaid and receive your maximum benefit,\n please recomplete the Shared Data Consent.\n </p>\n </CardText>\n <ButtonWrapper>\n <Button\n brand=\"primary\"\n size=\"lg\"\n onClick={showPlaidConsentDialog}\n >\n Consent to Share Data\n </Button>\n </ButtonWrapper>\n </>\n )}\n\n {!checkAuthorizedUseCompleted() && (\n <>\n {modalOpen && (\n <SharedDataConsent\n hideIcon={false}\n isOpen={modalOpen}\n toggleModal={toggleModal}\n />\n )}\n <CardText>\n <p>\n In order to take advantage of all benefits available to you, Plaid\n connectivity is required. To start the process of linking your\n loan servicer(s) via Plaid and receive your maximum benefit,\n please complete the Shared Data Consent.\n </p>\n </CardText>\n <ButtonWrapper>\n <Button brand=\"primary\" size=\"lg\" onClick={showPlaidConsentDialog}>\n Consent to Share Data\n </Button>\n </ButtonWrapper>\n </>\n )}\n </div>\n </div>\n </AsyncLoader>\n </CardBody>\n </Card>\n </DashboardSection>\n </AsyncLoader>\n </div>\n </div>\n </>\n );\n }\n};\n\nPlaidOverview.propTypes = {\n request: t.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n request: mergeRequestStatuses([\n state.todos.requests.updateResource,\n //state.todos.requests.loadCollection,\n state.plaid.requests.updateResource,\n ]),\n todos: Object.values(state.todos.cache),\n plaidData: Object.values(state.plaid.cache),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n getActivePlaidConnections: async () => {\n await dispatch(getActivePlaidConnections());\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(PlaidOverview));\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('plaid', types);\r\n","import { resourceTypesGenerator } from '../../utils';\n\nexport default resourceTypesGenerator('loanRepayment');\n","import actions from './actions';\nimport { LoanRepaymentValidator } from './validators';\nimport { resourceOperationsGenerator } from '../../utils';\n\nconst loanRepaymentValidator = new LoanRepaymentValidator();\n\nconst endpointHandler = {\n customResponseHandler: null,\n endpoint: '/loan-repayment',\n resourceType: 'loan-repayment',\n};\n\nconst operations = resourceOperationsGenerator(\n 'loanRepayment',\n actions,\n null,\n loanRepaymentValidator,\n endpointHandler,\n endpointHandler,\n endpointHandler,\n endpointHandler,\n endpointHandler\n);\n\nconst {\n loanRepaymentClearForm,\n loanRepaymentCopyResourceToForm,\n loanRepaymentHandleFormChange,\n loanRepaymentLoadResource,\n loanRepaymentLoadCollection,\n loanRepaymentCreateResource,\n loanRepaymentDeleteResource,\n loanRepaymentUpdateResource,\n} = operations;\n\nexport {\n loanRepaymentClearForm,\n loanRepaymentCopyResourceToForm,\n loanRepaymentHandleFormChange,\n loanRepaymentLoadResource,\n loanRepaymentLoadCollection,\n loanRepaymentCreateResource,\n loanRepaymentDeleteResource,\n loanRepaymentUpdateResource,\n};\n\nexport default operations;\n","import types from './types';\nimport { resourceActionsGenerator } from '../../utils';\n\nexport default resourceActionsGenerator('loanRepayment', types);\n","import { FormValidator } from '../../utils';\r\n\r\nexport class LoanRepaymentValidator extends FormValidator {\r\n requiredIdrPaymentAmount(validator) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(0);\r\n validator.validNumber();\r\n }\r\n\r\n paymentAmount(validator) {\r\n validator.isRequired();\r\n validator.isGreaterThanOrEqualTo(0);\r\n validator.validNumber();\r\n }\r\n\r\n repaymentPlan(validator) {\r\n validator.isRequired();\r\n }\r\n\r\n paymentDate(validator, state) {\r\n var date = new Date();\r\n\r\n //check existing payment dates and make sure none already exist for the inputted month.\r\n // MIK12 Payment Entry Page Updates - firstDay is now 10/1/2024\r\n //var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);\r\n var firstDay = new Date(2024, 9, 1);\r\n\r\n // Todo - lastDate will be pulled from the API. Each partner can have a customizable deadline date.\r\n var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);\r\n\r\n validator.isRequired();\r\n validator.validDate();\r\n\r\n validator.isOnOrAfterDate(firstDay);\r\n validator.isOnOrBeforeDate(lastDay);\r\n\r\n if (state.existingPaymentMonths) {\r\n validator.paymentMonthAlreadyExists(state.origPaymentDate, state.existingPaymentMonths);\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Table, Card, CardBody, Button, CardText } from 'fiducius-ui';\r\n\r\nimport { formatAsMoney, convertIsoToSlash, stringIsNullOrEmpty } from '../../utils';\r\n\r\nconst PaddedDiv = styled.div`\r\n padding-bottom: 1em;\r\n`;\r\n\r\nconst StyledDivCentered = styled.div`\r\n text-align: center;\r\n`;\r\n\r\nconst getTable = (props) => {\r\n if (props.data === null || props.data.length === 0) {\r\n return null;\r\n }\r\n let displayHeaders = [];\r\n const displayBody = [];\r\n\r\n displayHeaders = [\r\n 'Loan Servicer',\r\n 'Repayment Plan',\r\n 'Required IDR Payment',\r\n 'Payment Amount',\r\n 'Paid On',\r\n ];\r\n\r\n Object.keys(props.data)\r\n .sort((a, b) => {\r\n if (props.data[a].paymentDate > props.data[b].paymentDate) {\r\n return -1;\r\n }\r\n if (props.data[a].paymentDate < props.data[b].paymentDate) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n .forEach((row) => {\r\n if (!stringIsNullOrEmpty(props.data[row].id)) {\r\n displayBody.push([\r\n props.data[row].servicerName,\r\n props.data[row].repaymentPlan,\r\n formatAsMoney(props.data[row].requiredIdrPaymentAmount),\r\n formatAsMoney(props.data[row].paymentAmount),\r\n convertIsoToSlash(props.data[row].paymentDate),\r\n <>\r\n {props.data[row].editable && (\r\n <Button\r\n brand=\"secondary\"\r\n onClick={() => {\r\n props.editRow(props.data[row].id);\r\n }}\r\n >\r\n Edit\r\n </Button>\r\n )}\r\n </>,\r\n <>\r\n {props.data[row].editable && (\r\n <Button\r\n brand=\"secondary\"\r\n onClick={() => {\r\n props.deleteRow(props.data[row].id);\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n )}\r\n </>,\r\n ]);\r\n }\r\n });\r\n\r\n return (\r\n <>\r\n <Table\r\n meta={{\r\n pageSize: 10,\r\n }}\r\n body={displayBody}\r\n columns={[\r\n {},\r\n {},\r\n { renderer: formatAsMoney },\r\n { renderer: formatAsMoney },\r\n { sortable: false },\r\n {},\r\n {},\r\n ]}\r\n header={displayHeaders}\r\n />\r\n {displayBody.length == 0 && (\r\n <PaddedDiv>\r\n <StyledDivCentered>\r\n <CardText>No Payments Exist. Click 'Add Payment History' to add payments.</CardText>\r\n </StyledDivCentered>\r\n </PaddedDiv>\r\n )}\r\n </>\r\n );\r\n};\r\nconst RepaymentHistoryTable = (props) => {\r\n let MaximumPaymentAmount = '$200.00';\r\n\r\n if (props.data !== undefined && props.data !== null && Object.keys(props.data).length > 0) {\r\n if (Object.values(props.data)[0].inBandSix) {\r\n MaximumPaymentAmount = '$400.00';\r\n }\r\n }\r\n\r\n return (\r\n <Card>\r\n <CardBody>\r\n {getTable(props)}\r\n <PaddedDiv className=\"row\">\r\n <div className=\"col-12\">\r\n <CardText>\r\n The Michigan 27k Student Loan Repayment program states you can receive aid up to{' '}\r\n {MaximumPaymentAmount} or your Income-Driven Repayment (IDR) amount, if it is less\r\n than {MaximumPaymentAmount}.<br />\r\n <br />\r\n Additionally, we recommend that you do not make a payment amount that is higher than\r\n your IDR amount.\r\n </CardText>\r\n </div>\r\n </PaddedDiv>\r\n </CardBody>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default RepaymentHistoryTable;\r\n","import React, { useState } from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n CardTitle,\r\n CardText,\r\n Form,\r\n InputAddon,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputMask,\r\n InputNumeric,\r\n InputSelect,\r\n InputWrapper,\r\n Loader,\r\n Modal,\r\n} from 'fiducius-ui';\r\n\r\nimport { FlexBetween } from '../../root';\r\nimport { withPermissions, Fade } from '../../routing';\r\nimport { convertIsoToSlash, formatAsMoney, safeAccess, stringIsNullOrEmpty } from '../../utils';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faQuestionCircle, faTimes } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\n\r\nconst TextLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-around;\r\n align-items: center;\r\n margin: 1.5rem 0 3rem 0;\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n margin-bottom: 0.5em;\r\n`;\r\n\r\nconst ExitButton = styled.div`\r\n color: ${(p) => p.theme.textSecondary};\r\n float: right;\r\n\r\n &:hover {\r\n color: ${(p) => p.theme.primary};\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nconst PaddedIcon = styled(FontAwesomeIcon)`\r\n margin-right: 0.45em;\r\n`;\r\n\r\nconst DivLeft = styled.div`\r\n text-align: left;\r\n`;\r\n\r\nconst DivRight = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nconst RepaymentHistoryForm = ({\r\n action,\r\n closeForm,\r\n permissions,\r\n data,\r\n errors = {},\r\n isLoading,\r\n isOpen,\r\n onSubmit,\r\n onChange,\r\n servicerNameList = [],\r\n monthlyInvoiceAmount,\r\n}) => {\r\n let servicerNames = [];\r\n\r\n const [showWarningDialog, setShowWarningDialog] = useState(false);\r\n const [showInformationDialog, setShowInformationDialog] = useState(false);\r\n\r\n const closeInformationDialog = () => {\r\n setShowInformationDialog(false);\r\n };\r\n\r\n const openInformationDialog = () => {\r\n setShowInformationDialog(true);\r\n };\r\n\r\n //Add the options from the NSLDS if they exist\r\n if (servicerNameList !== null) {\r\n Object.keys(servicerNameList).forEach((k) => {\r\n servicerNames.push(servicerNameList[k]);\r\n });\r\n }\r\n\r\n servicerNames.push('Other');\r\n\r\n data.servicerName = data.servicerName || servicerNames[0];\r\n\r\n let deleteDialog = action === 'Delete';\r\n\r\n const getForm = () => {\r\n return (\r\n <Form defaults={data} handleChange={onChange} id={data.id || 'create'} onSubmit={onSubmit}>\r\n <InputWrapper error={!!errors.servicerName}>\r\n <InputLabel htmlFor=\"servicerName\" required>\r\n Loan Servicer\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'servicerName.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"servicerName\"\r\n options={servicerNames}\r\n defaultValue={data.servicerName || ''}\r\n disabled={deleteDialog}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.repaymentPlan}>\r\n <div className=\"row col-12\">\r\n <div>\r\n <InputLabel htmlFor=\"repaymentPlan\" required>\r\n Repayment Plan\r\n </InputLabel>\r\n </div>\r\n <div className=\"col-2\">\r\n <StyledButton brand=\"primary\" size=\"small\" onClick={openInformationDialog}>\r\n \r\n <PaddedIcon icon={faQuestionCircle} fixedWidth />\r\n </StyledButton>\r\n </div>\r\n </div>\r\n <InputError>{safeAccess(errors, 'repaymentPlan.detail')}</InputError>\r\n <InputGroup>\r\n <InputSelect\r\n name=\"repaymentPlan\"\r\n options={['', 'IBR', 'ICR', 'PAYE', 'REPAYE']}\r\n value={data.repaymentPlan || ''}\r\n disabled={deleteDialog}\r\n onChange={() => {}}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.requiredIdrPaymentAmount}>\r\n <InputLabel htmlFor=\"requiredIdrPaymentAmount\" required={true}>\r\n Required IDR Payment\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'requiredIdrPaymentAmount.detail')}</InputError>\r\n <InputGroup affordance=\"full\">\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"requiredIdrPaymentAmount\"\r\n defaultValue={data.requiredIdrPaymentAmount}\r\n disabled={deleteDialog}\r\n />\r\n </InputGroup>\r\n <InputHelp>\r\n *The Required IDR Payment value should match the value from your loan servicer monthly\r\n invoice\r\n </InputHelp>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.paymentAmount}>\r\n <InputLabel htmlFor=\"paymentAmount\" required={true}>\r\n Payment Amount\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'paymentAmount.detail')}</InputError>\r\n <InputGroup affordance=\"full\">\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"paymentAmount\"\r\n defaultValue={data.paymentAmount}\r\n disabled={deleteDialog}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.paymentDate}>\r\n <InputLabel htmlFor=\"paymentDate\" required={true}>\r\n Paid On\r\n </InputLabel>\r\n <InputError>{safeAccess(errors, 'paymentDate.detail')}</InputError>\r\n <InputGroup>\r\n <InputMask\r\n defaultValue={convertIsoToSlash(data.paymentDate)}\r\n mask=\"##/##/####\"\r\n name=\"paymentDate\"\r\n placeholder=\"MM/DD/YYYY\"\r\n disabled={deleteDialog}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </Form>\r\n );\r\n };\r\n\r\n const enableSubmit = () => {\r\n return checkNoMissingData() && checkNoErrors();\r\n };\r\n\r\n const checkNoMissingData = () => {\r\n return (\r\n action === 'Delete' ||\r\n (!stringIsNullOrEmpty(data.requiredIdrPaymentAmount) &&\r\n !stringIsNullOrEmpty(data.paymentAmount) &&\r\n !stringIsNullOrEmpty(data.paymentDate) &&\r\n !stringIsNullOrEmpty(data.repaymentPlan))\r\n );\r\n };\r\n\r\n const checkNoErrors = () => {\r\n return (\r\n !errors.requiredIdrPaymentAmount &&\r\n !errors.paymentAmount &&\r\n !errors.paymentDate &&\r\n !errors.repaymentPlan\r\n );\r\n };\r\n\r\n const submit = (e) => {\r\n e.preventDefault();\r\n if (!isLoading) {\r\n if (\r\n action !== 'Delete' &&\r\n (data.requiredIdrPaymentAmount < monthlyInvoiceAmount - 5 ||\r\n data.requiredIdrPaymentAmount > monthlyInvoiceAmount + 5 ||\r\n data.paymentAmount > monthlyInvoiceAmount + 5)\r\n ) {\r\n setShowWarningDialog(true);\r\n } else {\r\n onSubmit(false, monthlyInvoiceAmount);\r\n }\r\n }\r\n };\r\n\r\n const closeWarningDialog = () => {\r\n setShowWarningDialog(false);\r\n };\r\n\r\n const submitWarningDialog = (e) => {\r\n e.preventDefault();\r\n if (!isLoading) {\r\n setShowWarningDialog(false);\r\n onSubmit(true, monthlyInvoiceAmount);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <Modal isOpen={isOpen} fullWidth={true}>\r\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\r\n <CardHeader>{action} Payment History</CardHeader>\r\n <CardBody>\r\n {errors.generalErrors &&\r\n errors.generalErrors.map((e, i) => (\r\n <Alert key={i} brand=\"danger\">\r\n {e.detail}\r\n </Alert>\r\n ))}\r\n <TextLeft>{getForm()}</TextLeft>\r\n </CardBody>\r\n <CardFooter>\r\n <FlexBetween>\r\n <Button brand=\"lowContrast\" onClick={closeForm}>\r\n Cancel\r\n </Button>\r\n <Fade id=\"deleteInfo\" show={!isLoading && action === 'Delete'}>\r\n Are you sure you want to delete this record?\r\n </Fade>\r\n <Fade id=\"loader\" show={enableSubmit()}>\r\n <Button\r\n brand={action === 'Delete' ? 'danger' : 'success'}\r\n onClick={(e) => submit(e)}\r\n >\r\n {isLoading ? <Loader variant=\"push\" size={1.5} /> : action}\r\n </Button>\r\n </Fade>\r\n <Fade id=\"missingInfo\" show={!isLoading && !checkNoMissingData()}>\r\n Please enter the missing information above.\r\n </Fade>\r\n <Fade id=\"errors\" show={!isLoading && checkNoMissingData() && !checkNoErrors()}>\r\n Please fix the errors above.\r\n </Fade>\r\n </FlexBetween>\r\n </CardFooter>\r\n </Card>\r\n </Modal>\r\n <Modal isOpen={showWarningDialog} onRequestClose={closeWarningDialog}>\r\n <Card brand={errors.generalErrors ? 'danger' : undefined}>\r\n <CardBody>\r\n <ExitButton>\r\n {/* <FontAwesomeIcon icon={faTimes} fixedWidth onClick={closeWarningDialog} size=\"lg\" /> */}\r\n </ExitButton>\r\n <CardTitle>Payment Amount Mismatch</CardTitle>\r\n <CardText>\r\n {(data.requiredIdrPaymentAmount < monthlyInvoiceAmount - 5 ||\r\n data.requiredIdrPaymentAmount > monthlyInvoiceAmount + 5) && (\r\n <p>\r\n The value input, {formatAsMoney(data.requiredIdrPaymentAmount)}, for Required IDR\r\n Payment does not match our records. Can you confirm that the new value input is\r\n accurate and matches your loan servicer monthly invoice amount?\r\n </p>\r\n )}\r\n {data.paymentAmount > monthlyInvoiceAmount + 5 && (\r\n <p>\r\n The Payment Amount entered, {formatAsMoney(data.paymentAmount)} is higher than the\r\n amount in our records. We recommend you do not pay more than the Required IDR\r\n Payment.\r\n </p>\r\n )}\r\n </CardText>\r\n </CardBody>\r\n <ButtonWrapper>\r\n <Button brand=\"highContrast\" size=\"lg\" onClick={closeWarningDialog}>\r\n Cancel\r\n </Button>\r\n <Button brand=\"primary\" size=\"lg\" onClick={submitWarningDialog}>\r\n Confirm\r\n </Button>\r\n </ButtonWrapper>\r\n </Card>\r\n </Modal>\r\n\r\n <Modal isOpen={showInformationDialog} onRequestClose={closeInformationDialog}>\r\n <Card>\r\n <CardBody>\r\n <ExitButton>\r\n {/* <FontAwesomeIcon icon={faTimes} fixedWidth onClick={closeInformationDialog} size=\"lg\" /> */}\r\n </ExitButton>\r\n <CardTitle>Information</CardTitle>\r\n <CardText>\r\n <DivLeft>\r\n To check your current student loan repayment plan, visit the Loan Details page on\r\n your loan servicer's website. Your loan details should indicate that you are on one\r\n of the following Income-Driven Repayment (IDR) plans from the selectable dropdown.\r\n </DivLeft>\r\n </CardText>\r\n </CardBody>\r\n <ButtonWrapper>\r\n <Button brand=\"highContrast\" size=\"lg\" onClick={closeInformationDialog}>\r\n Close\r\n </Button>\r\n </ButtonWrapper>\r\n </Card>\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\nRepaymentHistoryForm.propTypes = {\r\n action: t.string,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n onSubmit: t.func.isRequired,\r\n servicers: t.object,\r\n permissions: t.object,\r\n token: t.any,\r\n};\r\n\r\nexport default withPermissions(RepaymentHistoryForm);\r\n","import React, { useState, useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { Alert, AsyncLoader, Button, Card, CardBody, DashboardSection } from 'fiducius-ui';\r\nimport {\r\n loanRepaymentCopyResourceToForm,\r\n loanRepaymentCreateResource,\r\n loanRepaymentDeleteResource,\r\n loanRepaymentLoadCollection,\r\n loanRepaymentHandleFormChange,\r\n loanRepaymentUpdateResource,\r\n} from '../redux/operations';\r\nimport { todosLoadCollection } from '../../todos/redux/operations';\r\nimport { authLoadPermissions } from '../../auth';\r\nimport { convertIsoToSlash, debounce, mergeRequestStatuses, safeAccess } from '../../utils';\r\nimport { withPermissions } from '../../routing';\r\n\r\nimport RepaymentHistoryTable from '../components/repayment-history-table';\r\nimport RepaymentHistoryForm from '../components/repayment-history-form';\r\nimport { loanRepaymentClearForm } from '../redux/operations';\r\n\r\nconst RepaymentOverview = ({\r\n request,\r\n data,\r\n createPayment,\r\n deletePayment,\r\n loadData,\r\n handleForm,\r\n hydrateForm,\r\n updatePayment,\r\n form,\r\n clearForm,\r\n errors,\r\n}) => {\r\n const [redirectUri, setRedirectUri] = useState('');\r\n\r\n const [loadingToggle, setLoadingToggle] = useState(true);\r\n const [showForm, setShowForm] = useState(false);\r\n const [formId, setFormId] = useState(null);\r\n const [actionName, setActionName] = useState('');\r\n\r\n const openAddNewPaymentForm = () => {\r\n setFormId(null);\r\n setActionName('Add');\r\n setShowForm(true);\r\n handleForm(\r\n { ...form, existingPaymentMonths: data[Object.keys(data)[0]].existingPaymentMonths },\r\n ['existingPaymentMonths']\r\n );\r\n };\r\n\r\n const closeForm = () => {\r\n setFormId(null);\r\n setActionName('');\r\n setShowForm(false);\r\n clearForm();\r\n };\r\n\r\n const onCreate = (paymentDifference, monthlyInvoiceAmount) => {\r\n handleForm(\r\n { ...form, paymentDifference: paymentDifference, monthlyInvoiceAmount: monthlyInvoiceAmount },\r\n ['paymentDifference']\r\n );\r\n createPayment(paymentDifference).then(() => {\r\n closeForm();\r\n });\r\n };\r\n\r\n const onUpdate = (paymentDifference) => {\r\n handleForm({ ...form, paymentDifference: paymentDifference }, ['paymentDifference']);\r\n updatePayment(formId, paymentDifference).then(() => {\r\n closeForm();\r\n });\r\n };\r\n\r\n const onDelete = () => {\r\n deletePayment(formId).then(() => {\r\n closeForm();\r\n });\r\n };\r\n\r\n const onChange = debounce((loanRepayment, id, attribute) => {\r\n let formData = form;\r\n handleForm({ ...formData, ...loanRepayment }, [attribute]);\r\n }, 250);\r\n\r\n const editRow = (id) => {\r\n setFormId(id);\r\n setActionName('Update');\r\n handleForm({ ...form, origPaymentDate: data[id].paymentDate }, ['origPaymentDate']).then(() => {\r\n hydrateForm(id);\r\n });\r\n setShowForm(true);\r\n };\r\n\r\n const deleteRow = (id) => {\r\n setFormId(id);\r\n setActionName('Delete');\r\n hydrateForm(id);\r\n setShowForm(true);\r\n };\r\n\r\n useEffect(() => {\r\n loadData().then(() => {\r\n setLoadingToggle(false);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!showForm) {\r\n loadData().then(() => {\r\n setLoadingToggle(false);\r\n });\r\n }\r\n }, [showForm]);\r\n\r\n let servicerNameList = [];\r\n let monthlyInvoiceAmount = 0;\r\n let showAddButton = false;\r\n let deadlineDate = null;\r\n\r\n if (data !== undefined && data !== null && Object.keys(data).length > 0) {\r\n servicerNameList = Object.values(data)[0].servicerNameList;\r\n monthlyInvoiceAmount = Object.values(data)[0].monthlyInvoiceAmount;\r\n showAddButton = Object.values(data)[0].showAdd;\r\n deadlineDate = Object.values(data)[0].deadlineDate;\r\n }\r\n\r\n if (redirectUri && redirectUri.length > 0) {\r\n return <Redirect to={redirectUri} />;\r\n } else {\r\n return (\r\n <>\r\n <AsyncLoader request={request}>\r\n <DashboardSection title=\"Michigan 27k Student Loan Repayment\">\r\n <Card>\r\n <CardBody>\r\n <AsyncLoader request={request} loading={<></>}>\r\n {deadlineDate && (\r\n <Alert brand=\"warning\">\r\n Payments must be entered before {convertIsoToSlash(deadlineDate)}!\r\n </Alert>\r\n )}\r\n {showAddButton && (\r\n <Button brand=\"primary\" size=\"lg\" onClick={openAddNewPaymentForm}>\r\n Add Payment History\r\n </Button>\r\n )}\r\n {!loadingToggle && (\r\n <RepaymentHistoryTable data={data} editRow={editRow} deleteRow={deleteRow} />\r\n )}\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n </AsyncLoader>\r\n {showForm && (\r\n <RepaymentHistoryForm\r\n action={actionName}\r\n closeForm={closeForm}\r\n data={form}\r\n errors={errors}\r\n isLoading={request.isLoading}\r\n isOpen={showForm}\r\n onChange={onChange}\r\n onSubmit={\r\n actionName === 'Update' ? onUpdate : actionName === 'Add' ? onCreate : onDelete\r\n }\r\n servicerNameList={servicerNameList}\r\n monthlyInvoiceAmount={monthlyInvoiceAmount}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n};\r\n\r\nRepaymentOverview.propTypes = {\r\n request: t.object.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n request: mergeRequestStatuses([\r\n //state.todos.requests.updateResource,\r\n //state.todos.requests.loadCollection,\r\n state.loanRepayment.requests.updateResource,\r\n state.loanRepayment.requests.loadCollection,\r\n ]),\r\n todos: Object.values(state.todos.cache),\r\n data: safeAccess(state, 'loanRepayment.cache', {}),\r\n form: state.loanRepayment.form,\r\n errors: state.loanRepayment.errors,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n handleForm: (loanRepayment, attributes) =>\r\n dispatch(loanRepaymentHandleFormChange(loanRepayment, attributes)),\r\n loadData: async (id) => {\r\n await dispatch(loanRepaymentLoadCollection());\r\n },\r\n createPayment: async () => {\r\n await dispatch(loanRepaymentCreateResource());\r\n await dispatch(loanRepaymentLoadCollection());\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n },\r\n updatePayment: async (id) => {\r\n await dispatch(loanRepaymentUpdateResource(id));\r\n dispatch(todosLoadCollection());\r\n },\r\n deletePayment: async (id) => {\r\n await dispatch(loanRepaymentDeleteResource(id));\r\n await dispatch(loanRepaymentLoadCollection());\r\n dispatch(authLoadPermissions());\r\n dispatch(todosLoadCollection());\r\n },\r\n hydrateForm: async (id) => await dispatch(loanRepaymentCopyResourceToForm(id)),\r\n clearForm: async () => dispatch(loanRepaymentClearForm()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(RepaymentOverview));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n DashboardSection,\r\n InputWrapper,\r\n} from 'fiducius-ui';\r\nimport { getUserId } from '../../auth';\r\nimport { withPermissions } from '../../routing';\r\n\r\nclass RepaymentNSLDSUpload extends React.Component {\r\n static propTypes = {\r\n id: t.number.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { redirectURI: '' };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n redirectForNSLDSUpload = () => {\r\n this.setState({ ...this.state, redirectURI: '/nslds' });\r\n };\r\n\r\n render() {\r\n if (this.state.redirectURI && this.state.redirectURI.length > 0) {\r\n return <Redirect to={this.state.redirectURI} />;\r\n }\r\n\r\n return (\r\n <>\r\n <DashboardSection>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <CardTitle>NSLDS</CardTitle>\r\n <CardText>\r\n <p>\r\n Completing this step will allow us to re-evaluate your Eligibility for Michigan\r\n 27k.\r\n </p>\r\n </CardText>\r\n </CardBody>\r\n <div className=\"row col-12\">\r\n <div className=\"col-8\"></div>\r\n <div className=\"col-4\">\r\n <InputWrapper>\r\n <Button brand=\"primary\" onClick={this.redirectForNSLDSUpload}>\r\n {'Upload NSLDS'}\r\n </Button>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n </Card>\r\n </DashboardSection>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n id: getUserId(state),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(RepaymentNSLDSUpload));\r\n","import types from './types';\nimport { resourceReducerGenerator } from '../../utils';\n\nexport default resourceReducerGenerator('loanRepayment', types);\n","import React from 'react';\r\nimport { AnimationGroup } from 'fiducius-ui';\r\nimport { Redirect, Route, Switch } from 'react-router-dom';\r\n\r\nimport { PrivateRoute, withPermissions } from '../../routing';\r\n\r\nimport { MyAccounts } from '../../accounts';\r\nimport { MyDashboard } from '../../dashboard';\r\nimport { MyDocuments } from '../../documents';\r\n// import { MyFuture } from '../../future';\r\n// import { MyNotifications } from '../../notifications';\r\nimport { PlanTool } from '../../tools/plan-tool';\r\nimport { MyProfile } from '../../profile';\r\nimport { MyPasswordAuth } from '../../password-reset-auth';\r\nimport { MySettings } from '../../settings';\r\nimport { Closed } from '../../closed';\r\nimport { Faq } from '../../faq';\r\n// import { MyTodoList } from '../../todolist';\r\n\r\nimport {\r\n InactiveContributions,\r\n ActiveContributions,\r\n ContributionOverview,\r\n ContributionNeedAssistance,\r\n} from '../../benefits/contribution';\r\n\r\nimport {\r\n MyForgiveness,\r\n ForbearancePhaseOne,\r\n ForbearancePhaseOneFS,\r\n ForbearancePhaseTwo,\r\n EmpCert,\r\n EmpCertFS,\r\n Consolidation,\r\n ConsolidationFS,\r\n ContributionRSSS,\r\n ContributionSS,\r\n Idr,\r\n IDRFS,\r\n OHGraduation,\r\n Welcome,\r\n Taxes,\r\n Complete,\r\n ProfileVerification,\r\n RenewalQuestionnaire,\r\n RenewalExtension,\r\n FeeRS,\r\n ForbearanceRS,\r\n EmpCertSS,\r\n IDRSS,\r\n DocNeededRSFS,\r\n MeetingRSFS,\r\n IDRRSFS,\r\n AccountReviewRS,\r\n Recertification,\r\n EmpCertRSFS,\r\n BtsReview,\r\n BtsQuestionnaire,\r\n NSLDSUpload,\r\n IdrReduced,\r\n} from '../../benefits/forgiveness';\r\n\r\n//import { MyBenefitModeler } from '../../tools/modeler';\r\nimport { MyPretaxTool } from '../../tools/pretax-tool';\r\nimport { MyRetirementTool } from '../../tools/retirement-tool';\r\nimport { TaxEstimatorTool } from '../../tools/tax-estimator-tool';\r\nimport { MyTaxTool } from '../../tools/taxtool';\r\nimport { MyInterestComparison } from '../../tools/interestcomparison';\r\nimport { MySLAComparison } from '../../tools/sla-comparison';\r\nimport { MyIdentity } from '../../benefits/identity';\r\nimport { MyInsurance } from '../../benefits/insurance';\r\nimport { MyRefinance } from '../../benefits/refinance';\r\nimport { MyRetirement } from '../../benefits/retirement';\r\nimport { Contact, ContactNeedAssistance } from '../../contact';\r\nimport { MySimpliFi } from '../../benefits/simplifi';\r\nimport {\r\n MyTuition,\r\n MyInstitutions,\r\n MyTerms,\r\n MyClasses,\r\n MyReimbursementHistory,\r\n TRNeedAssistance,\r\n} from '../../benefits/tuition';\r\nimport {\r\n ConsolidationLwo,\r\n LwoAgreement,\r\n LwoLoanInfo,\r\n LwoOverview,\r\n LwoQuestionnaire,\r\n LwoFee,\r\n LwoEmploymentCertification,\r\n LwoComplete,\r\n LwoNotQualified,\r\n LwoFinalConfirmation,\r\n AboutAssure,\r\n} from '../../benefits/limited-waiver-opportunity';\r\nimport { SecurityQuestionsDashboard } from '../../security-questions-setup';\r\nimport {\r\n EmpCertGen,\r\n EmpCertSubmit,\r\n EmpCertCheck,\r\n EmpCertComplete,\r\n EmpCertCorrection,\r\n} from '../../benefits/empcert';\r\nimport {\r\n FreshStartAwaiting,\r\n FreshStartComplete,\r\n FreshStartContact,\r\n FreshStartOverview,\r\n FreshStartNSLDS,\r\n} from '../../benefits/freshstart';\r\nimport { EducationalReengagementOverview } from '../../benefits/educational-reengagement';\r\nimport {\r\n ReducedIDRWelcome,\r\n ReducedIDROverview,\r\n ReducedIDRComplete,\r\n ReducedIDRProfileVerification,\r\n ReducedIDRQuestionnaire,\r\n ReducedIDREmploymentHistory,\r\n ReducedIDRNeedAssistance,\r\n} from '../../benefits/reducedidr';\r\nimport { PlaidOverview } from '../../plaid';\r\nimport { RepaymentOverview, RepaymentNSLDSUpload } from '../../loan-repayment';\r\n\r\nconst IdrReducedRenewal = () => {\r\n return <IdrReduced renewal={true} />;\r\n};\r\n\r\nconst IdrReducedRenewalComplete = () => {\r\n return <ReducedIDRComplete renewal={true} />;\r\n};\r\n\r\nconst RouterDashboard = withPermissions(({ theme, permissions, toggleDrawer, isEmulation }) => (\r\n <Route\r\n render={({ location }) => (\r\n <AnimationGroup key={location.key} animation=\"fade\">\r\n <Switch location={location}>\r\n {/* Home sections */}\r\n <PrivateRoute\r\n exact\r\n path=\"/dashboard\"\r\n component={MyDashboard}\r\n toggleDrawer={toggleDrawer}\r\n theme={theme}\r\n isEmulation={isEmulation}\r\n />\r\n <PrivateRoute exact path=\"/documents\" component={MyDocuments} />\r\n {/* <PrivateRoute exact path=\"/future\" component={MyFuture} /> */}\r\n <PrivateRoute exact path=\"/accounts\" component={MyAccounts} />\r\n\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/overview\"\r\n component={LwoOverview}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/about-assure\"\r\n component={AboutAssure}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/consolidation-lwo\"\r\n component={ConsolidationLwo}\r\n />\r\n <PrivateRoute exact path=\"/benefits/limited-waiver-opportunity/fee\" component={LwoFee} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/loan-information\"\r\n component={LwoLoanInfo}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/questionnaire\"\r\n component={LwoQuestionnaire}\r\n />\r\n\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/agreement\"\r\n component={LwoAgreement}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/employment-certification\"\r\n component={LwoEmploymentCertification}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/employment-certification/step-1\"\r\n component={LwoEmploymentCertification}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/employment-certification/step-2\"\r\n component={LwoEmploymentCertification}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/employment-certification/step-3\"\r\n component={LwoEmploymentCertification}\r\n />\r\n\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/complete\"\r\n component={LwoComplete}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/not-qualified\"\r\n component={LwoNotQualified}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/limited-waiver-opportunity/confirmation\"\r\n component={LwoFinalConfirmation}\r\n />\r\n {/* Benefits */}\r\n {permissions.showForgiveness && (\r\n <PrivateRoute exact path=\"/benefits/forgiveness/overview\" component={MyForgiveness} />\r\n )}\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/forbearance-p1\"\r\n component={ForbearancePhaseOne}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/forbearance-p2\"\r\n component={ForbearancePhaseTwo}\r\n />\r\n\r\n <PrivateRoute exact path=\"/benefits/forgiveness/empcert\" component={EmpCert} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/empcert/step-1\" component={EmpCert} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/empcert/step-2\" component={EmpCert} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/empcert/step-3\" component={EmpCert} />\r\n\r\n <PrivateRoute exact path=\"/benefits/forgiveness/consolidate\" component={Consolidation} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/consolidate/step-1\"\r\n component={Consolidation}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/consolidate/step-2\"\r\n component={Consolidation}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/consolidate/step-3\"\r\n component={Consolidation}\r\n />\r\n\r\n <PrivateRoute exact path=\"/benefits/forgiveness/idr\" component={Idr} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/idr/step-1\" component={Idr} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/idr/step-2\" component={Idr} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/idr/step-3\" component={Idr} />\r\n\r\n <PrivateRoute exact path=\"/benefits/forgiveness/welcome\" component={Welcome} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/taxes\" component={Taxes} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/complete\" component={Complete} />\r\n\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/profile\"\r\n component={ProfileVerification}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/questionnaire\"\r\n component={RenewalQuestionnaire}\r\n />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/nslds\" component={NSLDSUpload} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/renewal-extension\"\r\n component={RenewalExtension}\r\n />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/fee\" component={FeeRS} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/forbearance-rs\"\r\n component={ForbearanceRS}\r\n />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/empcert-ss\" component={EmpCertSS} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/empcert-ss/step-1\"\r\n component={EmpCertSS}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/empcert-ss/step-2\"\r\n component={EmpCertSS}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/empcert-ss/step-3\"\r\n component={EmpCertSS}\r\n />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/idr-ss\" component={IDRSS} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/idr-ss/step-1\" component={IDRSS} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/idr-ss/step-2\" component={IDRSS} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/idr-ss/step-3\" component={IDRSS} />\r\n\r\n <PrivateRoute exact path=\"/benefits/forgiveness/bts-review\" component={BtsReview} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/bts-questionnaire\"\r\n component={BtsQuestionnaire}\r\n />\r\n\r\n {/*Start of Implementation FS Routes */}\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/forbearance-p1-fs\"\r\n component={ForbearancePhaseOneFS}\r\n />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/empcert-fs\" component={EmpCertFS} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/consolidate-fs\"\r\n component={ConsolidationFS}\r\n />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/repayment-app-fs\" component={IDRFS} />\r\n\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/contribution-ss\"\r\n component={ContributionSS}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/contribution-ss/step-1\"\r\n component={ContributionSS}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/contribution-ss/step-2\"\r\n component={ContributionSS}\r\n />\r\n\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/contribution-rsss\"\r\n component={ContributionRSSS}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/contribution-rsss/step-1\"\r\n component={ContributionRSSS}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/contribution-rsss/step-2\"\r\n component={ContributionRSSS}\r\n />\r\n\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/continuing-education\"\r\n component={OHGraduation}\r\n />\r\n\r\n {/*Start of Renewal FS Routes */}\r\n <PrivateRoute exact path=\"/benefits/forgiveness/docs-needed\" component={DocNeededRSFS} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/meeting\" component={MeetingRSFS} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/idr-fs\" component={IDRRSFS} />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/review\" component={AccountReviewRS} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/forgiveness/recertification\"\r\n component={Recertification}\r\n />\r\n <PrivateRoute exact path=\"/benefits/forgiveness/emp-cert-fs\" component={EmpCertRSFS} />\r\n\r\n {permissions.showSimplifi && (\r\n <PrivateRoute exact path=\"/benefits/simplifi\" component={MySimpliFi} />\r\n )}\r\n {permissions.showRefinance && (\r\n <PrivateRoute exact path=\"/benefits/refinance\" component={MyRefinance} />\r\n )}\r\n {permissions.showRetirement && (\r\n <PrivateRoute exact path=\"/benefits/retirement\" component={MyRetirement} />\r\n )}\r\n {permissions.showContribution && (\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/contribution/overview\"\r\n component={ContributionOverview}\r\n />\r\n )}\r\n {permissions.showContribution && (\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/contribution/need-assistance\"\r\n component={ContributionNeedAssistance}\r\n />\r\n )}\r\n {permissions.showContribution && (\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/contribution/inactive-contributions\"\r\n component={InactiveContributions}\r\n />\r\n )}\r\n {permissions.showContribution && (\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/contribution/active-contributions\"\r\n component={ActiveContributions}\r\n />\r\n )}\r\n\r\n {permissions.showIdentity && (\r\n <PrivateRoute exact path=\"/benefits/identity\" component={MyIdentity} />\r\n )}\r\n {permissions.showStudentLoanDisabilityInsurance && (\r\n <PrivateRoute exact path=\"/benefits/insurance\" component={MyInsurance} />\r\n )}\r\n\r\n <PrivateRoute exact path=\"/benefits/tuition/overview\" component={MyTuition} />\r\n <PrivateRoute exact path=\"/benefits/tuition/institutions\" component={MyInstitutions} />\r\n <PrivateRoute exact path=\"/benefits/tuition/terms\" component={MyTerms} />\r\n <PrivateRoute exact path=\"/benefits/tuition/classes\" component={MyClasses} />\r\n <PrivateRoute exact path=\"/benefits/tuition/history\" component={MyReimbursementHistory} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/tuition/need-assistance\"\r\n component={TRNeedAssistance}\r\n />\r\n\r\n {permissions.hasBenefitTools && (\r\n <PrivateRoute exact path=\"/tools/pretax-tool\" component={MyPretaxTool} />\r\n )}\r\n\r\n {permissions.hasBenefitTools && (\r\n <PrivateRoute exact path=\"/tools/retirement-tool\" component={MyRetirementTool} />\r\n )}\r\n\r\n {permissions.hasBenefitTools && (\r\n <PrivateRoute exact path=\"/tools/tax-calculator\" component={TaxEstimatorTool} />\r\n )}\r\n\r\n {permissions.showPolaris && (\r\n <PrivateRoute exact path=\"/tools/plan-tool\" component={PlanTool} />\r\n )}\r\n\r\n {/* Benefit Tools */}\r\n {/*permissions.showForgiveness && (\r\n <PrivateRoute exact path=\"/tools/modeler\" component={MyBenefitModeler} />\r\n )*/}\r\n {permissions.showForgiveness && (\r\n <PrivateRoute exact path=\"/tools/taxtool\" component={MyTaxTool} />\r\n )}\r\n {permissions.showContribution && (\r\n <PrivateRoute exact path=\"/tools/sla-comparison\" component={MySLAComparison} />\r\n )}\r\n <PrivateRoute exact path=\"/tools/interestcomparison\" component={MyInterestComparison} />\r\n\r\n {/* Profile and Settings */}\r\n <PrivateRoute exact path=\"/profile\" component={MyProfile} />\r\n <PrivateRoute exact path=\"/settings\" component={MySettings} />\r\n <PrivateRoute exact path=\"/closed\" component={Closed} />\r\n <PrivateRoute exact path=\"/contact\" component={Contact} />\r\n <PrivateRoute exact path=\"/contact/need-assistance\" component={ContactNeedAssistance} />\r\n <PrivateRoute exact path=\"/update-password-auth\" component={MyPasswordAuth} />\r\n <PrivateRoute exact path=\"/faq\" component={Faq} />\r\n <PrivateRoute\r\n exact\r\n path=\"/my-security-questions\"\r\n component={SecurityQuestionsDashboard}\r\n />\r\n\r\n {/* Enterprise/Standalone Empcert/Emplify */}\r\n <PrivateRoute exact path=\"/benefits/empcert/generate\" component={EmpCertGen} />\r\n <PrivateRoute exact path=\"/benefits/empcert/submit\" component={EmpCertSubmit} />\r\n <PrivateRoute exact path=\"/benefits/empcert/check\" component={EmpCertCheck} />\r\n <PrivateRoute exact path=\"/benefits/empcert/complete\" component={EmpCertComplete} />\r\n <PrivateRoute exact path=\"/benefits/empcert/correction\" component={EmpCertCorrection} />\r\n\r\n {/* Enterprise/Fresh Start */}\r\n <PrivateRoute exact path=\"/benefits/freshstart/overview\" component={FreshStartOverview} />\r\n <PrivateRoute exact path=\"/benefits/freshstart/contact\" component={FreshStartContact} />\r\n <PrivateRoute exact path=\"/benefits/freshstart/awaiting\" component={FreshStartAwaiting} />\r\n <PrivateRoute exact path=\"/benefits/freshstart/nslds\" component={FreshStartNSLDS} />\r\n <PrivateRoute exact path=\"/benefits/freshstart/complete\" component={FreshStartComplete} />\r\n\r\n {/* Enterprise/Educational Reengagement */}\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/educational-reengagement/overview\"\r\n component={EducationalReengagementOverview}\r\n />\r\n\r\n {/* Enterprise/Reduced IDR Implementation */}\r\n <PrivateRoute exact path=\"/benefits/reducedidr/overview\" component={ReducedIDROverview} />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/welcome\" component={ReducedIDRWelcome} />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/idr\" component={IdrReduced} />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/idr/step-1\" component={IdrReduced} />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/idr/step-2\" component={IdrReduced} />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/idr/step-3\" component={IdrReduced} />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/complete\" component={ReducedIDRComplete} />\r\n\r\n {/* Enterprise/Reduced IDR Renewal */}\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/idrrenewal\"\r\n component={IdrReducedRenewal}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/idrrenewal/step-1\"\r\n component={IdrReducedRenewal}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/idrrenewal/step-2\"\r\n component={IdrReducedRenewal}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/idrrenewal/step-3\"\r\n component={IdrReducedRenewal}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/completerenewal\"\r\n component={IdrReducedRenewalComplete}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/profile\"\r\n component={ReducedIDRProfileVerification}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/questionnaire\"\r\n component={ReducedIDRQuestionnaire}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/employmenthistory\"\r\n component={ReducedIDREmploymentHistory}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/need-assistance\"\r\n component={ReducedIDRNeedAssistance}\r\n />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/empcert-ss\" component={EmpCertSS} />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/empcert-ss/step-1\" component={EmpCertSS} />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/empcert-ss/step-2\" component={EmpCertSS} />\r\n <PrivateRoute exact path=\"/benefits/reducedidr/empcert-ss/step-3\" component={EmpCertSS} />\r\n\r\n <PrivateRoute exact path=\"/benefits/empcert/generate\" component={EmpCertGen} />\r\n <PrivateRoute exact path=\"/benefits/empcert/submit\" component={EmpCertSubmit} />\r\n <PrivateRoute exact path=\"/benefits/empcert/check\" component={EmpCertCheck} />\r\n <PrivateRoute exact path=\"/benefits/empcert/complete\" component={EmpCertComplete} />\r\n <PrivateRoute exact path=\"/benefits/empcert/correction\" component={EmpCertCorrection} />\r\n <PrivateRoute\r\n exact\r\n path=\"/benefits/reducedidr/correction\"\r\n component={EmpCertCorrection}\r\n />\r\n\r\n <PrivateRoute exact path=\"/plaid/overview\" component={PlaidOverview} theme={theme} />\r\n <PrivateRoute\r\n exact\r\n path=\"/loan-repayments/overview\"\r\n component={RepaymentOverview}\r\n theme={theme}\r\n />\r\n <PrivateRoute\r\n exact\r\n path=\"/loan-repayments/nslds\"\r\n component={RepaymentNSLDSUpload}\r\n theme={theme}\r\n />\r\n {/* Catch all/undefined routes and send back to error handler */}\r\n <PrivateRoute exact path=\"/\" component={() => <Redirect to=\"/dashboard\" />} />\r\n <Route children={() => <Redirect to=\"/error/404\" />} />\r\n </Switch>\r\n </AnimationGroup>\r\n )}\r\n />\r\n));\r\n\r\nexport default RouterDashboard;\r\n","import styled from 'styled-components';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nconst ActionIcon = styled(FontAwesomeIcon)`\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n\r\n @media (max-width: 576px) {\r\n color: ${(p) =>\r\n p.theme.themeName === 'dark' || p.theme.themeName === 'greenlight'\r\n ? p.theme.white\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.textPrimary\r\n : p.theme.primary};\r\n\r\n &:hover {\r\n color: ${(p) =>\r\n p.theme.themeName === 'dark' || p.theme.themeName === 'newlight'\r\n ? p.theme.primaryB\r\n : p.theme.themeName === 'greenlight'\r\n ? p.theme.highContrast\r\n : p.theme.primary};\r\n }\r\n }\r\n @media (min-width: 577px) {\r\n color: ${(p) =>\r\n p.theme.themeName === 'newlight' || p.theme.themeName === 'greenlight'\r\n ? p.theme.textPrimary\r\n : p.theme.themeName === 'dark'\r\n ? p.theme.white\r\n : p.theme.primary};\r\n\r\n &:hover {\r\n color: ${(p) =>\r\n p.theme.themeName === 'dark' || p.theme.themeName === 'newlight'\r\n ? p.theme.primaryB\r\n : p.theme.themeName === 'greenlight'\r\n ? p.theme.primaryB\r\n : p.theme.primary};\r\n }\r\n }\r\n &:focus,\r\n &:active {\r\n color: ${(p) =>\r\n p.theme.themeName === 'dark' || p.theme.themeName === 'newlight'\r\n ? p.theme.primaryA\r\n : p.theme.themeName === 'greenlight'\r\n ? p.theme.highContrast\r\n : p.theme.primary};\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nexport default ActionIcon;\r\n","import styled from 'styled-components';\r\n\r\nconst DrawerItems = styled.div`\r\n color: ${(p) => p.theme.textPrimary};\r\n align-self: stretch;\r\n align-items: stretch;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: flex-start;\r\n`;\r\n\r\nexport default DrawerItems;\r\n","import styled from 'styled-components';\r\nimport { Badge } from 'fiducius-ui';\r\n\r\nconst PaddedBadge = styled(Badge)`\r\n margin-left: 0.45em;\r\n font-size: 0.85em;\r\n top: -0.75rem;\r\n`;\r\n\r\nexport default PaddedBadge;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled, { withTheme } from 'styled-components';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faUserCircle } from '@fortawesome/pro-light-svg-icons/faUserCircle';\r\nimport { faCalendarAlt } from '@fortawesome/pro-light-svg-icons/faCalendarAlt';\r\nimport { faTasks } from '@fortawesome/pro-light-svg-icons/faTasks';\r\n\r\nimport { faQuestionCircle as faQuestionCircleLight } from '@fortawesome/pro-regular-svg-icons/faQuestionCircle';\r\nimport { faQuestionCircle as faQuestionCircleDark } from '@fortawesome/pro-solid-svg-icons/faQuestionCircle';\r\n\r\nimport { faClipboardList as faClipboardListLight } from '@fortawesome/pro-regular-svg-icons/faClipboardList';\r\nimport { faCabinetFiling as faCabinetFilingLight } from '@fortawesome/pro-regular-svg-icons/faCabinetFiling';\r\n//import { faLightbulbExclamation as faExclamationBulbLight } from '@fortawesome/pro-regular-svg-icons/faLightbulbExclamation';\r\n// import { faChartLine as faChartLineLight } from '@fortawesome/pro-regular-svg-icons/faChartLine';\r\nimport { faCompressAlt as faCompressAltLight } from '@fortawesome/pro-regular-svg-icons/faCompressAlt';\r\nimport { faHandsHelping as faHandsHelpingLight } from '@fortawesome/pro-regular-svg-icons/faHandsHelping';\r\nimport { faDatabase as faDatabaseLight } from '@fortawesome/pro-regular-svg-icons/faDatabase';\r\nimport { faFileAlt as faFileAltLight } from '@fortawesome/pro-regular-svg-icons/faFileAlt';\r\nimport { faGraduationCap as faTuitionLight } from '@fortawesome/pro-regular-svg-icons/faGraduationCap';\r\nimport { faHome as faHomeLight } from '@fortawesome/pro-regular-svg-icons/faHome';\r\nimport { faMoneyCheck as faMoneyCheckLight } from '@fortawesome/pro-regular-svg-icons/faMoneyCheck';\r\nimport { faPiggyBank as faPiggyBankLight } from '@fortawesome/pro-regular-svg-icons/faPiggyBank';\r\nimport { faSackDollar as faSackDollarLight } from '@fortawesome/pro-regular-svg-icons/faSackDollar';\r\nimport { faShieldAlt as faShieldAltLight } from '@fortawesome/pro-regular-svg-icons/faShieldAlt';\r\nimport { faUniversity as faUniversityLight } from '@fortawesome/pro-regular-svg-icons/faUniversity';\r\nimport { faUserShield as faUserShieldLight } from '@fortawesome/pro-regular-svg-icons/faUserShield';\r\nimport { faWheelchair as faWheelchairLight } from '@fortawesome/pro-regular-svg-icons/faWheelchair';\r\nimport { faMailbox as faMailboxLight } from '@fortawesome/pro-regular-svg-icons/faMailbox';\r\n//import { faSearchDollar as faSearchDollarLight } from '@fortawesome/pro-regular-svg-icons/faSearchDollar';\r\n//import { faHandHoldingUsd as faHandHoldingUsdLight } from '@fortawesome/pro-regular-svg-icons/faHandHoldingUsd';\r\nimport { faCheck as faCheckLight } from '@fortawesome/pro-regular-svg-icons/faCheck';\r\nimport { faExclamation as faExclamationLight } from '@fortawesome/pro-regular-svg-icons/faExclamation';\r\nimport { faLockAlt as faLockLight } from '@fortawesome/pro-regular-svg-icons/faLockAlt';\r\nimport { faUserCircle as faUserCircleLight } from '@fortawesome/pro-regular-svg-icons/faUserCircle';\r\n\r\nimport { faClipboardList as faClipboardListDark } from '@fortawesome/pro-regular-svg-icons/faClipboardList';\r\nimport { faCabinetFiling as faCabinetFilingDark } from '@fortawesome/pro-solid-svg-icons/faCabinetFiling';\r\nimport { faCogs as faCogsDark } from '@fortawesome/pro-solid-svg-icons/faCogs';\r\nimport { faCogs as faCogsLight } from '@fortawesome/pro-regular-svg-icons/faCogs';\r\nimport { faCertificate as faCertificateDark } from '@fortawesome/pro-solid-svg-icons/faCertificate';\r\nimport { faCertificate as faCertificateLight } from '@fortawesome/pro-solid-svg-icons/faCertificate';\r\nimport { faBackward as faBackwardDark } from '@fortawesome/pro-solid-svg-icons/faBackward';\r\nimport { faBackward as faBackwardLight } from '@fortawesome/pro-regular-svg-icons/faBackward';\r\nimport { faBellSchool as faBellSchoolDark } from '@fortawesome/pro-solid-svg-icons/faBellSchool';\r\nimport { faBellSchool as faBellSchoolLight } from '@fortawesome/pro-regular-svg-icons/faBellSchool';\r\nimport { faMoneyBillWave as faMoneyBillWaveDark } from '@fortawesome/pro-solid-svg-icons/faMoneyBillWave';\r\nimport { faMoneyBillWave as faMoneyBillWaveLight } from '@fortawesome/pro-regular-svg-icons/faMoneyBillWave';\r\nimport { faMoneyBill as faMoneyBillDark } from '@fortawesome/pro-solid-svg-icons/faMoneyBill';\r\nimport { faMoneyBill as faMoneyBillLight } from '@fortawesome/pro-regular-svg-icons/faMoneyBill';\r\n\r\n// import { faChartLine as faChartLineDark } from '@fortawesome/pro-solid-svg-icons/faChartLine';\r\nimport { faCompressAlt as faCompressAltDark } from '@fortawesome/pro-solid-svg-icons/faCompressAlt';\r\nimport { faHandsHelping as faHandsHelpingDark } from '@fortawesome/pro-solid-svg-icons/faHandsHelping';\r\nimport { faDatabase as faDatabaseDark } from '@fortawesome/pro-solid-svg-icons/faDatabase';\r\nimport { faFileAlt as faFileAltDark } from '@fortawesome/pro-solid-svg-icons/faFileAlt';\r\nimport { faGraduationCap as faTuitionDark } from '@fortawesome/pro-solid-svg-icons/faGraduationCap';\r\nimport { faHome as faHomeDark } from '@fortawesome/pro-solid-svg-icons/faHome';\r\nimport { faMoneyCheck as faMoneyCheckDark } from '@fortawesome/pro-solid-svg-icons/faMoneyCheck';\r\nimport { faPiggyBank as faPiggyBankDark } from '@fortawesome/pro-solid-svg-icons/faPiggyBank';\r\nimport { faSackDollar as faSackDollarDark } from '@fortawesome/pro-solid-svg-icons/faSackDollar';\r\nimport { faShieldAlt as faShieldAltDark } from '@fortawesome/pro-solid-svg-icons/faShieldAlt';\r\nimport { faUniversity as faUniversityDark } from '@fortawesome/pro-solid-svg-icons/faUniversity';\r\nimport { faUserShield as faUserShieldDark } from '@fortawesome/pro-solid-svg-icons/faUserShield';\r\nimport { faWheelchair as faWheelchairDark } from '@fortawesome/pro-solid-svg-icons/faWheelchair';\r\nimport { faMailbox as faMailboxDark } from '@fortawesome/pro-solid-svg-icons/faMailbox';\r\n//import { faSearchDollar as faSearchDollarDark } from '@fortawesome/pro-solid-svg-icons/faSearchDollar';\r\n//import { faHandHoldingUsd as faHandHoldingUsdDark } from '@fortawesome/pro-solid-svg-icons/faHandHoldingUsd';\r\nimport { faCheck as faCheckDark } from '@fortawesome/pro-solid-svg-icons/faCheck';\r\nimport { faExclamation as faExclamationDark } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\n//import { faExclamation as faSolidExclamation } from '@fortawesome/pro-solid-svg-icons/faExclamation';\r\nimport { faLockAlt as faLockDark } from '@fortawesome/pro-solid-svg-icons/faLockAlt';\r\nimport { faUserCircle as faUserCircleDark } from '@fortawesome/pro-solid-svg-icons/faUserCircle';\r\n\r\n//import { faMoonStars } from '@fortawesome/pro-regular-svg-icons/faMoonStars';\r\n//import { faSun } from '@fortawesome/pro-regular-svg-icons/faSun';\r\n\r\nimport {\r\n Badge,\r\n Dashboard,\r\n Drawer,\r\n Dropdown,\r\n DropdownItem,\r\n DropdownNavItem,\r\n Header5,\r\n HorizontalRule,\r\n Link,\r\n NavCategory,\r\n NavItem,\r\n NavList,\r\n NavSide,\r\n NavTop,\r\n} from 'fiducius-ui';\r\n\r\nimport { MyMeetings } from '../../meetings';\r\nimport { withPermissions } from '../../routing';\r\nimport { MyTodos } from '../../todos';\r\nimport { safeAccess, getApiSingle, patchApi, normalize } from '../../utils';\r\nimport { getCRMUserId, getUserId } from '../../auth';\r\n\r\nimport RouterDashboard from './router-dashboard';\r\nimport ActionIcon from '../styles/action-icon';\r\nimport DrawerItems from '../styles/drawer-items';\r\nimport PaddedBadge from '../styles/padded-badge';\r\nimport { getYear } from 'date-fns';\r\n\r\nclass LayoutDashboard extends React.Component {\r\n static propTypes = {\r\n changeFluid: t.func.isRequired,\r\n changeTheme: t.func.isRequired,\r\n darkTheme: t.bool.isRequired,\r\n drawers: t.object.isRequired,\r\n fluid: t.bool.isRequired,\r\n permissions: t.object,\r\n history: t.shape({\r\n push: t.func.isRequired,\r\n }),\r\n toggleDrawer: t.func.isRequired,\r\n getCRMUserId: t.func.isRequired,\r\n getUserId: t.func.isRequired,\r\n theme: t.string.isRequired,\r\n toDos: t.object.isRequired,\r\n navigationOpen: t.bool.isRequired,\r\n toggleNavigation: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isEmulation: false,\r\n emulationId: 0,\r\n darkThemeState: false,\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n const { getUserId, changeTheme } = this.props;\r\n const Id = getUserId();\r\n getApiSingle(null, '/settings/' + Id).then((data) => {\r\n changeTheme(data.theme);\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n const { getCRMUserId, getUserId, permissions } = this.props;\r\n const crmId = getCRMUserId();\r\n\r\n if (crmId !== 'Error') {\r\n const userId = parseInt(getUserId()) + 1000;\r\n this.setState({ ...this.state, isEmulation: true, emulationId: userId });\r\n }\r\n\r\n if (permissions.hasBenefitTools) {\r\n var sc = document.createElement('script');\r\n sc.setAttribute('id', 'ze-snippet');\r\n sc.setAttribute(\r\n 'src',\r\n 'https://static.zdassets.com/ekr/snippet.js?key=29d416e9-9be3-4755-aac3-95c3faaa931f'\r\n );\r\n sc.setAttribute('type', 'text/javascript');\r\n sc.onload = function() {\r\n window.resetChat();\r\n window.showChat();\r\n };\r\n document.head.appendChild(sc);\r\n }\r\n }\r\n\r\n updateThemeSettings(value) {\r\n const { getUserId, changeTheme } = this.props;\r\n const Id = getUserId();\r\n\r\n const patchData = normalize(\r\n 'settings',\r\n {\r\n theme: value,\r\n },\r\n Id\r\n );\r\n changeTheme(value);\r\n patchApi(null, '/settings/' + Id, patchData);\r\n }\r\n\r\n render() {\r\n const {\r\n permissions,\r\n changeTheme,\r\n darkTheme,\r\n drawers,\r\n history,\r\n toggleDrawer,\r\n theme,\r\n toDos,\r\n navigationOpen,\r\n toggleNavigation,\r\n } = this.props;\r\n const { isEmulation, emulationId } = this.state;\r\n let emulationMessage = '';\r\n if (isEmulation) {\r\n emulationMessage = 'You are currently emulating account X' + emulationId.toString() + '.';\r\n }\r\n\r\n //this.updateThemeSettings('dark')\r\n\r\n return (\r\n <>\r\n <Dashboard\r\n sidebar={\r\n <SideBar theme={theme} darkTheme={darkTheme} permissions={permissions} toDos={toDos} />\r\n }\r\n header={\r\n <TopBar\r\n toggleDrawer={toggleDrawer}\r\n history={history}\r\n permissions={permissions}\r\n emulationMessage={emulationMessage}\r\n changeTheme={changeTheme}\r\n state={(e) => this.updateThemeSettings(e)}\r\n theme={theme}\r\n sidebar={\r\n <SideBar\r\n theme={theme}\r\n darkTheme={darkTheme}\r\n permissions={permissions}\r\n toDos={toDos}\r\n onClick={toggleNavigation}\r\n />\r\n }\r\n toggleNavigation={toggleNavigation}\r\n navigationOpen={navigationOpen}\r\n />\r\n }\r\n >\r\n <RouterDashboard toggleDrawer={toggleDrawer} theme={theme} isEmulation={isEmulation} />\r\n </Dashboard>\r\n <Drawer isOpen={safeAccess(drawers, 'meetings', false)}>\r\n <DrawerItems>\r\n <MyMeetings />\r\n </DrawerItems>\r\n </Drawer>\r\n <Drawer isOpen={safeAccess(drawers, 'todos', false)}>\r\n <DrawerItems>\r\n <MyTodos toggleDrawer={toggleDrawer} toggleNavigation={toggleNavigation} />\r\n </DrawerItems>\r\n </Drawer>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n getCRMUserId: () => getCRMUserId(state),\r\n getUserId: () => getUserId(state),\r\n toDos: safeAccess(state, 'todos.cache', {}),\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(LayoutDashboard));\r\n\r\nconst DropdownAdjust = styled(Dropdown)`\r\n margin-right: 0.5em;\r\n color: ${(p) =>\r\n p.theme.themeName === 'greenlight' ? p.theme.textPrimary : p.theme.textTertiary};\r\n`;\r\n\r\nconst StyledDrawerButton = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst OffsetBadge = styled(Badge)`\r\n font-size: 0.85em;\r\n position: absolute;\r\n left: 75%;\r\n top: -0.5rem;\r\n`;\r\n\r\nconst DrawerButton = ({ propKey, icon, size, onClick, badge = null }) => (\r\n <StyledDrawerButton>\r\n <ActionIcon key={propKey} icon={icon} fixedWidth size={size} onClick={onClick} />\r\n {badge != null && badge !== 0 && <OffsetBadge brand=\"primary\">{badge}</OffsetBadge>}\r\n </StyledDrawerButton>\r\n);\r\n\r\nDrawerButton.propTypes = {\r\n propKey: t.string,\r\n icon: t.any,\r\n size: t.string,\r\n onClick: t.func,\r\n badge: t.node,\r\n};\r\n\r\nconst mapTodosStateToIcon = (state) => ({\r\n todosCount: getActionItemLength(state.todos.cache),\r\n});\r\n\r\nconst getActionItemLength = (todos) => {\r\n let todoArray = Object.values(todos);\r\n if (Object.values(todos).length > 0) {\r\n let ecfActionIdArray = [106, 107, 108, 252, 253, 254];\r\n let lwoEcfActionIdArray = [606, 607, 608];\r\n\r\n //check to see if ECF action items overlap - we only want LWO action items.\r\n if (\r\n todoArray.filter((a) => ecfActionIdArray.includes(a.id)).length > 0 &&\r\n todoArray.filter((a) => lwoEcfActionIdArray.includes(a.id)).length > 0\r\n ) {\r\n let index;\r\n ecfActionIdArray.forEach((a) => {\r\n let toDoIds = todoArray.map((b) => b.id);\r\n index = toDoIds.indexOf(a);\r\n if (index >= 0) {\r\n todoArray.splice(index, 1);\r\n }\r\n });\r\n }\r\n }\r\n return todoArray.length;\r\n};\r\n\r\nconst getCurrentYear = () => {\r\n return getYear(new Date());\r\n};\r\n\r\nconst getAvailableActions = (\r\n toggleDrawer,\r\n todosCount,\r\n permissions,\r\n updateThemeSettings,\r\n toggleNavigation\r\n) => {\r\n let profileDropdown = (\r\n <DropdownAdjust\r\n key=\"profile\"\r\n header={<ActionIcon fixedWidth size=\"2x\" icon={faUserCircle} />}\r\n unstyled={true}\r\n align=\"right\"\r\n >\r\n <DropdownNavItem to=\"/profile\">My Profile</DropdownNavItem>\r\n <HorizontalRule />\r\n <DropdownNavItem to=\"/update-password-auth\">Update Password</DropdownNavItem>\r\n <HorizontalRule />\r\n <DropdownNavItem to=\"/my-security-questions\">Security Questions</DropdownNavItem>\r\n <HorizontalRule />\r\n <DropdownNavItem to=\"/logout\">Logout</DropdownNavItem>\r\n </DropdownAdjust>\r\n );\r\n\r\n if (permissions.useMFA > 0) {\r\n profileDropdown = (\r\n <DropdownAdjust\r\n key=\"profile\"\r\n header={<ActionIcon fixedWidth size=\"2x\" icon={faUserCircle} />}\r\n unstyled={true}\r\n align=\"right\"\r\n >\r\n <DropdownNavItem to=\"/profile\">My Profile</DropdownNavItem>\r\n <HorizontalRule />\r\n <DropdownNavItem to=\"/update-password-auth\">Update Password</DropdownNavItem>\r\n <HorizontalRule />\r\n <DropdownNavItem to=\"/my-security-questions\">Security Questions</DropdownNavItem>\r\n <HorizontalRule />\r\n <DropdownNavItem to=\"/logout\">Logout</DropdownNavItem>\r\n </DropdownAdjust>\r\n );\r\n }\r\n\r\n let actions = [\r\n <Dropdown\r\n key=\"exampleTheme\"\r\n header=\"Theme\"\r\n //selected={state.theme}\r\n onSelect={updateThemeSettings} //make a new function that gets change theme func, and async\r\n align=\"left\"\r\n >\r\n <DropdownItem value=\"newlight\">Light - New</DropdownItem>\r\n <DropdownItem value=\"dark\">Dark</DropdownItem>\r\n <DropdownItem value=\"greenlight\">Green</DropdownItem>\r\n </Dropdown>,\r\n <DrawerButton\r\n key=\"todos\"\r\n propKey=\"todos\"\r\n icon={faTasks}\r\n fixedWidth\r\n size=\"2x\"\r\n onClick={() => toggleDrawer('todos')}\r\n badge={todosCount}\r\n />,\r\n <DrawerButton\r\n key=\"meetings\"\r\n propKey=\"meetings\"\r\n icon={faCalendarAlt}\r\n fixedWidth\r\n size=\"2x\"\r\n onClick={() => toggleDrawer('meetings')}\r\n />,\r\n profileDropdown,\r\n ];\r\n\r\n if (permissions.clientStatus === 'CLOSE' || permissions.clientStatus === 'OHPAY') {\r\n actions = [\r\n <DropdownAdjust\r\n key=\"profile\"\r\n header={<FontAwesomeIcon fixedWidth size=\"2x\" icon={faUserCircle} />}\r\n unstyled={true}\r\n align=\"right\"\r\n >\r\n <DropdownNavItem to=\"/logout\">Logout</DropdownNavItem>\r\n </DropdownAdjust>,\r\n ];\r\n }\r\n\r\n return actions;\r\n};\r\n\r\nconst TopBar = connect(mapTodosStateToIcon)(\r\n withTheme(\r\n ({\r\n history,\r\n todosCount = 0,\r\n toggleDrawer,\r\n permissions,\r\n emulationMessage,\r\n changeTheme,\r\n darkTheme,\r\n changeFluid,\r\n fluid,\r\n state,\r\n sidebar,\r\n navigationOpen,\r\n toggleNavigation,\r\n theme,\r\n }) => (\r\n <NavTop\r\n navigationOpen={navigationOpen}\r\n toggleNavigation={toggleNavigation}\r\n sidebar={sidebar}\r\n theme={theme}\r\n links={[\r\n <Header5 key=\"about\">\r\n <Link to=\"https://getfiducius.com\" external>\r\n About Us\r\n </Link>\r\n </Header5>,\r\n <Header5 key=\"success-stories\">\r\n <Link to=\"https://getfiducius.com/success-stories\" external>\r\n Success Stories\r\n </Link>\r\n </Header5>,\r\n <Header5 key=\"emulation\">{emulationMessage}</Header5>,\r\n ]}\r\n actions={getAvailableActions(\r\n toggleDrawer,\r\n todosCount,\r\n permissions,\r\n changeTheme,\r\n darkTheme,\r\n state\r\n )}\r\n />\r\n )\r\n )\r\n);\r\n\r\nTopBar.propTypes = {\r\n history: t.shape({\r\n push: t.func.isRequired,\r\n }),\r\n toggleDrawer: t.func.isRequired,\r\n sidebar: t.node.isRequired,\r\n navigationOpen: t.bool,\r\n toggleNavigation: t.func.isRequired,\r\n theme: t.string.isRequired,\r\n};\r\n\r\nconst Copyright = styled.div`\r\n align-items: stretch;\r\n color: ${(p) => p.theme.textTertiary};\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin-top: 3rem;\r\n\r\n & > small {\r\n padding: 0 2rem;\r\n padding-top: 0.5rem;\r\n }\r\n`;\r\n\r\nconst SideBarHome = (darkTheme, permissions, toDos, onClick) => {\r\n return (\r\n <>\r\n {permissions.clientStatus !== 'CLOSE' && permissions.clientStatus !== 'OHPAY' && (\r\n <>\r\n <NavCategory>Home</NavCategory>\r\n <NavItem path=\"/dashboard\" icon={darkTheme ? faHomeDark : faHomeLight} onClick={onClick}>\r\n My Dashboard\r\n </NavItem>\r\n <NavItem\r\n path=\"/profile\"\r\n icon={darkTheme ? faUserCircleDark : faUserCircleLight}\r\n onClick={onClick}\r\n >\r\n My Profile\r\n {(Object.keys(toDos).includes('1601') ||\r\n Object.keys(toDos).includes('421') ||\r\n Object.keys(toDos).includes('209') ||\r\n Object.keys(toDos).includes('10')) && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n <NavItem\r\n path=\"/accounts\"\r\n icon={darkTheme ? faUniversityDark : faUniversityLight}\r\n onClick={onClick}\r\n >\r\n My Accounts\r\n {(Object.keys(toDos).includes('502') ||\r\n Object.keys(toDos).includes('501') ||\r\n Object.keys(toDos).includes('402') ||\r\n Object.keys(toDos).includes('403') ||\r\n Object.keys(toDos).includes('13') ||\r\n Object.keys(toDos).includes('11')) && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n <NavItem\r\n path=\"/documents\"\r\n icon={darkTheme ? faCabinetFilingDark : faCabinetFilingLight}\r\n onClick={onClick}\r\n >\r\n My Documents\r\n {(Object.keys(toDos).includes('2') ||\r\n Object.keys(toDos).includes('3') ||\r\n Object.keys(toDos).includes('4') ||\r\n Object.keys(toDos).includes('411') ||\r\n Object.keys(toDos).includes('412') ||\r\n Object.keys(toDos).includes('413')) && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n\r\n {/* <NavItem to=\"/future\" icon={darkTheme ? faChartLineDark : faChartLineLight}>\r\n My Future\r\n </NavItem> */}\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst SidebarText = styled.span`\r\n padding: 0px;\r\n`;\r\n\r\nconst getLwoSteps = (lwoSteps, onClick, darkTheme) => {\r\n let retLwoSteps = [];\r\n lwoSteps.forEach((a) => {\r\n if (a.id === 'Overview' || a.id === 'About') {\r\n retLwoSteps.push(\r\n <NavItem\r\n path={'/benefits/limited-waiver-opportunity' + a.stepPath}\r\n subItem\r\n onClick={onClick}\r\n >\r\n <SidebarText className=\"col-12\">{a.stepText}</SidebarText>\r\n </NavItem>\r\n );\r\n } else if (a.stepComplete) {\r\n retLwoSteps.push(\r\n <NavItem\r\n path={'/benefits/limited-waiver-opportunity' + a.stepPath}\r\n subItem\r\n onClick={onClick}\r\n >\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"success\">\r\n <FontAwesomeIcon icon={darkTheme ? faCheckDark : faCheckLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else if (a.stepCurrent) {\r\n retLwoSteps.push(\r\n <NavItem\r\n path={'/benefits/limited-waiver-opportunity' + a.stepPath}\r\n subItem\r\n onClick={onClick}\r\n >\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n retLwoSteps.push(\r\n <NavItem\r\n path={'/benefits/limited-waiver-opportunity' + a.stepPath}\r\n subItem\r\n onClick={onClick}\r\n >\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"warning\">\r\n <FontAwesomeIcon icon={darkTheme ? faLockDark : faLockLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n }\r\n });\r\n return retLwoSteps;\r\n};\r\n\r\nconst getEnterpriseEmpcertSteps = (enterpriseEmpcertSteps, onClick, darkTheme) => {\r\n let retEnterpriseEmpcertSteps = [];\r\n enterpriseEmpcertSteps.forEach((a) => {\r\n if (a.stepComplete) {\r\n retEnterpriseEmpcertSteps.push(\r\n <NavItem path={'/benefits/empcert' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"success\">\r\n <FontAwesomeIcon icon={darkTheme ? faCheckDark : faCheckLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else if (a.stepCurrent) {\r\n retEnterpriseEmpcertSteps.push(\r\n <NavItem path={'/benefits/empcert' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n retEnterpriseEmpcertSteps.push(\r\n <NavItem path={'/benefits/empcert' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"warning\">\r\n <FontAwesomeIcon icon={darkTheme ? faLockDark : faLockLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n }\r\n });\r\n return retEnterpriseEmpcertSteps;\r\n};\r\n\r\nconst getFreshStartSteps = (freshStartSteps, onClick, darkTheme) => {\r\n let retFreshStartSteps = [];\r\n freshStartSteps.forEach((a) => {\r\n if (a.id === 'OverviewFreshStart' || a.id === 'About') {\r\n retFreshStartSteps.push(\r\n <NavItem path={'/benefits/freshstart' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">{a.stepText}</SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n if (a.stepComplete) {\r\n retFreshStartSteps.push(\r\n <NavItem path={'/benefits/freshstart' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"success\">\r\n <FontAwesomeIcon icon={darkTheme ? faCheckDark : faCheckLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else if (a.stepCurrent) {\r\n retFreshStartSteps.push(\r\n <NavItem path={'/benefits/freshstart' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n retFreshStartSteps.push(\r\n <NavItem path={'/benefits/freshstart' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"warning\">\r\n <FontAwesomeIcon icon={darkTheme ? faLockDark : faLockLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n }\r\n }\r\n });\r\n return retFreshStartSteps;\r\n};\r\n\r\nconst getReducedIDRSteps = (reducedIDRSteps, onClick, darkTheme) => {\r\n let retReducedIDRSteps = [];\r\n reducedIDRSteps.forEach((a) => {\r\n if (a.id === 'OverviewReducedIDR' || a.id === 'About') {\r\n retReducedIDRSteps.push(\r\n <NavItem path={'/benefits/reducedidr' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">{a.stepText}</SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n if (a.stepComplete) {\r\n retReducedIDRSteps.push(\r\n <NavItem path={'/benefits/reducedidr' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"success\">\r\n <FontAwesomeIcon icon={darkTheme ? faCheckDark : faCheckLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else if (a.stepCurrent) {\r\n retReducedIDRSteps.push(\r\n <NavItem path={'/benefits/reducedidr' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n retReducedIDRSteps.push(\r\n <NavItem path={'/benefits/reducedidr' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"warning\">\r\n <FontAwesomeIcon icon={darkTheme ? faLockDark : faLockLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n }\r\n }\r\n });\r\n return retReducedIDRSteps;\r\n};\r\n\r\nconst SideBarBenefits = (darkTheme, permissions, toDos, onClick) => {\r\n let forgivenessSteps = [];\r\n if (permissions.forgivenessSteps !== undefined && permissions.forgivenessSteps !== null) {\r\n permissions.forgivenessSteps.forEach((a) => {\r\n if (!a.stepComplete) {\r\n if (a.stepCurrent) {\r\n forgivenessSteps.push(\r\n <NavItem path={'/benefits/forgiveness' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else if (a.id === 'Overview') {\r\n forgivenessSteps.push(\r\n <NavItem path={'/benefits/forgiveness' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">{a.stepText}</SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n forgivenessSteps.push(\r\n <NavItem path={'/benefits/forgiveness' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"warning\">\r\n <FontAwesomeIcon icon={darkTheme ? faLockDark : faLockLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n }\r\n } else {\r\n if (a.id === 'BtsReview') {\r\n forgivenessSteps.push(\r\n <NavItem path={'/benefits/forgiveness' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">{a.stepText}</SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n forgivenessSteps.push(\r\n <NavItem path={'/benefits/forgiveness' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"success\">\r\n <FontAwesomeIcon icon={darkTheme ? faCheckDark : faCheckLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n }\r\n }\r\n });\r\n }\r\n return (\r\n <>\r\n {permissions.hasAnyBenefits && (\r\n <>\r\n <NavCategory>My Benefits</NavCategory>\r\n {permissions.showForgiveness && (\r\n <NavList\r\n title=\"Forgiveness\"\r\n icon={darkTheme ? faHandsHelpingDark : faHandsHelpingLight}\r\n path=\"/benefits/forgiveness\"\r\n >\r\n {forgivenessSteps}\r\n </NavList>\r\n )}\r\n {permissions.hasEnterpriseEmpCert &&\r\n permissions.enterpriseEmpcertSteps !== undefined &&\r\n permissions.enterpriseEmpcertSteps !== null && (\r\n <NavList\r\n title={<>Emplify</>}\r\n icon={darkTheme ? faCertificateDark : faCertificateLight}\r\n path=\"/benefits/empcert\"\r\n >\r\n {getEnterpriseEmpcertSteps(permissions.enterpriseEmpcertSteps, onClick, darkTheme)}\r\n </NavList>\r\n )}\r\n {permissions.hasFreshStart &&\r\n permissions.freshStartSteps !== undefined &&\r\n permissions.freshStartSteps !== null && (\r\n <NavList\r\n title={<>Fresh Start</>}\r\n icon={darkTheme ? faBackwardDark : faBackwardLight}\r\n path=\"/benefits/freshstart\"\r\n >\r\n {getFreshStartSteps(permissions.freshStartSteps, onClick, darkTheme)}\r\n </NavList>\r\n )}\r\n {permissions.hasReducedIDR &&\r\n permissions.reducedIdrSteps !== undefined &&\r\n permissions.reducedIdrSteps !== null && (\r\n <NavList\r\n title={<>Reduced IDR</>}\r\n icon={darkTheme ? faMoneyBillWaveDark : faMoneyBillWaveLight}\r\n path=\"/benefits/reducedidr\"\r\n >\r\n {getReducedIDRSteps(permissions.reducedIdrSteps, onClick, darkTheme)}\r\n </NavList>\r\n )}\r\n {permissions.hasEducationalReengagement && (\r\n <NavList\r\n title={<>Educational Reengagement</>}\r\n icon={darkTheme ? faBellSchoolDark : faBellSchoolLight}\r\n path=\"/benefits/educational-reengagement\"\r\n >\r\n <NavItem path=\"/benefits/educational-reengagement/overview\" subItem onClick={onClick}>\r\n Overview\r\n {Object.keys(toDos).includes('1000') && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n </NavList>\r\n )}\r\n {permissions.showLwo && (\r\n <NavList\r\n title={<>Assure℠</>}\r\n icon={darkTheme ? faCogsDark : faCogsLight}\r\n path=\"/benefits/limited-waiver-opportunity\"\r\n >\r\n {permissions.lwoSteps !== undefined &&\r\n permissions.lwoSteps !== null &&\r\n getLwoSteps(permissions.lwoSteps, onClick, darkTheme)}\r\n </NavList>\r\n )}\r\n {(permissions.showContribution || permissions.contributionReadOnly) && (\r\n <NavList\r\n title=\"Contribution\"\r\n icon={darkTheme ? faPiggyBankDark : faPiggyBankLight}\r\n path=\"/benefits/contribution\"\r\n >\r\n {!permissions.contributionReadOnly && (\r\n <>\r\n <NavItem path=\"/benefits/contribution/overview\" subItem onClick={onClick}>\r\n Overview\r\n {/*\r\n -- Might need this later\r\n {Object.keys(toDos).includes('15') && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )} */}\r\n </NavItem>\r\n <NavItem\r\n path=\"/benefits/contribution/active-contributions\"\r\n subItem\r\n onClick={onClick}\r\n >\r\n Active Contributions\r\n {Object.keys(toDos).includes('504') && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n\r\n <NavItem\r\n path=\"/benefits/contribution/inactive-contributions\"\r\n subItem\r\n onClick={onClick}\r\n >\r\n Inactive Contributions\r\n </NavItem>\r\n </>\r\n )}\r\n </NavList>\r\n )}\r\n {(permissions.showTuition || permissions.tuitionReadOnly) && (\r\n <NavList\r\n title=\"Tuition Reimbursement\"\r\n icon={darkTheme ? faTuitionDark : faTuitionLight}\r\n path=\"/benefits/tuition\"\r\n >\r\n {!permissions.tuitionReadOnly && (\r\n <>\r\n <NavItem path=\"/benefits/tuition/overview\" subItem onClick={onClick}>\r\n Overview\r\n {Object.keys(toDos).includes('401') && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n {!permissions.homeAddressIsMissing && (\r\n <>\r\n <NavItem path=\"/benefits/tuition/institutions\" subItem onClick={onClick}>\r\n Institutions\r\n {Object.keys(toDos).includes('422') && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n\r\n <NavItem path=\"/benefits/tuition/terms\" subItem onClick={onClick}>\r\n Terms\r\n {(Object.keys(toDos).includes('423') ||\r\n Object.keys(toDos).includes('424')) && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n\r\n <NavItem path=\"/benefits/tuition/classes\" subItem onClick={onClick}>\r\n Classes\r\n {(Object.keys(toDos).includes('425') ||\r\n Object.keys(toDos).includes('426')) && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n </>\r\n )}\r\n </>\r\n )}\r\n <NavItem path=\"/benefits/tuition/history\" subItem onClick={onClick}>\r\n History\r\n </NavItem>\r\n </NavList>\r\n )}\r\n {permissions.showSimplifi && (\r\n <NavItem\r\n path=\"/benefits/simplifi\"\r\n icon={darkTheme ? faCompressAltDark : faCompressAltLight}\r\n onClick={onClick}\r\n >\r\n SimpliFi\r\n {Object.keys(toDos).includes('301') && (\r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={darkTheme ? faExclamationDark : faExclamationLight} />\r\n </PaddedBadge>\r\n )}\r\n </NavItem>\r\n )}\r\n {permissions.showRefinance && (\r\n <NavItem\r\n path=\"/benefits/refinance\"\r\n icon={darkTheme ? faMoneyCheckDark : faMoneyCheckLight}\r\n onClick={onClick}\r\n >\r\n Refinance\r\n </NavItem>\r\n )}\r\n {permissions.showRetirement && (\r\n <NavItem\r\n path=\"/benefits/retirement\"\r\n icon={darkTheme ? faSackDollarDark : faSackDollarLight}\r\n onClick={onClick}\r\n >\r\n Retirement\r\n </NavItem>\r\n )}\r\n\r\n {permissions.showIdentity && (\r\n <NavItem\r\n path=\"/benefits/identity\"\r\n icon={darkTheme ? faUserShieldDark : faUserShieldLight}\r\n onClick={onClick}\r\n >\r\n Identity Protection\r\n </NavItem>\r\n )}\r\n {permissions.showStudentLoanDisabilityInsurance && (\r\n <NavItem\r\n path=\"/benefits/insurance\"\r\n icon={darkTheme ? faWheelchairDark : faWheelchairLight}\r\n onClick={onClick}\r\n >\r\n Disability Insurance\r\n </NavItem>\r\n )}\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst SideBarLoanRepayments = (darkTheme, permissions, toDos, onClick) => {\r\n // Begin Submenu code\r\n // Shows the name of the step, and a green check if complete, or an orange exclamation if not completed\r\n // Currently shows 'Overview' under the main left nav menu\r\n let loanRepaymentSteps = [];\r\n if (permissions.loanRepaymentSteps !== undefined && permissions.loanRepaymentSteps !== null) {\r\n permissions.loanRepaymentSteps.forEach((a) => {\r\n if (a.stepCurrent) {\r\n loanRepaymentSteps.push(\r\n <NavItem\r\n icon={darkTheme ? faMoneyBillDark : faMoneyBillLight}\r\n path={'/loan-repayments' + a.stepPath}\r\n onClick={onClick}\r\n >\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n loanRepaymentSteps.push(\r\n <NavItem\r\n icon={darkTheme ? faMoneyBillDark : faMoneyBillLight}\r\n path={'/loan-repayments' + a.stepPath}\r\n onClick={onClick}\r\n >\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"success\">\r\n <FontAwesomeIcon icon={darkTheme ? faCheckDark : faCheckLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n }\r\n });\r\n //End submenu code\r\n }\r\n return (\r\n <>\r\n {permissions.hasLoanRepayment && (\r\n <>\r\n <NavCategory>Michigan 27k</NavCategory>\r\n {permissions.hasLoanRepayment && <>{loanRepaymentSteps}</>}\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst SideBarTools = (darkTheme, permissions, onClick) => {\r\n let plaidSteps = [];\r\n if (permissions.plaidSteps !== undefined && permissions.plaidSteps !== null) {\r\n permissions.plaidSteps.forEach((a) => {\r\n if (a.stepCurrent) {\r\n plaidSteps.push(\r\n <NavItem path={'/plaid' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"primary\">\r\n <FontAwesomeIcon icon={faExclamationDark} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n } else {\r\n plaidSteps.push(\r\n <NavItem path={'/plaid' + a.stepPath} subItem onClick={onClick}>\r\n <SidebarText className=\"col-12\">\r\n {a.stepText} \r\n <PaddedBadge brand=\"success\">\r\n <FontAwesomeIcon icon={darkTheme ? faCheckDark : faCheckLight} />\r\n </PaddedBadge>\r\n </SidebarText>\r\n </NavItem>\r\n );\r\n }\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n {(permissions.showContribution ||\r\n permissions.showPolaris ||\r\n permissions.hasPlaid ||\r\n permissions.hasBenefitTools) && (\r\n <>\r\n <NavCategory>Benefit Tools</NavCategory>\r\n {permissions.hasPlaid && (\r\n <NavList\r\n title=\"Plaid\"\r\n icon={darkTheme ? faMoneyCheckDark : faMoneyCheckLight}\r\n path=\"/plaid\"\r\n >\r\n {plaidSteps}\r\n </NavList>\r\n )}\r\n <NavList\r\n title=\"Benefit Tools\"\r\n icon={darkTheme ? faClipboardListDark : faClipboardListLight}\r\n path=\"/tools\"\r\n >\r\n {permissions.showPolaris && (\r\n <NavItem path=\"/tools/plan-tool\" subItem onClick={onClick}>\r\n Polaris\r\n </NavItem>\r\n )}\r\n {permissions.hasBenefitTools && (\r\n <>\r\n {/*<NavItem to=\"/tools/modeler\" >\r\n Retirement Tool\r\n </NavItem>*/}\r\n\r\n <NavItem path=\"/tools/retirement-tool\" subItem onClick={onClick}>\r\n Retirement Comparison\r\n </NavItem>\r\n\r\n <NavItem path=\"/tools/pretax-tool\" subItem onClick={onClick}>\r\n Pre-Tax Tool\r\n </NavItem>\r\n\r\n <NavItem path=\"/tools/tax-calculator\" subItem onClick={onClick}>\r\n PaySmart Loan Navigator\r\n </NavItem>\r\n {/* <NavItem path=\"/tools/taxtool\" subItem onClick={onClick}>\r\n Tax Estimator Tool\r\n </NavItem> */}\r\n\r\n <NavItem path=\"/tools/interestcomparison\" subItem onClick={onClick}>\r\n Interest Comparison\r\n </NavItem>\r\n </>\r\n )}\r\n {permissions.showContribution && (\r\n <NavItem path=\"/tools/sla-comparison\" subItem onClick={onClick}>\r\n Contribution Comparison\r\n </NavItem>\r\n )}\r\n </NavList>\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst SideBar = withPermissions(({ darkTheme, permissions, theme, toDos, onClick }) => {\r\n let clientStatus = permissions && permissions.clientStatus;\r\n return (\r\n <NavSide theme={theme}>\r\n {clientStatus !== 'CLOSE' &&\r\n clientStatus !== 'OHPAY' &&\r\n SideBarHome(darkTheme, permissions, toDos, onClick)}\r\n {clientStatus !== 'CLOSE' &&\r\n clientStatus !== 'OHPAY' &&\r\n SideBarBenefits(darkTheme, permissions, toDos, onClick)}\r\n {clientStatus !== 'CLOSE' &&\r\n clientStatus !== 'OHPAY' &&\r\n SideBarLoanRepayments(darkTheme, permissions, toDos, onClick)}\r\n {clientStatus !== 'CLOSE' &&\r\n clientStatus !== 'OHPAY' &&\r\n SideBarTools(darkTheme, permissions, onClick)}\r\n <NavCategory>Powered by Fiducius</NavCategory>\r\n <NavItem\r\n path=\"/privacy\"\r\n icon={darkTheme ? faShieldAltDark : faShieldAltLight}\r\n onClick={onClick}\r\n >\r\n Privacy\r\n </NavItem>\r\n <NavItem\r\n path=\"/terms-of-use\"\r\n icon={darkTheme ? faFileAltDark : faFileAltLight}\r\n onClick={onClick}\r\n >\r\n Terms of Use\r\n </NavItem>\r\n {permissions.clientStatus !== 'CLOSE' &&\r\n permissions.clientStatus !== 'OHPAY' &&\r\n permissions.showSharedData && (\r\n <NavItem\r\n path=\"/shared-data\"\r\n icon={darkTheme ? faDatabaseDark : faDatabaseLight}\r\n onClick={onClick}\r\n >\r\n Shared Data Consent\r\n </NavItem>\r\n )}\r\n <NavItem\r\n path=\"/faq\"\r\n icon={darkTheme ? faQuestionCircleDark : faQuestionCircleLight}\r\n onClick={onClick}\r\n >\r\n Frequently Asked Questions\r\n </NavItem>\r\n {(permissions.enrolledForgiveness ||\r\n permissions.clientStatus === 'WAIT' ||\r\n permissions.clientStatus === 'LEAD' ||\r\n permissions.clientStatus === 'PLAN' ||\r\n permissions.clientStatus === 'FUPHB') && (\r\n <NavItem\r\n path=\"/contact\"\r\n icon={darkTheme ? faMailboxDark : faMailboxLight}\r\n onClick={onClick}\r\n >\r\n Contact Us\r\n </NavItem>\r\n )}\r\n <Copyright>\r\n <small>© {getCurrentYear()} Fiducius, LLC.</small>\r\n <small>All rights reserved.</small>\r\n </Copyright>\r\n </NavSide>\r\n );\r\n});\r\n\r\nSideBar.propTypes = {\r\n darkTheme: t.bool.isRequired,\r\n theme: t.string.isRequired,\r\n toDos: t.object.isRequired,\r\n permissons: t.object.isRequired,\r\n onClick: t.func,\r\n};\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\nimport { Card, CardBody, CardTitle, CardText } from 'fiducius-ui';\r\nimport { authLogout, isAuthenticated } from '../../auth';\r\n\r\nimport Fiducius from '../assets/Fiducius.jpg';\r\n\r\nconst Wrapper = styled.div`\r\n align-items: center;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: ${(p) => p.align};\r\n min-height: 100%;\r\n position: absolute;\r\n width: 100%;\r\n background-image: radial-gradient(\r\n at left top,\r\n ${(p) =>\r\n p.theme.themeName === 'light'\r\n ? p.theme.colorLevel(p.theme.primary, -3)\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.colorLevel(p.theme.primaryA, -3)\r\n : p.theme.colorLevel(p.theme.level1, -3)},\r\n ${(p) =>\r\n p.theme.themeName === 'light'\r\n ? p.theme.colorLevel(p.theme.primary, 4)\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.colorLevel(p.theme.primaryA, 4)\r\n : p.theme.colorLevel(p.theme.level1, 4)}\r\n 70%,\r\n ${(p) =>\r\n p.theme.themeName === 'light'\r\n ? p.theme.colorLevel(p.theme.primary, 5)\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.colorLevel(p.theme.primaryA, 5)\r\n : p.theme.colorLevel(p.theme.level1, 5)}\r\n );\r\n\r\n a {\r\n color: ${(p) => p.theme.secondary};\r\n }\r\n`;\r\n\r\nclass Maintenance extends React.Component {\r\n static propTypes = {\r\n isAuthenticated: t.bool.isRequired,\r\n isLoading: t.bool.isRequired,\r\n signOut: t.func.isRequired,\r\n auth: t.object,\r\n };\r\n\r\n componentDidMount() {\r\n // On mount we log out the user\r\n const { isAuthenticated, signOut, auth } = this.props;\r\n if (isAuthenticated) {\r\n signOut(auth.username);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Wrapper>\r\n <Card brand=\"primary\">\r\n <CardBody>\r\n <img src={Fiducius} alt=\"Fiducius\" width=\"400\" />\r\n <br />\r\n <br />\r\n <CardTitle>We are temporarily down for scheduled maintenance</CardTitle>\r\n <CardText>\r\n We should be back online shortly.\r\n <br />\r\n Thank you for your patience!\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </Wrapper>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isAuthenticated: isAuthenticated(state),\r\n isLoading: state.auth.requests.logout.isLoading,\r\n auth: state.auth.cache,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n signOut: (username) => dispatch(authLogout(username)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Maintenance);\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('maintenance');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('maintenance', types);\r\n","//CalculatorID, LoanBalanceMin, LoanBalanceMax, RepaymentYears, RepaymentMonths\r\n// const ConsolidationCalculator = [\r\n// [1, 0.0, 7499.99, 10, 120],\r\n// [2, 7500.0, 9999.99, 12, 144],\r\n// [3, 10000.0, 19999.99, 15, 180],\r\n// [4, 20000.0, 39999.99, 20, 240],\r\n// [5, 40000.0, 59999.99, 25, 300],\r\n// [7, 60000.0, 999999.99, 30, 360],\r\n// ];\r\n\r\n//Household size, Lower48, Alaska, Hawaii\r\nconst PovertyGuidelines = [\r\n [1, 12760.0, 15950.0, 14680.0],\r\n [2, 17240.0, 21550.0, 19830.0],\r\n [3, 21720.0, 27150.0, 24980.0],\r\n [4, 26200.0, 32750.0, 30130.0],\r\n [5, 30680.0, 38350.0, 35280.0],\r\n [6, 35160.0, 43950.0, 40430.0],\r\n [7, 39640.0, 49550.0, 45580.0],\r\n [8, 44120.0, 55150.0, 50730.0],\r\n [9, 48600.0, 60750.0, 55880.0],\r\n [10, 53080.0, 66350.0, 61030.0],\r\n];\r\n\r\nconst runQuickQualifier = (\r\n salary,\r\n loanAmount,\r\n hasParentPlus,\r\n isMarried,\r\n householdSize,\r\n yearFirstLoan,\r\n bts,\r\n nPer\r\n) => {\r\n let intRate = 6.0;\r\n // let payPeriods = 26;\r\n let retirementPercentage = 0.0;\r\n let perCt = 0.0;\r\n\r\n let totalDeductions = retirementPercentage / 100.0;\r\n let netSalary = parseFloat(salary) * (1.0 - totalDeductions);\r\n // let netSalaryNoRetire = parseFloat(salary);\r\n // let retireAmount = netSalaryNoRetire * totalDeductions;\r\n let totalInterest = (loanAmount * intRate) / 100.0;\r\n\r\n if (loanAmount) {\r\n loanAmount = parseFloat(loanAmount);\r\n } else {\r\n loanAmount = 0.0;\r\n }\r\n\r\n if (nPer) {\r\n nPer = parseInt(nPer);\r\n } else {\r\n nPer = 120;\r\n }\r\n\r\n if (hasParentPlus === 'Y') {\r\n perCt = 0.2;\r\n } else if (yearFirstLoan > 2007) {\r\n perCt = 0.1;\r\n } else if (yearFirstLoan <= 2007 && isMarried === 'N') {\r\n perCt = 0.1;\r\n } else {\r\n perCt = 0.15;\r\n }\r\n\r\n let // existLoanAmount,\r\n standRate,\r\n standRepay,\r\n standTotal,\r\n // consolRate,\r\n // consolRepay,\r\n // consolMonths,\r\n // consolTotal,\r\n ibRepay,\r\n ibTotal;\r\n\r\n // existLoanAmount = loanAmount;\r\n\r\n if (loanAmount === 0) {\r\n standRate = 0.0;\r\n standRepay = 0.0;\r\n standTotal = 0.0;\r\n // consolRate = 0.0;\r\n // consolRepay = 0.0;\r\n // consolMonths = 0;\r\n // consolTotal = 0.0;\r\n } else {\r\n if (nPer > 120) {\r\n standRate = roundToFraction((totalInterest * 100.0) / loanAmount, 8, 1) / 100.0;\r\n } else {\r\n standRate = totalInterest / loanAmount;\r\n }\r\n standRepay = calculatePayment(standRate / 12.0, nPer, loanAmount);\r\n standTotal = standRepay * nPer;\r\n\r\n // consolRate = round8(totalInterest / loanAmount);\r\n // consolMonths = getConsolidationMonths(loanAmount);\r\n // consolRepay = calculatePayment(consolRate / 12.0, consolMonths, loanAmount);\r\n // consolTotal = consolRepay * consolMonths;\r\n }\r\n\r\n if (\r\n ((netSalary - getPovertyGuidelineAmount(householdSize, 'Lower48')) * 1.5 * 0.15) / 12.0 <\r\n 0.0\r\n ) {\r\n ibRepay = 0.0;\r\n } else {\r\n ibRepay =\r\n ((netSalary - getPovertyGuidelineAmount(householdSize, 'Lower48') * 1.5) * perCt) / 12.0;\r\n }\r\n ibTotal =\r\n (netSalary - getPovertyGuidelineAmount(householdSize, 'Lower48') * 1.5) * perCt * (nPer / 12.0);\r\n\r\n ibTotal = ibTotal < 0 ? 0 : ibTotal;\r\n\r\n let lbf = standTotal - ibTotal;\r\n\r\n let message = '';\r\n if (lbf > 0) {\r\n switch (perCt) {\r\n case 0.1:\r\n message += 'a pay as you earn';\r\n break;\r\n case 0.15:\r\n message += 'an income-based';\r\n break;\r\n case 0.2:\r\n message += 'an income-contingent';\r\n break;\r\n default:\r\n message += 'an income-based';\r\n break;\r\n }\r\n } else {\r\n message = 'DNQ';\r\n lbf = 0;\r\n }\r\n\r\n return { lbf, perCt, ibRepay, message };\r\n};\r\n\r\nconst roundToFraction = (decimal, fraction, direction) => {\r\n let retVal = decimal * fraction;\r\n\r\n if (direction === 1) {\r\n retVal = Math.ceil(retVal);\r\n } else {\r\n retVal = Math.floor(retVal);\r\n }\r\n\r\n return retVal / fraction;\r\n};\r\n\r\nconst calculatePayment = (rate, periods, principal) => {\r\n let pmt =\r\n (principal * (rate * Math.pow(1.0 + rate, periods))) / (Math.pow(1.0 + rate, periods) - 1.0);\r\n return parseFloat(pmt.toFixed(9));\r\n};\r\n\r\n// const round8 = (decimal) => {\r\n// let num = parseInt(decimal) * 100;\r\n// let intRate = decimal * 100;\r\n// let fract = intRate - num;\r\n// let newFract = 0.0;\r\n\r\n// if (fract > 0.0) {\r\n// if (fract <= 0.125) {\r\n// newFract = 0.125;\r\n// } else if (fract <= 0.25) {\r\n// newFract = 0.25;\r\n// } else if (fract <= 0.375) {\r\n// newFract = 0.375;\r\n// } else if (fract <= 0.5) {\r\n// newFract = 0.5;\r\n// } else if (fract <= 0.625) {\r\n// newFract = 0.625;\r\n// } else if (fract <= 0.75) {\r\n// newFract = 0.75;\r\n// } else if (fract <= 0.875) {\r\n// newFract = 0.875;\r\n// } else if (fract < 1.0) {\r\n// newFract = 1.0;\r\n// }\r\n// }\r\n\r\n// return (num + newFract) / 100.0;\r\n// };\r\n\r\n// const getConsolidationMonths = (loanAmount) => {\r\n// let consolidationMonths = 0;\r\n// if (loanAmount >= 1000000.0) {\r\n// loanAmount = 999999.99;\r\n// }\r\n\r\n// let index = 0;\r\n// do {\r\n// if (\r\n// ConsolidationCalculator[index][1] <= loanAmount &&\r\n// ConsolidationCalculator[index][2] >= loanAmount\r\n// ) {\r\n// consolidationMonths = ConsolidationCalculator[index][4];\r\n// }\r\n// index++;\r\n// } while (consolidationMonths === 0);\r\n\r\n// return consolidationMonths;\r\n// };\r\n\r\nconst getPovertyGuidelineAmount = (householdSize, location) => {\r\n let locationIndex = 1;\r\n switch (location) {\r\n case 'AL':\r\n locationIndex = 2;\r\n break;\r\n case 'HI':\r\n locationIndex = 3;\r\n break;\r\n default:\r\n locationIndex = 1;\r\n break;\r\n }\r\n\r\n if (householdSize > 10) {\r\n householdSize = 10;\r\n }\r\n return PovertyGuidelines[householdSize - 1][locationIndex];\r\n};\r\n\r\nexport default runQuickQualifier;\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\n\r\nconst endpointHandler = {\r\n endpoint: '/maintenance',\r\n customResponseHandler: null,\r\n resourceType: 'maintenance',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'maintenance',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n null,\r\n null,\r\n null,\r\n null\r\n);\r\n\r\nconst { maintenanceLoadResource } = operations;\r\n\r\nexport { maintenanceLoadResource };\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('maintenance', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Form,\r\n InputError,\r\n InputGroup,\r\n InputLabel,\r\n InputRadio,\r\n InputText,\r\n InputWrapper,\r\n InputCheckbox,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../routing';\r\n\r\nconst LearnMore = ({ id, handleChange, data, errors }) => {\r\n return (\r\n <Form id={id} handleChange={handleChange}>\r\n <InputWrapper>\r\n <InputLabel>\r\n Would you like to learn more about loan forgiveness, refinance or credit repair options?\r\n </InputLabel>\r\n <InputRadio\r\n name=\"learnMore\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.learnMore === 'Y'}\r\n />\r\n <InputRadio name=\"learnMore\" value=\"N\" label=\"No\" defaultChecked={data.learnMore === 'N'} />\r\n </InputWrapper>\r\n <Fade id=\"learnMoreGate\" show={data.learnMore === 'Y'}>\r\n <InputWrapper>\r\n <InputLabel>\r\n Select the individuals below who have student loans in excess of $5,000\r\n </InputLabel>\r\n <InputCheckbox name=\"loansMyself\" label=\"Myself\" defaultChecked={data.loansMyself} />\r\n <InputCheckbox name=\"loansSpouse\" label=\"Spouse\" defaultChecked={data.loansSpouse} />\r\n <InputCheckbox\r\n name=\"loansChildren\"\r\n label=\"Children\"\r\n defaultChecked={data.loansChildren}\r\n />\r\n <InputCheckbox name=\"loansParents\" label=\"Parents\" defaultChecked={data.loansParents} />\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.email}>\r\n <InputLabel>What is your email?</InputLabel>\r\n <InputError>{errors.email}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputText name=\"email\" defaultValue={data.email} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <InputLabel>May we communicate with you via SMS/text messages?</InputLabel>\r\n <InputRadio name=\"sendSMS\" value=\"Y\" label=\"Yes\" defaultChecked={data.sendSMS === 'Y'} />\r\n <InputRadio name=\"sendSMS\" value=\"N\" label=\"No\" defaultChecked={data.sendSMS === 'N'} />\r\n </InputWrapper>\r\n </Fade>\r\n </Form>\r\n );\r\n};\r\n\r\nLearnMore.propTypes = {\r\n handleChange: t.func.isRequired,\r\n id: t.string,\r\n data: t.object,\r\n errors: t.object,\r\n};\r\n\r\nexport default LearnMore;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n Form,\r\n InputAddon,\r\n InputError,\r\n InputGroup,\r\n InputHelp,\r\n InputLabel,\r\n InputNumeric,\r\n InputRadio,\r\n InputWrapper,\r\n Button,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../routing';\r\n\r\nconst QualQuestions = ({ id, handleChange, data, errors, onSubmitClick }) => {\r\n return (\r\n <Form id={id} handleChange={handleChange}>\r\n <InputWrapper error={!!errors.salary}>\r\n <InputLabel>Annual Salary</InputLabel>\r\n <InputError>{errors.salary}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric name=\"salary\" step=\"1\" min={0} defaultValue={data.salary} />\r\n <InputAddon>.00</InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.loanBalance}>\r\n <InputLabel>Federal Student Loan Balance</InputLabel>\r\n <InputError>{errors.loanBalance}</InputError>\r\n <InputGroup affordance=\"medium\">\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric name=\"loanBalance\" step=\"1\" min={0} defaultValue={data.loanBalance} />\r\n <InputAddon>.00</InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <InputLabel>Do you have parent plus loans in your name?</InputLabel>\r\n <InputRadio name=\"ppLoan\" value=\"Y\" label=\"Yes\" defaultChecked={data.ppLoan === 'Y'} />\r\n <InputRadio name=\"ppLoan\" value=\"N\" label=\"No\" defaultChecked={data.ppLoan === 'N'} />\r\n </InputWrapper>\r\n <InputWrapper>\r\n <InputLabel>Are you married?</InputLabel>\r\n <InputRadio\r\n name=\"maritalStatus\"\r\n value=\"Y\"\r\n label=\"Yes\"\r\n defaultChecked={data.maritalStatus === 'Y'}\r\n />\r\n <InputRadio\r\n name=\"maritalStatus\"\r\n value=\"N\"\r\n label=\"No\"\r\n defaultChecked={data.maritalStatus === 'N'}\r\n />\r\n </InputWrapper>\r\n <InputWrapper error={!!errors.householdSize}>\r\n <InputLabel htmlFor=\"householdSize\">\r\n How many people are there in your household?\r\n </InputLabel>\r\n <InputError>{errors.householdSize}</InputError>\r\n <InputGroup affordance=\"small\">\r\n <InputNumeric name=\"householdSize\" min={1} defaultValue={data.householdSize} />\r\n </InputGroup>\r\n <InputHelp>\r\n Household size always includes you, spouse, and children (including unborn children who\r\n will be born during the year). Household size also includes other people that live with\r\n you now that are assisting at least 50% of the household expenses or that are receiving\r\n 50% or more in support. Your household size may be different from the number of exemptions\r\n you claim on your federal income tax return.\r\n </InputHelp>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <InputLabel>Do you plan on going back to school?</InputLabel>\r\n <InputRadio name=\"bts\" value=\"Y\" label=\"Yes\" defaultChecked={data.bts === 'Y'} />\r\n <InputRadio name=\"bts\" value=\"N\" label=\"No\" defaultChecked={data.bts === 'N'} />\r\n </InputWrapper>\r\n <Fade id=\"showSubmitGate\" show={true}>\r\n <Button className=\"col-4\" onClick={onSubmitClick} brand=\"primary\" name=\"submitQuestions\">\r\n Submit\r\n </Button>\r\n </Fade>\r\n </Form>\r\n );\r\n};\r\n\r\nQualQuestions.propTypes = {\r\n id: t.string,\r\n handleChange: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n onSubmitClick: t.func.isRequired,\r\n};\r\n\r\nexport default QualQuestions;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport {\r\n Card,\r\n CardBody,\r\n CardTitle,\r\n CardText,\r\n CardHeader,\r\n BrandColor,\r\n Header5,\r\n Button,\r\n Link,\r\n} from 'fiducius-ui';\r\n\r\nimport { Fade } from '../../routing';\r\nimport { formatAsMoney } from '../../utils';\r\n\r\nconst Spaced = styled.p`\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst SpacedButton = styled(Button)`\r\n margin: 1em;\r\n`;\r\n\r\nconst QuickQualResults = ({ data, onBackClick }) => {\r\n return (\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Fiducius Quick Qualifier Results</CardTitle>\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-6\">\r\n <Card brand=\"primary\">\r\n <CardHeader>Forgiveness</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Fade id=\"qualifyForgiveness\" show={data.message !== 'DNQ'}>\r\n <Header5>Is it possible to lower my monthly payments?</Header5>\r\n <Spaced>\r\n You may qualify for a federal program that would lower your monthly payment to\r\n <strong>\r\n <BrandColor brand=\"primary\">\r\n {' '}\r\n {data.ibRepay < 0 ? '—' : formatAsMoney(data.ibRepay)}{' '}\r\n </BrandColor>\r\n </strong>\r\n and potentially forgive\r\n <strong>\r\n <BrandColor brand=\"primary\">\r\n {' '}\r\n {data.lbf < 0 ? '—' : formatAsMoney(data.lbf)}{' '}\r\n </BrandColor>\r\n </strong>\r\n of your loans. This is based on {data.message} repayment plan.\r\n </Spaced>\r\n </Fade>\r\n <Fade id=\"dnqForgiveness\" show={data.message === 'DNQ'}>\r\n <Spaced>\r\n We're sorry, but based on the information you provided you do not look like\r\n you're eligible for an income-driven repayment plan.\r\n </Spaced>\r\n </Fade>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n <div className=\"col-12 col-md-6\">\r\n <Card brand=\"primary\">\r\n <CardHeader>Refinance</CardHeader>\r\n <CardBody>\r\n <CardText>\r\n <Header5>Are you paying too much interest on your student loans?</Header5>\r\n <Spaced>\r\n Find out if you can lower your interest rate or change your terms to save money.\r\n Check out your Refinance Tab or the <Link to=\"/faq\">FAQ's</Link> to learn more.\r\n </Spaced>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </div>\r\n <SpacedButton\r\n className=\"col-4\"\r\n onClick={onBackClick}\r\n brand=\"primary\"\r\n name=\"backToQuestions\"\r\n >\r\n Back To Questions\r\n </SpacedButton>\r\n </CardBody>\r\n </Card>\r\n );\r\n};\r\n\r\nQuickQualResults.propTypes = {\r\n data: t.object,\r\n onBackClick: t.func.isRequired,\r\n};\r\n\r\nexport default QuickQualResults;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Card, CardBody, CardTitle } from 'fiducius-ui';\r\n\r\nimport { Fade, FullscreenContainer } from '../../routing';\r\nimport { debounce, emailPattern } from '../../utils';\r\n\r\nimport runQuickQualifier from '../redux/operations';\r\nimport LearnMore from '../components/learn-more';\r\nimport QualQuestions from '../components/qual-questions';\r\nimport QuickQualResults from '../components/quick-qual-results';\r\n\r\nclass QuickQual extends React.Component {\r\n static propTypes = {\r\n data: t.object,\r\n errors: t.object,\r\n showLearnMore: t.bool.isRequired,\r\n showQualifier: t.bool.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: {},\r\n errors: {},\r\n };\r\n }\r\n\r\n onSubmitClick = (e) => {\r\n e.persist();\r\n const { data, errors } = this.state;\r\n\r\n if (\r\n data.salary &&\r\n !errors.salary &&\r\n data.loanBalance &&\r\n !errors.loanBalance &&\r\n data.ppLoan &&\r\n data.maritalStatus &&\r\n data.householdSize &&\r\n !errors.householdSize &&\r\n data.bts\r\n ) {\r\n data.resultText = runQuickQualifier(\r\n data.salary,\r\n data.loanBalance,\r\n data.ppLoan,\r\n data.maritalStatus,\r\n data.householdSize,\r\n 2010,\r\n data.bts,\r\n 120\r\n );\r\n\r\n const { lbf, perCt, ibRepay, message } = data.resultText;\r\n data.lbf = lbf;\r\n data.perCt = perCt;\r\n data.ibRepay = ibRepay;\r\n data.message = message;\r\n }\r\n\r\n this.setState({ data, errors });\r\n };\r\n\r\n onBackClick = (e) => {\r\n e.persist();\r\n const { data, errors } = this.state;\r\n data.resultText = null;\r\n data.lbf = -1;\r\n data.perCt = 0;\r\n data.ibRepay = 0;\r\n data.message = null;\r\n this.setState({ data, errors });\r\n };\r\n\r\n handleChange = debounce((formState, id, attribute) => {\r\n let { data, errors } = this.state;\r\n data = { ...data, ...formState };\r\n errors = {};\r\n\r\n if (data.email && !data.email.match(emailPattern)) {\r\n errors['email'] = 'Invalid email';\r\n }\r\n\r\n if (data.salary) {\r\n if (isNaN(data.salary) || data.salary <= 0) {\r\n errors['salary'] = 'Invalid salary';\r\n }\r\n }\r\n\r\n if (data.loanBalance) {\r\n if (isNaN(data.loanBalance) || data.loanBalance <= 0 || data.loanBalance > 1000000) {\r\n errors['loanBalance'] = 'Invalid loan balance';\r\n }\r\n }\r\n\r\n if (data.householdSize) {\r\n if (isNaN(data.householdSize) || data.householdSize < 1 || data.householdSize > 10) {\r\n errors['householdSize'] = 'Invalid household size';\r\n }\r\n }\r\n\r\n this.setState({ data, errors });\r\n }, 250);\r\n\r\n render() {\r\n const { data, errors } = this.state;\r\n return (\r\n <FullscreenContainer className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <Fade id=\"showQuestions\" show={isNaN(data.lbf) || data.lbf === -1}>\r\n {' '}\r\n <Card>\r\n <CardBody>\r\n <CardTitle>Fiducius Quick Qualifier</CardTitle>\r\n <Fade\r\n id=\"learnMoreGate\"\r\n show={this.props.showLearnMore && !this.props.showQualifier}\r\n >\r\n <LearnMore\r\n id=\"learn-more\"\r\n handleChange={this.handleChange}\r\n data={data}\r\n errors={errors}\r\n />\r\n </Fade>\r\n <Fade id=\"qualifierGate\" show={this.props.showQualifier}>\r\n <QualQuestions\r\n id=\"quick-qual\"\r\n handleChange={this.handleChange}\r\n data={data}\r\n errors={errors}\r\n onSubmitClick={this.onSubmitClick}\r\n />\r\n </Fade>\r\n </CardBody>\r\n </Card>\r\n </Fade>\r\n <Fade id=\"showResults\" show={typeof data.lbf === 'number' && data.lbf >= 0}>\r\n <QuickQualResults data={data} onBackClick={this.onBackClick} />\r\n </Fade>\r\n </div>\r\n </div>\r\n </FullscreenContainer>\r\n );\r\n }\r\n}\r\n\r\nexport default QuickQual;\r\n","import { resourceTypesGenerator } from '../../utils';\r\n\r\nexport default resourceTypesGenerator('accountUnlock');\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('accountUnlock', types);\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../utils';\r\nimport { AccountUnlockValidator } from './validators';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/account-unlock',\r\n resourceType: 'account-unlock',\r\n};\r\n\r\nconst validator = new AccountUnlockValidator();\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'accountUnlock',\r\n actions,\r\n null,\r\n validator,\r\n null,\r\n null,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n accountUnlockClearForm,\r\n accountUnlockCopyResourceToForm,\r\n accountUnlockHandleFormChange,\r\n accountUnlockUpdateResource,\r\n} = operations;\r\n\r\nexport {\r\n accountUnlockClearForm,\r\n accountUnlockCopyResourceToForm,\r\n accountUnlockHandleFormChange,\r\n accountUnlockUpdateResource,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../utils';\r\n\r\nexport default resourceActionsGenerator('accountUnlock', types);\r\n","import { FormValidator } from '../../utils';\r\n\r\nexport class AccountUnlockValidator extends FormValidator {\r\n // Register tab validators\r\n email(validator) {\r\n validator.isRequired();\r\n validator.hasMaxLength(250);\r\n validator.isValidSingleEmail();\r\n }\r\n}\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\n\r\nimport { Button, InputGroup, InputLabel, InputText, InputWrapper } from 'fiducius-ui';\r\nimport { useFocusOnMount } from '../../utils';\r\n\r\nconst Email = ({ data, handleClick }) => {\r\n const firstInput = useFocusOnMount();\r\n\r\n return (\r\n <>\r\n <InputWrapper>\r\n <InputLabel>Email</InputLabel>\r\n <InputGroup>\r\n <InputText inputRef={firstInput} name=\"email\" defaultValue={data.email} />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <Button brand=\"primary\" type=\"submit\" onClick={handleClick}>\r\n Submit\r\n </Button>\r\n </InputWrapper>\r\n </>\r\n );\r\n};\r\n\r\nEmail.propTypes = {\r\n data: t.object.isRequired,\r\n handleClick: t.func.isRequired,\r\n};\r\n\r\nexport default Email;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { InputWrapper } from 'fiducius-ui';\r\n\r\nconst FinePrint = styled.div`\r\n font-size: calc(1rem);\r\n`;\r\n\r\nconst StyledLink = styled.a`\r\n color: rgb(24, 188, 112);\r\n`;\r\n\r\nconst HavingTrouble = () => {\r\n return (\r\n <InputWrapper>\r\n <FinePrint>Having trouble unlocking your account?</FinePrint>\r\n <FinePrint>\r\n Contact us at{' '}\r\n <StyledLink href=\"mailto:LoginAssistance@getfiducius.com\">\r\n LoginAssistance@getfiducius.com\r\n </StyledLink>{' '}\r\n for assistance.\r\n </FinePrint>\r\n </InputWrapper>\r\n );\r\n};\r\n\r\nexport default HavingTrouble;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\n\r\nimport { Button, InputGroup, InputLabel, InputText, InputWrapper } from 'fiducius-ui';\r\nimport { safeAccess, useFocusOnMount } from '../../utils';\r\n\r\nconst SecurityQuestion = ({ data, handleClick }) => {\r\n const firstInput = useFocusOnMount();\r\n\r\n return (\r\n <>\r\n <InputWrapper>\r\n <InputLabel>{safeAccess(data, 'securityQuestion')}</InputLabel>\r\n <InputGroup>\r\n <InputText inputRef={firstInput} name=\"securityQuestionResponse\" defaultValue=\"\" />\r\n </InputGroup>\r\n </InputWrapper>\r\n <InputWrapper>\r\n <Button brand=\"primary\" type=\"submit\" onClick={handleClick}>\r\n Unlock Account\r\n </Button>\r\n </InputWrapper>\r\n </>\r\n );\r\n};\r\n\r\nSecurityQuestion.propTypes = {\r\n data: t.object.isRequired,\r\n handleClick: t.func.isRequired,\r\n};\r\n\r\nexport default SecurityQuestion;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nimport { Button, CardText } from 'fiducius-ui';\r\n\r\nconst SpacedButton = styled(Button)`\r\n margin: 1em;\r\n`;\r\n\r\nconst SuccessfulUnlock = ({ goToLogin, goToForgotPassword }) => {\r\n return (\r\n <>\r\n <CardText>\r\n <p>You've successfully unlocked your account!</p>\r\n <p>\r\n Now you need to reset your password. Please click the button below to go to the forgot\r\n password workflow.\r\n </p>\r\n </CardText>\r\n <div className=\"row\">\r\n <SpacedButton brand=\"primary\" type=\"submit\" onClick={goToForgotPassword}>\r\n Forgot Password\r\n </SpacedButton>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nSuccessfulUnlock.propTypes = {\r\n goToLogin: t.func.isRequired,\r\n goToForgotPassword: t.func.isRequired,\r\n};\r\n\r\nexport default SuccessfulUnlock;\r\n","import React, { useState, useEffect } from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { connect } from 'react-redux';\r\nimport queryString from 'query-string';\r\nimport { Redirect, withRouter } from 'react-router-dom';\r\nimport { CardBody, CardHeader, Loader, Header1, Form } from 'fiducius-ui';\r\n\r\nimport { ShadowAddCard } from '../../routing';\r\n\r\nimport {\r\n accountUnlockHandleFormChange,\r\n accountUnlockUpdateResource,\r\n accountUnlockCopyResourceToForm,\r\n} from '../redux/operations';\r\nimport { safeAccess, debounce } from '../../utils';\r\n\r\nimport Email from '../components/email';\r\nimport HavingTrouble from '../components/having-trouble';\r\nimport SecurityQuestion from '../components/security-question';\r\nimport SuccessfulUnlock from '../components/successful-unlock';\r\n\r\nconst LoaderWrapper = styled.div`\r\n height: calc(${(p) => p.height}px - 2em);\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n padding: 5em 0;\r\n`;\r\n\r\nconst AccountUnlock = ({ data, location, request, setForm, handleChange, submit }) => {\r\n const params = queryString.parse(location.search);\r\n const [token, _updateToken] = useState(params.token === undefined ? 'hello' : params.token);\r\n const [redirectPath, updateRedirectPath] = useState();\r\n\r\n useEffect(() => {\r\n if (token) {\r\n setForm(token);\r\n } else {\r\n updateRedirectPath('/login');\r\n }\r\n }, [setForm, token, updateRedirectPath]);\r\n\r\n const submitForm = () => {\r\n if (safeAccess(data, 'email')) {\r\n submit(token);\r\n }\r\n };\r\n\r\n const onChange = debounce((accountUnlock, id, attributes) => {\r\n handleChange({ ...data, ...accountUnlock }, [attributes]);\r\n }, 250);\r\n\r\n const getCardBrand = () => {\r\n if (request.hasFailed || safeAccess(data, 'errorMessage')) {\r\n return 'danger';\r\n }\r\n return 'primaryB';\r\n };\r\n\r\n const getErrorMessage = () => {\r\n return request.hasFailed ? 'Invalid Email or Token' : safeAccess(data, 'errorMessage');\r\n };\r\n\r\n if (redirectPath === undefined && safeAccess(data, 'securityChecksum') === 'LOCKED') {\r\n updateRedirectPath('/login');\r\n }\r\n\r\n if (redirectPath === undefined && safeAccess(data, 'securityChecksum') === 'LOGIN') {\r\n updateRedirectPath('/password-update?token=' + safeAccess(data, 'passwordToken'));\r\n }\r\n\r\n const setRedirectOnSuccess = (path) => {\r\n updateRedirectPath(path);\r\n };\r\n\r\n if (redirectPath) {\r\n return <Redirect to={redirectPath} />;\r\n }\r\n return (\r\n <>\r\n <Header1>Unlock Account</Header1>\r\n <ShadowAddCard brand={getCardBrand()}>\r\n {getErrorMessage() && <CardHeader>{getErrorMessage()}</CardHeader>}\r\n\r\n <CardBody>\r\n {request.isLoading ? (\r\n <LoaderWrapper>\r\n <Loader variant=\"atom\" size={3} />\r\n </LoaderWrapper>\r\n ) : (\r\n <Form id={token} handleChange={onChange}>\r\n {safeAccess(data, 'securityChecksum') ? (\r\n <>\r\n {data.securityChecksum === 'LOGIN' && (\r\n <SuccessfulUnlock\r\n goToLogin={() => setRedirectOnSuccess('/login')}\r\n goToForgotPassword={() => setRedirectOnSuccess('/password-reset')}\r\n />\r\n )}\r\n {data.securityChecksum !== 'LOGIN' && (\r\n <SecurityQuestion data={data} handleClick={submitForm} />\r\n )}\r\n </>\r\n ) : (\r\n <Email data={data} handleClick={submitForm} />\r\n )}\r\n <HavingTrouble />\r\n </Form>\r\n )}\r\n </CardBody>\r\n </ShadowAddCard>\r\n </>\r\n );\r\n};\r\n\r\nAccountUnlock.propTypes = {\r\n location: t.shape({\r\n search: t.string,\r\n }),\r\n data: t.object.isRequired,\r\n request: t.object,\r\n handleChange: t.func.isRequired,\r\n submit: t.func.isRequired,\r\n setForm: t.func.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const accountUnlock = state.accountUnlock;\r\n\r\n return {\r\n data: accountUnlock.form,\r\n request: accountUnlock.requests.updateResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n handleChange: (accountUnlock, attributes) =>\r\n dispatch(accountUnlockHandleFormChange(accountUnlock, attributes)),\r\n submit: async (id) => {\r\n await dispatch(accountUnlockUpdateResource(id));\r\n dispatch(accountUnlockCopyResourceToForm(id));\r\n },\r\n setForm: (id) => dispatch(accountUnlockCopyResourceToForm(id)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(AccountUnlock));\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { AnimationGroup } from 'fiducius-ui';\r\nimport { Route, Switch } from 'react-router-dom';\r\n\r\nimport {\r\n AuthPage,\r\n Login,\r\n Logout,\r\n PasswordReset,\r\n PasswordUpdate,\r\n PasswordOutOfDate,\r\n Register,\r\n CRMLogin,\r\n PreRegistered,\r\n} from '../../auth';\r\nimport { Maintenance } from '../../maintenance';\r\n\r\nimport ErrorPage from './error-page';\r\nimport { QuickQualifier } from '../../quick-qual';\r\nimport { AccountUnlock } from '../../account-unlock';\r\n\r\nconst RouterAuth = (props) => {\r\n const domain = props.domain || 'islsoffice';\r\n return (\r\n <Route\r\n render={({ location }) => (\r\n <AnimationGroup key={location.key} animation=\"fade\">\r\n <Switch location={location}>\r\n {/* Errors */}\r\n <Route path=\"/error/:code\" component={ErrorPage} />\r\n\r\n {/* Public routes */}\r\n <Route\r\n path=\"/login\"\r\n render={() => (\r\n <AuthPage onboarding domain={domain} {...props}>\r\n <Login domain={domain} changeTheme={props.changeTheme} />\r\n </AuthPage>\r\n )}\r\n />\r\n <Route\r\n exact\r\n path=\"/crm\"\r\n render={() => (\r\n <AuthPage domain={domain} {...props}>\r\n <CRMLogin domain={domain} />\r\n </AuthPage>\r\n )}\r\n />\r\n <Route\r\n exact\r\n path=\"/logout\"\r\n render={() => (\r\n <AuthPage {...props}>\r\n <Logout />\r\n </AuthPage>\r\n )}\r\n />\r\n <Route\r\n exact\r\n path=\"/password-reset\"\r\n render={() => (\r\n <AuthPage {...props}>\r\n <PasswordReset />\r\n </AuthPage>\r\n )}\r\n />\r\n <Route\r\n exact\r\n path=\"/password-update\"\r\n render={() => (\r\n <AuthPage {...props}>\r\n <PasswordUpdate />\r\n </AuthPage>\r\n )}\r\n />\r\n <Route\r\n exact\r\n path=\"/account-unlock\"\r\n render={() => (\r\n <AuthPage {...props}>\r\n <AccountUnlock />\r\n </AuthPage>\r\n )}\r\n />\r\n <Route\r\n exact\r\n path=\"/pre-registered\"\r\n render={() => (\r\n <AuthPage onboarding extraOnboard domain={domain} {...props}>\r\n <PreRegistered />\r\n </AuthPage>\r\n )}\r\n />\r\n\r\n <Route\r\n exact\r\n path=\"/password-out-of-date\"\r\n render={() => (\r\n <AuthPage {...props}>\r\n <PasswordOutOfDate />\r\n </AuthPage>\r\n )}\r\n />\r\n <Route\r\n exact\r\n path=\"/register\"\r\n render={() => (\r\n <AuthPage onboarding domain={domain} {...props}>\r\n <Register domain={domain} />\r\n </AuthPage>\r\n )}\r\n />\r\n <Route exact path=\"/maintenance\" render={() => <Maintenance />} />\r\n\r\n <Route\r\n exact\r\n path=\"/learn-more\"\r\n render={() => <QuickQualifier {...props} showLearnMore />}\r\n />\r\n <Route\r\n exact\r\n path=\"/quick-qual\"\r\n render={() => <QuickQualifier {...props} showLearnMore showQualifier />}\r\n />\r\n </Switch>\r\n </AnimationGroup>\r\n )}\r\n />\r\n );\r\n};\r\n\r\nRouterAuth.propTypes = {\r\n domain: t.string,\r\n changeTheme: t.func.isRequired,\r\n};\r\n\r\nexport default RouterAuth;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { Header1, Header3, LogoDisplay, CdnImage } from 'fiducius-ui';\r\nimport { faPlus } from '@fortawesome/pro-light-svg-icons/faPlus';\r\n\r\nimport { safeAccess } from '../../utils';\r\nimport { authGetPartnerLocations, getCRMUserId, getUserId } from '../../auth';\r\n\r\nimport RouterAuth from './router-auth';\r\n\r\nconst Logo = styled.div`\r\n /*position: absolute;\r\n top: 0;\r\n left: 0;*/\r\n width: 100%;\r\n margin: 0.75em 1.25em;\r\n & > h1 {\r\n font-size: 3rem;\r\n color: ${(p) => (p.invert ? p.theme.textPrimary : p.theme.white)};\r\n }\r\n`;\r\n\r\nconst Wrapper = styled.div`\r\n align-items: center;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: ${(p) => p.align};\r\n min-height: 10vh;\r\n position: absolute;\r\n width: 100%;\r\n background-image: radial-gradient(\r\n at left top,\r\n ${(p) =>\r\n p.theme.themeName === 'light'\r\n ? p.theme.colorLevel(p.theme.primary, -3)\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.colorLevel(p.theme.primaryA, -3)\r\n : p.theme.colorLevel(p.theme.level1, -3)},\r\n ${(p) =>\r\n p.theme.themeName === 'light'\r\n ? p.theme.colorLevel(p.theme.primary, 4)\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.colorLevel(p.theme.primaryA, 4)\r\n : p.theme.colorLevel(p.theme.level1, 4)}\r\n 70%,\r\n ${(p) =>\r\n p.theme.themeName === 'light'\r\n ? p.theme.colorLevel(p.theme.primary, 5)\r\n : p.theme.themeName === 'newlight'\r\n ? p.theme.colorLevel(p.theme.primaryA, 5)\r\n : p.theme.colorLevel(p.theme.level1, 5)}\r\n );\r\n\r\n a {\r\n color: ${(p) => p.theme.secondary};\r\n }\r\n`;\r\n\r\nconst StyledLogo = styled(LogoDisplay)`\r\n padding-left: 1rem;\r\n`;\r\nconst LogoWrapper = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n padding: 0.25rem 1rem;\r\n padding-left: 1rem;\r\n`;\r\n\r\nconst PartnershipWrapper = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n ${(p) => p.theme.sidebarWidthAdjust('width', p)};\r\n padding: 0.25rem 1rem;\r\n`;\r\n\r\nconst StyledPartnershipLogoDisplay = styled(CdnImage)`\r\n height: auto;\r\n max-height: calc(${(p) => p.theme.topBarHeight} - 0.5rem);\r\n max-width: 100%;\r\n`;\r\n\r\nconst StyledLogoWrapper = styled.div`\r\n padding-left: 1rem;\r\n`;\r\n\r\nconst StyledHeader1 = styled(Header1)`\r\n color: ${(p) => p.theme.white};\r\n`;\r\n\r\nconst StyledHeader3 = styled(Header3)`\r\n color: ${(p) => p.theme.white};\r\n`;\r\n\r\nclass LayoutAuth extends React.Component {\r\n static propTypes = {\r\n align: t.string,\r\n children: t.node,\r\n company: t.string,\r\n greeting: t.string,\r\n loadPartnerLocations: t.func.isRequired,\r\n shouldLoadLocations: t.bool.isRequired,\r\n getCRMUserId: t.func.isRequired,\r\n getUserId: t.func.isRequired,\r\n changeTheme: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n partnerDomain: this.parseSubdomain(),\r\n isEmulation: false,\r\n emulationId: 0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n //if (this.props.shouldLoadLocations) {\r\n this.props.loadPartnerLocations(this.state.partnerDomain);\r\n //}\r\n const { getCRMUserId, getUserId } = this.props;\r\n const crmId = getCRMUserId();\r\n\r\n if (crmId !== 'Error') {\r\n const userId = parseInt(getUserId()) + 1000;\r\n this.setState({ ...this.state, isEmulation: true, emulationId: userId });\r\n }\r\n }\r\n\r\n parseSubdomain() {\r\n // subdomain.domain.tld <=> app.getfiducius.com\r\n // domains = [subdomain, domain, tld];\r\n const domains = window.location.hostname.split('.');\r\n // If there's more than the domain and top level domain,\r\n // return the first sub-domain\r\n return domains.length > 2 ? domains[domains.length - 3] : 'islsoffice';\r\n }\r\n\r\n render() {\r\n const { align = 'center', company, children, greeting, changeTheme } = this.props;\r\n const { isEmulation, emulationId, partnerDomain } = this.state;\r\n let emulationMessage = '';\r\n if (isEmulation) {\r\n emulationMessage = 'You are currently emulating account X' + emulationId.toString() + '.';\r\n }\r\n return (\r\n <>\r\n <Wrapper align={align}>\r\n <Logo>\r\n {company && (\r\n <>\r\n <div className=\"row no-gutters\">\r\n <StyledLogoWrapper>\r\n <StyledLogo />\r\n </StyledLogoWrapper>\r\n <div className=\"col-auto\">\r\n {partnerDomain === process.env.REACT_APP_CDN_PARTNERSHIP && (\r\n <PartnershipWrapper>\r\n <StyledHeader1>\r\n <FontAwesomeIcon size=\"1x\" fixedWidth icon={faPlus} />\r\n </StyledHeader1>\r\n <StyledPartnershipLogoDisplay\r\n cdn={process.env.REACT_APP_CDN_URL}\r\n imagePath={'fiducius-logo.png'}\r\n />\r\n </PartnershipWrapper>\r\n )}\r\n {partnerDomain !== process.env.REACT_APP_CDN_PARTNERSHIP && (\r\n <StyledHeader1>\r\n <FontAwesomeIcon size=\"1x\" fixedWidth icon={faPlus} />\r\n {company}\r\n </StyledHeader1>\r\n )}\r\n </div>\r\n </div>\r\n <LogoWrapper>\r\n <StyledHeader3>{greeting}</StyledHeader3>\r\n </LogoWrapper>\r\n <LogoWrapper>\r\n {isEmulation && <StyledHeader3>{emulationMessage}</StyledHeader3>}\r\n </LogoWrapper>\r\n </>\r\n )}\r\n {!company && (\r\n <>\r\n <div className=\"row no-gutters\">\r\n <StyledLogoWrapper>\r\n <StyledLogo />\r\n </StyledLogoWrapper>\r\n </div>\r\n <LogoWrapper>\r\n {isEmulation && <StyledHeader3>{emulationMessage}</StyledHeader3>}\r\n </LogoWrapper>\r\n </>\r\n )}\r\n </Logo>\r\n {children || (\r\n <RouterAuth changeTheme={changeTheme} greeting={''} domain={this.state.partnerDomain} />\r\n )}\r\n </Wrapper>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n shouldLoadLocations:\r\n safeAccess(state, 'persist.requests.load.hasFinished', false) &&\r\n !safeAccess(state, 'auth.cache.partnerLocations') &&\r\n safeAccess(state, 'auth.requests.partnerLocation.notStarted', true),\r\n company:\r\n safeAccess(state, 'auth.cache.permissions.partnerLine1') ||\r\n safeAccess(state, 'auth.cache.partnerLocations.partnerLine1'),\r\n greeting:\r\n safeAccess(state, 'auth.cache.permissions.partnerLine2') ||\r\n safeAccess(state, 'auth.cache.partnerLocations.partnerLine2'),\r\n getCRMUserId: () => getCRMUserId(state),\r\n getUserId: () => getUserId(state),\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadPartnerLocations: (domain) => dispatch(authGetPartnerLocations(domain)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LayoutAuth);\r\n","import React from 'react';\nimport t from 'prop-types';\nimport { Route, Switch } from 'react-router-dom';\n\nimport { withPermissions } from '../components/permission-provider';\n\nimport LayoutDashboard from './layout-dashboard';\nimport LayoutFullscreen from './layout-fullscreen';\nimport LayoutAuth from './layout-auth';\nimport PrivateRoute from './private-route';\n\nimport { connect } from 'react-redux';\nimport { getApiSingle, patchApi, normalize } from '../../utils';\nimport { authGetRedirectPath, getCRMUserId, getSecurityId, getUserId } from '../../auth';\nimport { Maintenance } from '../../maintenance';\n\nconst LayoutFullscreenAlignStart = (props) => <LayoutFullscreen {...props} align=\"flex-start\" />;\nconst LayoutDashboardWithProps = (props) => <LayoutDashboard {...props} />;\n\n// Top level router handles delegating routes to different layouts which have\n// their own individual routers\nconst checkMaintenance = () => {\n const hostName = window.location.hostname;\n const domain = hostName.split('.')[0];\n const pathName = window.location.pathname;\n\n getApiSingle(null, '/maintenance/' + domain).then((data) => {\n if (\n pathName === '/login' ||\n pathName === '/dashboard' ||\n pathName === '/crm' ||\n pathName === '/maintenance'\n ) {\n if (\n data.appVersionMajor > parseInt(process.env.REACT_APP_V_MAJOR) ||\n (data.appVersionMajor === parseInt(process.env.REACT_APP_V_MAJOR) &&\n data.appVersionMinor > parseInt(process.env.REACT_APP_V_MINOR)) ||\n (data.appVersionMajor === parseInt(process.env.REACT_APP_V_MAJOR) &&\n data.appVersionMinor === parseInt(process.env.REACT_APP_V_MINOR) &&\n data.appVersionPatch > parseInt(process.env.REACT_APP_V_PATCH))\n ) {\n document.location.reload(true);\n }\n }\n\n if (data.maintenanceEnabled) {\n if (pathName !== '/maintenance') {\n window.location.assign('/maintenance');\n }\n } else {\n if (pathName === '/maintenance') {\n window.location.assign('/login');\n }\n }\n });\n};\n\nconst validateSecurityCheck = (customerId, securityId, redirectPath) => {\n if (customerId !== 'Error' && redirectPath !== 'referrer') {\n const pathName = window.location.pathname;\n\n if (\n securityId === '6333732' &&\n !(\n pathName === '/security-questions' ||\n pathName === '/security-question-check' ||\n pathName === '/password-out-of-date' ||\n pathName === '/login'\n )\n ) {\n window.location.assign(redirectPath);\n }\n }\n};\n\n//https://stackoverflow.com/questions/19491336/how-to-get-url-parameter-using-jquery-or-plain-javascript\nvar getUrlParameter = function getUrlParameter(sParam) {\n var sPageURL = window.location.search.substring(1),\n sURLVariables = sPageURL.split('&'),\n sParameterName,\n i;\n\n for (i = 0; i < sURLVariables.length; i++) {\n sParameterName = sURLVariables[i].split('=');\n\n if (sParameterName[0] === sParam) {\n return typeof sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);\n }\n }\n return undefined;\n};\n\nconst saveRefId = () => {\n var refId = getUrlParameter('ref');\n if (refId !== undefined) {\n const patchData = normalize(\n 'url-identifier',\n {\n fullUrl: window.location.href,\n },\n refId\n );\n\n patchApi(null, '/url-identifier/' + refId, patchData);\n }\n};\n\nclass RouterEntry extends React.Component {\n static propTypes = {\n getAuthRedirectPath: t.func.isRequired,\n getCRMUserId: t.func.isRequired,\n getSecurityId: t.func.isRequired,\n getUserId: t.func.isRequired,\n todos: t.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n saveRefId();\n\n this.state = {\n isEmulation: false,\n checkedMaintenance: false,\n lastPath: window.location.pathname,\n };\n }\n\n componentDidMount() {\n this.fullCheck();\n }\n\n componentDidUpdate() {\n this.fullCheck();\n }\n\n fullCheck = () => {\n const { getAuthRedirectPath, getCRMUserId, getSecurityId, getUserId } = this.props;\n const crmId = getCRMUserId();\n\n let emulation = this.state.isEmulation;\n if (crmId !== 'Error' && emulation === false) {\n emulation = true;\n }\n let checkedMaintenance = this.state.checkedMaintenance;\n let pathName = this.state.lastPath;\n if (!checkedMaintenance || window.location.pathname !== pathName) {\n checkedMaintenance = true;\n checkMaintenance();\n }\n const customerId = getUserId();\n const securityId = getSecurityId();\n const redirectPath = getAuthRedirectPath();\n validateSecurityCheck(customerId, securityId, redirectPath);\n\n if (\n emulation !== this.state.isEmulation ||\n checkedMaintenance !== this.state.checkedMaintenance ||\n window.location.pathname !== pathName\n ) {\n this.setState({\n ...this.state,\n isEmulation: emulation,\n checkedMaintenance: checkedMaintenance,\n lastPath: window.location.pathname,\n });\n }\n };\n\n render() {\n const props = this.props;\n\n return (\n <Switch>\n <Route path=\"/maintenance\" component={Maintenance} />\n\n {/* Errors */}\n <Route path=\"/error/:code\" component={LayoutFullscreen} />\n\n {/* Public routes */}\n <Route exact path=\"/login\" component={LayoutAuth} />\n <Route exact path=\"/account-unlock\" component={LayoutAuth} />\n <Route exact path=\"/crm\" component={LayoutAuth} />\n <Route exact path=\"/logout\" component={LayoutAuth} />\n <Route exact path=\"/password-reset\" component={LayoutAuth} />\n <Route exact path=\"/password-update\" component={LayoutAuth} />\n <Route exact path=\"/pre-registered\" component={LayoutAuth} />\n <PrivateRoute exact path=\"/password-out-of-date\" component={LayoutAuth} />\n <Route exact path=\"/register\" component={LayoutAuth} />\n <Route exact path=\"/quick-qual\" component={LayoutAuth} />\n <Route exact path=\"/learn-more\" component={LayoutAuth} />\n\n <Route exact path=\"/tuition-approval\" component={LayoutFullscreen} />\n <Route exact path=\"/empcert-approval\" component={LayoutFullscreen} />\n <Route exact path=\"/privacy\" component={LayoutFullscreenAlignStart} />\n\n {props.permissions.showSharedData && (\n <Route exact path=\"/shared-data\" component={LayoutFullscreenAlignStart} />\n )}\n <Route exact path=\"/terms-of-use\" component={LayoutFullscreenAlignStart} />\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/bts\" component={LayoutFullscreenAlignStart} />\n )}\n {/* Private routes */}\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/renewal\" component={LayoutFullscreenAlignStart} />\n )}\n\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/idr\" component={LayoutFullscreenAlignStart} />\n )}\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/screening\" component={LayoutFullscreenAlignStart} />\n )}\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/prescreening\" component={LayoutFullscreenAlignStart} />\n )}\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/agreement\" component={LayoutFullscreenAlignStart} />\n )}\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/contribution\" component={LayoutFullscreenAlignStart} />\n )}\n\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/payment\" component={LayoutFullscreenAlignStart} />\n )}\n\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/fulfillment/:fileId\" component={LayoutFullscreenAlignStart} />\n )}\n\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/tuition/new-class\" component={LayoutFullscreenAlignStart} />\n )}\n\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/nslds\" component={LayoutFullscreenAlignStart} />\n )}\n\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/lwo-agreement\" component={LayoutFullscreenAlignStart} />\n )}\n\n {this.state.isEmulation === false && (\n <PrivateRoute exact path=\"/security-questions\" component={LayoutFullscreenAlignStart} />\n )}\n\n {this.state.isEmulation === false && (\n <PrivateRoute\n exact\n path=\"/security-question-check\"\n component={LayoutFullscreenAlignStart}\n />\n )}\n\n {/* All other routes */}\n <PrivateRoute path=\"/\" {...props} component={LayoutDashboardWithProps} />\n </Switch>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n getCRMUserId: () => getCRMUserId(state),\n getSecurityId: () => getSecurityId(state),\n getUserId: () => getUserId(state),\n getAuthRedirectPath: () => authGetRedirectPath(state, true, false),\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withPermissions(RouterEntry));\n","import styled from 'styled-components';\r\nimport { Header3 } from 'fiducius-ui';\r\n\r\nconst ContrastDisplay = styled(Header3)`\r\n color: ${(p) => p.theme.white};\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nexport default ContrastDisplay;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { Animation, fade } from 'fiducius-ui';\r\n\r\nconst FadeClasses = styled.div`\r\n ${fade};\r\n`;\r\n\r\nconst Fade = ({ children, id, show }) => (\r\n <Animation key={id} animation=\"fade\" appear={false} in={show} unmountOnExit>\r\n <FadeClasses>{children}</FadeClasses>\r\n </Animation>\r\n);\r\n\r\nFade.propTypes = {\r\n children: t.node.isRequired,\r\n id: t.string.isRequired,\r\n show: t.bool.isRequired,\r\n};\r\n\r\nexport default Fade;\r\n","import styled from 'styled-components';\r\n\r\nconst AuthContainer = styled.div`\r\n display: block;\r\n justify-content: center;\r\n margin-top: 0rem;\r\n min-height: 100vh;\r\n & > .row {\r\n display: flex;\r\n flex-grow: 1;\r\n justify-content: center;\r\n }\r\n`;\r\n\r\n//display: block; - could possibly fix overflow doc sign documents.\r\nexport default AuthContainer;\r\n","import styled from 'styled-components';\r\nimport { Card } from 'fiducius-ui';\r\n\r\nconst ShadowAddCardNoBorder = styled(Card)`\r\n box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);\r\n`;\r\n\r\nexport default ShadowAddCardNoBorder;\r\n","import styled from 'styled-components';\r\n\r\nconst PaddedDD = styled.dd`\r\n margin-left: 0.5em;\r\n`;\r\n\r\nexport default PaddedDD;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport {\r\n ChartBar,\r\n CardTitle,\r\n CardBody,\r\n Form,\r\n InputLabel,\r\n InputWrapper,\r\n InputGroup,\r\n InputAddon,\r\n InputNumeric,\r\n InputSliderBar,\r\n} from 'fiducius-ui';\r\n\r\nimport { formatAsMoney } from '../../../utils/format';\r\n\r\nclass RetirementTool extends React.Component {\r\n static propTypes = {\r\n action: t.string,\r\n agi: t.number,\r\n closeForm: t.func.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n isLoading: t.bool,\r\n isOpen: t.bool,\r\n onChange: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.retirementVal = React.createRef();\r\n\r\n this.state = {\r\n income: this.props.agi,\r\n famSize: '',\r\n retirementPercent: 0,\r\n };\r\n\r\n this.handleIncomeChange = this.handleIncomeChange.bind(this);\r\n this.handleFamSizeChange = this.handleFamSizeChange.bind(this);\r\n this.handleSliderChange = this.handleSliderChange.bind(this);\r\n this.handleRetirementFormChange = this.handleRetirementFormChange.bind(this);\r\n }\r\n\r\n handleIncomeChange(event) {\r\n this.setState({ income: event.target.value });\r\n }\r\n handleFamSizeChange(event) {\r\n this.setState({ famSize: event.target.value });\r\n }\r\n handleRetirementFormChange(event) {\r\n this.handleRetirementChange(event.target.value);\r\n }\r\n\r\n handleRetirementChange = (value) => {\r\n this.setState({ ...this.state, retirementPercent: value });\r\n };\r\n\r\n handleSliderChange = (value) => {\r\n this.handleRetirementChange(value);\r\n this.retirementVal = value;\r\n };\r\n\r\n render() {\r\n const { data = {}, onChange } = this.props;\r\n\r\n const householdSize = this.state.famSize || data.householdSize || 1;\r\n const agiIncome = this.state.income || data.agi;\r\n const retirePct = this.state.retirementPercent || 0;\r\n\r\n const agi = agiIncome - agiIncome * (retirePct / 100);\r\n\r\n let repaymentPlanValue;\r\n //assigns a value modifier depending on repayment plan time you qualify for.\r\n if (data.repaymentPlan === 'PAYE' || data.repaymentPlan === 'REPAYE') {\r\n repaymentPlanValue = 0.1;\r\n } else if (data.repaymentPlan === 'ICR') {\r\n repaymentPlanValue = 0.2;\r\n } else if (data.repaymentPlan === 'SAVE') {\r\n repaymentPlanValue = data.saveMultiplier;\r\n } else {\r\n repaymentPlanValue = 0.15;\r\n }\r\n\r\n const povGuidCalc = (householdSize, povGuidelines) => {\r\n //modifies pov guidelines if a client lives in alaska or is ICR elegible.\r\n if (data.state === 'AK' && data.repaymentPlan === 'ICR') {\r\n return (povGuidelines = 15600 + 5530 * (householdSize - 1));\r\n } else if (data.state === 'AK') {\r\n return (povGuidelines = 23400 + 8295 * (householdSize - 1));\r\n } else if (data.repaymentPlan === 'ICR') {\r\n return (povGuidelines = 12490 + 4420 * (householdSize - 1));\r\n } else {\r\n return (povGuidelines = 18210 + 6480 * (householdSize - 1));\r\n }\r\n };\r\n\r\n let idr = ((agi - povGuidCalc(householdSize)) * repaymentPlanValue) / 12;\r\n\r\n if (data.repaymentPlan === 'SAVE') {\r\n idr = ((agi - data.savePovertyGuideline) * repaymentPlanValue) / 12;\r\n }\r\n\r\n if (idr < 0) {\r\n idr = 0;\r\n }\r\n\r\n return (\r\n <Form id=\"retirement\" defaults={data} handleChange={onChange}>\r\n <CardTitle>Retirement Contribution Tool</CardTitle>\r\n <CardBody>\r\n <ui>\r\n <li>\r\n Please only input your pre-tax retirement contribution below to see how changes to\r\n your pre-tax retirement deductions will impact your Income-Driven Repayment (IDR).\r\n </li>\r\n </ui>\r\n </CardBody>\r\n <div className=\"row\">\r\n <div className=\"col-6 col-lg-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"income\">Annual Income</InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n id=\"income\"\r\n name=\"income\"\r\n defaultValue={data.agi}\r\n onChange={this.handleIncomeChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Household size\">Household Size</InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n id=\"famSize\"\r\n name=\"HouseHoldSize\"\r\n min=\"0\"\r\n defaultValue={data.householdSize}\r\n onChange={this.handleFamSizeChange}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\" style={{ width: '10%' }}>\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n Pre-Tax Retirement Contribution %\r\n </InputLabel>\r\n <InputGroup>\r\n <InputNumeric\r\n name=\"retirementPercent\"\r\n id=\"retirementPercent\"\r\n min=\"0\"\r\n max=\"100\"\r\n defaultValue={0}\r\n value={this.state.retirementPercent} //https://reactjs.org/docs/uncontrolled-components.html#default-values\r\n onChange={this.handleRetirementFormChange}\r\n />\r\n <InputAddon>%</InputAddon>\r\n </InputGroup>\r\n </InputWrapper>\r\n\r\n <InputWrapper>\r\n <InputGroup>\r\n <InputSliderBar\r\n id=\"sliderBar\"\r\n name=\"sliderBar\"\r\n minVal={0}\r\n maxVal={100}\r\n startingValue={0}\r\n boxValue={true}\r\n ticksOn={true}\r\n tickNum={5}\r\n theme={'sharp'}\r\n onChange={(dummyVar) => {\r\n this.handleSliderChange(dummyVar);\r\n }}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <hr />\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <strong>Adjusted Gross Income</strong>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric\r\n name=\"something\"\r\n id=\"agiTxt\"\r\n defaultValue={this.state.agi}\r\n value={agi.toFixed(2)}\r\n />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-6 col-md-4\">\r\n <InputWrapper>\r\n <InputLabel htmlFor=\"Percent Contribution\">\r\n <strong>Estimated Monthly {data.repaymentPlan} Payment</strong>\r\n </InputLabel>\r\n <InputGroup>\r\n <InputAddon>$</InputAddon>\r\n <InputNumeric name=\"something\" id=\"agiTxt\" value={idr.toFixed(2)} />\r\n </InputGroup>\r\n </InputWrapper>\r\n </div>\r\n <div className=\"col-10 col-md-6\">\r\n <ChartBar\r\n bars={[\r\n {\r\n label: '',\r\n dataType: 'currency',\r\n data: [agi, agiIncome - agi],\r\n },\r\n ]}\r\n config={{\r\n labels: ['Taxable Income', 'Retirement Dollars'],\r\n formatter: formatAsMoney,\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default RetirementTool;\r\n","import { createSelector } from 'reselect';\r\nimport { getUserId } from '../../../auth';\r\nimport { safeAccess } from '../../../utils';\r\n\r\nexport const getBenefitData = (state) =>\r\n safeAccess(state, `modeler.cache[${getUserId(state)}]`, {});\r\n\r\nexport const getGrossPayment = createSelector([getBenefitData], (data = {}) => data.grossPay || 0);\r\n\r\nexport const getHouseholdSize = createSelector(\r\n [getBenefitData],\r\n (data = {}) => data.householdSize || 0\r\n);\r\n","import { resourceTypesGenerator } from '../../../utils';\r\n\r\nexport default resourceTypesGenerator('modeler');\r\n","import actions from './actions';\r\nimport { resourceOperationsGenerator } from '../../../utils';\r\n\r\nconst endpointHandler = {\r\n customResponseHandler: null,\r\n endpoint: '/benefit-modeler',\r\n resourceType: 'benefit-modeler',\r\n};\r\n\r\nconst operations = resourceOperationsGenerator(\r\n 'modeler',\r\n actions,\r\n null,\r\n null,\r\n endpointHandler,\r\n endpointHandler,\r\n null,\r\n endpointHandler,\r\n null\r\n);\r\n\r\nconst {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCopyResourceToForm,\r\n modelerCreateResource,\r\n} = operations;\r\n\r\nexport {\r\n modelerLoadResource,\r\n modelerClearForm,\r\n modelerUpdateResource,\r\n modelerHandleFormChange,\r\n modelerCreateResource,\r\n modelerCopyResourceToForm,\r\n};\r\n\r\nexport default operations;\r\n","import types from './types';\r\nimport { resourceActionsGenerator } from '../../../utils';\r\n\r\nexport default resourceActionsGenerator('modeler', types);\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AsyncLoader, Card, CardBody, DashboardSection, Header2 } from 'fiducius-ui';\r\n\r\nimport { getUserId } from '../../../auth';\r\nimport { getBenefitData } from '../redux/selectors';\r\n\r\nimport { debounce, mergeRequestStatuses, flatten } from '../../../utils';\r\n\r\nimport {\r\n modelerLoadResource,\r\n modelerCopyResourceToForm,\r\n modelerHandleFormChange,\r\n} from '../redux/operations';\r\n\r\nimport RetirementTool from '../components/retirement-contribution.jsx';\r\n\r\n//I need this too\r\nclass modeler extends React.Component {\r\n static propTypes = {\r\n actionRequest: t.object,\r\n copyRequest: t.object.isRequired,\r\n data: t.object,\r\n errors: t.object,\r\n form: t.object,\r\n hasData: t.bool,\r\n handleForm: t.func.isRequired,\r\n id: t.string,\r\n loadData: t.func.isRequired,\r\n reload: t.func.isRequired,\r\n request: t.object,\r\n modeler: t.object,\r\n updateFormState: t.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}; // must be initialized for data handling\r\n }\r\n\r\n componentDidMount() {\r\n const { id, loadData } = this.props;\r\n loadData(id);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const wasLoading = prevProps.actionRequest.isLoading;\r\n const currently = this.props.actionRequest;\r\n if (wasLoading && !currently.isLoading && !currently.hasFailed) {\r\n this.setState({ ...this.state, showForm: true }, () => this.props.reload());\r\n }\r\n }\r\n\r\n //I need this - but there is more too it\r\n //make this call to a function that does the calculations\r\n onChange = debounce((modeler, attributes, formState) => {\r\n const { data, updateFormState } = this.props;\r\n const newData = { ...flatten(data), ...formState };\r\n updateFormState(newData, Object.keys(newData));\r\n }, 250);\r\n\r\n render() {\r\n const { request, data } = this.props;\r\n\r\n return (\r\n <DashboardSection title=\"Benefits for your financial well-being\">\r\n <Card>\r\n <CardBody>\r\n <Header2>Lower your payments and better benefit your financial wellness</Header2>\r\n <AsyncLoader request={request}>\r\n <RetirementTool data={data} isLoading={request.isLoading} onChange={this.onChange} />\r\n </AsyncLoader>\r\n </CardBody>\r\n </Card>\r\n </DashboardSection>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { errors, form, requests } = state.modeler;\r\n return {\r\n actionRequest: mergeRequestStatuses([requests.createResource, requests.updateResource]),\r\n data: getBenefitData(state),\r\n form: form,\r\n errors: errors,\r\n id: getUserId(state),\r\n request: state.modeler.requests.loadResource,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadData: async (id) => {\r\n await dispatch(modelerLoadResource(id));\r\n dispatch(modelerCopyResourceToForm(id));\r\n },\r\n updateFormState: (data, attributes) => dispatch(modelerHandleFormChange(data, attributes)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(modeler);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../../utils';\r\n\r\nexport default resourceReducerGenerator('modeler', types);\r\n","import types from './types';\r\nimport { resourceReducerGenerator } from '../../utils';\r\n\r\nexport default resourceReducerGenerator('refServicers', types);\r\n","import thunkMiddleware from 'redux-thunk';\r\nimport { createLogger } from 'redux-logger';\r\nimport { combineReducers, createStore, applyMiddleware, compose } from 'redux';\r\n\r\nimport { accountsReducer } from '../../accounts';\r\nimport { advisorReducer } from '../../advisor';\r\nimport { affiliateReducer } from '../../benefits/affiliates';\r\nimport { agreementReducer } from '../../workflows/agreement';\r\nimport { authReducer } from '../../auth';\r\nimport { contactReducer } from '../../contact';\r\nimport { contributionReducer } from '../../benefits/contribution';\r\nimport { customerContributionReducer } from '../../customer-contribution';\r\nimport { customerContributionMilestoneReducer } from '../../customer-contribution-milestone';\r\nimport { contributionSetupReducer } from '../../contribution-setup';\r\nimport { documentsReducer } from '../../documents';\r\nimport { customerFaqReducer } from '../../faq';\r\nimport { forgivenessReducer } from '../../benefits/forgiveness';\r\nimport { fulfillmentReducer } from '../../fulfillment';\r\nimport { idrReducer } from '../../workflows/idr';\r\nimport { legalReducer } from '../../legal';\r\nimport { meetingsReducer } from '../../meetings';\r\nimport { modelerReducer } from '../../tools/modeler';\r\nimport { passwordAuthReducer } from '../../password-reset-auth';\r\nimport { paymentReducer } from '../../payment';\r\nimport { persistReducer, persistTypes } from '../../persist';\r\nimport { profileReducer } from '../../profile';\r\nimport { questionnaireBtsReducer } from '../../workflows/questionnaire-bts';\r\nimport { referencesReducer } from '../../references';\r\nimport { refiReducer } from '../../benefits/refinance';\r\nimport { refServicersReducer } from '../../servicers-ref';\r\nimport { renewalReducer } from '../../workflows/renewal';\r\nimport { nsldsReducer } from '../../workflows/nslds';\r\nimport { renewalResultsReducer } from '../../renewal-results';\r\nimport { implementationResultsReducer } from '../../implementation-results';\r\nimport { screeningReducer } from '../../workflows/screening';\r\nimport { servicersReducer } from '../../servicers';\r\nimport { simplifiReducer } from '../../benefits/simplifi';\r\nimport { todosReducer } from '../../todos';\r\nimport { safeAccess } from '../../utils';\r\nimport { taxtoolReducer } from '../../tools/taxtool';\r\nimport { tuitionReducer } from '../../benefits/tuition';\r\nimport { tuitionInstitutionReducer } from '../../tuition-institution';\r\nimport { tuitionInstitutionTermReducer } from '../../tuition-institution-term';\r\nimport { tuitionInstitutionClassReducer } from '../../tuition-institution-class';\r\nimport { maintenanceReducer } from '../../maintenance';\r\nimport { tuitionApprovalReducer } from '../../tuition-approval';\r\nimport { selfServiceDocumentReducer } from '../../self-service-document';\r\nimport { employmentHistoryReducer } from '../../employment-history';\r\nimport { limitedWaiverOpportunityReducer } from '../../benefits/limited-waiver-opportunity';\r\nimport { lwoAgreementReducer } from '../../workflows/lwo-agreement';\r\nimport { securityQuestionsSetupReducer } from '../../security-questions-setup';\r\nimport { securityQuestionsReducer } from '../../security-questions';\r\nimport { accountUnlockReducer } from '../../account-unlock';\r\nimport { empcertApprovalReducer } from '../../empcert-approval';\r\nimport { planToolReducer } from '../../tools/plan-tool';\r\nimport { freshStartReducer } from '../../benefits/freshstart';\r\nimport { educationalReengagementReducer } from '../../benefits/educational-reengagement';\r\nimport { messagesReducer } from '../../messages';\r\nimport { plaidReducer } from '../../plaid';\r\nimport { loanRepaymentReducer } from '../../loan-repayment';\r\nimport { needAssistanceReducer } from '../../need-assistance';\r\n\r\n// Initialize middleware pipeline\r\nconst middleware = [thunkMiddleware];\r\n\r\n// Logging middleware\r\nif (process.env.REACT_APP_REDUX_LOGGING === 'true') {\r\n middleware.push(\r\n createLogger({\r\n collapsed: true,\r\n duration: true,\r\n })\r\n );\r\n}\r\n\r\n// Combine reducers to form rootReducer\r\nconst appReducer = combineReducers({\r\n accounts: accountsReducer,\r\n accountUnlock: accountUnlockReducer,\r\n advisor: advisorReducer,\r\n affiliate: affiliateReducer,\r\n agreement: agreementReducer,\r\n auth: authReducer,\r\n contact: contactReducer,\r\n contribution: contributionReducer,\r\n contributionSetup: contributionSetupReducer,\r\n customerContribution: customerContributionReducer,\r\n customerContributionMilestone: customerContributionMilestoneReducer,\r\n customerFaq: customerFaqReducer,\r\n\r\n documents: documentsReducer,\r\n employmentHistory: employmentHistoryReducer,\r\n forgiveness: forgivenessReducer,\r\n modeler: modelerReducer,\r\n fulfillment: fulfillmentReducer,\r\n idr: idrReducer,\r\n implementationResults: implementationResultsReducer,\r\n legal: legalReducer,\r\n limitedWaiverOpportunity: limitedWaiverOpportunityReducer,\r\n lwoAgreement: lwoAgreementReducer,\r\n meetings: meetingsReducer,\r\n nslds: nsldsReducer,\r\n passwordauth: passwordAuthReducer,\r\n payment: paymentReducer,\r\n persist: persistReducer,\r\n profile: profileReducer,\r\n questionnaireBts: questionnaireBtsReducer,\r\n references: referencesReducer,\r\n refi: refiReducer,\r\n refServicers: refServicersReducer,\r\n renewal: renewalReducer,\r\n renewalResults: renewalResultsReducer,\r\n securityQuestions: securityQuestionsReducer,\r\n securityQuestionsSetup: securityQuestionsSetupReducer,\r\n servicers: servicersReducer,\r\n screening: screeningReducer,\r\n simplifi: simplifiReducer,\r\n tools: taxtoolReducer,\r\n todos: todosReducer,\r\n tuition: tuitionReducer,\r\n tuitionInstitution: tuitionInstitutionReducer,\r\n tuitionInstitutionTerm: tuitionInstitutionTermReducer,\r\n tuitionInstitutionClass: tuitionInstitutionClassReducer,\r\n maintenance: maintenanceReducer,\r\n tuitionApproval: tuitionApprovalReducer,\r\n selfServiceDocument: selfServiceDocumentReducer,\r\n empcertApproval: empcertApprovalReducer,\r\n planTool: planToolReducer,\r\n freshStart: freshStartReducer,\r\n educationalReengagement: educationalReengagementReducer,\r\n messages: messagesReducer,\r\n plaid: plaidReducer,\r\n loanRepayment: loanRepaymentReducer,\r\n needAssistance: needAssistanceReducer,\r\n});\r\n\r\n// We need to handle two special state changes that should affect the whole\r\n// redux store here. This allows us to load an entire persisted state tree and\r\n// clear out the entire tree as part of logout teardown.\r\nconst rootReducer = (state, action) => {\r\n // Returning undefined will just instantiate the state tree as usual\r\n let resetState = undefined;\r\n\r\n // Don't reset the persistence reducer if it exists\r\n if (safeAccess(state, 'persist', false)) {\r\n resetState = { persist: state.persist };\r\n }\r\n\r\n // Handle special cases for the entire state tree.\r\n switch (action.type) {\r\n case persistTypes.PERSIST_RESET_STATE:\r\n // Reset the state tree minus persist\r\n state = resetState;\r\n break;\r\n case persistTypes.PERSIST_HYDRATE_STATE:\r\n // We use this to read and then hydrate the state from browser storage\r\n // Hydrate the entire state tree from passed in state\r\n state = action.data;\r\n break;\r\n default:\r\n // All other action types pass through here\r\n break;\r\n }\r\n\r\n return appReducer(state, action);\r\n};\r\n\r\n// Create the store with data from localStorage\r\nconst createStoreWithMiddleware = compose(applyMiddleware(...middleware))(createStore);\r\nconst store = createStoreWithMiddleware(rootReducer);\r\n\r\nexport default store;\r\n","import React from 'react';\r\nimport t from 'prop-types';\r\nimport { Provider } from 'react-redux';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { ThemeProvider } from 'styled-components';\r\nimport { dark, greenlight, GlobalTheme, light, newlight } from 'fiducius-ui';\r\n\r\nimport { PersistGate, RouterEntry, PermissionProvider } from '../../routing';\r\n\r\nimport AppStore from '../redux';\r\n\r\nclass App extends React.Component {\r\n static propTypes = {\r\n children: t.node,\r\n getThemePreference: t.func.isRequired,\r\n theme: t.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n darkTheme: false,\r\n lightTheme: false,\r\n greenLight: false,\r\n newLight: true,\r\n fluid: false,\r\n navigationOpen: false,\r\n drawers: {\r\n meetings: false,\r\n settings: false,\r\n todos: false,\r\n },\r\n };\r\n this.toggleNavigation = this.toggleNavigation.bind(this);\r\n }\r\n\r\n changeTheme = (e) => {\r\n if (e === 'dark') {\r\n this.setState({ darkTheme: true, lightTheme: false, greenLight: false, newLight: false });\r\n } else if (e === 'light') {\r\n this.setState({ darkTheme: false, lightTheme: false, greenLight: false, newLight: true });\r\n } else if (e === 'newlight') {\r\n this.setState({ darkTheme: false, lightTheme: false, greenLight: false, newLight: true });\r\n } else if (e === 'greenlight') {\r\n this.setState({ darkTheme: false, lightTheme: false, greenLight: true, newLight: false });\r\n } else {\r\n this.setState({ darkTheme: false, lightTheme: false, greenLight: false, newLight: true });\r\n }\r\n };\r\n\r\n changeThemeLight = (e) => {\r\n this.setState({ lightTheme: e.target.checked });\r\n };\r\n\r\n changeFluid = (e) => {\r\n this.setState({ ...this.state, fluid: e.target.checked });\r\n };\r\n\r\n toggleDrawer = (drawer) => {\r\n const drawers = Object.keys(this.state.drawers).reduce((acc, d) => {\r\n const open = d === drawer ? !this.state.drawers[d] : false;\r\n return {\r\n ...acc,\r\n [d]: open,\r\n };\r\n }, {});\r\n\r\n this.setState({ ...this.state, drawers, navigationOpen: false });\r\n };\r\n\r\n toggleNavigation() {\r\n const closeDrawers = Object.keys(this.state.drawers).reduce((acc, d) => {\r\n const open = false;\r\n return {\r\n ...acc,\r\n [d]: open,\r\n };\r\n }, {});\r\n\r\n this.setState({\r\n ...this.state,\r\n drawers: closeDrawers,\r\n navigationOpen: !this.state.navigationOpen,\r\n });\r\n }\r\n\r\n getTheme() {\r\n const { darkTheme, lightTheme, greenLight, newLight } = this.state;\r\n let theme = light;\r\n if (darkTheme) {\r\n theme = dark;\r\n } else if (lightTheme) {\r\n theme = light;\r\n } else if (greenLight) {\r\n theme = greenlight;\r\n } else if (newLight) {\r\n theme = newlight;\r\n }\r\n return theme;\r\n }\r\n\r\n render() {\r\n return (\r\n <Provider store={AppStore}>\r\n <ThemeProvider theme={this.getTheme()}>\r\n <PersistGate>\r\n <PermissionProvider>\r\n <BrowserRouter basename=\"/\">\r\n <>\r\n <GlobalTheme />\r\n <RouterEntry\r\n changeFluid={this.changeFluid}\r\n changeTheme={this.changeTheme}\r\n darkTheme={this.state.darkTheme}\r\n drawers={this.state.drawers}\r\n fluid={this.state.fluid}\r\n toggleDrawer={this.toggleDrawer}\r\n theme={this.getTheme().themeName}\r\n navigationOpen={this.state.navigationOpen}\r\n toggleNavigation={this.toggleNavigation}\r\n />\r\n </>\r\n </BrowserRouter>\r\n </PermissionProvider>\r\n </PersistGate>\r\n </ThemeProvider>\r\n </Provider>\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import styled from 'styled-components';\r\n\r\nconst FlexBetween = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nexport default FlexBetween;\r\n","import styled from 'styled-components';\r\n\r\nconst FlexEnd = styled.div`\r\n display: flex;\r\n justify-content: flex-end;\r\n`;\r\n\r\nexport default FlexEnd;\r\n","// Public API for full app\r\nimport { App } from './root';\r\nexport default App;\r\n","// Polyfills for IE-11 must be at the top of the entry point\r\nimport 'react-app-polyfill/ie11'; // this has to be the first line\r\nimport 'core-js/es6/array';\r\nimport 'core-js/es7/array';\r\nimport 'core-js/es6/date';\r\nimport 'core-js/es6/object';\r\nimport 'core-js/es7/object';\r\nimport 'core-js/es6/promise';\r\nimport 'core-js/es6/set';\r\nimport 'core-js/es7/set';\r\nimport 'core-js/es6/string';\r\nimport 'core-js/es7/string';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport 'fiducius-ui/dist/vendor/bootstrap-reboot.min.css';\r\nimport 'fiducius-ui/dist/vendor/bootstrap-grid.min.css';\r\n\r\nimport * as serviceWorker from './serviceWorker';\r\nimport App from './app';\r\n\r\nReactDOM.render(<App />, document.getElementById('fiducius-root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: http://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","module.exports = __webpack_public_path__ + \"static/media/Plaid_logo.98890284.png\";","module.exports = __webpack_public_path__ + \"static/media/Plaid_logo_white.4f837296.png\";","module.exports = __webpack_public_path__ + \"static/media/Fiducius.1c331f3e.jpg\";","var map = {\n\t\"./blocks.svg\": 707,\n\t\"./choose.svg\": 708,\n\t\"./document.svg\": 709,\n\t\"./empty.svg\": 710,\n\t\"./felix-update.svg\": 711,\n\t\"./felix.svg\": 712,\n\t\"./file-add.svg\": 713,\n\t\"./file-collect.svg\": 714,\n\t\"./files.svg\": 715,\n\t\"./finance.svg\": 716,\n\t\"./no-data.svg\": 717,\n\t\"./photo.svg\": 718,\n\t\"./thought.svg\": 719,\n\t\"./usability.svg\": 720\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 706;"],"sourceRoot":""}