department-of-veterans-affairs/vets-website

View on GitHub
src/applications/edu-benefits/10203/containers/IntroductionPage.jsx

Summary

Maintainability
D
2 days
Test Coverage
import React from 'react';

import PropTypes from 'prop-types';
import { connect } from 'react-redux';

import { focusElement } from '@department-of-veterans-affairs/platform-utilities/ui';
import FormTitle from '@department-of-veterans-affairs/platform-forms-system/FormTitle';
import SaveInProgressIntro from '~/platform/forms/save-in-progress/SaveInProgressIntro';
import { getRemainingEntitlement } from '../actions/post-911-gib-status';

export class IntroductionPage extends React.Component {
  componentDidMount() {
    if (this.props.isLoggedIn) {
      focusElement('.va-nav-breadcrumbs-list');
      this.props.getRemainingEntitlement();
    }
  }

  moreThanSixMonths = remaining => {
    const totalDays = remaining?.months * 30 + remaining?.days;
    return totalDays > 180;
  };

  loginPrompt() {
    if (this.props.isLoggedIn) {
      if (this.moreThanSixMonths(this.props?.remainingEntitlement)) {
        return (
          <div
            id="entitlement-remaining-alert"
            className="usa-alert usa-alert-warning schemaform-sip-alert"
          >
            <div className="usa-alert-body">
              <h3 className="usa-alert-heading">You may not be eligible</h3>
              <div className="usa-alert-text">
                <p>
                  You must have less than 6 months left of Post-9/11 GI Bill
                  benefits when you submit your application.
                </p>
                <p>
                  Our system shows you have{' '}
                  <strong>
                    {this.props?.remainingEntitlement.months} months,{' '}
                    {this.props?.remainingEntitlement.days} days{' '}
                  </strong>
                  remaining of GI Bill benefits.
                </p>
                <p>If you apply now, your application will be denied.</p>
              </div>
            </div>
          </div>
        );
      }

      return null;
    }

    return (
      <SaveInProgressIntro
        prefillEnabled={this.props.route.formConfig.prefillEnabled}
        messages={this.props.route.formConfig.savedFormMessages}
        pageList={this.props.route.pageList}
        startText="Sign in or create an account"
        unauthStartText="Sign in or create an account"
        hideUnauthedStartLink
      />
    );
  }

  render() {
    return (
      <div
        className="schemaform-intro"
        itemScope
        itemType="http://schema.org/HowTo"
      >
        <FormTitle title="Apply for the Rogers STEM Scholarship" />
        <p itemProp="description">
          Equal to VA Form 22-10203 (Application for Edith Nourse Rogers STEM
          Scholarship).
        </p>
        {this.loginPrompt()}
        <h3 className="vads-u-font-size--h4">
          Follow the steps below to apply for this scholarship
        </h3>
        <div className="process schemaform-process">
          <ol>
            <li
              className="process-step list-one"
              itemProp="steps"
              itemScope
              itemType="http://schema.org/HowToSection"
            >
              <div itemProp="name">
                <h4 className="vads-u-font-size--h5">
                  Determine your eligibility
                </h4>
              </div>
              <div itemProp="itemListElement">
                <div className="vads-u-font-weight--bold">
                  <p>
                    To be eligible for the{' '}
                    <a href="/education/other-va-education-benefits/stem-scholarship/">
                      Edith Nourse Rogers STEM Scholarship
                    </a>
                    , you must meet all the requirements below.
                  </p>
                </div>
                <ul>
                  <li>
                    <b>Education benefit:</b> You're using or recently used
                    Post-9/11 GI Bill or Fry Scholarship benefits.
                  </li>
                  <li>
                    <b>STEM degree:</b>
                    <ul id="circle" className="vads-u-margin-bottom--neg2">
                      <li className="li-styling">
                        You're enrolled in a bachelor’s degree program for
                        science, technology, engineering, or math (STEM),{' '}
                        <b>or</b>
                      </li>{' '}
                      <li className="li-styling">
                        You've already earned a STEM bachelor’s degree and are
                        working toward a teaching certification, <b>or</b>
                      </li>{' '}
                      <li className="vads-u-margin-bottom--neg2">
                        {' '}
                        You've already earned a STEM bachelor's or graduate
                        degree and are pursuing a covered clinical training
                        program for health care professionals. <br />
                        <a
                          aria-label="See eligible degree programs, opening in new tab"
                          href="https://www.va.gov/resources/approved-fields-of-study-for-the-stem-scholarship/"
                          rel="noopener noreferrer"
                          target="_blank"
                        >
                          See eligible degree and clinical training programs
                        </a>
                      </li>
                    </ul>
                  </li>
                  <li>
                    <b>Remaining entitlement:</b> You've used all of your
                    education benefits or are within 6 months of using all your
                    benefits when you submit your application.{' '}
                    <a href="https://www.va.gov/education/gi-bill/post-9-11/ch-33-benefit/">
                      Check your remaining benefits
                    </a>
                  </li>
                </ul>
              </div>
            </li>
            <li
              className="process-step list-two"
              itemProp="steps"
              itemScope
              itemType="http://schema.org/HowToSection"
            >
              <div itemProp="name">
                <h4 className="vads-u-font-size--h5">Prepare</h4>
              </div>
              <div itemProp="itemListElement">
                <div>
                  <b>To fill out this application, you’ll need your:</b>
                </div>
                <ul>
                  <li>Social Security number</li>
                  <li>Information about your school and STEM degree</li>
                  <li>Bank account direct deposit information</li>
                </ul>
                <p>
                  <b>What if I need help filling out my application?</b> An
                  accredited individual, like a Veterans Service Officer (VSO)
                  or a Veteran representative at your school, can help you fill
                  out this application.{' '}
                  <a href="/disability/get-help-filing-claim/">
                    Get help filing your claim
                  </a>
                </p>
              </div>
            </li>
            <li className="process-step list-three">
              <div>
                <h4 className="vads-u-font-size--h5">Apply</h4>
              </div>
              <p>Complete this education benefits form.</p>
              <p>
                After submitting the form, you’ll get a confirmation message.
                You can print this page for your records.
              </p>
            </li>
            <li
              className="process-step list-four"
              itemProp="steps"
              itemScope
              itemType="http://schema.org/HowToSection"
            >
              <div itemProp="name">
                <h4 className="vads-u-font-size--h5">VA review</h4>
              </div>
              <div itemProp="itemListElement">
                <p>
                  We usually decide on applications within <b>30 days</b>.
                </p>
                <p>
                  You’ll get a Certificate of Eligibility (COE) or decision
                  letter in the mail. If we’ve approved your application, you
                  can bring the COE to the VA certifying official at your
                  school.{' '}
                  <a href="/education/after-you-apply/">
                    Learn more about what happens after you apply
                  </a>
                </p>
              </div>
            </li>
            <li className="process-step list-five">
              <div>
                <h4 className="vads-u-font-size--h5">Decision</h4>
              </div>
              <p>
                If we approve your application, you’ll get a Certificate of
                Eligibility (COE), or award letter, in the mail. Bring this COE
                to the VA certifying official at your school. This person is
                usually in the Registrar or Financial Aid office at the school.
              </p>
              <p>
                If your application isn't approved, you'll get a denial letter
                in the mail or a claim status notification by email.
              </p>
            </li>
          </ol>
        </div>
        <SaveInProgressIntro
          buttonOnly={!this.props.isLoggedIn}
          prefillEnabled={this.props.route.formConfig.prefillEnabled}
          messages={this.props.route.formConfig.savedFormMessages}
          pageList={this.props.route.pageList}
          startText="Start the education application"
          unauthStartText="Sign in or create an account"
        />
        <div
          className="omb-info--container"
          style={{ paddingLeft: '0px' }}
          id="privacy_policy"
        >
          <va-omb-info
            res-burden={15}
            omb-number="2900-0878"
            exp-date="06/30/2026"
          />
        </div>
      </div>
    );
  }
}

IntroductionPage.propTypes = {
  getRemainingEntitlement: PropTypes.func,
  isLoggedIn: PropTypes.bool,
  remainingEntitlement: PropTypes.object,
  route: PropTypes.object,
};

const mapStateToProps = state => {
  return {
    isLoggedIn: state.user.login.currentlyLoggedIn,
    remainingEntitlement: state.post911GIBStatus.remainingEntitlement,
  };
};

const mapDispatchToProps = {
  getRemainingEntitlement,
};

export default connect(
  mapStateToProps,
  mapDispatchToProps,
)(IntroductionPage);