{"version":3,"file":"static/js/1932.2c32d7f1.chunk.js","mappings":"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","sources":["components/Atoms/Alert/index.js","components/Atoms/Button/index.js","components/Atoms/ContinueButton/index.jsx","components/Atoms/Form/index.js","components/Atoms/H2/index.js","components/Atoms/Link/index.js","components/Atoms/Logo/index.js","components/Atoms/P/index.js","components/Atoms/ProgressStatus/index.jsx","components/Atoms/ProgressStatus/ProgressStatus.utils.js","components/Atoms/SectionDivider.jsx","components/Molecules/HavingTroubleLoggingInModal/messages.js","components/Molecules/LoadingScreen/index.js","components/Molecules/TextInput/index.js","components/Organisms/CollapsedCard/index.js","components/Organisms/ContactUs/index.jsx","components/Organisms/FormIncomeAndAssets/LinkedFields.js","components/Organisms/FormIncomeAndAssets/common.js","components/Organisms/FormIncomeAndAssets/configAssets.js","components/Organisms/FormIncomeAndAssets/configIncome.js","components/Organisms/FormIncomeAndAssets/utils.js","components/Organisms/ListItemProgressBar/index.js","constants/affordableRelationships.js","constants/applicantTypes.js","constants/householdDesignationCodes.js","constants/paths.js","constants/queryKeys.js","constants/sectionNames.js","contexts/AffordaPortalDetailsContext.js","hooks/affordaPortalFormState/useMemoizedQueryOptions.js","hooks/affordaPortalFormState/useCreateOrUpdateAffordaPortalFormsMutation.js","services/affordaPortalForms.js","hooks/affordaPortalFormState/useDeleteAffordaPortalFormMutation.js","hooks/affordaPortalFormState/constants.js","hooks/affordaPortalFormState/useAffordaPortalFormsQuery.js","hooks/affordaPortalFormState/useFormStateData.js","contexts/FormStateContext.js","contexts/HouseholdMembersContext.js","contexts/PaymentContext.js","hooks/sectionsProgress/useSectionsProgressData.js","hooks/sectionsProgress/useSectionsProgressManager.js","contexts/SectionsProgressContext.js","hooks/affordaPortalFormState/useEnableFormStateLogging.js","hooks/affordaPortalFormState/utils.js","hooks/affordaPortalFormState/useFormStateManager.js","hooks/dev/useCompleteDocumentsAndUploadsTaskList.js","hooks/dev/useEnableAllSections.js","hooks/mutations/useCreateOrUpdateAffordableApplicationAdditionalDetailsMutation.js","hooks/mutations/useSavePrimaryFormMutation.js","hooks/mutations/useSavePrimaryFormMutation.utils.js","hooks/mutations/useSaveSecondaryFormMutation.js","hooks/mutations/useUpdateAffordaPortalDetailsMutation.js","hooks/queries/useAffordaPortalDetailsQuery.js","hooks/queries/useHouseholdMembersQuery.js","hooks/queries/useUserProfileQuery.js","hooks/sectionsProgress/useEnableSectionsProgressLogging.js","utils/getProgressFromProgressArray.js","utils/affordaPortal.js","hooks/sectionsProgress/utils.js","hooks/useAsyncHouseholdMemberStatus.js","hooks/useAsyncValidations.js","hooks/useBaseURL.js","hooks/useIntlToast.js","hooks/useIsUnInvitedSecondaryUser.js","hooks/useReactHookFormProps.js","hooks/useValidateEmail.js","hooks/useValidatePhoneNumber.js","pages/AffordaApplication/hooks.js","hooks/mutations/useUpdateApplicationMutation.js","services/applicationService.js","services/applicationStatus.js","hooks/queries/useApplicationStatusQuery.js","pages/AffordaHousehold/AffordaHousehold.FullTimeStudent.hooks.js","pages/AffordaHousehold/AffordaHousehold.Members.constants.jsx","pages/AffordaHousehold/AffordaHousehold.Members.hooks.js","pages/AffordaHousehold/constants.js","hooks/mutations/useCreateHouseholdMutation.js","hooks/mutations/useSaveShortFormMutation.js","hooks/mutations/useCreateHouseholdMemberMutation.utils.js","hooks/mutations/useCreateHouseholdMemberMutation.js","pages/AffordaHousehold/hooks.useCreateHouseholdAndMembers.js","pages/AffordaHousehold/utils.js","pages/AffordaIdentifyingDetails/constants.js","pages/AffordaWagesAndIncome/constants.fields.js","pages/AffordaWagesAndIncome/constants.job.js","pages/AffordaWagesAndIncome/constants.js","pages/AffordaWagesAndIncome/constants.socialSec.js","pages/AffordaWagesAndIncome/submit/common/common.js","pages/AffordaWagesAndIncome/submit/mapIncomeTotals/incomeTotals.utils.js","pages/AffordaWagesAndIncome/submit/mapIncomeTotals/getIncomeWithRange.adapter.js","pages/AffordaWagesAndIncome/submit/mapIncomeTotals/jobs.adapter.js","pages/AffordaWagesAndIncome/submit/others/mapOthers.js","pages/AffordaWagesAndIncome/submit/mapIncomeTotals/income.adapter.js","pages/AffordaWagesAndIncome/submit/mapIncomeTotals.js","pages/AffordaWagesAndIncome/submit/mapIncomeTotals/childSupport.adapter.js","pages/ChooseHousehold/hooks.js","components/Molecules/HavingTroubleLoggingInModal/index.js","components/Organisms/FormLogin/schema.js","components/Organisms/FormLogin/index.js","pages/Login/index.js","pages/Register/index.js","pages/Register/hooks.js","pages/ForgotPassword/index.js","pages/ResetPassword/index.js","pages/VerifyEmailAddress/index.js","pages/ClaimAccount/index.js","components/Organisms/LayoutApp/index.js","utils/hooks.js","pages/AffordaPortal/Providers.jsx","pages/AffordaEligibility/index.js","components/Molecules/ConditionsForStudentsModal/index.js","hooks/usePropertyInfoQuery.js","pages/AffordaPropertyAndProgram/index.js","pages/AffordaResultsEligible/index.js","pages/AffordaResultsIneligible/index.js","pages/AffordaWelcomePage/hooks.js","pages/AffordaWelcomePage/Welcome.jsx","pages/AffordaWelcomePage/index.js","hooks/useShouldRedirectToWelcomeFlow.js","components/Organisms/Appbar/DevControls.jsx","components/Organisms/Appbar/index.js","components/Organisms/Appbar/hooks.js","hooks/mutations/useCreateAffordaPortalDetailsMutation.js","pages/AffordaPortal/hooks.js","components/Organisms/Hero/index.jsx","components/Molecules/ScrollToTop/index.js","hooks/queries/useHaveAllHouseholdMembersSignedConsentQuery.js","hooks/queries/useScreeningStatusQuery.js","pages/AffordaDashboard/hooks.useDocumentationProgress.js","pages/AffordaDashboard/hooks.useUnInvitedSecondaryUserRouteManager.js","hooks/queries/useHouseholdMemberStatusQuery.js","pages/AffordaDashboard/hook.js","pages/AffordaDashboard/Banners.jsx","pages/AffordaDashboard/index.js","pages/AffordaPortal/index.js","pages/Portal/index.js","pages/Login/FusionAuthLogin.js","pages/Maintenance/index.js","contexts/LeaseContext.js","contexts/LeaseContext.hooks.js","pages/ContactUs/index.hooks.js","pages/ContactUs/index.js","pages/Gateway/index.js","services/affordableApplicationAdditionalDetails.js","services/affordableService.js","services/autopayScheduleService/constants.js","services/autopayScheduleService/index.js","services/formService.js","services/householdService.js","services/leaseService.js","services/screening.js","services/validations.js","utils/checkHouseholdMembersHaveSignedConsent.js","utils/constants/messages.js","utils/form.js","utils/gql.js","utils/theme.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { tc } from 'utils/theme';\n\nexport const StyledDiv = styled.div`\n font-size: 14px;\n line-height: 19px;\n letter-spacing: -0.586363px;\n padding: 8px;\n text-align: center;\n`;\n\nexport const AlertSuccess = styled(StyledDiv)`\n background-color: ${tc('successBackground')};\n color: ${tc('success')};\n`;\n\nexport const AlertWarning = styled(StyledDiv)`\n background-color: ${tc('warningBackground')};\n color: ${tc('warning')};\n`;\n\nexport const AlertDanger = styled(StyledDiv)`\n background-color: ${tc('dangerBackground')};\n color: ${tc('danger')};\n`;\n\nfunction Alert({ type, ...props }) {\n switch (type) {\n case 'success':\n return ;\n case 'warning':\n return ;\n default:\n case 'error':\n case 'danger':\n return ;\n }\n}\n\nAlert.propTypes = {\n type: PropTypes.oneOf(['success', 'danger', 'error']),\n};\n\nAlert.defaultProps = {\n type: 'error',\n};\n\nexport default Alert;\n","import React from 'react';\nimport { Button as PortalButton } from '@fortress-technology-solutions/fortress-component-library/Atoms_Portal';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nconst Button = ({ to, ...props }) => {\n return (\n \n );\n};\n\nexport default Button;\n","import React from 'react';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport { FormattedMessage } from 'react-intl';\nimport { Stack } from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { SubmitButton } from '@fortress-technology-solutions/fortress-component-library/Atoms_Portal';\nimport Alert from 'components/Atoms/Alert';\n\nconst ContinueButton = ({ error, children, disabled, sx, to, ...props }) => {\n return (\n \n \n {children ?? }\n \n {error && {error}}\n \n );\n};\n\nexport default ContinueButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getFormData } from 'utils/form';\n\nconst Form = ({ isAltForm, isFormTypeIncome, ...props }) => {\n const handleFormSubmission = (event, callback) => {\n event.preventDefault();\n\n const values = getFormData(\n event.currentTarget,\n isAltForm,\n isFormTypeIncome,\n );\n\n return callback(values, event);\n };\n\n return (\n handleFormSubmission(event, props.onSubmit)}\n >\n {props.children}\n \n );\n};\n\nForm.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func,\n isAltForm: PropTypes.bool,\n isFormTypeIncome: PropTypes.bool,\n};\n\nForm.defaultProps = {\n onSubmit: () => {},\n isAltForm: false,\n isFormTypeIncome: false,\n};\n\nexport default Form;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { tc } from 'utils/theme';\nimport theme from 'themes/global';\n\nconst BACKGROUND_COLOR = 'fontHighlighted';\nconst FONT_HIGHLIGHTED_COLOR = theme.colors[BACKGROUND_COLOR];\n\nexport const h2BaseStyle = `\n font-family: 'Roboto';\n font-weight: 400;\n font-size: 24px;\n letter-spacing: -0.00833em;\n line-height: 32px;\n margin: 15px 0;\n`;\n\nexport const h2WithBackgroundStyle = `\n ${h2BaseStyle}\n background: ${FONT_HIGHLIGHTED_COLOR};\n padding: 10px 15px;\n`;\n\nconst StyledH2 = styled.h2`\n ${h2BaseStyle}\n background: ${(p) => (p.background ? tc(BACKGROUND_COLOR)(p) : 'none')};\n padding: ${(p) => (p.background ? '10px 15px' : '0')};\n text-align: ${(p) => (p.center ? 'center' : 'left')};\n`;\n\nconst H2 = (props) => ;\n\nexport default H2;\n","import React from 'react';\nimport { Link as PortalLink } from '@fortress-technology-solutions/fortress-component-library/Atoms_Portal';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nconst Link = ({ to, ...props }) => (\n \n);\n\nexport default Link;\n","import React, { useContext } from 'react';\nimport styled from 'styled-components';\nimport theme from '@fortress-technology-solutions/fortress-component-library/theme';\nimport { pathOr } from 'ramda.pathor/pathOr';\n\nimport { AppContext } from 'contexts/AppContext';\nimport { EL_LOGO_URL } from 'utils/constants';\n\nconst StyledLogo = styled.div`\n background-image: url(${(p) =>\n p.background ? `\"${p.background}\"` : `\"${EL_LOGO_URL}\"`});\n background-repeat: no-repeat;\n background-position: 50%;\n background-size: contain;\n margin-bottom: ${(p) => (p.padBottom ? '30px' : '0')};\n max-height: calc(100% - 24px);\n\n @media (max-width: ${theme.breakpoints.values.sm}px) {\n margin-bottom: ${(p) => (p.padBottom ? '16px' : '0')};\n }\n`;\n\nconst Logo = (props) => {\n const { marketingInfo } = useContext(AppContext);\n const logoImageUrl = pathOr('', ['propertyLogoLink'], marketingInfo);\n return ;\n};\n\nexport default Logo;\n","import styled from 'styled-components';\nimport { tc, ts } from 'utils/theme';\n\nexport const pBaseStyle = `\n font-style: normal;\n font-size: ${ts('fontSize')};\n line-height: ${ts('lineHeight')};\n letter-spacing: ${ts('letterSpacing')};\n color: ${tc('paragraph')};\n font-weight: normal;\n`;\n\nexport default styled.p`\n font-style: normal;\n font-size: ${ts('fontSize')};\n line-height: ${ts('lineHeight')};\n letter-spacing: ${ts('letterSpacing')};\n color: ${tc('paragraph')};\n font-weight: normal;\n`;\n","// @flow\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Typography } from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { determineIcon } from './ProgressStatus.utils';\n\nexport type Props = {\n disabled?: boolean,\n variant: 'notStarted' | 'submitted' | 'completed',\n};\n\nconst ProgressStatus = ({ disabled, variant }: Props) => {\n const Icon = determineIcon(variant);\n const notStarted = disabled || variant === 'notStarted';\n return (\n \n \n \n \n );\n};\n\nProgressStatus.defaultProps = {\n variant: 'completed',\n};\n\nexport default ProgressStatus;\n","// @flow\nimport type { Props } from './index';\nimport {\n CheckCircleFilledIcon,\n NotStartedIcon,\n} from '@fortress-technology-solutions/fortress-component-library/Icons';\n\nexport const determineIcon = (variant: Props['variant']) => {\n switch (variant) {\n case 'notStarted':\n return NotStartedIcon;\n case 'completed':\n return CheckCircleFilledIcon;\n case 'submitted':\n return CheckCircleFilledIcon;\n default:\n return CheckCircleFilledIcon;\n }\n};\n","import React from 'react';\nimport { Divider } from '@fortress-technology-solutions/fortress-component-library/Atoms';\n\nconst SectionDivider = () => ;\n\nexport default SectionDivider;\n","const messages = {\n loginTitle: 'Having Issues Logging In?',\n registerTitle: 'Having Issues Creating an Account?',\n list: {\n createdAnAccountPreviously: {\n title: 'Have you created an account previously?',\n description:\n 'You cannot register a new account if one already exists. Use the Forgot Password function on the Portal home screen to reset your existing account’s password.',\n },\n receivedInvitation: {\n title: 'Have you received an invitation already to join Portal?',\n description:\n 'A representative for our property may have already sent you an invitation via email. Check your inbox (including your Spam folder) for any Portal invitations received from our property. In the body of the email, you will be able to select the option to “Claim Your Account,\" which will enable you to log in to your new account.',\n },\n unsubscribedFromEmails: {\n title: 'Have you unsubscribed from our emails previously?',\n description:\n 'We will need to resubscribe you to our emails in order to receive the Portal invitation to log in. Contact the office and let us know that you need to resubscribe to emails from our property.',\n },\n changedEmailAddress: {\n title: 'Have you changed your email address on file with us?',\n description:\n 'Your email address may have been updated in our system, which would be tied to your Portal account. Ensure the email address you are trying to log in with is the one you provided to our property.',\n },\n accountDeactivated: {\n title: 'Has your account been deactivated?',\n description:\n 'If you are receiving an error message stating that your account has been deactivated, you are prevented from logging into your account. Contact the office for more assistance.',\n },\n tooManyLoginAttempts: {\n title: 'Have you tried to log in too many times?',\n description:\n 'If you have tried to log in unsuccessfully more than the permitted number of times, you will need to contact our property so that someone can reset your account for you.',\n },\n },\n};\n\nexport default messages;\n","import React from 'react';\nimport {\n Box,\n Card,\n Spinner,\n Typography,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\n\ntype Props = {\n actionButton?: React.ReactElement,\n message: string,\n error?: string,\n};\n\nconst LoadingScreen = ({ actionButton, message, error }: Props) => {\n return (\n <>\n \n \n transitions.create('backdrop-filter', {\n duration: transitions.duration.standard,\n easing: transitions.easing.easeIn,\n }),\n backdropFilter: `blur(${error ? 5 : 1}px)`,\n }}\n >\n \n transitions.create('opacity', {\n duration: transitions.duration.enteringScreen,\n easing: transitions.easing.easeIn,\n }),\n opacity: error ? 0.9 : 0,\n }}\n >\n \n {error ? 'Error' : message}\n \n {error && (\n \n {error}\n \n )}\n {error && actionButton !== undefined && actionButton}\n \n \n \n );\n};\n\nLoadingScreen.defaultProps = {\n actionButton: undefined,\n error: undefined,\n};\n\nexport default LoadingScreen;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport loadable from '@loadable/component';\nimport { tc, ts } from 'utils/theme';\n\nconst Label = loadable(() => import('components/Atoms/Label'));\nconst FieldError = loadable(() => import('components/Atoms/FieldError'));\nconst FieldHelp = loadable(() => import('components/Atoms/FieldHelp'));\n\nconst StyledDiv = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst StyledInput = styled.input`\n border: ${(p) =>\n p.error\n ? `1px solid ${tc('errorMessage')(p)}`\n : `1px solid ${tc('boxBorderColor')(p)}`};\n border-top-left-radius: ${(p) => (p.prefix ? '0px' : ts('borderRadius')(p))};\n border-top-right-radius: ${ts('borderRadius')};\n border-bottom-left-radius: ${(p) =>\n p.prefix ? '0px' : ts('borderRadius')(p)};\n border-bottom-right-radius: ${ts('borderRadius')};\n color: ${(p) => (p.error ? tc('errorMessage')(p) : tc('labelColor')(p))};\n font-size: 14px;\n height: 40px;\n line-height: 40px;\n margin-top: 5px;\n padding: 0 15px;\n width: ${(p) => (p.prefix ? 'calc(100% - 34px)' : '100%')};\n`;\n\nconst StyledPrefix = styled.div`\n background: #f3f3f3;\n border-color: ${(p) =>\n p.error ? tc('errorMessage')(p) : tc('borderColor')(p)};\n border-top-left-radius: ${ts('borderRadius')};\n border-bottom-left-radius: ${ts('borderRadius')};\n border-style: solid;\n border-width: 1px 0 1px 1px;\n color: ${tc('iconColor')};\n height: ${ts('formHeight')};\n line-height: ${ts('formHeight')};\n text-align: center;\n margin-top: 5px;\n width: 34px;\n`;\n\n/**\n * Text input form element\n * @param {string} id\n * @param {string} name name of the input\n * @param {string} label display text of the element label\n * @param {string} prefix display prefix block on element\n * @param {string} placeholder display placeholder in input\n * @param {string} type type of input\n * @param {string} error error to show\n * @param {string} help help message to show\n * @param {boolean} disabled boolean to disable or enable input\n * @param {boolean} required boolean to show whether the element is required\n * @param {function} onChange triggered when the value changes\n * @param {string} maxLength set input's max character length\n * @param {string} defaultValue set default for uncontrolled inputs\n * @param {string} value provided for controlled inputs\n * @param {boolean} controlled make this a controlled input\n */\nconst TextInput = ({\n id,\n autoComplete,\n name,\n label,\n prefix,\n placeholder,\n type,\n error,\n help,\n disabled,\n required,\n onChange,\n maxLength,\n defaultValue,\n value,\n controlled,\n readOnly,\n min,\n ...props\n}) => (\n
\n \n \n {prefix && {prefix}}\n \n \n \n \n
\n);\n\nTextInput.propTypes = {\n id: PropTypes.string,\n autoComplete: PropTypes.oneOf(['on', 'off']),\n name: PropTypes.string.isRequired,\n prefix: PropTypes.string,\n type: PropTypes.string,\n label: PropTypes.string,\n placeholder: PropTypes.string,\n error: PropTypes.string,\n help: PropTypes.string,\n defaultValue: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n maxLength: PropTypes.number,\n controlled: PropTypes.bool,\n readOnly: PropTypes.bool,\n min: PropTypes.string,\n};\n\nTextInput.defaultProps = {\n id: '',\n autoComplete: 'off',\n type: 'text',\n prefix: '',\n label: '',\n placeholder: '',\n error: '',\n help: '',\n defaultValue: undefined,\n value: undefined,\n disabled: false,\n required: false,\n onChange: () => {},\n maxLength: 255,\n controlled: false,\n readOnly: false,\n};\n\nexport default TextInput;\n","import React, { useEffect, useState } from 'react';\nimport {\n Divider,\n Stack,\n IconButton,\n Box,\n Typography,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { Collapse } from '@fortress-technology-solutions/fortress-component-library/Transitions';\nimport { ExpandMoreIcon } from '@fortress-technology-solutions/fortress-component-library/Icons';\n\nconst CollapsedCard = ({\n actions,\n divider = false,\n expandedState = false,\n icon,\n notExpandedIcon,\n title,\n subtitle,\n sx,\n children,\n showButton = true,\n expandButtonProps,\n onExpandedChange,\n}) => {\n const [expanded, setExpanded] = useState(expandedState);\n useEffect(() => {\n setExpanded(expandedState);\n }, [expandedState]);\n\n return (\n <>\n \n \n {expanded ? icon : notExpandedIcon ? notExpandedIcon : icon}\n\n
\n \n {title}\n \n {subtitle && (\n \n {subtitle}\n \n )}\n
\n \n\n \n {actions}\n transitions.create('opacity'),\n backgroundColor: expanded ? 'divider' : '',\n }}\n onClick={(e) => {\n e.stopPropagation();\n setExpanded(!expanded);\n onExpandedChange?.();\n }}\n {...expandButtonProps}\n >\n \n create('transform'),\n transform: `rotate(${expanded ? 180 : 0}deg)`,\n }}\n />\n \n \n \n \n \n {children}\n \n \n {divider && }\n \n );\n};\n\nexport default CollapsedCard;\n","import React, { useContext } from 'react';\nimport {\n Button,\n Stack,\n Typography,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { FormattedMessage } from 'react-intl';\nimport {\n MailIcon,\n PhoneIcon,\n CommentDotsIcon,\n} from '@fortress-technology-solutions/fortress-component-library/Icons';\nimport { formatPhoneNumber } from '@fortress-technology-solutions/fortress-component-library/utils';\nimport { AppContext } from 'contexts/AppContext';\n\nconst ContactUs = () => {\n const {\n marketingInfo: { propertyEmail, phoneNumber, textingPhoneNumber },\n } = useContext(AppContext);\n\n return (\n \n \n \n \n\n : }\n sx={{ minWidth: 250 }}\n href={\n textingPhoneNumber\n ? `sms:+${textingPhoneNumber}`\n : `tel:+${phoneNumber}`\n }\n >\n {formatPhoneNumber(textingPhoneNumber ?? phoneNumber)}\n \n }\n sx={{ minWidth: 250 }}\n href={'mailto:' + propertyEmail}\n >\n {propertyEmail}\n \n \n );\n};\n\nexport default ContactUs;\n","import React, { useContext, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport loadable from '@loadable/component';\nimport styled from 'styled-components';\n\nimport { tm } from 'utils/theme';\nimport { parseOptions } from 'utils/form';\nimport { dateValidator } from 'utils/timeProvider';\n\nimport { AppContext } from 'contexts/AppContext';\nimport { determineFieldName } from './utils';\n\nconst TextInput = loadable(() => import('components/Molecules/TextInput'));\nconst DateInput = loadable(() => import('components/Molecules/DateInput'));\nconst SelectInput = loadable(() => import('components/Molecules/SelectInput'));\nconst ChecklistField = loadable(() => import('./ChecklistField'));\n\nconst StyledTextInput = styled(TextInput)`\n && {\n grid-column: span 2;\n\n @media (max-width: ${tm('tablet')}) {\n grid-column: 1;\n }\n }\n`;\nconst altIncomeTypeOptions = [\n { value: 'basePay', label: 'Base Pay' },\n { value: 'overtime', label: 'Overtime' },\n { value: 'tips', label: 'Tips' },\n { value: 'bonuses', label: 'Bonuses' },\n { value: 'anticipatedPayIncrease', label: 'Anticipated Pay Increase' },\n];\nexport const payFrequencyOptions = [\n { value: 'hourly', label: 'Hourly' },\n { value: 'weekly', label: 'Weekly' },\n { value: 'biWeekly', label: 'Bi-weekly' },\n { value: 'monthly', label: 'Monthly' },\n { value: 'semiMonthly', label: 'Semi-Monthly' },\n { value: 'annually', label: 'Annually' },\n];\nconst LinkedFields = ({ linked, preload, errors }) => {\n // This is used to store current form values for the linked fields so automatic calculations can be done\n // on other linked fields\n const getInitialLinkedState = () => {\n return linked.reduce((linkedState, link) => {\n const linkName = determineFieldName(link);\n return {\n ...linkedState,\n [linkName]: '0.00',\n };\n }, {});\n };\n const [linkedState, setLinkedState] = useState(getInitialLinkedState());\n const { states, incomeTypes } = useContext(AppContext);\n const statesOptions = parseOptions(states);\n const incomeTypeOptions = parseOptions(incomeTypes);\n\n return linked.map((link) => {\n const disabledField = link?.disabled ?? false;\n const onBlur = link.onBlur\n ? (e) => {\n const inputValue = e.target.value;\n const [val, updateKey, updateVal] = link.onBlur(\n inputValue,\n linkedState,\n link,\n );\n const blurredLinkName = determineFieldName(link);\n\n setLinkedState((prev) => ({\n ...prev,\n [blurredLinkName]: val,\n [updateKey]: updateVal,\n }));\n }\n : null;\n const linkName = determineFieldName(link);\n switch (link.type) {\n /** Value, Monthly Income, Annual Gross */\n case 'money':\n return (\n \n );\n\n case 'percent':\n return (\n \n );\n\n /** Other */\n case 'text':\n return (\n \n );\n\n /** Number Field */\n case 'number':\n return (\n \n );\n\n /** Date */\n case 'date':\n return (\n dateValidator(date, link.validator)}\n defaultValue={preload[linkName]}\n error={errors[linkName]}\n openAlignRightForMobile\n disabled={disabledField}\n />\n );\n\n /** County */\n case 'county':\n return (\n \n );\n\n /** State Dropdown */\n case 'state':\n return (\n \n );\n\n /** Pay Frequency Dropdown */\n case 'payFrequency':\n return (\n \n );\n\n /** Income Type Dropdown */\n case 'incomeType':\n return (\n \n );\n\n /** Alternate Employment Income Type Dropdown */\n case 'employmentIncomeType':\n return (\n \n );\n\n /** Nested ChecklistFields */\n case 'choice':\n return (\n \n );\n\n /** Error */\n default:\n console.warn(\n `[LinkedFields] Encountered unrecognized linked field type: ${link.type}`,\n );\n return null;\n }\n });\n};\n\nLinkedFields.propTypes = {\n linked: PropTypes.array.isRequired,\n preload: PropTypes.object.isRequired,\n errors: PropTypes.object.isRequired,\n};\n\nexport default LinkedFields;\n","import * as yup from 'yup';\nimport {\n REGEX_DATE,\n REGEX_YES_NO,\n REGEX_CHECKED,\n REGEX_IMG_DATA_URL,\n} from 'utils/constants/regex';\nimport messages from 'utils/constants/messages';\n\n/**\n * Constants\n */\n\nexport const INCOME_CHECKLIST = 'incomeChecklist';\nexport const ASSET_CHECKLIST = 'assetChecklist';\nexport const VALUE_LABEL = 'Value';\nexport const VALUE_NAME = 'AssetValue';\nexport const INCOME_LABEL = 'Monthly Income';\nexport const INCOME_NAME = 'AssetIncome';\nexport const RETIREMENT_LABEL = 'Retirement Plan';\nexport const GROSS_LABEL = 'Annual Gross $ Amount Receiving';\nexport const ASSET_INCOME_LABEL = 'Monthly Income from Assets';\nexport const INTEREST_RATE_LABEL = 'Interest Rate';\n\nexport const ALT_CASH_VALUE_NAME = 'CashValue';\nexport const ALT_FEES_TO_CONVERT_CASH_NAME = 'FeesToConvertCash';\nexport const ALT_MARKET_VALUE_NAME = 'MarketValue';\nexport const ALT_ANNUAL_INCOME_NAME = 'AnnualIncome';\nexport const ALT_INTEREST_RATE_NAME = 'InterestRate';\nexport const ALT_CURRENT_BALANCE_LABEL = 'Current Balance (Market Value)';\nexport const ALT_ANNUAL_ASSET_INCOME_LABEL = 'Annual Income from Assets';\nexport const ALT_PROPERTY_RESIDENCE_OCCUPANCY_NAME = 'SuitableForOccupancy';\nexport const ALT_PROPERTY_RESIDENCE_OCCUPANCY_LABEL =\n 'Is this property suitable for occupancy by the household as a residence?';\n\n/**\n * Schema\n */\n\nexport const yesNoRequired = yup\n .string()\n .required(messages.formValidations.needChoice)\n .matches(REGEX_YES_NO, messages.formValidations.needChoice);\n\nexport const whenYes = (field, thenValidator) =>\n yup.mixed().when(field, {\n is: 'yes',\n then: thenValidator,\n });\n\nexport const whenAnyYes = (fields, thenValidator) =>\n yup.mixed().when(fields, {\n is: (values) => values.some((value) => value === 'yes'),\n then: thenValidator,\n });\n\nexport const textRequired = yup\n .string()\n .required(messages.formValidations.needValue);\n\nexport const dateRequired = yup\n .string()\n .matches(REGEX_DATE, messages.formValidations.invalidDate)\n .required(messages.formValidations.invalidDate);\n\nexport const checkboxRequired = yup\n .string()\n .matches(REGEX_CHECKED)\n .required(messages.formValidations.needValue);\n\nexport const signatureRequired = yup\n .string()\n .matches(REGEX_IMG_DATA_URL)\n .required(messages.formValidations.needValue);\n\nexport const signatureValidators = {\n signatureTrueAndComplete: checkboxRequired,\n signatureAuthorizeVerification: checkboxRequired,\n signatureRejected: checkboxRequired,\n signatureNotALeaseAgreement: checkboxRequired,\n};\n\n/**\n * Submit Parsers\n */\n\nconst formatValues = (checklist) => {\n return Object.keys(checklist).reduce((list, key) => {\n const value = checklist[key];\n if (\n /Income$|AssetValue$|AssetIncome$/g.test(key) &&\n !isNaN(parseFloat(value))\n ) {\n return {\n ...list,\n [key]: parseFloat(value).toFixed(2),\n };\n }\n\n return {\n ...list,\n [key]: value,\n };\n }, {});\n};\n\nconst calculateAnnualIncome = (checklist) => {\n return Object.keys(checklist).reduce((prevTotal, key) => {\n // Reduces multiple rows to single value for alternate forms\n if (Array.isArray(checklist[key])) {\n const incomeRows = checklist[key];\n return (\n prevTotal +\n incomeRows.reduce((total, incomeRow) => {\n const incomeValue = Number(incomeRow?.Income ?? 0);\n return total + incomeValue;\n }, 0)\n );\n }\n\n if (/Income$/g.test(key)) {\n return +checklist[key] > 0 ? +checklist[key] + prevTotal : prevTotal;\n }\n\n return prevTotal;\n }, 0);\n};\n\nconst calculateTotalAssets = (checklist) => {\n return Object.keys(checklist).reduce((prevTotal, key) => {\n if (key?.includes('federalTaxRefundOrCredit')) {\n return prevTotal;\n }\n if (/AssetValue$/g.test(key)) {\n return +checklist[key] > 0 ? +checklist[key] + prevTotal : prevTotal;\n }\n\n // Just for isAltForm = true\n if (/AssetCashValue$/g.test(key)) {\n return +checklist[key] > 0 ? +checklist[key] + prevTotal : prevTotal;\n }\n\n // Reduces multiple rows to single value for alternate forms\n if (Array.isArray(checklist[key])) {\n const assetRows = checklist[key];\n return (\n prevTotal +\n assetRows.reduce((total, assetRow) => {\n const assetValue = Number(assetRow?.cashValue ?? 0);\n return total + assetValue;\n }, 0)\n );\n }\n\n return prevTotal;\n }, 0);\n};\n\nconst calculateMonthlyAssetIncome = (checklist) => {\n return Object.keys(checklist).reduce((prevTotal, key) => {\n if (/AssetIncome$/g.test(key)) {\n return +checklist[key] > 0 ? +checklist[key] + prevTotal : prevTotal;\n }\n return prevTotal;\n }, 0);\n};\n\nexport const calculateMonthlyAssetIncomeForAltForm = (assetChecklist) => {\n return (\n Object.keys(assetChecklist).reduce((prevTotal, key) => {\n if (key?.includes('federalTaxRefundOrCredit')) {\n return prevTotal;\n }\n // Reduces multiple rows to single value for alternate forms\n if (Array.isArray(assetChecklist[key])) {\n const assetRows = assetChecklist[key];\n return (\n prevTotal +\n assetRows.reduce((total, assetRow) => {\n const assetValue = Number(assetRow?.annualIncome ?? 0);\n return total + assetValue;\n }, 0)\n );\n }\n\n if (/AssetAnnualIncome$/g.test(key)) {\n return +assetChecklist[key] > 0\n ? +assetChecklist[key] + prevTotal\n : prevTotal;\n }\n return prevTotal;\n }, 0) / 12\n );\n};\n\nconst calculateImputedIncome = (amount) => {\n return +amount < 5000 ? 0 : amount * 0.0006;\n};\n\nexport const getIncomeChecklistData = (\n { incomeChecklist, incomeSignatureDataUrl },\n isAltForm,\n) => {\n const annualIncome = calculateAnnualIncome(incomeChecklist).toFixed(2);\n\n return {\n incomeChecklist: { ...formatValues(incomeChecklist), isAltForm },\n incomeSignatureDataUrl,\n annualIncome,\n };\n};\n\nexport const getAssetChecklistData = (\n { assetChecklist, assetSignatureDataUrl },\n isAltForm,\n) => {\n const totalAssets = calculateTotalAssets(assetChecklist);\n\n const monthlyIncomeFromAssets = isAltForm\n ? calculateMonthlyAssetIncomeForAltForm(assetChecklist).toFixed(2)\n : calculateMonthlyAssetIncome(assetChecklist).toFixed(2);\n const imputedIncome = calculateImputedIncome(totalAssets).toFixed(2);\n\n return {\n assetChecklist: { ...formatValues(assetChecklist), isAltForm },\n assetSignatureDataUrl,\n monthlyIncomeFromAssets,\n imputedIncome,\n };\n};\n","import {\n ASSET_CHECKLIST,\n VALUE_NAME,\n VALUE_LABEL,\n INCOME_NAME,\n ASSET_INCOME_LABEL,\n RETIREMENT_LABEL,\n INTEREST_RATE_LABEL,\n ALT_CURRENT_BALANCE_LABEL,\n ALT_ANNUAL_ASSET_INCOME_LABEL,\n ALT_MARKET_VALUE_NAME,\n ALT_ANNUAL_INCOME_NAME,\n ALT_INTEREST_RATE_NAME,\n ALT_PROPERTY_RESIDENCE_OCCUPANCY_NAME,\n ALT_PROPERTY_RESIDENCE_OCCUPANCY_LABEL,\n} from './common';\n\nimport {\n generateOnBlurAnnualIncomeCalculation,\n lowercaseFirstLetter,\n} from './utils';\n\nexport const DEFAULT_ASSET_FIELDS = [\n {\n name: `${ASSET_CHECKLIST}.cashHeld`,\n label: 'Cash Held',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.cashHeld${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.cashHeld${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.checkingAccount`,\n label: 'Checking Account',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.checkingAccount${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.checkingAccount${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.savingsAccount`,\n label: 'Savings Account',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.savingsAccount${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.savingsAccount${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.payCard`,\n label: 'Pay Card',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.payCard${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.payCard${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.certificateOfDeposit`,\n label: 'Certificate of Deposit',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.certificateOfDeposit${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.certificateOfDeposit${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.trustAccount`,\n label: 'Trust Account',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.trustAccount${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.trustAccount${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.treasuryMoneyMarketFund`,\n label: 'Treasury Bills, Money Market Fund',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.treasuryMoneyMarketFund${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.treasuryMoneyMarketFund${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.stocksOrBonds`,\n label: 'Stocks or Bonds',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.stocksOrBonds${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.stocksOrBonds${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.ira`,\n label: `${RETIREMENT_LABEL} - IRA`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.ira${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.ira${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.pension`,\n label: `${RETIREMENT_LABEL} - Pension`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.pension${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.pension${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.keogh`,\n label: `${RETIREMENT_LABEL} - Keogh`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.keogh${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.keogh${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.k401`,\n label: `${RETIREMENT_LABEL} - 401(k)`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.k401${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.k401${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccount`,\n label: `${RETIREMENT_LABEL} - Other`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccountName`,\n label: 'Other Name',\n type: 'text',\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccount${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccount${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.lifeInsurance`,\n label: 'Life insurance policy (not Term)',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.lifeInsurance${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.lifeInsurance${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.realEstate`,\n label: 'Real Estate currently owned',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.realEstate${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.realEstate${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.rentalProperty`,\n label: 'Rental Property',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.rentalProperty${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.rentalProperty${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.disposed`,\n label: 'Assets disposed of for less than Fair Market Value in past 2 years',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.disposed${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.disposed${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.disposedDate`,\n label: 'Disposed Date',\n type: 'date',\n validator: 'isValidDisposedDate',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.investmentProperties`,\n label: 'Personal Property held for investment',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.investmentProperties${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.investmentProperties${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.other`,\n label: 'Other Asset',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.otherAssetName`,\n label: 'Other Name',\n type: 'text',\n },\n {\n name: `${ASSET_CHECKLIST}.other${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.other${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n ],\n },\n];\n\nexport const ASSET_FIELDS_WITH_INT_RATE = [\n {\n name: `${ASSET_CHECKLIST}.cashHeld`,\n label: 'Cash Held',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.cashHeld${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.cashHeld${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.cashHeldInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.checkingAccount`,\n label: 'Checking Account',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.checkingAccount${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.checkingAccount${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.checkingAccountInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.savingsAccount`,\n label: 'Savings Account',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.savingsAccount${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.savingsAccount${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.savingsAccountInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.payCard`,\n label: 'Pay Card',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.payCard${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.payCard${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.payCardInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.certificateOfDeposit`,\n label: 'Certificate of Deposit',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.certificateOfDeposit${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.certificateOfDeposit${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.certificateOfDepositInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.trustAccount`,\n label: 'Trust Account',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.trustAccount${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.trustAccount${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.trustAccountInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.treasuryMoneyMarketFund`,\n label: 'Treasury Bills, Money Market Fund',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.treasuryMoneyMarketFund${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.treasuryMoneyMarketFund${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.treasuryMoneyMarketFundInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.stocksOrBonds`,\n label: 'Stocks or Bonds',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.stocksOrBonds${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.stocksOrBonds${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.stocksOrBondsInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.ira`,\n label: `${RETIREMENT_LABEL} - IRA`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.ira${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.ira${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.iraInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.pension`,\n label: `${RETIREMENT_LABEL} - Pension`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.pension${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.pension${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.pensionInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.keogh`,\n label: `${RETIREMENT_LABEL} - Keogh`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.keogh${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.keogh${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.keoghInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.k401`,\n label: `${RETIREMENT_LABEL} - 401(k)`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.k401${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.k401${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.k401InterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccount`,\n label: `${RETIREMENT_LABEL} - Other`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccountName`,\n label: 'Other Name',\n type: 'text',\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccount${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccount${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccountInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.lifeInsurance`,\n label: 'Life insurance policy (not Term)',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.lifeInsurance${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.lifeInsurance${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.lifeInsuranceInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.realEstate`,\n label: 'Real Estate currently owned',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.realEstate${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.realEstate${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.realEstateInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.rentalProperty`,\n label: 'Rental Property',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.rentalProperty${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.rentalProperty${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.rentalPropertyInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.disposed`,\n label: 'Assets disposed of for less than Fair Market Value in past 2 years',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.disposed${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.disposed${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.disposedInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n {\n name: `${ASSET_CHECKLIST}.disposedDate`,\n label: 'Disposed Date',\n type: 'date',\n validator: 'isValidDisposedDate',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.investmentProperties`,\n label: 'Personal Property held for investment',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.investmentProperties${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.investmentProperties${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.investmentPropertiesInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.other`,\n label: 'Other Asset',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.otherAssetName`,\n label: 'Other Name',\n type: 'text',\n },\n {\n name: `${ASSET_CHECKLIST}.other${VALUE_NAME}`,\n label: VALUE_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.other${INCOME_NAME}`,\n label: ASSET_INCOME_LABEL,\n type: 'money',\n },\n {\n name: `${ASSET_CHECKLIST}.otherInterestRate`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n },\n ],\n },\n];\n\nexport const generateLinkedAlternateFields = (\n isList,\n name,\n showHotmaPropertyResidenceQuestion = false,\n showTaxRefundAsset = false,\n) => {\n const otherNameField =\n name === 'other'\n ? [\n {\n name: `${ASSET_CHECKLIST}.${name}List`,\n keyName: 'otherName',\n label: 'Other Name',\n type: 'text',\n index: 0,\n },\n ]\n : [];\n\n const hotmaPropertyResidenceQuestion = showHotmaPropertyResidenceQuestion\n ? [\n {\n name: `${ASSET_CHECKLIST}.${name}List`,\n keyName: lowercaseFirstLetter(ALT_PROPERTY_RESIDENCE_OCCUPANCY_NAME),\n label: ALT_PROPERTY_RESIDENCE_OCCUPANCY_LABEL,\n type: 'choice',\n index: 0,\n },\n ]\n : [];\n\n const isTaxRefundAsset = showTaxRefundAsset\n ? name === 'federalTaxRefundOrCredit'\n : false;\n\n const interestRateAnnualIncomeListFields = [\n {\n name: `${ASSET_CHECKLIST}.${name}List`,\n keyName: lowercaseFirstLetter(ALT_INTEREST_RATE_NAME),\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n onBlur: generateOnBlurAnnualIncomeCalculation({\n fieldName: `${ASSET_CHECKLIST}.${name}List`,\n otherField: lowercaseFirstLetter(ALT_MARKET_VALUE_NAME),\n }),\n index: 0,\n },\n {\n name: `${ASSET_CHECKLIST}.${name}List`,\n keyName: lowercaseFirstLetter(ALT_ANNUAL_INCOME_NAME),\n label: ALT_ANNUAL_ASSET_INCOME_LABEL,\n type: 'money',\n disabled: true,\n placeholder: 'Calculated From Input',\n isControlled: true,\n index: 0,\n },\n ];\n\n const interestRateAnnualIncomeFields = [\n {\n name: `${ASSET_CHECKLIST}.${name}Asset${ALT_INTEREST_RATE_NAME}`,\n keyName: ALT_INTEREST_RATE_NAME,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n onBlur: generateOnBlurAnnualIncomeCalculation({\n fieldName: `${ASSET_CHECKLIST}.${name}Asset`,\n otherField: ALT_MARKET_VALUE_NAME,\n }),\n },\n {\n name: `${ASSET_CHECKLIST}.${name}Asset${ALT_ANNUAL_INCOME_NAME}`,\n keyName: ALT_ANNUAL_INCOME_NAME,\n label: ALT_ANNUAL_ASSET_INCOME_LABEL,\n type: 'money',\n disabled: true,\n placeholder: 'Calculated From Input',\n isControlled: true,\n },\n ];\n\n return isList\n ? [\n ...otherNameField,\n {\n name: `${ASSET_CHECKLIST}.${name}List`,\n keyName: lowercaseFirstLetter(ALT_MARKET_VALUE_NAME),\n label: ALT_CURRENT_BALANCE_LABEL,\n type: 'money',\n onBlur: generateOnBlurAnnualIncomeCalculation({\n fieldName: `${ASSET_CHECKLIST}.${name}List`,\n otherField: lowercaseFirstLetter(ALT_INTEREST_RATE_NAME),\n }),\n index: 0,\n },\n ...(!isTaxRefundAsset ? interestRateAnnualIncomeListFields : []),\n ...hotmaPropertyResidenceQuestion,\n ]\n : [\n {\n name: `${ASSET_CHECKLIST}.${name}Asset${ALT_MARKET_VALUE_NAME}`,\n keyName: ALT_MARKET_VALUE_NAME,\n label: ALT_CURRENT_BALANCE_LABEL,\n type: 'money',\n onBlur: generateOnBlurAnnualIncomeCalculation({\n fieldName: `${ASSET_CHECKLIST}.${name}Asset`,\n otherField: ALT_INTEREST_RATE_NAME,\n }),\n },\n ...(!isTaxRefundAsset ? interestRateAnnualIncomeFields : []),\n ];\n};\n\nexport const ALTERNATE_ASSET_FIELDS = [\n {\n name: `${ASSET_CHECKLIST}.cashHeld`,\n keyName: 'cashHeld',\n label: 'Cash Held',\n type: 'choice',\n },\n {\n name: `${ASSET_CHECKLIST}.checkingAccount`,\n keyName: 'checkingAccount',\n canHaveMultiple: true,\n limit: 4,\n label: 'Checking Account',\n type: 'choice',\n },\n {\n name: `${ASSET_CHECKLIST}.savingsAccount`,\n canHaveMultiple: true,\n limit: 4,\n label: 'Savings Account',\n type: 'choice',\n },\n {\n name: `${ASSET_CHECKLIST}.payCard`,\n canHaveMultiple: true,\n limit: 4,\n label: 'Pay Card',\n type: 'choice',\n },\n {\n name: `${ASSET_CHECKLIST}.certificateOfDeposit`,\n canHaveMultiple: true,\n limit: 4,\n label: 'Certificate of Deposit',\n type: 'choice',\n },\n {\n name: `${ASSET_CHECKLIST}.trustAccount`,\n label: 'Trust Account',\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.treasuryMoneyMarketFund`,\n canHaveMultiple: true,\n limit: 4,\n label: 'Treasury Bills, Money Market Fund',\n type: 'choice',\n },\n {\n name: `${ASSET_CHECKLIST}.stocksOrBonds`,\n label: 'Stocks or Bonds',\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.ira`,\n label: `${RETIREMENT_LABEL} - IRA`,\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.pension`,\n label: `${RETIREMENT_LABEL} - Pension`,\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.keogh`,\n label: `${RETIREMENT_LABEL} - Keogh`,\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.k401`,\n label: `${RETIREMENT_LABEL} - 401(k)`,\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccount`,\n label: `${RETIREMENT_LABEL} - Other`,\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccountName`,\n label: 'Other Name',\n type: 'text',\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccountAsset${ALT_MARKET_VALUE_NAME}`,\n label: ALT_CURRENT_BALANCE_LABEL,\n type: 'money',\n onBlur: generateOnBlurAnnualIncomeCalculation({\n fieldName: `${ASSET_CHECKLIST}.otherRetirementAccountAsset`,\n otherField: ALT_INTEREST_RATE_NAME,\n }),\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccountAsset${ALT_INTEREST_RATE_NAME}`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n onBlur: generateOnBlurAnnualIncomeCalculation({\n fieldName: `${ASSET_CHECKLIST}.otherRetirementAccountAsset`,\n otherField: ALT_MARKET_VALUE_NAME,\n }),\n },\n {\n name: `${ASSET_CHECKLIST}.otherRetirementAccountAsset${ALT_ANNUAL_INCOME_NAME}`,\n label: ALT_ANNUAL_ASSET_INCOME_LABEL,\n type: 'money',\n disabled: true,\n placeholder: 'Calculated From Input',\n isControlled: true,\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.lifeInsurance`,\n label: 'Life insurance policy (not Term)',\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.realEstate`,\n label: 'Real Estate currently owned',\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.rentalProperty`,\n label: 'Rental Property',\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.disposed`,\n label: 'Assets disposed of for less than Fair Market Value in past 2 years',\n type: 'choice',\n linked: [\n {\n name: `${ASSET_CHECKLIST}.disposedAsset${ALT_MARKET_VALUE_NAME}`,\n label: ALT_CURRENT_BALANCE_LABEL,\n type: 'money',\n onBlur: generateOnBlurAnnualIncomeCalculation({\n fieldName: `${ASSET_CHECKLIST}.disposedAsset`,\n otherField: ALT_INTEREST_RATE_NAME,\n }),\n },\n {\n name: `${ASSET_CHECKLIST}.disposedAsset${ALT_INTEREST_RATE_NAME}`,\n label: INTEREST_RATE_LABEL,\n type: 'percent',\n onBlur: generateOnBlurAnnualIncomeCalculation({\n fieldName: `${ASSET_CHECKLIST}.disposedAsset`,\n otherField: ALT_MARKET_VALUE_NAME,\n }),\n },\n {\n name: `${ASSET_CHECKLIST}.disposedAsset${ALT_ANNUAL_INCOME_NAME}`,\n label: ALT_ANNUAL_ASSET_INCOME_LABEL,\n type: 'money',\n disabled: true,\n placeholder: 'Calculated From Input',\n isControlled: true,\n },\n {\n name: `${ASSET_CHECKLIST}.disposedDate`,\n label: 'Disposed Date',\n type: 'date',\n validator: 'isValidDisposedDate',\n },\n ],\n },\n {\n name: `${ASSET_CHECKLIST}.investmentProperties`,\n label: 'Personal Property held for investment',\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n },\n {\n name: `${ASSET_CHECKLIST}.other`,\n label: 'Other Asset',\n type: 'choice',\n canHaveMultiple: true,\n limit: 10,\n },\n {\n name: `${ASSET_CHECKLIST}.federalTaxRefundOrCredit`,\n label: 'Federal Tax Refund/Credit',\n type: 'choice',\n canHaveMultiple: true,\n limit: 4,\n tooltip: {\n type: 'INFO',\n title:\n 'Tax refunds and credits will be deducted from the net cash value of assets.',\n },\n },\n];\n\nexport const ALT_ASSET_FORM_FIELD_NAMES = ALTERNATE_ASSET_FIELDS.filter(\n (field) => !field.canHaveMultiple,\n).map((field) => {\n return field.name.split('.')[1];\n});\n","import { INCOME_CHECKLIST, GROSS_LABEL } from './common';\nimport { payFrequencyOptions } from 'components/Organisms/FormIncomeAndAssets/LinkedFields';\nimport { lowercaseFirstLetter } from './utils';\n\nexport const DEFAULT_INCOME_FIELDS = [\n {\n name: `${INCOME_CHECKLIST}.employment`,\n label: 'Employment / Anticipated Employment',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.employmentIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.selfEmployment`,\n label: 'Self-Employment',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.selfEmploymentIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.militaryPay`,\n label: 'Military Pay',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.militaryPayIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.notWorking`,\n label: 'Not Working',\n type: 'choice',\n },\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefits`,\n label: 'Unemployment Benefits',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefitsIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurity`,\n label: 'Social Security, SSD',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.socialSecurityIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurityClaimNumber`,\n label: 'SSN Benefits Claim Number (if different from SSN)',\n type: 'text',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurity`,\n label: 'Supplemental Security Income (SSI)',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurityIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurityClaimNumber`,\n label: 'SSN Benefits Claim Number (if different from SSN)',\n type: 'text',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.vaBenefits`,\n label: 'V.A. Benefits',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.vaBenefitsIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.tanf`,\n label: 'TANF (AFDC)',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.tanfIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.disability`,\n label: \"Disability, Worker's Comp.\",\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.disabilityIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.recurringGift`,\n label: 'Recurring Gift',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.recurringGiftIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.retirement`,\n label: 'Regular Pmts from Retirement Acct.',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.retirementIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.trust`,\n label: 'Regular Pmts from Trust Acct.',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.trustIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMember`,\n label: 'Income from Temporarily Absent Family Member',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMemberIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.other`,\n label: 'Other',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.otherIncomeName`,\n label: 'Other Name',\n type: 'text',\n },\n {\n name: `${INCOME_CHECKLIST}.otherIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.otherIncomeType`,\n label: 'Income Type',\n type: 'incomeType',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupport`,\n label: 'Do you have court ordered or an agreement for child support?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupportIncome`,\n label: 'Amount Ordered',\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupport`,\n label: 'Are you receiving the ordered child support?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupportIncome`,\n label: 'Amount Receiving',\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.collectChildSupport`,\n label: 'Have reasonable efforts been made to collect?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.collectChildSupportState`,\n label: 'State',\n type: 'state',\n },\n {\n name: `${INCOME_CHECKLIST}.collectChildSupportCounty`,\n label: 'County',\n type: 'county',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.anticipateChildSupport`,\n label: 'Do you anticipate child support?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.anticipateChildSupportState`,\n label: 'State',\n type: 'state',\n },\n {\n name: `${INCOME_CHECKLIST}.anticipateChildSupportCounty`,\n label: 'County',\n type: 'county',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.publicHousing`,\n label: 'Public Housing',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.publicHousingText`,\n label: 'Public Housing Authority',\n type: 'text',\n },\n ],\n },\n];\n\n// This contains the pay frequency, pay rate, and hours/months/weeks fields for each income\nexport const INCOME_FORM_WITH_PAYDATA = [\n {\n name: `${INCOME_CHECKLIST}.employment`,\n label: 'Employment / Anticipated Employment',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.employmentIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.employmentPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.employmentPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.employmentHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.selfEmployment`,\n label: 'Self-Employment',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.selfEmploymentIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.selfEmploymentPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.selfEmploymentPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.selfEmploymentHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.militaryPay`,\n label: 'Military Pay',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.militaryPayIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.militaryPayPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.militaryPayPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.militaryPayHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.notWorking`,\n label: 'Not Working',\n type: 'choice',\n },\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefits`,\n label: 'Unemployment Benefits',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefitsIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefitsPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefitsPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefitsHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurity`,\n label: 'Social Security, SSD',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.socialSecurityIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurityPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurityPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurityHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurityClaimNumber`,\n label: 'SSN Benefits Claim Number (if different from SSN)',\n type: 'text',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurity`,\n label: 'Supplemental Security Income (SSI)',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurityIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurityPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurityPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurityHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurityClaimNumber`,\n label: 'SSN Benefits Claim Number (if different from SSN)',\n type: 'text',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.vaBenefits`,\n label: 'V.A. Benefits',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.vaBenefitsIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.vaBenefitsPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.vaBenefitsPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.vaBenefitsHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.tanf`,\n label: 'TANF (AFDC)',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.tanfIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.tanfPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.tanfPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.tanfHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.disability`,\n label: \"Disability, Worker's Comp.\",\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.disabilityIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.disabilityPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.disabilityPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.disabilityHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.recurringGift`,\n label: 'Recurring Gift',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.recurringGiftIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.recurringGiftPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.recurringGiftPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.recurringGiftHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.retirement`,\n label: 'Regular Pmts from Retirement Acct.',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.retirementIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.retirementPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.retirementPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.retirementHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.trust`,\n label: 'Regular Pmts from Trust Acct.',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.trustIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.trustPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.trustPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.trustHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMember`,\n label: 'Income from Temporarily Absent Family Member',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMemberIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMemberPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMemberPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMemberHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.other`,\n label: 'Other',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.otherIncomeName`,\n label: 'Other Name',\n type: 'text',\n },\n {\n name: `${INCOME_CHECKLIST}.otherIncome`,\n label: GROSS_LABEL,\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.otherIncomeType`,\n label: 'Income Type',\n type: 'incomeType',\n },\n {\n name: `${INCOME_CHECKLIST}.otherPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.otherPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.otherHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupport`,\n label: 'Do you have court ordered or an agreement for child support?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupportIncome`,\n label: 'Amount Ordered',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupportPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupportPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupportHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupport`,\n label: 'Are you receiving the ordered child support?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupportIncome`,\n label: 'Amount Receiving',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupportPayFrequency`,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupportPayRate`,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupportHoursWeeksMonths`,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.collectChildSupport`,\n label: 'Have reasonable efforts been made to collect?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.collectChildSupportState`,\n label: 'State',\n type: 'state',\n },\n {\n name: `${INCOME_CHECKLIST}.collectChildSupportCounty`,\n label: 'County',\n type: 'county',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.anticipateChildSupport`,\n label: 'Do you anticipate child support?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.anticipateChildSupportState`,\n label: 'State',\n type: 'state',\n },\n {\n name: `${INCOME_CHECKLIST}.anticipateChildSupportCounty`,\n label: 'County',\n type: 'county',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.publicHousing`,\n label: 'Public Housing',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.publicHousingText`,\n label: 'Public Housing Authority',\n type: 'text',\n },\n ],\n },\n];\n\nexport const ALT_PAY_TYPE_NAME = 'PayType';\nexport const ALT_INCOME_NAME = 'Income';\nexport const ALT_PAY_FREQUENCY_NAME = 'PayFrequency';\nexport const ALT_PAY_RATE_NAME = 'PayRate';\nexport const ALT_HOURS_WEEKS_MONTHS_NAME = 'HoursWeeksMonths';\n\nexport const payFrequencyOptionsMap = {\n hourly: {\n label: 'Hours/Week',\n value: 52,\n },\n weekly: {\n label: 'Weeks',\n value: 52,\n },\n biWeekly: {\n label: 'Hours/Week',\n value: 26,\n },\n monthly: {\n label: 'Months',\n value: 12,\n },\n semiMonthly: {\n label: 'Hours/Week',\n value: 24,\n },\n annually: {\n label: 'Years',\n value: 1,\n },\n default: {\n label: 'Hours/Weeks/Months',\n value: 1,\n },\n};\nexport const getRegularUnitsFrequencyOptions = () =>\n payFrequencyOptions\n .filter((option) => {\n return /^(week|month|annual)ly$/i.test(option.value);\n })\n .map((option) => option.value);\n\nexport const isDisableHoursWeeksMonths = (selectedOption) => {\n const optionsThatShouldDisableHoursWeeksMonths =\n getRegularUnitsFrequencyOptions();\n return optionsThatShouldDisableHoursWeeksMonths\n .filter((option) => option !== 'monthly')\n .includes(selectedOption);\n};\n\nconst getInput = (name) => document.querySelector(`input[name=\"${name}\"]`);\nconst getSelect = (name) => document.querySelector(`select[name=\"${name}\"]`);\n\nconst getLabel = (name) => document.querySelector(`label[for=\"${name}\"]`);\nconst onPayFrequencyChange =\n (fieldNamePrefix, parentFieldName) =>\n ({ target }) => {\n const { payFrequencyName, payRateName, hoursWeeksMonthsName, incomeName } =\n getPayDataFieldNames(fieldNamePrefix, target, parentFieldName);\n\n const { value } = target;\n\n const selectedOption = (\n payFrequencyOptions.find((option) => option.value === value) ?? {}\n ).value;\n\n const hoursWeeksMonthsMapping =\n payFrequencyOptionsMap[selectedOption] ?? payFrequencyOptionsMap.default;\n\n const hoursWeeksMonthsLabel = getLabel(hoursWeeksMonthsName);\n\n const hoursWeeksMonths = getInput(hoursWeeksMonthsName);\n\n if (isDisableHoursWeeksMonths(selectedOption)) {\n hoursWeeksMonths.setAttribute('disabled', 'true');\n hoursWeeksMonths.value = hoursWeeksMonthsMapping.value;\n } else {\n hoursWeeksMonths.removeAttribute('disabled');\n }\n\n if (selectedOption === 'monthly') {\n hoursWeeksMonths.value = hoursWeeksMonthsMapping.value;\n }\n\n hoursWeeksMonthsLabel.innerText = hoursWeeksMonthsMapping.label;\n\n onPayDataChange(\n payFrequencyName,\n payRateName,\n hoursWeeksMonthsName,\n incomeName,\n );\n };\nexport const calculateIncome = (\n payFrequencyWeeks,\n payRate,\n hoursWeeksMonths,\n) => {\n if (isNaN(payFrequencyWeeks) || isNaN(payRate) || isNaN(hoursWeeksMonths)) {\n return 0;\n }\n return payFrequencyWeeks * payRate * hoursWeeksMonths;\n};\nexport const onHoursWeeksMonthsChange =\n (fieldNamePrefix, parentFieldName) =>\n ({ target }) => {\n const { payFrequencyName, payRateName, hoursWeeksMonthsName, incomeName } =\n getPayDataFieldNames(fieldNamePrefix, target, parentFieldName);\n\n onPayDataChange(\n payFrequencyName,\n payRateName,\n hoursWeeksMonthsName,\n incomeName,\n );\n };\nexport const getPayFrequencyWeeks = (selectedOption) => {\n if (\n isDisableHoursWeeksMonths(selectedOption) ||\n selectedOption === 'monthly'\n ) {\n return 1;\n }\n\n const frequencyWeeksRelation =\n payFrequencyOptionsMap?.[selectedOption] ?? payFrequencyOptionsMap.default;\n return frequencyWeeksRelation.value;\n};\nexport const onPayDataChange = (\n payFrequencyName,\n payRateName,\n hoursWeeksMonthsName,\n incomeName,\n) => {\n const payFrequencyWeeks = getPayFrequencyWeeks(\n getSelect(payFrequencyName)?.value,\n );\n const payRate = Number(getInput(payRateName)?.value ?? 0);\n const hoursWeeksMonths = Number(getInput(hoursWeeksMonthsName)?.value ?? 0);\n\n const finalIncome = calculateIncome(\n payFrequencyWeeks,\n payRate,\n hoursWeeksMonths,\n );\n getInput(incomeName).value = finalIncome.toFixed(2);\n};\nexport const getPayDataFieldNames = (\n fieldNamePrefix,\n target,\n parentFieldName,\n) => {\n const { name } = target;\n const index = name.match(/\\[(\\d)\\]/)?.[0] ?? null;\n\n const incomeName = index\n ? `${fieldNamePrefix}${index}.${ALT_INCOME_NAME}`\n : `${parentFieldName}${ALT_INCOME_NAME}`;\n const hoursWeeksMonthsName = index\n ? `${fieldNamePrefix}${index}.${ALT_HOURS_WEEKS_MONTHS_NAME}`\n : `${parentFieldName}${ALT_HOURS_WEEKS_MONTHS_NAME}`;\n const payRateName = index\n ? `${fieldNamePrefix}${index}.${ALT_PAY_RATE_NAME}`\n : `${parentFieldName}${ALT_PAY_RATE_NAME}`;\n const payFrequencyName = index\n ? `${fieldNamePrefix}${index}.${ALT_PAY_FREQUENCY_NAME}`\n : `${parentFieldName}${ALT_PAY_FREQUENCY_NAME}`;\n\n return {\n incomeName,\n hoursWeeksMonthsName,\n payRateName,\n payFrequencyName,\n };\n};\nconst onPayRateChange =\n (fieldNamePrefix, parentFieldName) =>\n ({ target }) => {\n const { payFrequencyName, payRateName, hoursWeeksMonthsName, incomeName } =\n getPayDataFieldNames(fieldNamePrefix, target, parentFieldName);\n\n onPayDataChange(\n payFrequencyName,\n payRateName,\n hoursWeeksMonthsName,\n incomeName,\n );\n };\n\n// -------------------- Alternate Schema ---------------------\n\nexport const ALTERNATE_INCOME_FIELDS = [\n {\n name: `${INCOME_CHECKLIST}.employment`,\n label: 'Employment / Anticipated Employment',\n canHaveMultiple: true,\n addFieldLabel: 'Add Additional Employment',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.employmentList`,\n keyName: lowercaseFirstLetter(ALT_PAY_TYPE_NAME),\n label: 'Select Employment Income Type',\n type: 'employmentIncomeType',\n index: 0,\n },\n {\n name: `${INCOME_CHECKLIST}.employmentList`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n index: 0,\n },\n {\n name: `${INCOME_CHECKLIST}.employmentList`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n index: 0,\n },\n {\n name: `${INCOME_CHECKLIST}.employmentList`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n index: 0,\n },\n {\n name: `${INCOME_CHECKLIST}.employmentList`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n index: 0,\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.selfEmployment`,\n label: 'Self-Employment',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.selfEmployment${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.selfEmployment${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.selfEmployment${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.selfEmployment${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.militaryPay`,\n label: 'Military Pay',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.militaryPay${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.militaryPay${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.militaryPay${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.militaryPay${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.unearnedIncome17AndUnder`,\n label: 'Unearned Income (17 & Under)',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.unearnedIncome17AndUnder${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.unearnedIncome17AndUnder${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.unearnedIncome17AndUnder${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.unearnedIncome17AndUnder${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefits`,\n label: 'Unemployment Benefits',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefits${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefits${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefits${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.unemploymentBenefits${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurity`,\n label: 'Social Security, SSD',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.socialSecurity${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurity${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurity${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurityClaimNumber`,\n label: 'SSN Benefits Claim Number (if different from SSN)',\n type: 'text',\n },\n {\n name: `${INCOME_CHECKLIST}.socialSecurity${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurity`,\n label: 'Supplemental Security Income (SSI)',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurity${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurity${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurity${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurityClaimNumber`,\n label: 'SSN Benefits Claim Number (if different from SSN)',\n type: 'text',\n },\n {\n name: `${INCOME_CHECKLIST}.supplementalSecurity${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.vaBenefits`,\n label: 'V.A. Benefits',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.vaBenefits${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.vaBenefits${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.vaBenefits${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.vaBenefits${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.tanf`,\n label: 'TANF (AFDC)',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.tanf${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.tanf${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.tanf${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.tanf${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.disability`,\n label: \"Disability, Worker's Comp.\",\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.disability${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.disability${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.disability${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.disability${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.recurringGift`,\n label: 'Recurring Gift',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.recurringGift${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.recurringGift${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.recurringGift${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.recurringGift${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.retirement`,\n label: 'Regular Pmts from Retirement Acct.',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.retirement${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.retirement${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.retirement${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.retirement${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.trust`,\n label: 'Regular Pmts from Trust Acct.',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.trust${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.trust${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.trust${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.trust${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMember`,\n label: 'Income from Temporarily Absent Family Member',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMember${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMember${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMember${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.absentFamilyMember${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.incomeFromOnlineSources`,\n label: 'Income From Online Sources',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.incomeFromOnlineSources${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.incomeFromOnlineSources${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.incomeFromOnlineSources${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.incomeFromOnlineSources${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.pension`,\n label: 'Pension',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.pension${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.pension${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.pension${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.pension${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.notWorking`,\n label: 'Not Working',\n type: 'choice',\n },\n {\n name: `${INCOME_CHECKLIST}.other`,\n label: 'Other',\n type: 'choice',\n canHaveMultiple: true,\n limit: 10,\n linked: [\n {\n name: `${INCOME_CHECKLIST}.otherList`,\n keyName: 'IncomeName',\n placeholder: 'Other Name',\n type: 'text',\n index: 0,\n },\n {\n name: `${INCOME_CHECKLIST}.otherList`,\n keyName: 'IncomeType',\n label: 'Income Type',\n type: 'incomeType',\n index: 0,\n },\n {\n name: `${INCOME_CHECKLIST}.otherList`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n index: 0,\n },\n {\n name: `${INCOME_CHECKLIST}.otherList`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n index: 0,\n },\n {\n name: `${INCOME_CHECKLIST}.otherList`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n index: 0,\n },\n {\n name: `${INCOME_CHECKLIST}.otherList`,\n keyName: ALT_INCOME_NAME,\n label: GROSS_LABEL,\n type: 'money',\n index: 0,\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupport`,\n label: 'Do you have court ordered or an agreement for child support?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupport${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupport${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupport${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.courtOrderedChildSupport${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: 'Amount Ordered',\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.collectChildSupport`,\n label: 'Have reasonable efforts been made to collect?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.collectChildSupportState`,\n label: 'State',\n type: 'state',\n },\n {\n name: `${INCOME_CHECKLIST}.collectChildSupportCounty`,\n label: 'County',\n type: 'county',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupport`,\n label: 'Are you receiving the ordered child support?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupport${ALT_PAY_FREQUENCY_NAME}`,\n keyName: ALT_PAY_FREQUENCY_NAME,\n label: 'Pay Frequency',\n type: 'payFrequency',\n },\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupport${ALT_PAY_RATE_NAME}`,\n keyName: ALT_PAY_RATE_NAME,\n label: 'Pay Rate',\n type: 'money',\n },\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupport${ALT_HOURS_WEEKS_MONTHS_NAME}`,\n keyName: ALT_HOURS_WEEKS_MONTHS_NAME,\n label: 'Hours/Weeks/Months',\n type: 'number',\n },\n {\n name: `${INCOME_CHECKLIST}.receivingChildSupport${ALT_INCOME_NAME}`,\n keyName: ALT_INCOME_NAME,\n label: 'Amount Receiving',\n type: 'money',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.anticipateChildSupport`,\n label: 'Do you anticipate child support?',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.anticipateChildSupportState`,\n label: 'State',\n type: 'state',\n },\n {\n name: `${INCOME_CHECKLIST}.anticipateChildSupportCounty`,\n label: 'County',\n type: 'county',\n },\n ],\n },\n {\n name: `${INCOME_CHECKLIST}.publicHousing`,\n label: 'Public Housing',\n type: 'choice',\n linked: [\n {\n name: `${INCOME_CHECKLIST}.publicHousingText`,\n label: 'Public Housing Authority',\n type: 'text',\n },\n ],\n },\n]\n // Disable all annual gross income fields\n .map((field) => {\n const originalLinkedFields = field?.linked ?? [];\n const linked = originalLinkedFields.map((linkedField) => {\n return {\n ...linkedField,\n disabled: linkedField.keyName === ALT_INCOME_NAME,\n };\n });\n\n return {\n ...field,\n linked,\n };\n })\n // Add listeners for automatic data calculation\n .map((field) => {\n const originalLinkedFields = field?.linked ?? [];\n const linked = originalLinkedFields.map((linkedField) => {\n const { name } = linkedField;\n const { name: parentFieldName } = field;\n const fieldNameMapToHandler = {\n [ALT_PAY_FREQUENCY_NAME]: onPayFrequencyChange(name, parentFieldName),\n [ALT_PAY_RATE_NAME]: onPayRateChange(name, parentFieldName),\n [ALT_HOURS_WEEKS_MONTHS_NAME]: onHoursWeeksMonthsChange(\n name,\n parentFieldName,\n ),\n default: () => {},\n };\n\n return {\n ...linkedField,\n onChange:\n fieldNameMapToHandler[linkedField.keyName] ??\n fieldNameMapToHandler.default,\n };\n });\n\n return {\n ...field,\n linked,\n };\n })\n .map((field) => {\n const originalLinkedFields = field?.linked ?? [];\n const newLinkedFields = [];\n\n const filteredLinkedFields = originalLinkedFields.filter((linkedField) =>\n [ALT_INCOME_NAME, ALT_HOURS_WEEKS_MONTHS_NAME].includes(field.keyName),\n );\n\n filteredLinkedFields.forEach((linkedField) => {\n newLinkedFields.push({\n ...linkedField,\n name: `${linkedField.name}Display`,\n });\n });\n\n const linked = [...originalLinkedFields, ...newLinkedFields];\n\n return {\n ...field,\n linked,\n };\n });\n\nexport const ALT_INCOME_FORM_FIELD_NAMES = ALTERNATE_INCOME_FIELDS.filter(\n (field) => !field.canHaveMultiple,\n).map((col) => {\n return col.name.split('.')[1];\n});\n","import {\n AlertInfoIcon,\n AlertCriticalIcon,\n AlertIcon,\n CanceledStatusIcon,\n} from '@fortress-technology-solutions/fortress-component-library/Icons';\n\nimport { ALT_ANNUAL_INCOME_NAME } from './common';\n\nexport const lowercaseFirstLetter = (string) => {\n return `${string.charAt(0).toLowerCase()}${string.substr(1, string.length)}`;\n};\n\nexport const determineFieldName = (link) => {\n const index = link?.index ?? null;\n const hasIndex = index || index === 0;\n if (hasIndex && link.keyName) {\n return `${link.name}[${index}].${link.keyName}`;\n }\n return link.name;\n};\n\nexport const generateOnBlurAnnualIncomeCalculation = ({\n fieldName,\n otherField,\n}) => {\n const annualIncomeKey = ALT_ANNUAL_INCOME_NAME;\n return (val, linkedState, link) => {\n const idx = link.index ?? null;\n const hasIndex = idx || idx === 0;\n const otherFieldVal = hasIndex\n ? linkedState[`${fieldName}[${idx}].${otherField}`]\n : linkedState[`${fieldName}${otherField}`];\n const parsedOtherField = parseFloat(otherFieldVal);\n const parsedBlurField = parseFloat(val);\n\n const calculatedAnnualIncome =\n isNaN(parsedOtherField) || isNaN(parsedBlurField)\n ? '0.00'\n : ((parsedOtherField * parsedBlurField) / 100).toFixed(2);\n const incomeKey = hasIndex\n ? `${fieldName}[${idx}].${lowercaseFirstLetter(annualIncomeKey)}`\n : `${fieldName}${annualIncomeKey}`;\n return [val, incomeKey, calculatedAnnualIncome];\n };\n};\n\nexport const getTooltipIcon = (type) => {\n let tooltipIcon;\n switch (type) {\n case 'INFO':\n tooltipIcon = ;\n break;\n case 'WARNING':\n tooltipIcon = ;\n break;\n case 'CRITICAL':\n tooltipIcon = ;\n break;\n case 'ERROR':\n tooltipIcon = ;\n break;\n default:\n tooltipIcon = ;\n break;\n }\n\n return tooltipIcon;\n};\n","// @flow\n\nimport { Link } from 'react-router-dom';\nimport { FormattedMessage } from 'react-intl';\nimport {\n ListItemButton,\n ListItemIcon,\n ListItemText,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { ProgressIndicator } from '@fortress-technology-solutions/fortress-component-library/Molecules';\n\nexport const getMessageKey = (value: number | undefined) => {\n if (value === 0 || value === undefined) {\n return 'app.notStarted';\n }\n if (value === 100) {\n return 'app.completed';\n }\n return 'app.inProgress';\n};\n\nconst ListItemProgressBar = ({\n icon,\n primaryText,\n to,\n disabled = false,\n progressValue = 0,\n secondary,\n}) => {\n return (\n \n {icon}\n }\n value={progressValue}\n />\n )\n }\n secondaryTypographyProps={{\n component: 'div',\n }}\n />\n \n );\n};\n\nexport default ListItemProgressBar;\n","// Matches [name] in AffordableRelationship table\nconst AFFORDABLE_RELATIONSHIPS = {\n ADULT_CO_TENANT: 'Adult co-tenant',\n CHILD: 'Child',\n FOSTER_CHILD_ADULT: 'Foster child/adult',\n GUARANTOR: 'Guarantor',\n HEAD_OF_HOUSEHOLD: 'Head of Household',\n LIVE_IN_CARETAKER: 'Live-in Caretaker',\n OTHER_FAMILY_MEMBER: 'Other Family Member',\n SPOUSE: 'Spouse',\n UNBORN_CHILD: 'Unborn Child',\n};\n\nexport default AFFORDABLE_RELATIONSHIPS;\n","// Matches [name] in ApplicantType table\nconst APPLICANT_TYPES = {\n CORPORATE_UNIT_LEASE_SIGNER: 'Corporate Unit Lease Signer',\n COURTESY_OFFICER_LEASE_SIGNER: 'Courtesy Officer Lease Signer',\n EMPLOYEE_LEASE_SIGNER: 'Employee Lease Signer',\n FINANCIAL_LEASE_SIGNER: 'Financial Lease Signer',\n GUARANTOR_LEASE_SIGNER: 'Guarantor Lease Signer',\n LIVE_IN_CARETAKER: 'Live-In-Caretaker',\n MINOR: 'Minor',\n NON_FINANCIAL_LEASE_SIGNER: 'Non-Financial Lease Signer',\n PET: 'Pet',\n VENDOR_UNIT_LEASE_SIGNER: 'Vendor Unit Lease Signer',\n};\n\nexport default APPLICANT_TYPES;\n","const HOUSEHOLD_DESIGNATION_CODES = {\n ADULT_CO_TENANT: 'A',\n CHILD: 'C',\n FOSTER_CHILD_ADULT: 'F',\n HEAD_OF_HOUSEHOLD: 'H',\n LIVE_IN_CARETAKER: 'L',\n OTHER_FAMILY_MEMBER: 'O',\n SPOUSE: 'S',\n UNBORN_CHILD: 'U',\n};\n\nexport default HOUSEHOLD_DESIGNATION_CODES;\n","const PATHS = {\n APPLICATION: 'application',\n ASSETS: 'assets',\n BEFORE_YOU_GO: 'before-you-go',\n WELCOME: 'welcome',\n DASHBOARD: 'dashboard',\n HOUSEHOLD: 'household',\n VERIFICATION: 'verification',\n CREDIT_CRIMINAL_CHECK: 'credit-criminal-check',\n IDENTIFYING_DETAILS: 'identifying-details',\n DOCUMENTATION: 'documentation',\n DOCUMENTS_AND_UPLOADS: 'documents-and-uploads',\n APPLICATION_SUBMISSION: 'application-submission',\n MARITAL_STATUS: 'marital-status',\n MOVE_IN: 'move-in',\n PAYMENTS: 'payments',\n WAGES_AND_INCOME: 'wages-and-income',\n AFFORDA_ASSETS: 'afforda-assets',\n};\n\nexport const DOCUMENTS_AND_UPLOADS_PATHS = {\n OVERVIEW: 'overview',\n TASK_LIST: 'task-list',\n};\n\nexport const APPLICATION_SUBMISSION_PATHS = {\n SIGNATURE_AND_REPRESENTATION: 'signature-and-representation',\n SUMMARY: 'summary',\n};\n\nexport const HOUSEHOLD_PATHS = {\n MEMBERS: 'members',\n DESIGNATION: 'designation',\n MARITAL_STATUS: 'marital-status',\n MINOR_RELATIONSHIP: 'minors-relationship',\n STUDENT_STATUS: 'student-status',\n FULL_TIME_STUDENT: 'full-time-student',\n ADDITIONAL_MINORS: 'additional-minors',\n LIVE_IN_AIDE: 'live-in-aide',\n SUMMARY: 'summary',\n INVITE: 'invite',\n};\n\nexport const PAYMENTS_PATHS = {\n OVERVIEW: 'overview',\n FORM: 'form',\n RECEIPT: 'receipt',\n};\n\nexport const IDENTIFYING_DETAILS_PATHS = {\n OVERVIEW: 'overview',\n IDENTIFICATION: 'identification',\n IDENTIFICATION_ALTERNATE: 'identification-alternate',\n RESIDENTIAL_HISTORY: 'residential-history',\n SUMMARY: 'summary',\n};\n\nexport const CREDIT_CRIMINAL_CHECK_PATHS = {\n MIDDLE_NAMES_AND_SUFFIXES: 'middle-names-and-suffixes',\n MOVE_IN_PREFERENCES: 'move-in-preferences',\n CONSENT: 'consent',\n SUMMARY: 'summary',\n COMPLETE: 'complete',\n};\n\nexport const RESIDENTIAL_HISTORY_PATHS = {\n CURRENT: 'current',\n PREVIOUS: 'previous',\n LIVE_TOGETHER: 'live-together',\n};\n\nexport const WAGES_AND_INCOME_PATHS = {\n CHOICES_1: 'choices-1',\n CHOICES_2: 'choices-2',\n CHOICES_3: 'choices-3',\n CHOICES_4: 'choices-4',\n DETAILS_NO_INCOME: 'no-income',\n DETAILS_CURRENT_JOB: 'job',\n DETAILS_ANTICIPATED_JOB: 'anticipated',\n DETAILS_LAST_JOBS: 'last-job',\n DETAILS_CHILD_SUPPORT: 'child-support',\n DETAILS_ALIMONY: 'alimony',\n DETAILS_SOCIAL_SECURITY: 'social-security',\n DETAILS_OTHER_INCOME: 'other',\n DETAILS_PUBLIC_ASSISTANCE: 'public',\n DETAILS_GIFTS: 'gift',\n DETAILS_UNEMPLOYMENT: 'unemployment',\n DETAILS_PENSION: 'pension',\n DETAILS_ONLINE: 'online',\n DETAILS_TRUST: 'trust',\n DETAILS_UNEARNED: 'unearned',\n OVERVIEW: 'overview',\n SELECTIONS_VOUCHER: 'selections-voucher',\n SUMMARY: 'summary',\n};\n\nexport const ASSETS_PATHS = {\n OVERVIEW: 'overview',\n\n CHOICES_1: 'choices-1',\n CHOICES_2: 'choices-2',\n CHOICES_3: 'choices-3',\n\n DETAILS_CASH: 'cash',\n DETAILS_CHECKINGS: 'checkings',\n DETAILS_PAYCARD: 'paycard',\n DETAILS_CERTIFICATES: 'certificates',\n DETAILS_FEDERAL_TAX_REFUND_CREDIT: 'federal-tax-refund-credit',\n DETAILS_TRUST: 'trust',\n DETAILS_TREASURY_BILLS: 'treasury-bills',\n DETAILS_STOCKS: 'stocks',\n DETAILS_RETIREMENT: 'retirement',\n DETAILS_LIFE_INSURANCE: 'life-insurance',\n DETAILS_SOLD_ASSET: 'sold-assets',\n DETAILS_PROPERTY: 'property-investment',\n DETAILS_REAL_ESTATE: 'real-estate',\n DETAILS_OTHER_ASSETS: 'other-assets',\n\n SUMMARY: 'summary',\n};\n\nexport const BEFORE_YOU_GO_PATHS = {\n ADDITIONAL_DETAILS: 'additional-details',\n VEHICLES: 'vehicles',\n PETS: 'pets',\n EMERGENCY_CONTACTS: 'emergency-contacts',\n VOLUNTARY_SELF_IDENTIFICATION: 'voluntary-self-identification',\n};\n\nexport const UNINVITED_SECONDARY_USER_PATHS = {\n [IDENTIFYING_DETAILS_PATHS.IDENTIFICATION]: `${PATHS.IDENTIFYING_DETAILS}/${IDENTIFYING_DETAILS_PATHS.IDENTIFICATION}`,\n [CREDIT_CRIMINAL_CHECK_PATHS.CONSENT]: `${PATHS.CREDIT_CRIMINAL_CHECK}/${CREDIT_CRIMINAL_CHECK_PATHS.CONSENT}`,\n [APPLICATION_SUBMISSION_PATHS.SIGNATURE_AND_REPRESENTATION]: `${PATHS.APPLICATION_SUBMISSION}/${APPLICATION_SUBMISSION_PATHS.SIGNATURE_AND_REPRESENTATION}`,\n [BEFORE_YOU_GO_PATHS.VOLUNTARY_SELF_IDENTIFICATION]: `${PATHS.BEFORE_YOU_GO}/${BEFORE_YOU_GO_PATHS.VOLUNTARY_SELF_IDENTIFICATION}`,\n};\n\nexport default PATHS;\n","const QUERY_KEYS = {\n affordaDetails: ({ authUserId }) => ['affordaDetails', authUserId],\n getAffordaPortalFormByPortalUserId: ({\n organizationId,\n propertyId,\n portalUserId,\n }) => [\n 'getAffordaPortalFormByPortalUserId',\n organizationId,\n propertyId,\n portalUserId,\n ],\n householdBalance: ({ organizationId, propertyId, householdId }) => [\n 'getHouseholdBalance',\n organizationId,\n propertyId,\n householdId,\n ],\n householdApplicationFees: ({ organizationId, propertyId, householdId }) => [\n 'getHouseholdApplicationFees',\n organizationId,\n propertyId,\n householdId,\n ],\n householdMembers: ({ organizationId, propertyId, householdId }) => [\n 'getHouseholdMembers',\n organizationId,\n propertyId,\n householdId,\n ],\n householdMembersEligibility: ({\n organizationId,\n propertyId,\n householdId,\n affordableProgramId,\n }) => [\n 'getHouseholdMembersEligibility',\n organizationId,\n propertyId,\n householdId,\n affordableProgramId,\n ],\n primaryFormData: ({ organizationId, propertyId }) => [\n 'getPrimaryFormData',\n organizationId,\n propertyId,\n ],\n secondaryFormData: ({\n organizationId,\n propertyId,\n secondaryMembersApplicantIds,\n }) => [\n 'getSecondaryFormData',\n organizationId,\n propertyId,\n secondaryMembersApplicantIds,\n ],\n prospectPreferences: ({ householdProspectId }) => [\n 'prospectPreferences',\n householdProspectId,\n ],\n householdMemberStatus: ({\n organizationId,\n propertyId,\n customerId,\n householdId,\n }) => [\n 'getHouseholdMemberStatus',\n organizationId,\n propertyId,\n customerId,\n householdId,\n ],\n};\n\nexport default QUERY_KEYS;\n","// @flow\nimport PATHS from './paths';\n\nexport type SectionParentNames =\n | 'application'\n | 'creditAndCriminal'\n | 'documentation';\n\nexport type SectionNames =\n | 'welcomeAndQualify'\n | 'household'\n | 'wagesAndIncome'\n | 'assets'\n | 'payments'\n | 'identifyingDetails'\n | 'creditCriminalCheck'\n | 'documentsAndUploads'\n | 'applicationSubmission';\n\nconst SECTION_NAMES = {\n WELCOME_AND_QUALIFY: 'welcomeAndQualify',\n // Application\n APPLICATION: 'application',\n HOUSEHOLD: 'household',\n WAGES_AND_INCOME: 'wagesAndIncome',\n ASSETS: 'assets',\n // Credit and Criminal\n CREDIT_AND_CRIMINAL: 'creditAndCriminal',\n PAYMENTS: 'payments',\n IDENTIFYING_DETAILS: 'identifyingDetails',\n CREDIT_CRIMINAL_CHECK: 'creditCriminalCheck',\n // Documentation\n DOCUMENTATION: 'documentation',\n DOCUMENTS_AND_UPLOADS: 'documentsAndUploads',\n APPLICATION_SUBMISSION: 'applicationSubmission',\n BEFORE_YOU_GO: 'beforeYouGo',\n};\n\nexport const SECTION_PARENT_NAMES: SectionParentNames = {\n [SECTION_NAMES.APPLICATION]: SECTION_NAMES.APPLICATION,\n [SECTION_NAMES.CREDIT_AND_CRIMINAL]: SECTION_NAMES.CREDIT_AND_CRIMINAL,\n [SECTION_NAMES.DOCUMENTATION]: SECTION_NAMES.DOCUMENTATION,\n};\n\nexport const PATH_TO_SECTION_MAP = {\n [PATHS.APPLICATION]: SECTION_NAMES.APPLICATION,\n [PATHS.ASSETS]: SECTION_NAMES.ASSETS,\n [PATHS.HOUSEHOLD]: SECTION_NAMES.HOUSEHOLD,\n [PATHS.WAGES_AND_INCOME]: SECTION_NAMES.WAGES_AND_INCOME,\n [PATHS.PAYMENTS]: SECTION_NAMES.PAYMENTS,\n [PATHS.IDENTIFYING_DETAILS]: SECTION_NAMES.IDENTIFYING_DETAILS,\n [PATHS.CREDIT_CRIMINAL_CHECK]: SECTION_NAMES.CREDIT_CRIMINAL_CHECK,\n [PATHS.VERIFICATION]: SECTION_NAMES.WELCOME_AND_QUALIFY,\n [PATHS.DOCUMENTATION]: SECTION_NAMES.DOCUMENTATION,\n [PATHS.DOCUMENTS_AND_UPLOADS]: SECTION_NAMES.DOCUMENTS_AND_UPLOADS,\n [PATHS.APPLICATION_SUBMISSION]: SECTION_NAMES.APPLICATION_SUBMISSION,\n [PATHS.BEFORE_YOU_GO]: SECTION_NAMES.BEFORE_YOU_GO,\n};\n\nexport const SECTION_TO_PATH_MAP = {\n [SECTION_NAMES.APPLICATION]: PATHS.APPLICATION,\n [SECTION_NAMES.ASSETS]: PATHS.ASSETS,\n [SECTION_NAMES.HOUSEHOLD]: PATHS.HOUSEHOLD,\n [SECTION_NAMES.WAGES_AND_INCOME]: PATHS.WAGES_AND_INCOME,\n [SECTION_NAMES.PAYMENTS]: PATHS.PAYMENTS,\n [SECTION_NAMES.IDENTIFYING_DETAILS]: PATHS.IDENTIFYING_DETAILS,\n [SECTION_NAMES.CREDIT_AND_CRIMINAL]: PATHS.VERIFICATION,\n [SECTION_NAMES.WELCOME_AND_QUALIFY]: PATHS.WELCOME,\n [SECTION_NAMES.DOCUMENTATION]: PATHS.DOCUMENTATION,\n [SECTION_NAMES.DOCUMENTS_AND_UPLOADS]: PATHS.DOCUMENTS_AND_UPLOADS,\n [SECTION_NAMES.APPLICATION_SUBMISSION]: PATHS.APPLICATION_SUBMISSION,\n [SECTION_NAMES.BEFORE_YOU_GO]: PATHS.BEFORE_YOU_GO,\n};\n\nexport default SECTION_NAMES;\n","import React, { createContext, useContext, useMemo } from 'react';\nimport useAffordaPortalDetailsQuery from 'hooks/queries/useAffordaPortalDetailsQuery';\n\n// Create context for AffordaPortalDetails\nexport const AffordaPortalDetailsContext = createContext(null);\n\n// Custom hook to consume context\nexport const useAffordaPortalDetailsContext = () => {\n const context = useContext(AffordaPortalDetailsContext);\n\n if (!context) {\n throw new Error(\n 'useAffordaPortalDetailsContext must be used within an AffordaPortalDetailsProvider',\n );\n }\n\n return context;\n};\n\n// Provider for the AffordaPortalDetails context\nexport const AffordaPortalDetailsProvider = ({ children }) => {\n const {\n data: affordaPortalDetails,\n isLoading,\n error,\n refetch,\n } = useAffordaPortalDetailsQuery();\n\n const value = useMemo(() => {\n return {\n affordaPortalDetails,\n isLoading,\n error,\n refetch,\n };\n }, [affordaPortalDetails, isLoading, error, refetch]);\n\n return (\n \n {children}\n \n );\n};\n","import { useQueryClient } from 'react-query';\nimport { useMemo } from 'react';\nimport QUERY_KEYS from 'constants/queryKeys';\n\nconst useMemoizedQueryOptions = ({\n options,\n organizationId,\n propertyId,\n portalUserId,\n}) => {\n const queryClient = useQueryClient();\n\n return useMemo(() => {\n return {\n ...options,\n onSuccess: (response) => {\n queryClient.invalidateQueries(\n QUERY_KEYS.getAffordaPortalFormByPortalUserId({\n organizationId,\n propertyId,\n portalUserId,\n }),\n );\n\n if (options?.onSuccess) options?.onSuccess(response);\n },\n enabled: Boolean(propertyId && organizationId && portalUserId),\n };\n }, [options, organizationId, propertyId, queryClient, portalUserId]);\n};\n\nexport default useMemoizedQueryOptions;\n","// @flow\nimport { useMutation, MutationOptions } from 'react-query';\nimport { createOrUpdateAffordaPortalForms } from 'services/affordaPortalForms';\nimport { useContext } from 'react';\nimport { AppContext } from 'contexts/AppContext';\nimport useMemoizedQueryOptions from 'hooks/affordaPortalFormState/useMemoizedQueryOptions';\nimport useAbortController from 'hooks/useAbortController';\nimport { UserContext } from 'contexts/UserContext';\n\ntype Payload = {\n applicationId: string,\n applicantId: string,\n householdId: string,\n welcomeAndQualify: Object,\n wagesAndIncome: Object,\n assets: Object,\n};\n\ntype Props = {\n options?: MutationOptions,\n};\n\nconst useCreateOrUpdateAffordaPortalFormsMutation = ({\n options,\n}: Props = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const { portalUserId } = useContext(UserContext);\n const abortControllerOptions = useAbortController();\n\n const memoizedOptions = useMemoizedQueryOptions({\n options,\n organizationId,\n propertyId,\n portalUserId,\n });\n\n return useMutation(async ({ id, ...payload }: Partial) => {\n if (!portalUserId?.length) return;\n\n const finalPayload: Payload = {\n ...(id && { id }),\n portalUserId,\n ...payload,\n };\n\n return createOrUpdateAffordaPortalForms({\n organizationId,\n propertyId,\n portalUserId,\n payload: finalPayload,\n options: abortControllerOptions,\n });\n }, memoizedOptions);\n};\n\nexport default useCreateOrUpdateAffordaPortalFormsMutation;\n","import { del, get, post } from 'utils/api';\nimport { IS_DEVELOPMENT } from 'constants/environment';\n\n/**\n * Fetch AffordaPortalForms details based on provided parameters.\n *\n * @param {Object} params - Object containing organizationId, propertyId, and optional query filters.\n * @param {string} params.organizationId - The unique ID of the organization.\n * @param {string} params.propertyId - The unique ID of the property.\n * @param {string} [params.portalUserId] - Optional portal user ID for filtering.\n * @param {string} [params.householdId] - Optional household ID for filtering.\n * @param {string} [params.applicationId] - Optional application ID for filtering.\n * @param {string} [params.applicantId] - Optional applicant ID for filtering.\n * @param {Object} [params.options] - Optional request configuration.\n * @returns {Promise} - The fetched data or an error object.\n */\nexport const getAffordaPortalForms = async ({\n organizationId,\n propertyId,\n portalUserId,\n householdId,\n applicationId,\n applicantId,\n options,\n} = {}) => {\n const paramValues = {\n applicationId,\n applicantId,\n householdId,\n portalUserId,\n };\n\n // Remove undefined or empty values\n Object.keys(paramValues).forEach(\n (key) => !Boolean(paramValues[key]?.length) && delete paramValues[key],\n );\n\n const params = new URLSearchParams(paramValues);\n\n const url = `/${organizationId}/${propertyId}/afforda-portal-forms?${params}`;\n\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\n/**\n * Fetch a single AffordaPortalForm by portalUserId.\n *\n * @param {Object} params - Object containing organizationId, propertyId, and portalUserId.\n * @param {string} params.organizationId - The unique ID of the organization.\n * @param {string} params.propertyId - The unique ID of the property.\n * @param {string} params.portalUserId - The portal user ID to fetch the record for.\n * @param {Object} [params.options] - Optional request configuration.\n * @returns {Promise} - The fetched data or an error object.\n */\nexport const getAffordaPortalFormByPortalUserId = async ({\n organizationId,\n propertyId,\n portalUserId,\n options,\n}) => {\n if (!portalUserId) {\n throw new Error('portalUserId is required.');\n }\n\n const url = `/${organizationId}/${propertyId}/afforda-portal-forms/${portalUserId}`;\n\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\n/**\n * Create or update a record for AffordaPortalForms.\n *\n * @param {Object} params - Object containing necessary identifiers and payload.\n * @param {string} params.organizationId - The unique ID of the organization.\n * @param {string} params.propertyId - The unique ID of the property.\n * @param {Object} params.payload - The data to create or update the record with.\n * @param {Object} [params.options] - Optional request configuration.\n * @returns {Promise} - The response from the server or an error object.\n */\nexport const createOrUpdateAffordaPortalForms = async ({\n organizationId,\n propertyId,\n portalUserId,\n payload,\n options,\n}) => {\n const url = `/${organizationId}/${propertyId}/afforda-portal-forms/${portalUserId}`;\n const response = await post(url, payload, options);\n\n if (response.error) {\n if (IS_DEVELOPMENT) console.error(response.error);\n throw response.error;\n }\n\n return response;\n};\n\n/**\n * Delete a record for AffordaPortalForms by `id` or `portalUserId`.\n *\n * @param {Object} params - Object containing necessary identifiers and filters.\n * @param {string} params.organizationId - The unique ID of the organization.\n * @param {string} params.propertyId - The unique ID of the property.\n * @param {string} [params.id] - The unique ID of the record to delete.\n * @param {string} [params.portalUserId] - The portal user ID of the record to delete.\n * @param {Object} [params.options] - Optional request configuration.\n * @returns {Promise} - The response from the server or an error object.\n */\nexport const deleteAffordaPortalForm = async ({\n organizationId,\n propertyId,\n portalUserId,\n options,\n}) => {\n // Ensure `portalUserId` is provided\n if (!portalUserId) {\n throw new Error('`portalUserId` must be provided to delete a record.');\n }\n\n const url = `/${organizationId}/${propertyId}/afforda-portal-forms/${portalUserId}`;\n\n const response = await del(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n","// @flow\nimport { useMutation, MutationOptions } from 'react-query';\nimport { deleteAffordaPortalForm } from 'services/affordaPortalForms';\nimport { useContext } from 'react';\nimport { AppContext } from 'contexts/AppContext';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport useMemoizedQueryOptions from './useMemoizedQueryOptions';\n\ntype Props = {\n options?: MutationOptions,\n};\n\nconst useDeleteAffordaPortalFormMutation = ({ options }: Props = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const { data: userProfile } = useUserProfileQuery();\n\n const memoizedOptions = useMemoizedQueryOptions({\n options,\n organizationId,\n propertyId,\n portalUserId: userProfile.portalUserId,\n });\n\n return useMutation(async (id: string) => {\n if (!organizationId || !propertyId) {\n throw new Error('organizationId and propertyId are required.');\n }\n if (!id && !userProfile?.portalUserId) {\n throw new Error(\n 'Either id or portalUserId must be provided for deletion.',\n );\n }\n\n return deleteAffordaPortalForm({\n organizationId,\n propertyId,\n id,\n portalUserId: userProfile?.portalUserId,\n });\n }, memoizedOptions);\n};\n\nexport default useDeleteAffordaPortalFormMutation;\n","import SECTION_NAMES from 'constants/sectionNames';\n\nconst INITIAL_SECTION_STATE = {\n formState: {},\n formValues: {},\n};\n\nexport const INITIAL_STATE = {\n id: null,\n portalUserId: null,\n applicantId: null,\n applicationId: null,\n householdId: null,\n createdAt: null,\n updatedAt: null,\n deletedAt: null,\n [SECTION_NAMES.WELCOME_AND_QUALIFY]: INITIAL_SECTION_STATE,\n [SECTION_NAMES.HOUSEHOLD]: INITIAL_SECTION_STATE,\n [SECTION_NAMES.WAGES_AND_INCOME]: INITIAL_SECTION_STATE,\n [SECTION_NAMES.ASSETS]: INITIAL_SECTION_STATE,\n [SECTION_NAMES.PAYMENTS]: INITIAL_SECTION_STATE,\n [SECTION_NAMES.IDENTIFYING_DETAILS]: INITIAL_SECTION_STATE,\n [SECTION_NAMES.CREDIT_CRIMINAL_CHECK]: INITIAL_SECTION_STATE,\n [SECTION_NAMES.DOCUMENTS_AND_UPLOADS]: INITIAL_SECTION_STATE,\n [SECTION_NAMES.APPLICATION_SUBMISSION]: INITIAL_SECTION_STATE,\n [SECTION_NAMES.BEFORE_YOU_GO]: INITIAL_SECTION_STATE,\n};\n","import { useContext, useMemo } from 'react';\nimport { useQuery } from 'react-query';\nimport useAbortController from 'hooks/useAbortController';\nimport { getAffordaPortalFormByPortalUserId } from 'services/affordaPortalForms';\nimport { AppContext } from 'contexts/AppContext';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport { INITIAL_STATE } from './constants';\nimport QUERY_KEYS from 'constants/queryKeys';\n\nconst useAffordaPortalFormsQuery = ({ options } = {}) => {\n const abortControllerOptions = useAbortController();\n const { organizationId, propertyId } = useContext(AppContext);\n const { data: userProfile } = useUserProfileQuery();\n const { portalUserId } = userProfile ?? {};\n\n const queryKey = QUERY_KEYS.getAffordaPortalFormByPortalUserId({\n organizationId,\n propertyId,\n portalUserId,\n });\n\n const queryOptions = useMemo(\n () => ({\n refetchOnWindowFocus: false,\n placeholderData: INITIAL_STATE,\n enabled: Boolean(\n organizationId?.length && propertyId?.length && portalUserId?.length,\n ),\n ...options,\n }),\n [options, organizationId?.length, portalUserId?.length, propertyId?.length],\n );\n\n return useQuery(\n queryKey,\n async () => {\n const response = await getAffordaPortalFormByPortalUserId({\n organizationId,\n propertyId,\n portalUserId,\n options: abortControllerOptions,\n });\n if (typeof response === 'string') {\n return INITIAL_STATE;\n } else {\n return response;\n }\n },\n queryOptions,\n );\n};\n\nexport default useAffordaPortalFormsQuery;\n","import { useState, useEffect, useRef, useCallback } from 'react';\nimport useCreateOrUpdateAffordaPortalFormsMutation from './useCreateOrUpdateAffordaPortalFormsMutation';\nimport useDeleteAffordaPortalFormMutation from './useDeleteAffordaPortalFormMutation';\nimport useAffordaPortalFormsQuery from './useAffordaPortalFormsQuery';\nimport { INITIAL_STATE } from 'hooks/affordaPortalFormState/constants';\nimport useEnableFormStateLogging from 'hooks/affordaPortalFormState/useEnableFormStateLogging';\n\nconst useFormStateData = () => {\n const { isFormStateLoggingEnabled } = useEnableFormStateLogging();\n const shouldUpdateDB = useRef(true);\n const hasInitialized = useRef(false);\n const [state, setState] = useState(INITIAL_STATE);\n const { isFetched } = useAffordaPortalFormsQuery({\n options: {\n onSuccess: (response) => {\n const hasData = !!response.id;\n if (!hasData) return;\n\n if (isFormStateLoggingEnabled) {\n console.group('useFormStateData.DB.response');\n console.log(response);\n console.groupEnd();\n }\n if (hasInitialized.current === true) return;\n\n if (isFormStateLoggingEnabled) {\n console.group('useFormStateData.Initialized');\n console.log(response);\n console.groupEnd();\n }\n\n hasInitialized.current = true;\n shouldUpdateDB.current = false;\n\n setState(response);\n },\n },\n });\n\n const { mutate } = useCreateOrUpdateAffordaPortalFormsMutation();\n const { mutate: deleteForm } = useDeleteAffordaPortalFormMutation();\n\n const update = useCallback(\n (newState) => {\n setState((prevState) => {\n const stateUpdate =\n typeof newState === 'function' ? newState(prevState) : newState;\n\n if (isFormStateLoggingEnabled) {\n console.group('useFormStateData.Update');\n console.log('Updates', stateUpdate);\n\n console.groupEnd();\n }\n\n return stateUpdate;\n });\n },\n [isFormStateLoggingEnabled],\n );\n\n // Update DB when state changes\n useEffect(() => {\n if (!isFetched) return;\n // return the first update when state initializes\n if (!shouldUpdateDB.current) {\n shouldUpdateDB.current = true;\n return;\n }\n\n if (isFormStateLoggingEnabled) {\n console.group('useFormStateData.DB Update');\n console.log(state);\n console.groupEnd();\n }\n mutate(state);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mutate, state]);\n\n return { data: state, update, deleteForm };\n};\n\nexport default useFormStateData;\n","import React, { createContext, useContext } from 'react';\nimport useFormStateData from 'hooks/affordaPortalFormState/useFormStateData';\n\nexport const FormStateContext = createContext(null);\n\nexport const useFormStateContext = () => {\n const context = useContext(FormStateContext);\n if (!context) {\n throw new Error(\n 'useFormStateContext must be used within a FormStateProvider',\n );\n }\n\n return context;\n};\n\nexport const FormStateProvider = ({ children }) => {\n const { data, update, deleteForm } = useFormStateData();\n\n return (\n \n {children}\n \n );\n};\n","import React, { createContext, useContext, useMemo } from 'react';\n\nimport APPLICANT_TYPES from 'constants/applicantTypes';\nimport useHouseholdMembersQuery from 'hooks/queries/useHouseholdMembersQuery';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport {\n getFormattedNames,\n isPrimaryMember as getIsPrimaryMember,\n sortMembers,\n} from 'pages/AffordaHousehold/utils';\n\nexport const HouseholdMembersContext = createContext(null);\nexport const useHouseholdMembersContext = () => {\n const context = useContext(HouseholdMembersContext);\n if (!context) {\n throw new Error(\n 'useHouseholdMembersContext must be used within a HouseholdMembersProvider',\n );\n }\n\n return context;\n};\n\nexport const HouseholdMembersProvider = ({ children }) => {\n const { data: householdMembers } = useHouseholdMembersQuery();\n const { data: userProfile } = useUserProfileQuery();\n\n const value = useMemo(() => {\n const isLoggedPrimaryUser = userProfile?.isPrimaryProspect ?? null;\n const isLoggedSecondaryUser = !isLoggedPrimaryUser;\n\n const values = {\n adultHouseholdMembers: [],\n filteredHumanHouseholdMembers: [],\n filteredAdultHouseholdMembers: [],\n filteredMembersWithPendingQualifications: [],\n filteredAdultHouseholdMemberNames: [],\n filteredAdultHouseholdMemberNamesAsString: '',\n secondaryAdultHouseholdMembers: [],\n minorHouseholdMembers: [],\n petHouseholdMembers: [],\n primaryHouseholdMember: {},\n currentHouseholdMember: {},\n };\n\n const sortedHouseholdMembers = sortMembers(householdMembers ?? []);\n\n const primaryHouseholdMember =\n sortedHouseholdMembers?.find(({ isProspect }) => {\n return isProspect;\n }) ?? {};\n\n values.primaryHouseholdMember = primaryHouseholdMember;\n\n const hasInvitedOtherAdults =\n primaryHouseholdMember.invitedOtherAdults ?? false;\n\n const currentUserProfileMember = sortedHouseholdMembers.find(\n ({ applicantId }) => applicantId === userProfile?.applicantId,\n );\n\n sortedHouseholdMembers.forEach((householdMember) => {\n const { applicantId, applicantType } = householdMember;\n const isMinor = applicantType === APPLICANT_TYPES.MINOR;\n const isPet = applicantType === APPLICANT_TYPES.PET;\n const isAdult = !isMinor && !isPet;\n const isPrimaryMember = getIsPrimaryMember(householdMember);\n const isCurrentHouseholdMember = applicantId === userProfile?.applicantId;\n const isSecondaryAdult = isAdult && !isPrimaryMember;\n const isLiveInCaretaker =\n applicantType === APPLICANT_TYPES.LIVE_IN_CARETAKER;\n\n // Skip live in caretakers for now\n if (isLiveInCaretaker) return;\n\n if (isAdult) {\n values.adultHouseholdMembers.push(householdMember);\n\n if (hasInvitedOtherAdults) {\n if (\n householdMember.applicantId === currentUserProfileMember.applicantId\n )\n values.filteredAdultHouseholdMembers.push(householdMember);\n } else {\n // if other users were invited, only add the primaryUser\n values.filteredAdultHouseholdMembers.push(householdMember);\n }\n }\n\n if (!isPet) {\n if (hasInvitedOtherAdults) {\n if (isLoggedPrimaryUser) {\n if (isPrimaryMember || isMinor)\n values.filteredHumanHouseholdMembers.push(householdMember);\n } else {\n if (!isPrimaryMember && isSecondaryAdult)\n values.filteredHumanHouseholdMembers.push(householdMember);\n }\n } else {\n values.filteredHumanHouseholdMembers.push(householdMember);\n }\n }\n\n if (isSecondaryAdult)\n values.secondaryAdultHouseholdMembers.push(householdMember);\n if (isCurrentHouseholdMember)\n values.currentHouseholdMember = householdMember;\n if (isMinor) values.minorHouseholdMembers.push(householdMember);\n if (isPet) values.petHouseholdMembers.push(householdMember);\n });\n\n values.filteredAdultHouseholdMemberNames = getFormattedNames(\n values.filteredAdultHouseholdMembers,\n ).map(({ label }) => label);\n\n const membersCheckQualifications = isLoggedPrimaryUser\n ? values.adultHouseholdMembers?.filter(\n ({ qualifications }) =>\n !qualifications?.completedAssetForm ||\n !qualifications?.completedIncomeForm,\n )\n : values.filteredAdultHouseholdMembers?.filter(\n ({ qualifications }) =>\n !qualifications?.completedAssetForm ||\n !qualifications?.completedIncomeForm,\n );\n\n // Check the minors, check every minor if legallyResponsible field array has the applicantId matching in membersCheckQualifications\n values.filteredMembersWithPendingQualifications =\n !!membersCheckQualifications?.length\n ? [\n ...membersCheckQualifications,\n ...values.minorHouseholdMembers.filter((minor) => {\n const { legallyResponsible } = minor;\n return legallyResponsible.some((responsible) =>\n membersCheckQualifications.some(\n ({ applicantId }) => applicantId === responsible,\n ),\n );\n }),\n ]\n : [];\n\n return {\n ...values,\n hasData: householdMembers?.length > 0,\n householdMembers: sortedHouseholdMembers,\n isPrimaryUser: isLoggedPrimaryUser,\n isSecondaryUser: isLoggedSecondaryUser,\n isSingleAdultHousehold: values.adultHouseholdMembers.length === 1,\n hasInvitedOtherAdults,\n hasMoreThanTwoAdultMembers: values.adultHouseholdMembers.length > 2,\n isUnInvitedSecondaryUser: isLoggedSecondaryUser && !hasInvitedOtherAdults,\n };\n }, [householdMembers, userProfile]);\n\n return (\n \n {children}\n \n );\n};\n","import PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport AutopayScheduleService from 'services/autopayScheduleService';\n\nexport const PaymentContext = React.createContext();\n\nexport function PaymentContextProvider({ children }) {\n const [amount, setAmount] = useState(0);\n const [balanceAmount, setBalanceAmount] = useState(0);\n const [securityDepositAmount, setSecurityDepositAmount] = useState(0);\n const [accountId, setAccountId] = useState(null);\n const [isFullPayment, setIsFullPayment] = useState(true);\n const [paymentOptions, setPaymentOptions] = useState({\n balance: true,\n securityDeposit: true,\n });\n const [autopaySchedule, setAutopaySchedule] = useState(null);\n const [checkFormValues, setCheckFormValues] = useState({});\n\n const [loadedAutopaySchedule] = AutopayScheduleService.useFindAll({});\n\n useEffect(() => {\n setAutopaySchedule(loadedAutopaySchedule?.[0]);\n }, [loadedAutopaySchedule]);\n\n const resetPaymentContext = useCallback(() => {\n setAmount(0);\n setBalanceAmount(0);\n setSecurityDepositAmount(0);\n setAccountId(null);\n setIsFullPayment(true);\n setPaymentOptions({\n balance: true,\n securityDeposit: true,\n });\n setCheckFormValues({});\n }, []);\n\n const value = {\n amount,\n setAmount,\n accountId,\n setAccountId,\n isFullPayment,\n setIsFullPayment,\n balanceAmount,\n setBalanceAmount,\n securityDepositAmount,\n setSecurityDepositAmount,\n paymentOptions,\n setPaymentOptions,\n autopaySchedule,\n setAutopaySchedule,\n checkFormValues,\n setCheckFormValues,\n resetPaymentContext,\n };\n\n return (\n {children}\n );\n}\n\nPaymentContextProvider.defaultProps = {\n children: null,\n};\nPaymentContextProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport default { PaymentContextProvider, PaymentContext };\n","// @flow\nimport { useCallback, useState, useRef } from 'react';\nimport useUpdateAffordaPortalDetailsMutation from 'hooks/mutations/useUpdateAffordaPortalDetailsMutation';\nimport useAffordaPortalDetailsQuery from 'hooks/queries/useAffordaPortalDetailsQuery';\nimport type { SectionsProgress } from 'hooks/sectionsProgress/types';\nimport useEnableSectionsProgressLogging from 'hooks/sectionsProgress/useEnableSectionsProgressLogging';\n\nconst useSectionsProgressData = (): ({\n isFetched: boolean,\n sectionsProgress: SectionsProgress,\n setSectionsProgress: (SectionsProgress: SectionsProgress) => void,\n}) => {\n const { isSectionsProgressLoggingEnabled } =\n useEnableSectionsProgressLogging();\n const shouldUpdateRef = useRef(true);\n const [isInitialized, setIsInitialized] = useState(false);\n const [sectionsProgress, setSectionsProgressState] =\n useState({});\n\n const { mutate } = useUpdateAffordaPortalDetailsMutation();\n\n useAffordaPortalDetailsQuery({\n options: {\n onSuccess: (response) => {\n if (shouldUpdateRef.current) {\n const hasData = Boolean(\n response?.sectionsProgress &&\n Object.keys(response?.sectionsProgress)?.length,\n );\n\n if (hasData) {\n setSectionsProgressState(response.sectionsProgress);\n\n if (isSectionsProgressLoggingEnabled) {\n console.group(\n '%c[useSectionsProgressData] Initialized sectionsProgress',\n 'color: green; font-weight: bold;',\n );\n console.log(response.sectionsProgress);\n console.groupEnd();\n }\n }\n\n setIsInitialized(true);\n }\n },\n },\n });\n\n const setSectionsProgress = useCallback(\n (sectionsProgressUpdate: SectionsProgress) => {\n if (isSectionsProgressLoggingEnabled) {\n console.group(\n '%c[useSectionsProgressData] Set State & DB sectionsProgress',\n 'color: green; font-weight: bold;',\n );\n console.log(sectionsProgressUpdate);\n console.groupEnd();\n }\n shouldUpdateRef.current = false;\n setSectionsProgressState(() => {\n mutate({ sectionsProgress: sectionsProgressUpdate });\n return sectionsProgressUpdate;\n });\n },\n [isSectionsProgressLoggingEnabled, mutate],\n );\n\n const deleteSectionsProgress = useCallback(() => {\n shouldUpdateRef.current = true;\n mutate({ sectionsProgress: {} });\n }, [mutate]);\n\n return {\n isInitialized,\n deleteSectionsProgress,\n sectionsProgress,\n setSectionsProgress,\n };\n};\n\nexport default useSectionsProgressData;\n","// @flow\nimport { useCallback, useEffect, useState, useMemo } from 'react';\nimport { SECTION_PARENT_NAMES, SectionNames } from 'constants/sectionNames';\nimport { useHistory } from 'react-router-dom';\nimport {\n determineSectionsProgressUpdate,\n getCompleteStep,\n getIncompleteStep,\n getPreviousStep,\n getRequiredSteps,\n getSectionNameFromPathname,\n getStepFromPathname,\n getStepURLs,\n getUpdatedSteps,\n} from 'hooks/sectionsProgress/utils';\nimport { usePrevious } from '@fortress-technology-solutions/fortress-component-library/hooks';\nimport { SectionSteps, SectionCompletionStatus } from './types';\nimport useIsUnInvitedSecondaryUser from 'hooks/useIsUnInvitedSecondaryUser';\nimport useEnableSectionsProgressLogging from 'hooks/sectionsProgress/useEnableSectionsProgressLogging';\nimport { useHouseholdMembersContext } from 'contexts/HouseholdMembersContext';\nimport useBaseURL from 'hooks/useBaseURL';\n\ntype Props = {\n initialSteps: SectionSteps,\n sectionName: SectionNames,\n};\n\nconst useSectionsProgressManager = ({\n deleteSectionsProgress,\n setSectionsProgress,\n sectionsProgress,\n isInitialized,\n}: Props = {}): {\n currentSectionProgress: SectionCompletionStatus,\n handleCompleteStep: Function,\n handleUpdate: Function,\n currentURL: string,\n previousURL: string,\n nextURL: string,\n} => {\n const history = useHistory();\n const {\n action,\n location: { pathname, search },\n } = history;\n\n const baseURL = useBaseURL();\n const [initialSteps, setInitialSteps] = useState(null);\n const { isSectionsProgressLoggingEnabled } =\n useEnableSectionsProgressLogging();\n const { isPrimaryUser: isPrimaryProspect } = useHouseholdMembersContext();\n const isUnInvitedSecondaryUser = useIsUnInvitedSecondaryUser();\n\n const fullPathname = `${pathname}${search}`;\n const sectionName = useMemo(\n () => getSectionNameFromPathname({ pathname, baseURL }),\n [pathname, baseURL],\n );\n\n const [requiredSteps, setRequiredSteps] = useState<{\n completed: SectionSteps,\n required: SectionSteps,\n }>({ completed: [], required: [] });\n\n const previousPathname = usePrevious(fullPathname);\n\n const { currentSectionProgress, previousURL, nextURL, currentURL } =\n useMemo(() => {\n if (!Boolean(sectionsProgress?.[sectionName]?.steps?.length))\n return {\n currentSectionProgress: { steps: [] },\n previousURL: null,\n nextURL: null,\n currentURL: null,\n };\n\n return {\n currentSectionProgress: sectionsProgress[sectionName],\n ...getStepURLs({\n steps: sectionsProgress[sectionName].steps,\n sectionName,\n baseURL,\n isPrimaryUser: isPrimaryProspect,\n isUnInvitedSecondaryUser,\n }),\n };\n }, [\n baseURL,\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n sectionName,\n sectionsProgress,\n ]);\n\n const initializeSection = useCallback((initialSteps) => {\n setInitialSteps(initialSteps);\n }, []);\n\n const updateRequiredSteps = useCallback(\n (steps: SectionSteps) => {\n const updatedRequiredSteps = getRequiredSteps({\n currentSectionProgressSteps: steps,\n isSectionsProgressLoggingEnabled,\n });\n\n setRequiredSteps(updatedRequiredSteps);\n\n return updatedRequiredSteps;\n },\n [isSectionsProgressLoggingEnabled],\n );\n\n const handleUpdate = useCallback(\n (update) => {\n const sectionsProgressUpdate = determineSectionsProgressUpdate({\n currentSectionProgress,\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n sectionName,\n sectionsProgress,\n update,\n });\n\n if (isSectionsProgressLoggingEnabled) {\n console.log('Update Payload:', sectionsProgressUpdate);\n }\n\n setSectionsProgress(sectionsProgressUpdate);\n\n return sectionsProgressUpdate;\n },\n [\n currentSectionProgress,\n isPrimaryProspect,\n isSectionsProgressLoggingEnabled,\n isUnInvitedSecondaryUser,\n sectionName,\n sectionsProgress,\n setSectionsProgress,\n ],\n );\n\n const handleCompleteStep = useCallback(\n (stepName: string | string[], updatedSteps?: SectionSteps) => {\n const { update, stepsUpdate } = getCompleteStep({\n currentSteps: currentSectionProgress.steps,\n isSectionsProgressLoggingEnabled,\n stepName,\n updatedSteps,\n });\n\n let updatedRequiredSteps = null;\n let updatedSectionsProgress = null;\n\n if (update) {\n updatedSectionsProgress = handleUpdate(update);\n }\n if (stepsUpdate) {\n updatedRequiredSteps = updateRequiredSteps(stepsUpdate);\n }\n\n return {\n updatedRequiredSteps,\n updatedSteps: stepsUpdate,\n updatedSectionsProgress,\n };\n },\n [\n currentSectionProgress.steps,\n handleUpdate,\n isSectionsProgressLoggingEnabled,\n updateRequiredSteps,\n ],\n );\n\n const updateSteps = useCallback(\n (initialSteps) => {\n const { updatedSectionsProgress, updatedSteps } = getUpdatedSteps({\n currentSectionProgress,\n effectMode: false,\n initialSteps,\n isPrimaryProspect,\n isSectionsProgressLoggingEnabled,\n isUnInvitedSecondaryUser,\n requiredSteps,\n sectionName,\n sectionsProgress,\n });\n\n if (updatedSectionsProgress) setSectionsProgress(updatedSectionsProgress);\n\n if (updatedSteps) updateRequiredSteps(updatedSteps);\n\n return updatedSteps;\n },\n [\n currentSectionProgress,\n isPrimaryProspect,\n isSectionsProgressLoggingEnabled,\n isUnInvitedSecondaryUser,\n requiredSteps,\n sectionName,\n sectionsProgress,\n setSectionsProgress,\n updateRequiredSteps,\n ],\n );\n\n const handleIncompleteStep = useCallback(\n (stepName) => {\n const update = getIncompleteStep({\n currentSectionProgress,\n isSectionsProgressLoggingEnabled,\n requiredSteps,\n stepName,\n });\n updateRequiredSteps(update.steps);\n handleUpdate(update);\n },\n [\n currentSectionProgress,\n handleUpdate,\n isSectionsProgressLoggingEnabled,\n requiredSteps,\n updateRequiredSteps,\n ],\n );\n\n // initialize section steps\n useEffect(() => {\n const isParentSection = Boolean(SECTION_PARENT_NAMES[sectionName]?.length);\n\n if (\n Boolean(!initialSteps?.length) ||\n !sectionName ||\n !isInitialized ||\n isParentSection\n ) {\n return;\n }\n\n const { updatedSectionsProgress, updatedSteps } = getUpdatedSteps({\n currentSectionProgress,\n initialSteps,\n isPrimaryProspect,\n isSectionsProgressLoggingEnabled,\n isUnInvitedSecondaryUser,\n requiredSteps,\n sectionName,\n sectionsProgress,\n effectMode: true,\n });\n\n if (updatedSectionsProgress) {\n setSectionsProgress(updatedSectionsProgress);\n }\n\n if (updatedSteps) updateRequiredSteps(updatedSteps);\n // only run when initialSteps changes\n }, [initialSteps]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // manage step completion when pathname changes\n useEffect(() => {\n const isParentSection = Boolean(SECTION_PARENT_NAMES[sectionName]?.length);\n\n if (\n !pathname ||\n !previousPathname ||\n fullPathname === previousPathname ||\n !sectionName ||\n isParentSection\n )\n return;\n\n if (isSectionsProgressLoggingEnabled) {\n console.group(`PATHNAME CHANGE: ${sectionName}`);\n console.log('History Action:', action);\n console.log('Current Pathname:', fullPathname);\n console.log('Previous Pathname:', previousPathname);\n console.log('Required Steps:', requiredSteps);\n }\n\n if (action === 'PUSH') {\n const completedStep = getStepFromPathname({\n requiredSteps: requiredSteps.required,\n pathname: previousPathname,\n });\n if (completedStep?.name) {\n handleCompleteStep(completedStep.name);\n }\n } else if (action === 'POP' || action === 'REPLACE') {\n const previousStep = getPreviousStep({\n requiredSteps: requiredSteps.required,\n pathname: fullPathname,\n });\n if (previousStep?.name) {\n handleIncompleteStep(previousStep.name);\n } else if (isSectionsProgressLoggingEnabled) {\n console.log('No matching previous step found for the current path:', {\n fullPathname,\n previousPathname,\n requiredSteps,\n });\n }\n }\n\n if (isSectionsProgressLoggingEnabled) {\n console.groupEnd();\n console.log('');\n }\n\n // only run when pathname changes\n }, [pathname, search]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return {\n currentSectionProgress,\n currentURL,\n deleteSectionsProgress,\n handleCompleteStep,\n handleUpdate,\n initializeSection,\n nextURL,\n previousURL,\n updateSteps,\n };\n};\n\nexport default useSectionsProgressManager;\n","import React, { createContext, useContext, useMemo } from 'react';\nimport useSectionsProgressData from 'hooks/sectionsProgress/useSectionsProgressData';\nimport useSectionsProgressManager from 'hooks/sectionsProgress/useSectionsProgressManager';\nimport { getStepURLs } from 'hooks/sectionsProgress/utils';\nimport useBaseURL from 'hooks/useBaseURL';\nimport { useHouseholdMembersContext } from 'contexts/HouseholdMembersContext';\nconst SectionsProgressContext = createContext(null);\n\nexport const useSectionsProgressContext = (sectionName) => {\n const baseURL = useBaseURL();\n const { isPrimaryUser, isUnInvitedSecondaryUser } =\n useHouseholdMembersContext();\n\n const context = useContext(SectionsProgressContext);\n if (!context) {\n throw new Error(\n 'useSectionsProgress must be used within a SectionsProgressProvider',\n );\n }\n\n return useMemo(() => {\n let newContext = context;\n\n if (sectionName) {\n const currentSectionProgress =\n newContext.sectionsProgress[sectionName] ?? {};\n newContext = {\n ...newContext,\n currentSectionProgress,\n ...getStepURLs({\n steps: currentSectionProgress.steps,\n sectionName,\n baseURL,\n isPrimaryUser,\n isUnInvitedSecondaryUser,\n }),\n };\n }\n\n return newContext;\n }, [context, sectionName, baseURL, isPrimaryUser, isUnInvitedSecondaryUser]);\n};\n\nexport const SectionsProgressProvider = ({ children }) => {\n const {\n deleteSectionsProgress,\n setSectionsProgress,\n sectionsProgress,\n isInitialized,\n } = useSectionsProgressData();\n\n const {\n currentSectionProgress,\n handleCompleteStep,\n handleUpdate,\n initializeSection,\n updateSteps,\n currentURL,\n previousURL,\n nextURL,\n } = useSectionsProgressManager({\n deleteSectionsProgress,\n setSectionsProgress,\n sectionsProgress,\n isInitialized,\n });\n\n return (\n \n {children}\n \n );\n};\n","import { useLocalStorage } from '@fortress-technology-solutions/fortress-component-library/hooks';\n\nconst useEnableFormStateLogging = () => {\n const { localStorageState: isFormStateLoggingEnabled, setLocalStorage } =\n useLocalStorage('formStateLogging', 'boolean', false);\n\n return {\n isFormStateLoggingEnabled,\n toggleIsFormStateLoggingEnabled: () =>\n setLocalStorage(!isFormStateLoggingEnabled),\n };\n};\n\nexport default useEnableFormStateLogging;\n","// @flow\nimport { formatDateDB } from '@fortress-technology-solutions/fortress-component-library/utils';\nimport mergeWith from 'lodash/mergeWith';\nimport merge from 'lodash/merge';\nimport isArray from 'lodash/isArray';\n\nconst safeGet = (obj, key) =>\n obj && obj.hasOwnProperty(key) ? obj[key] : undefined;\n\nconst getNestedValue = (obj, path) => {\n const keys = path.split('.');\n let current = obj;\n\n for (const key of keys) {\n current = safeGet(current, key); // Safely retrieve the next level\n if (!current) break; // Exit early if undefined or null\n if (current.hasOwnProperty('_f')) return current._f.value; // Directly return nested value if \"_f\" key exists\n }\n\n return current?.value; // Return value if it exists at the final level\n};\n\nconst getBaseFieldName = (fieldName: string) => {\n if (!fieldName.includes('.')) return fieldName;\n const fieldNameArray = fieldName.split('.');\n\n return fieldNameArray[fieldNameArray.length - 1];\n};\n\nconst getLabel = ({ label }) => {\n if (Boolean(label?.props?.id?.length)) {\n return window.app.intl.getFormattedMessageInEnglish(label.props);\n } else {\n return label;\n }\n};\n\nconst getDisplayedValue = ({ optionLabel, value, variant }) => {\n if (variant === 'date' && value?._isAMomentObject) return formatDateDB(value);\n return optionLabel ?? value;\n};\n\nconst getValue = ({ value, variant }) => {\n if (variant === 'date' && value?._isAMomentObject) return formatDateDB(value);\n return value;\n};\n\nconst getOptionLabel = ({ options, value }) => {\n return options?.length\n ? Array.isArray(value)\n ? options\n .filter((option) => value.includes(option.value))\n .map((option) => getLabel({ label: option.label }))\n : getLabel({\n label: options.find((option) => option.value === value)?.label,\n })\n : null;\n};\n\nconst getItem = ({\n baseFieldName,\n label,\n value,\n variant,\n optionLabel,\n isAffordaPortalSpecific,\n}) => {\n return {\n name: baseFieldName,\n label: getLabel({ label }),\n value: getValue({ value, variant }),\n displayedValue: getDisplayedValue({ optionLabel, value, variant }),\n isAffordaPortalSpecific: isAffordaPortalSpecific ?? false,\n };\n};\n\nconst getFieldsArrayAndMap = (fields = []) => {\n const fieldsArray = Array.isArray(fields)\n ? fields\n : Object.values(fields).flatMap((field) => field);\n\n const fieldsMap = fieldsArray.reduce((acc, field) => {\n acc[field.name] = field;\n return acc;\n }, {});\n\n return {\n fieldsArray,\n fieldsMap,\n };\n};\n\nexport const getNewFormState = ({ fields, newState = {}, prevState = {} }) => {\n const { fieldsArray } = getFieldsArrayAndMap(fields);\n\n const readOnlyFieldNames =\n fieldsArray?.filter(({ readOnly }) => readOnly)?.map(({ name }) => name) ??\n [];\n\n const customizer = (objValue: any, srcValue: any, key: string) => {\n if (readOnlyFieldNames.includes(key)) {\n return objValue; // Prioritize the value from the first object (prevState)\n }\n\n // Handle arrays: Use newState if the lengths differ\n if (isArray(objValue) && isArray(srcValue)) {\n if (objValue.length !== srcValue.length) {\n return srcValue; // Use newState array if lengths differ\n }\n return srcValue ?? objValue; // Otherwise, preserve newState\n }\n\n if (srcValue && typeof srcValue === 'object') {\n if (srcValue._isAMomentObject) {\n return formatDateDB(srcValue);\n } else {\n // Recursively process nested objects and arrays\n const newValue = isArray(srcValue) ? [] : {};\n let hasChanges = false; // Flag to track if any changes were made\n\n for (const k in srcValue) {\n const nestedValue = customizer(objValue?.[key]?.[k], srcValue[k], k);\n newValue[k] = nestedValue;\n if (nestedValue !== srcValue[k]) {\n hasChanges = true; // Set flag if a change occurred\n }\n }\n return hasChanges ? newValue : srcValue; // Return original if no changes\n }\n }\n\n return srcValue !== undefined ? srcValue : objValue;\n };\n\n return mergeWith({}, prevState, newState, customizer);\n};\n\nexport const getNewFormValues = ({ control, fields, prevValues }) => {\n const newFormValues = {};\n\n if (!control || !fields) return prevValues ?? newFormValues;\n\n const { fieldsMap } = getFieldsArrayAndMap(fields);\n\n const mountedFieldNames = Array.from(control._names.mount);\n\n mountedFieldNames.forEach((fieldName) => {\n const baseFieldName = getBaseFieldName(fieldName);\n if (fieldsMap[fieldName]) {\n const { id, label, options, variant, readOnly, isAffordaPortalSpecific } =\n fieldsMap[fieldName];\n\n if (!readOnly) {\n const value = getNestedValue(control._fields, fieldName);\n const optionLabel = getOptionLabel({ options, value });\n\n const item = getItem({\n baseFieldName,\n label,\n optionLabel,\n value,\n variant,\n isAffordaPortalSpecific,\n });\n\n if (id) {\n newFormValues[id] = {\n ...newFormValues[id],\n [baseFieldName]: item,\n };\n } else {\n newFormValues[baseFieldName] = item;\n }\n }\n }\n });\n\n return merge({}, prevValues, newFormValues);\n};\n","// @flow\nimport { useCallback, useContext, useMemo } from 'react';\nimport { FormStateContext } from 'contexts/FormStateContext';\nimport type { SectionNames } from 'constants/sectionNames';\nimport {\n getNewFormState,\n getNewFormValues,\n} from 'hooks/affordaPortalFormState/utils';\nimport useEnableFormStateLogging from 'hooks/affordaPortalFormState/useEnableFormStateLogging';\n\nconst useFormStateManager = (sectionName: SectionNames) => {\n const { isFormStateLoggingEnabled } = useEnableFormStateLogging();\n\n const { data, update } = useContext(FormStateContext);\n\n const { formState } = useMemo(() => {\n const { formState, formValues } = data[sectionName] || {};\n\n if (isFormStateLoggingEnabled) {\n console.group(`Form State [${sectionName}]`);\n console.log('Initial State: ', formState);\n console.log('Initial Values: ', formValues);\n console.groupEnd();\n }\n\n return {\n formState,\n formValues,\n };\n }, [data, isFormStateLoggingEnabled, sectionName]);\n\n const setSectionData = useCallback(\n (\n callback: Object | ((prevState: Object) => Object),\n { control, fields }: { control: Object, fields: Array } | undefined = {},\n ) => {\n update((prevState) => {\n let newState = {};\n const sectionData = prevState[sectionName];\n\n if (typeof callback === 'function') {\n newState = callback(sectionData.formState);\n } else {\n newState = callback;\n }\n\n const newFormState = getNewFormState({\n fields,\n newState,\n prevState: sectionData.formState,\n });\n const newFormValues = getNewFormValues({\n control,\n fields,\n prevValues: sectionData.formValues,\n });\n\n const payload = {\n ...Object.fromEntries(\n Object.entries(prevState).filter(([key]) => key !== sectionName),\n ),\n [sectionName]: {\n formState: newFormState,\n formValues: newFormValues,\n },\n };\n\n if (isFormStateLoggingEnabled) {\n console.group('Form State Update');\n console.log('Before: ', prevState);\n console.log('Updates', { newFormState, newFormValues });\n console.log('After: ', payload);\n console.groupEnd();\n }\n\n return payload;\n });\n },\n [isFormStateLoggingEnabled, sectionName, update],\n );\n\n return {\n formState,\n updateForm: setSectionData,\n };\n};\n\nexport default useFormStateManager;\n","import { useLocalStorage } from '@fortress-technology-solutions/fortress-component-library/hooks';\n\nconst useCompleteDocumentsAndUploadsTaskList = () => {\n const {\n localStorageState: completeDocumentsAndUploadsTaskList,\n setLocalStorage,\n } = useLocalStorage('completeDocumentsAndUploadsTaskList', 'boolean', false);\n\n return {\n completeDocumentsAndUploadsTaskList,\n toggleCompleteDocumentsAndUploadsTaskList: () =>\n setLocalStorage(!completeDocumentsAndUploadsTaskList),\n };\n};\n\nexport default useCompleteDocumentsAndUploadsTaskList;\n","import { useLocalStorage } from '@fortress-technology-solutions/fortress-component-library/hooks';\n\nconst useEnableAllSections = () => {\n const { localStorageState: allSectionsEnabled, setLocalStorage } =\n useLocalStorage('enableAllSections', 'boolean', false);\n\n return {\n allSectionsEnabled,\n toggleAllSectionsEnabled: () => setLocalStorage(!allSectionsEnabled),\n };\n};\n\nexport default useEnableAllSections;\n","// @flow\nimport { useMutation, MutationOptions } from 'react-query';\nimport {\n createOrUpdateAffordableApplicationAdditionalDetails,\n getAffordableApplicationAdditionalDetails,\n} from 'services/affordableApplicationAdditionalDetails';\nimport { useContext } from 'react';\nimport { AppContext } from 'contexts/AppContext';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport useAbortController from 'hooks/useAbortController';\n\ntype Payload = {\n applicationId: string,\n applicantId: string,\n householdId: string,\n assets: Object,\n incomes: Object,\n household: Object,\n};\n\ntype Props = {\n options?: MutationOptions,\n};\n\nconst useCreateOrUpdateAffordableApplicationAdditionalDetailsMutation = ({\n options,\n}: Props = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const { refetch } = useUserProfileQuery();\n const abortControllerOptions = useAbortController();\n\n return useMutation(\n async ({ ...payload }: Partial) => {\n const { data: userProfile } = await refetch();\n const { applicationId, householdId } = userProfile;\n const applicantId = payload.applicantId ?? userProfile?.applicantId;\n let id = payload.id ?? null;\n\n const membersAdditionalDetails =\n await getAffordableApplicationAdditionalDetails({\n id,\n organizationId,\n propertyId,\n applicationId,\n applicantId,\n householdId,\n });\n\n const memberAdditionalDetails = membersAdditionalDetails?.find(\n (memberDetails) => memberDetails.applicantId === applicantId,\n );\n\n if (memberAdditionalDetails?.id) {\n id = memberAdditionalDetails?.id;\n }\n\n const finalPayload: Payload = {\n ...(id && { id }),\n applicantId,\n applicationId,\n householdId,\n ...payload,\n ...(payload.assets && {\n assets: JSON.stringify({\n ...memberAdditionalDetails?.assets,\n ...payload.assets,\n }),\n }),\n ...(payload.incomes && {\n incomes: JSON.stringify({\n ...memberAdditionalDetails?.incomes,\n ...payload.incomes,\n }),\n }),\n ...(payload.household && {\n household: JSON.stringify({\n ...memberAdditionalDetails?.household,\n ...payload.household,\n }),\n }),\n };\n\n return createOrUpdateAffordableApplicationAdditionalDetails({\n organizationId,\n propertyId,\n payload: finalPayload,\n options: abortControllerOptions,\n });\n },\n { ...options, enabled: Boolean(propertyId && organizationId) },\n );\n};\n\nexport default useCreateOrUpdateAffordableApplicationAdditionalDetailsMutation;\n","// @flow\nimport { useContext } from 'react';\nimport { useMutation, MutationOptions, useQueryClient } from 'react-query';\nimport { getPrimaryFormData, savePrimaryFormData } from 'services/formService';\nimport { AppContext } from 'contexts/AppContext';\nimport useAbortController from 'hooks/useAbortController';\nimport QUERY_KEYS from 'constants/queryKeys';\nimport { getPrimaryFormPayload } from './useSavePrimaryFormMutation.utils';\n\nconst useSavePrimaryFormMutation = ({\n options,\n}: {\n options: MutationOptions,\n} = {}) => {\n const abortControllerOptions = useAbortController();\n const { organizationId, propertyId, states } = useContext(AppContext);\n const queryClient = useQueryClient();\n\n return useMutation(\n async (update) => {\n const initialData = await getPrimaryFormData({\n organizationId,\n propertyId,\n applicantId: update.applicantId,\n options: abortControllerOptions,\n });\n\n const payload = getPrimaryFormPayload({ initialData, update, states });\n\n return savePrimaryFormData({\n organizationId,\n propertyId,\n applicantId: update.applicantId,\n payload,\n options: abortControllerOptions,\n });\n },\n {\n ...options,\n onSuccess: (response) => {\n queryClient.invalidateQueries(\n QUERY_KEYS.primaryFormData({ organizationId, propertyId }),\n );\n options?.onSuccess?.(response);\n },\n },\n );\n};\n\nexport default useSavePrimaryFormMutation;\n","// @flow\nimport { RESIDENCE_TYPES } from 'pages/AffordaIdentifyingDetails/constants';\nimport {\n booleanToYesNo,\n getValueOrEmptyString,\n getValueOrNull,\n getValueOrUndefined,\n} from 'utils';\nimport { formatPhoneNumber } from '@fortress-technology-solutions/fortress-component-library/utils';\n\nconst formatDoNotCurrentlyOwnRentExplanation = ({\n canContactToVerifySituation,\n contactName,\n explainTheSituation,\n nameOfPersonYouLiveWith,\n ownOrRentOrNotCurrently,\n phoneNumber,\n relationshipToYou,\n}) => {\n let value = explainTheSituation;\n\n if (ownOrRentOrNotCurrently === RESIDENCE_TYPES.LIVE_WITH_FAMILY_OR_FRIENDS) {\n value = `Lived with family or friends: \n Name of person(s) I lived with: ${nameOfPersonYouLiveWith} (${relationshipToYou}). Phone number: ${formatPhoneNumber(\n phoneNumber,\n )}`;\n } else if (\n ownOrRentOrNotCurrently === RESIDENCE_TYPES.OTHER &&\n canContactToVerifySituation === 'yes'\n ) {\n value = `Can contact to verify: Contact name: ${contactName} (${relationshipToYou}). Phone number: ${formatPhoneNumber(\n phoneNumber,\n )}. ${explainTheSituation}`;\n }\n\n return value;\n};\n\nconst getValueWithLengthOrUndefined = (value1, value2) => {\n return getValueOrUndefined(value1) ?? getValueOrUndefined(value2);\n};\nexport const assignAddress = (\n initialResidence = {},\n updateResidence = {},\n states,\n) => {\n const updatedState = getValueWithLengthOrUndefined(\n updateResidence?.address?.state ?? updateResidence?.state,\n initialResidence.state,\n );\n const state =\n states.find(({ code, id }) => code === updatedState || id === updatedState)\n ?.id ?? null;\n\n let ownOrRentOrNotCurrently = getValueWithLengthOrUndefined(\n updateResidence?.ownOrRent?.ownOrRentOrNotCurrently ??\n updateResidence?.residence,\n initialResidence?.type,\n );\n // Map LIVE_WITH_FAMILY_OR_FRIENDS => OTHER\n if (ownOrRentOrNotCurrently === RESIDENCE_TYPES.LIVE_WITH_FAMILY_OR_FRIENDS) {\n ownOrRentOrNotCurrently = RESIDENCE_TYPES.OTHER;\n }\n\n const canContactToVerifySituation = getValueWithLengthOrUndefined(\n updateResidence.canContactToVerifySituation,\n initialResidence.canContactToVerifySituation,\n );\n\n const explainTheSituation = getValueWithLengthOrUndefined(\n updateResidence.explainTheSituation,\n initialResidence.explainTheSituation,\n );\n\n const phoneNumber = getValueWithLengthOrUndefined(\n updateResidence.phoneNumber,\n initialResidence.phoneNumber,\n );\n\n const doNotCurrentlyOwnRentExplanation =\n formatDoNotCurrentlyOwnRentExplanation({\n canContactToVerifySituation,\n contactName: updateResidence.contactName,\n explainTheSituation,\n nameOfPersonYouLiveWith: updateResidence.contactName,\n ownOrRentOrNotCurrently,\n phoneNumber,\n relationshipToYou: updateResidence.relationshipToYou,\n });\n\n const lenderPhoneNumber = getValueWithLengthOrUndefined(\n updateResidence?.ownOrRent?.lenderPhoneNumber ??\n updateResidence.phoneNumber,\n initialResidence.lenderPhoneNumber,\n );\n\n const addressPayload = {\n monthlyPayment: getValueWithLengthOrUndefined(\n updateResidence.monthlyPayment,\n initialResidence.monthlyPay,\n ),\n dateMovedIn: getValueWithLengthOrUndefined(\n updateResidence.dateMovedIn ?? updateResidence.moveInDate,\n initialResidence.moveInDate,\n ),\n ownOrRent: {\n ownOrRentOrNotCurrently: getValueOrUndefined(ownOrRentOrNotCurrently),\n lenderName: getValueWithLengthOrUndefined(\n updateResidence?.ownOrRent?.lenderName ?? updateResidence?.lender,\n initialResidence.lenderName,\n ),\n lenderPhoneNumber,\n // lenderName is whats used for this value in fortress\n landLordOrCondoOrApartmentName: getValueWithLengthOrUndefined(\n updateResidence?.ownOrRent?.lenderName ?? updateResidence?.lender,\n initialResidence.lenderName,\n ),\n landLordOrCondoOrApartmentNamePhoneNumber: lenderPhoneNumber,\n doNotCurrentlyOwnRentExplanation: getValueWithLengthOrUndefined(\n updateResidence?.ownOrRent?.doNotCurrentlyOwnRentExplanation,\n doNotCurrentlyOwnRentExplanation,\n ),\n },\n address: {\n street: getValueWithLengthOrUndefined(\n updateResidence?.address?.street ?? updateResidence?.streetAddress,\n initialResidence.street,\n ),\n city: getValueWithLengthOrUndefined(\n updateResidence?.address?.city ?? updateResidence?.city,\n initialResidence.city,\n ),\n zipCode: getValueWithLengthOrUndefined(\n updateResidence?.address?.zipCode ?? updateResidence?.zipCode,\n initialResidence.zipCode,\n ),\n state: getValueOrUndefined(state),\n },\n };\n\n return addressPayload;\n};\n\nconst assignEmployment = (initialJob = {}, updateJob = {}) => {\n return {\n annualSalary: getValueWithLengthOrUndefined(\n updateJob.annualSalary,\n initialJob.annualSalary,\n ),\n employerName: getValueWithLengthOrUndefined(\n updateJob.employerName,\n initialJob.employerName,\n ),\n from: getValueWithLengthOrUndefined(updateJob.from, initialJob.from),\n phoneNumber: getValueWithLengthOrUndefined(\n updateJob.phoneNumber,\n initialJob.employerPhone,\n ),\n position: getValueWithLengthOrUndefined(\n updateJob.position,\n initialJob.position,\n ),\n supervisorName: getValueWithLengthOrUndefined(\n updateJob.supervisorName,\n initialJob.supervisorName,\n ),\n to: getValueWithLengthOrUndefined(updateJob.to, initialJob.to),\n address: {\n city: getValueWithLengthOrUndefined(\n updateJob?.address?.city,\n initialJob.city,\n ),\n street: getValueWithLengthOrUndefined(\n updateJob?.address?.street,\n initialJob.employerStreetAddress,\n ),\n zipCode: getValueWithLengthOrUndefined(\n updateJob?.address?.zipCode,\n initialJob.zipCode,\n ),\n state: getValueWithLengthOrUndefined(\n updateJob?.address?.state,\n initialJob.state,\n ),\n },\n };\n};\n\nconst getMinorsInformationUpdate = (\n initialMinorsInformation = [],\n updateMinorsInformation = [],\n) => {\n // If there's no initial data but we have updates, return all updates\n if (\n initialMinorsInformation.length === 0 &&\n updateMinorsInformation.length > 0\n ) {\n return updateMinorsInformation;\n }\n\n // Create a map of existing minors using a composite key of firstName + lastName + dateOfBirth\n const minorsMap = new Map();\n\n initialMinorsInformation.forEach((minor) => {\n const key = `${minor.firstName}_${minor.lastName}_${minor.dateOfBirth}`;\n minorsMap.set(key, minor);\n });\n\n // Update or add new minors\n updateMinorsInformation.forEach((minor) => {\n const key = `${minor.firstName}_${minor.lastName}_${minor.dateOfBirth}`;\n minorsMap.set(key, {\n ...minorsMap.get(key),\n ...minor,\n });\n });\n\n // Convert back to array and remove unwanted properties\n return Array.from(minorsMap.values()).map((minor) => {\n const cleanedMinor = { ...minor };\n [\n 'applicant',\n 'MINCNumber',\n 'customerDisability',\n 'customerDisabilityId',\n 'suffix',\n ].forEach((key) => delete cleanedMinor[key]);\n\n return cleanedMinor;\n });\n};\n\ntype AnticipateChangeEmployer = 'yes' | 'no' | boolean;\nconst getAnticipateChangeEmployer = (\n initialAnticipateChangeEmployer: AnticipateChangeEmployer,\n updateAnticipateChangeEmployer: AnticipateChangeEmployer,\n) => {\n const updatedValue =\n updateAnticipateChangeEmployer ?? initialAnticipateChangeEmployer;\n\n if (typeof updatedValue === 'string') {\n return updatedValue;\n }\n\n return booleanToYesNo(updatedValue);\n};\n\nexport const getPrimaryFormPayload = ({ initialData, update, states }) => ({\n basicInformation: {\n firstName: null,\n middleName: null,\n lastName: null,\n birthday: null,\n socialSecurityNumber: null,\n passportNumber: null,\n passportCountry: null,\n alienRegistration: null,\n gender: null,\n handicapped: null,\n ethnicity: null,\n race: null,\n multiRace: null,\n raceSource: null,\n veteran: null,\n suffix: null,\n ...initialData?.applicantInfo?.basicInfo,\n ...update?.basicInformation,\n disability: {\n hasDisability: null,\n disabilityHearing: null,\n disabilityMobile: null,\n disabilityOther: null,\n disabilityVisual: null,\n ...initialData?.basicInformation?.disability,\n ...update?.basicInformation?.disability,\n },\n },\n contactInformation: {\n phoneNumber: null,\n emailAddress: null,\n ...initialData?.applicantInfo?.contactInfo,\n ...update?.contactInformation,\n },\n maritalInformation: {\n maritalStatus: getValueOrNull(\n initialData?.applicantInfo?.maritalInfo?.maritalStatus ??\n update?.maritalInformation?.maritalStatus,\n ),\n },\n studentInformation: Boolean(\n update?.studentInformation?.isStudent ||\n initialData?.studentInfo?.isStudent,\n )\n ? {\n isStudent: null,\n TANFAssistance: null,\n jobTrainingProgram: null,\n singleParentDependantChild: null,\n marriedJointReturn: null,\n fosterProgram: null,\n otherStudentStatus: null,\n ...initialData?.studentInfo,\n ...update?.studentInformation,\n studentType: getValueOrEmptyString(\n update?.studentInformation?.studentType ??\n initialData?.studentInfo?.studentType,\n ),\n }\n : undefined,\n additionalOccupants: {\n anticipateChangeHouseholdAdoption: null,\n anticipateChangeHouseholdFoster: null,\n anticipateChangeHouseholdPregnancy: null,\n ...initialData?.additionalOccupants,\n ...update?.additionalOccupants,\n anticipateChangeHousehold: booleanToYesNo(\n update?.additionalOccupants?.anticipateChangeHousehold ??\n initialData?.additionalOccupants?.anticipateChangeHousehold,\n ),\n // adults\n ...((initialData?.additionalOccupants?.adults ||\n update?.additionalOccupants?.adults) && {\n adults: {\n anyAdult: 'yes',\n howManyAdults: null,\n adultsDescription: null,\n adultsInformation: [],\n adultsArray: [],\n },\n }),\n // minors\n ...((initialData?.additionalOccupants?.minors ||\n update?.additionalOccupants?.minors) && {\n minors: {\n anyMinor: 'yes',\n minorsInformation: getMinorsInformationUpdate(\n initialData?.additionalOccupants?.minors?.minorsInformation,\n update?.additionalOccupants?.minors?.minorsInformation,\n ),\n },\n }),\n },\n otherInformation: {\n pets: null,\n petsInformation: [],\n aboutProperty: null,\n referralTypeId: null,\n },\n currentResidenceInformation: {\n ...(Boolean(\n initialData?.residentialInfo?.currentAddress?.city?.length ||\n update.currentResidenceInformation?.address?.city?.length,\n ) &&\n assignAddress(\n initialData?.residentialInfo?.currentAddress,\n update.currentResidenceInformation,\n states,\n )),\n },\n previousResidenceInformation: {\n ...(Boolean(\n initialData?.residentialInfo?.previousAddress?.city?.length ||\n update.previousResidenceInformation?.address?.city?.length,\n ) &&\n assignAddress(\n initialData?.residentialInfo?.previousResidenceInformation,\n update.previousResidenceInformation,\n states,\n )),\n },\n applicantsCurrentEmployer: assignEmployment(\n initialData.employmentInfo?.currentJob,\n update?.applicantsCurrentEmployer,\n ),\n applicantsSecondCurrentEmployer: assignEmployment(\n initialData.employmentInfo?.secondJob,\n update?.applicantsSecondCurrentEmployer,\n ),\n applicantsPreviousEmployer: assignEmployment(\n initialData.employmentInfo?.previousJob,\n update?.applicantsPreviousEmployer,\n ),\n employmentInformation: {\n status: getValueWithLengthOrUndefined(\n update?.employmentInformation?.status,\n initialData?.employmentInfo?.employmentStatusId,\n ),\n anticipateChangeEmployer: getAnticipateChangeEmployer(\n initialData?.employmentInfo?.anticipateChangeEmployer,\n update?.employmentInformation?.anticipateChangeEmployer,\n ),\n studentType: getValueWithLengthOrUndefined(\n update?.employmentInformation?.studentType,\n initialData?.employmentInfo?.studentType,\n ),\n hasSecondCurrentEmployer: Boolean(\n update?.applicantsSecondCurrentEmployer?.position?.length ??\n initialData.employmentInfo?.secondJob?.position?.length,\n ),\n },\n});\n","// @flow\nimport { useContext, useMemo } from 'react';\nimport { useMutation, MutationOptions, useQueryClient } from 'react-query';\nimport { saveSecondaryFormData } from 'services/formService';\nimport { AppContext } from 'contexts/AppContext';\nimport useAbortController from 'hooks/useAbortController';\nimport QUERY_KEYS from 'constants/queryKeys';\n\nconst useSaveSecondaryFormMutation = ({\n options,\n}: {\n options: MutationOptions,\n} = {}) => {\n const abortControllerOptions = useAbortController();\n const { organizationId, propertyId } = useContext(AppContext);\n const queryClient = useQueryClient();\n\n const queryOptions = useMemo(() => {\n return {\n onSuccess: () =>\n queryClient.invalidateQueries(\n QUERY_KEYS.secondaryFormData({ organizationId, propertyId }),\n ),\n enabled: Boolean(organizationId && propertyId),\n ...options,\n };\n }, [options, organizationId, propertyId, queryClient]);\n\n return useMutation(async ({ applicantId, ...payload }) => {\n return saveSecondaryFormData({\n organizationId,\n propertyId,\n applicantId,\n payload,\n options: abortControllerOptions,\n });\n }, queryOptions);\n};\n\nexport default useSaveSecondaryFormMutation;\n","// @flow\nimport { useContext, useMemo } from 'react';\nimport { useMutation, MutationOptions, useQueryClient } from 'react-query';\nimport { AppContext } from 'contexts/AppContext';\nimport { updateAffordaDetails } from 'services/affordableService';\nimport QUERY_KEYS from 'constants/queryKeys';\nimport { UserContext } from 'contexts/UserContext';\nimport { useAffordaPortalDetailsContext } from 'contexts/AffordaPortalDetailsContext';\n\ntype Props = {\n options: MutationOptions,\n};\nconst useUpdateAffordaPortalDetailsMutation = ({ options }: Props = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const {\n authUser: { id },\n portalUserId,\n } = useContext(UserContext);\n const { affordaPortalDetails } = useAffordaPortalDetailsContext();\n const queryClient = useQueryClient();\n\n const memoizedOptions = useMemo(() => {\n return {\n ...options,\n onSuccess: async (response) => {\n await queryClient.invalidateQueries(\n QUERY_KEYS.affordaDetails({ authUserId: id }),\n );\n options?.onSuccess(response);\n return response;\n },\n };\n }, [id, options, queryClient]);\n\n return useMutation(async (requestData) => {\n const hasRequiredParams = Boolean(\n organizationId && propertyId && portalUserId && affordaPortalDetails?.id,\n );\n\n if (hasRequiredParams) {\n return updateAffordaDetails(\n organizationId,\n propertyId,\n affordaPortalDetails.id,\n {\n ...requestData,\n },\n );\n }\n }, memoizedOptions);\n};\n\nexport default useUpdateAffordaPortalDetailsMutation;\n","// @flow\nimport { useContext, useMemo } from 'react';\nimport { AppContext } from 'contexts/AppContext';\nimport { UserContext } from 'contexts/UserContext';\nimport { useQuery } from 'react-query';\nimport { getAffordaDetails } from 'services/affordableService';\nimport useAbortController from 'hooks/useAbortController';\nimport QUERY_KEYS from 'constants/queryKeys';\nimport type { SectionsProgress } from 'hooks/sectionsProgress/types';\n\ntype AffordaDetails = {\n id: string,\n welcomeCompletedAt: string,\n termsAndConditionsAgreedAt: string,\n validationAttempts: number,\n lastValidationError: null,\n accountLockedAt: string,\n createdAt: string,\n updatedAt: string,\n deletedAt: string,\n organizationId: string,\n propertyId: string,\n portalUserId: string,\n sectionsProgress: SectionsProgress,\n};\nconst useAffordaPortalDetailsQuery = ({ options = {} } = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const {\n authUser: { id },\n } = useContext(UserContext);\n const abortControllerOptions = useAbortController();\n\n const memoizedOptions = useMemo(() => {\n return {\n placeholderData: {},\n staleTime: 60000,\n enabled: Boolean(organizationId && propertyId && id),\n ...options,\n };\n }, [id, options, organizationId, propertyId]);\n\n return useQuery(\n QUERY_KEYS.affordaDetails({ authUserId: id }),\n async (): Promise =>\n await getAffordaDetails(\n organizationId,\n propertyId,\n id,\n abortControllerOptions,\n ),\n memoizedOptions,\n );\n};\n\nexport default useAffordaPortalDetailsQuery;\n","import { useContext, useMemo } from 'react';\nimport { useQuery } from 'react-query';\nimport useAbortController from 'hooks/useAbortController';\nimport {\n getHouseholdMembers,\n getHouseholdMembersEligibility,\n} from 'services/householdService';\nimport { AppContext } from 'contexts/AppContext';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport { getAffordableApplicationAdditionalDetails } from 'services/affordableApplicationAdditionalDetails';\nimport { sortMembers } from 'pages/AffordaHousehold/utils';\nimport QUERY_KEYS from 'constants/queryKeys';\nimport STUDENT_STATUS from 'constants/studentStatus';\n\nconst useHouseholdMembersQuery = ({ options } = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const { data: { householdId, qualifications } = {} } = useUserProfileQuery();\n\n const abortControllerOptions = useAbortController();\n const queryKey = QUERY_KEYS.householdMembers({\n organizationId,\n propertyId,\n householdId,\n });\n\n // memoized this because placeholderData was causing infinite update\n const queryOptions = useMemo(() => {\n const enabled =\n Boolean(organizationId && propertyId && householdId) && options?.enabled;\n\n return {\n ...options,\n placeholderData: [],\n enabled,\n };\n }, [householdId, options, organizationId, propertyId]);\n\n return useQuery(\n queryKey,\n async () => {\n const response = await getHouseholdMembers(\n organizationId,\n propertyId,\n householdId,\n abortControllerOptions,\n );\n\n const memberAdditionalDetails =\n await getAffordableApplicationAdditionalDetails({\n organizationId,\n propertyId,\n householdId,\n });\n\n const affordableProgramId =\n qualifications?.[0]?.propertyAffordableProgramId;\n\n const responseQualifications = await getHouseholdMembersEligibility(\n organizationId,\n propertyId,\n householdId,\n affordableProgramId,\n abortControllerOptions,\n );\n\n const qualificationMembers =\n responseQualifications?.affordableQualifications?.[0]\n ?.eventHouseholdMembers;\n\n const parsedMembers = response.map(\n ({\n id,\n name,\n affordableRelationshipId,\n applicantTypeId,\n applicationId,\n householdId,\n am,\n ac,\n type: { name: applicantType },\n application: { invitedOtherAdults },\n }) => {\n let member = {\n id,\n name: name?.trim(),\n affordableRelationshipId,\n applicantTypeId,\n applicationId,\n householdId,\n applicantType,\n invitedOtherAdults,\n };\n\n if (applicantType === 'Minor') {\n member = {\n ...member,\n ...am,\n birthday: am.dateOfBirth,\n };\n } else {\n if (ac) {\n const { customer, ...rest } = ac;\n\n member = {\n ...member,\n ...customer,\n ...rest,\n studentType:\n rest?.studentType || STUDENT_STATUS.NOT_A_STUDENT?.value,\n };\n }\n }\n\n const additionalDetails = memberAdditionalDetails.find(\n ({ applicantId: adApplicantId }) =>\n adApplicantId === member.applicantId,\n );\n\n const memberEligibility = qualificationMembers.find(\n ({ applicantId: meApplicantId }) =>\n meApplicantId === member.applicantId,\n );\n\n return {\n ...member,\n additionalDetails,\n qualifications: memberEligibility,\n ...(additionalDetails?.household && additionalDetails.household),\n id: member.id,\n };\n },\n );\n\n return sortMembers(parsedMembers);\n },\n queryOptions,\n );\n};\n\nexport default useHouseholdMembersQuery;\n","// @flow\nimport { useQuery, QueryOptions } from 'react-query';\nimport useAbortController from 'hooks/useAbortController';\nimport { useContext, useMemo } from 'react';\nimport { AppContext } from 'contexts/AppContext';\nimport { getProfileInfo } from 'services/userService';\nimport { getLocalAuth } from 'utils/auth';\n\ntype UserProfile = {\n portalUserId: string,\n firstName: string,\n lastName: string,\n preferredName: string,\n customerStatus: string,\n phoneNumber: string,\n emailAddress: string,\n applicantId: string,\n customerId: string,\n isPrimaryProspect: boolean,\n isFinanciallyResponsible: boolean,\n areFeesApplied: false,\n areFeesPaid: false,\n prospectPreferences: {\n id: string,\n nBeds: null,\n nBedsArr: [],\n preferredFloorPlanId: string,\n nBaths: null,\n nHalfBaths: null,\n priceFrom: null,\n priceTo: null,\n leaseTermInMonths: null,\n moveInDateFrom: string,\n moveInDateTo: string,\n moveInDateScheduled: null,\n wants: null,\n notWants: null,\n helpText: null,\n hasUserChosenToProvideMoveInPreferences: null,\n createdAt: string,\n updatedAt: string,\n prospectId: string,\n unitId: string,\n },\n};\nconst useUserProfileQuery = ({ options } = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const abortControllerOptions = useAbortController();\n const queryKey = ['getProfileInfo', organizationId, propertyId];\n\n const memoizedOptions: QueryOptions = useMemo(() => {\n return {\n enabled: !!organizationId && !!propertyId,\n placeholderData: {},\n refetchOnWindowFocus: false,\n refetchInterval: false,\n refetchOnSettled: false,\n retry: false,\n ...options,\n };\n }, [options, organizationId, propertyId]);\n\n return useQuery(\n queryKey,\n async (): Promise => {\n const { authUser } = getLocalAuth();\n\n return await getProfileInfo(\n {\n organizationId,\n propertyId,\n portalUserId: authUser.id,\n },\n abortControllerOptions,\n );\n },\n memoizedOptions,\n );\n};\n\nexport default useUserProfileQuery;\n","import { useLocalStorage } from '@fortress-technology-solutions/fortress-component-library/hooks';\n\nconst useEnableSectionsProgressLogging = () => {\n const {\n localStorageState: isSectionsProgressLoggingEnabled,\n setLocalStorage,\n } = useLocalStorage('sectionsProgressLogging', 'boolean', false);\n\n return {\n isSectionsProgressLoggingEnabled,\n toggleIsSectionsProgressLoggingEnabled: () =>\n setLocalStorage(!isSectionsProgressLoggingEnabled),\n };\n};\n\nexport default useEnableSectionsProgressLogging;\n","// @flow\n\nconst getProgressFromProgressArray = (progressArray: number[]): number => {\n // Calculate the total progress by summing all the progress values\n const totalProgress = progressArray.reduce(\n (total, progress) => total + progress,\n 0,\n );\n\n // Now get the percentage by dividing the total progress by the length of the array and the max progress value\n return Math.round((totalProgress / (progressArray.length * 100)) * 100);\n};\n\nexport default getProgressFromProgressArray;\n","export const completionPercentage = (\n numberOfCompletedValues,\n totalRequiredValues,\n) => {\n return Math.round((numberOfCompletedValues / totalRequiredValues) * 100);\n};\n","// @flow\nimport {\n SectionsProgress,\n SectionCompletionStatus,\n SectionStep,\n SectionSteps,\n} from './types';\nimport SECTION_NAMES, {\n PATH_TO_SECTION_MAP,\n SECTION_TO_PATH_MAP,\n SectionNames,\n SectionParentNames,\n} from 'constants/sectionNames';\nimport getProgressFromProgressArray from 'utils/getProgressFromProgressArray';\nimport { completionPercentage } from 'utils/affordaPortal';\n\nexport const getSectionNameFromPathname = ({ pathname, baseURL }) => {\n // Remove the base URL from the pathname to get for example:\n // assets or wages-and-income\n const sectionPathRoot = pathname.replace(`${baseURL}/`, '').split('/')[0];\n const sectionName = PATH_TO_SECTION_MAP[sectionPathRoot];\n return sectionName;\n};\n\nexport const getRequiredSteps = ({\n currentSectionProgressSteps = [],\n isSectionsProgressLoggingEnabled,\n}: {\n currentSectionProgressSteps: SectionSteps,\n isSectionsProgressLoggingEnabled: boolean,\n}): {\n completed: SectionSteps,\n required: SectionSteps,\n} => {\n const requiredHouseholdSteps = currentSectionProgressSteps.filter(\n (step) => step.required,\n );\n\n if (isSectionsProgressLoggingEnabled) {\n console.group('REQUIRED STEPS UPDATE');\n requiredHouseholdSteps.forEach((step) => {\n console.log('REQUIRED STEP:', step.complete, step.name);\n });\n console.groupEnd();\n console.log('');\n }\n\n return {\n completed: requiredHouseholdSteps?.filter((step) => step.complete),\n required: requiredHouseholdSteps,\n };\n};\n\nexport const getCurrentStep = ({ requiredSteps }) => {\n return requiredSteps.find((step) => !step.complete);\n};\n\nexport const getNextStep = ({\n requiredSteps,\n}: {\n requiredSteps: SectionSteps,\n}): SectionStep => {\n // Find the current step\n const currentStep = getCurrentStep({ requiredSteps });\n if (!currentStep) return null;\n // Locate the index of the current step\n const currentStepIndex = requiredSteps.findIndex(\n (step) => step.path === currentStep.path,\n );\n // Start looking for the next required step from the current step index + 1\n for (let i = currentStepIndex + 1; i < requiredSteps.length; i++) {\n if (requiredSteps[i].required && !requiredSteps[i].complete) {\n return requiredSteps[i];\n }\n }\n // Return null if no next required step is found\n return null;\n};\n\nexport const getPreviousStep = ({\n requiredSteps,\n}: {\n requiredSteps: SectionSteps,\n}): SectionStep => {\n // Find the current step\n const currentStep = getCurrentStep({ requiredSteps });\n\n if (!currentStep) return null;\n\n // Locate the index of the current step\n const currentStepIndex = requiredSteps.findIndex(\n (step) => step.path === currentStep.path,\n );\n\n // Calculate the index of the previous step\n const previousStepIndex = currentStepIndex - 1;\n\n // Return the previous step if valid, otherwise null\n return previousStepIndex >= 0 ? requiredSteps[previousStepIndex] : null;\n};\n\nexport const getStepFromPathname = ({ requiredSteps, pathname }) => {\n return requiredSteps.find((step) => pathname.endsWith(step.path));\n};\n\nconst getApplicationSectionNames = ({\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n}) => {\n if (isUnInvitedSecondaryUser) return [];\n else if (isPrimaryProspect) {\n return [\n SECTION_NAMES.HOUSEHOLD,\n SECTION_NAMES.WAGES_AND_INCOME,\n SECTION_NAMES.ASSETS,\n ];\n } else if (!isPrimaryProspect) {\n return [SECTION_NAMES.WAGES_AND_INCOME, SECTION_NAMES.ASSETS];\n }\n};\n\nconst getCreditAndCriminalSectionNames = ({\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n}) => {\n if (isUnInvitedSecondaryUser) {\n return [\n SECTION_NAMES.IDENTIFYING_DETAILS,\n SECTION_NAMES.CREDIT_CRIMINAL_CHECK,\n ];\n } else if (isPrimaryProspect) {\n return [\n SECTION_NAMES.PAYMENTS,\n SECTION_NAMES.IDENTIFYING_DETAILS,\n SECTION_NAMES.CREDIT_CRIMINAL_CHECK,\n ];\n } else if (!isPrimaryProspect) {\n return [\n SECTION_NAMES.IDENTIFYING_DETAILS,\n SECTION_NAMES.CREDIT_CRIMINAL_CHECK,\n ];\n }\n};\n\nconst getDocumentationSectionNames = ({\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n}) => {\n if (isUnInvitedSecondaryUser) {\n return [SECTION_NAMES.APPLICATION_SUBMISSION, SECTION_NAMES.BEFORE_YOU_GO];\n } else {\n return [\n SECTION_NAMES.DOCUMENTS_AND_UPLOADS,\n SECTION_NAMES.APPLICATION_SUBMISSION,\n SECTION_NAMES.BEFORE_YOU_GO,\n ];\n }\n};\n\nexport const getSectionParentName = (\n sectionName: SectionNames,\n isPrimaryProspect: boolean,\n isUnInvitedSecondaryUser: boolean,\n): SectionParentNames => {\n const isApplicationSection = getApplicationSectionNames({\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n }).includes(sectionName);\n\n const isCreditAndCriminalSection = getCreditAndCriminalSectionNames({\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n }).includes(sectionName);\n\n const isDocumentationSection = getDocumentationSectionNames({\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n }).includes(sectionName);\n\n switch (true) {\n case isApplicationSection:\n return SECTION_NAMES.APPLICATION;\n case isCreditAndCriminalSection:\n return SECTION_NAMES.CREDIT_AND_CRIMINAL;\n case isDocumentationSection:\n return SECTION_NAMES.DOCUMENTATION;\n default:\n return null;\n }\n};\n\nconst getSectionParentPath = (\n sectionName: SectionNames,\n isPrimaryProspect: boolean,\n isUnInvitedSecondaryUser: boolean,\n) => {\n const sectionParentName = getSectionParentName(\n sectionName,\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n );\n\n return SECTION_TO_PATH_MAP[sectionParentName] ?? null;\n};\n\nexport const getSectionNamesFromParent = (\n parentSectionName: SectionParentNames,\n isPrimaryProspect: boolean,\n isUnInvitedSecondaryUser: boolean,\n): Array => {\n switch (parentSectionName) {\n case SECTION_NAMES.APPLICATION:\n return getApplicationSectionNames({\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n });\n case SECTION_NAMES.CREDIT_AND_CRIMINAL:\n return getCreditAndCriminalSectionNames({\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n });\n case SECTION_NAMES.DOCUMENTATION:\n return getDocumentationSectionNames({\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n });\n default:\n return null;\n }\n};\n\nexport const getStepURLs = ({\n steps,\n sectionName,\n baseURL,\n isPrimaryUser,\n isUnInvitedSecondaryUser,\n}) => {\n const { required: requiredSteps } = getRequiredSteps({\n currentSectionProgressSteps: steps,\n });\n const currentStep = getCurrentStep({\n requiredSteps,\n });\n const nextStep = getNextStep({ requiredSteps });\n const previousStep = getPreviousStep({\n requiredSteps,\n });\n\n const currentPath = currentStep?.path ?? null;\n const nextPath = nextStep?.path ?? null;\n let previousPath = previousStep?.path ?? null;\n\n if (!previousPath) {\n const parentSectionPath = getSectionParentPath(\n sectionName,\n isPrimaryUser,\n isUnInvitedSecondaryUser,\n );\n\n if (parentSectionPath) {\n previousPath = parentSectionPath;\n }\n }\n\n return {\n previousURL: previousPath ? `${baseURL}/${previousPath}` : null,\n nextURL: nextPath ? `${baseURL}/${nextPath}` : null,\n currentURL: currentPath ? `${baseURL}/${currentPath}` : null,\n };\n};\n\nexport const determineSectionsProgressUpdate = ({\n currentSectionProgress,\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n sectionName,\n sectionsProgress,\n update,\n}: {\n currentSectionProgress: SectionCompletionStatus,\n isPrimaryProspect: boolean,\n isUnInvitedSecondaryUser: boolean,\n sectionName: SectionNames,\n sectionsProgress: SectionsProgress,\n update: SectionCompletionStatus,\n}) => {\n let updatedCurrentSectionProgress = {\n ...currentSectionProgress,\n ...update,\n isComplete: Boolean(update.progress === 100),\n };\n\n const updatedSectionProgress = {\n ...sectionsProgress,\n [sectionName]: updatedCurrentSectionProgress,\n };\n\n const childSectionNames = getSectionNamesFromParent(\n currentSectionProgress.parentName,\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n );\n\n const childSectionsProgressArray = childSectionNames.map(\n (childSectionName) =>\n updatedSectionProgress[childSectionName]?.progress ?? 0,\n );\n const parentProgress = getProgressFromProgressArray(\n childSectionsProgressArray,\n );\n\n updatedSectionProgress[currentSectionProgress.parentName].progress =\n parentProgress;\n updatedSectionProgress[currentSectionProgress.parentName].isComplete =\n Boolean(parentProgress === 100);\n\n return updatedSectionProgress;\n};\n\nexport const hasInitialStepsChanged = (\n initialSteps: SectionSteps,\n currentSteps: SectionSteps,\n): boolean => {\n // Check if the number of steps is different\n if (initialSteps.length !== currentSteps.length) {\n return true;\n }\n\n // Iterate through each step and compare the required property\n for (let i = 0; i < initialSteps.length; i++) {\n if (initialSteps[i].complete !== currentSteps[i].complete) {\n return true;\n }\n if (initialSteps[i].required !== currentSteps[i].required) {\n return true;\n }\n }\n\n // If no differences found, return false\n return false;\n};\n\nexport const mergeInitialAndCurrentSteps = (\n initialSteps: SectionSteps,\n currentSteps: SectionSteps,\n): SectionSteps => {\n const steps = [];\n\n currentSteps.forEach((step) => {\n const initialStep = initialSteps.find(\n (initialStep) => initialStep.path === step.path,\n );\n\n if (initialStep) {\n steps.push({ ...step, required: initialStep.required });\n }\n });\n\n return steps;\n};\n\nexport const getUpdatedSteps = ({\n currentSectionProgress,\n effectMode,\n initialSteps,\n isPrimaryProspect,\n isSectionsProgressLoggingEnabled,\n isUnInvitedSecondaryUser,\n requiredSteps,\n sectionName,\n sectionsProgress,\n}): {\n updatedSteps: SectionSteps,\n updatedSectionsProgress: SectionsProgress,\n} => {\n if (isSectionsProgressLoggingEnabled) {\n console.group(`INITIALIZE SECTION STEPS: ${sectionName}`);\n }\n\n const values = {\n steps: currentSectionProgress.steps,\n currentSectionProgress,\n sectionsProgress,\n requiredSteps,\n };\n\n const hasExistingSectionProgressSteps = Boolean(values.steps.length);\n\n const shouldUpdateExistingSteps = hasExistingSectionProgressSteps\n ? hasInitialStepsChanged(initialSteps, values.steps)\n : false;\n\n if (!shouldUpdateExistingSteps && hasExistingSectionProgressSteps) {\n if (isSectionsProgressLoggingEnabled)\n console.log('Has existing steps and no changes', {\n initialSteps,\n currentSteps: values.steps,\n });\n\n if (!requiredSteps.required.length) {\n if (isSectionsProgressLoggingEnabled) console.log('Set existing steps');\n\n return {\n updatedSteps: values.steps,\n updatedSectionsProgress: null,\n };\n }\n\n if (isSectionsProgressLoggingEnabled) console.groupEnd();\n\n return !effectMode\n ? {\n updatedSteps: values.steps,\n updatedSectionsProgress: null,\n }\n : {\n updatedSteps: null,\n updatedSectionsProgress: null,\n };\n }\n\n let sectionsProgressUpdate: SectionsProgress = {};\n\n if (shouldUpdateExistingSteps) {\n // update existing completion status\n sectionsProgressUpdate = {\n ...values.sectionsProgress,\n [sectionName]: {\n ...values.currentSectionProgress,\n steps: mergeInitialAndCurrentSteps(initialSteps, values.steps),\n },\n };\n if (isSectionsProgressLoggingEnabled) console.log('Update existing steps');\n } else {\n // add new completion status\n if (isSectionsProgressLoggingEnabled)\n console.log('Add new section progress with initial steps');\n sectionsProgressUpdate = {\n ...sectionsProgress,\n [sectionName]: {\n name: sectionName,\n parentName: getSectionParentName(\n sectionName,\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n ),\n progress: 1,\n isComplete: false,\n steps: initialSteps,\n },\n };\n\n // add parent if it doesn't exist\n const sectionParentName = getSectionParentName(\n sectionName,\n isPrimaryProspect,\n isUnInvitedSecondaryUser,\n );\n if (!sectionsProgressUpdate[sectionParentName]) {\n sectionsProgressUpdate[sectionParentName] = {\n name: sectionParentName,\n progress: 1,\n isComplete: false,\n };\n }\n }\n\n if (isSectionsProgressLoggingEnabled) {\n console.log('Initial Steps:', initialSteps);\n console.log('Section Progress Update:', sectionsProgressUpdate);\n }\n\n if (isSectionsProgressLoggingEnabled) {\n console.groupEnd();\n console.log('');\n }\n\n return {\n updatedSteps: sectionsProgressUpdate[sectionName].steps,\n updatedSectionsProgress: sectionsProgressUpdate,\n };\n};\n\nexport const getCompleteStep = ({\n currentSteps,\n isSectionsProgressLoggingEnabled,\n stepName,\n updatedSteps,\n}: {\n currentSteps: SectionSteps,\n isSectionsProgressLoggingEnabled: boolean,\n stepName: SectionNames | Array,\n updatedSteps: SectionSteps,\n}): {\n update: SectionCompletionStatus,\n stepsUpdate: SectionSteps,\n} => {\n const stepNamesToComplete = Array.isArray(stepName) ? stepName : [stepName];\n\n let stepsUpdate = updatedSteps ?? currentSteps;\n\n if (isSectionsProgressLoggingEnabled) {\n console.group('COMPLETE STEP');\n console.log({\n currentSteps,\n stepName,\n updatedSteps,\n });\n }\n\n if (!Boolean(stepsUpdate?.length)) {\n if (isSectionsProgressLoggingEnabled) {\n console.log('No steps to complete');\n console.groupEnd();\n console.log('');\n }\n\n return {\n update: null,\n stepsUpdate: null,\n };\n }\n\n for (const currentStepName of stepNamesToComplete) {\n stepsUpdate = stepsUpdate.map((step) =>\n step.name === currentStepName ? { ...step, complete: true } : step,\n );\n }\n\n const { required, completed } = getRequiredSteps({\n currentSectionProgressSteps: stepsUpdate,\n isSectionsProgressLoggingEnabled,\n });\n\n const progress = completionPercentage(completed.length, required.length);\n\n const update: SectionCompletionStatus = {\n progress: isNaN(progress) ? 0 : progress,\n steps: stepsUpdate,\n };\n\n if (isSectionsProgressLoggingEnabled) {\n console.log('Complete Step(s):', {\n stepName: stepNamesToComplete,\n stepsUpdate,\n update,\n });\n console.groupEnd();\n console.log('');\n }\n\n return {\n update,\n stepsUpdate,\n };\n};\n\nexport const getIncompleteStep = ({\n currentSectionProgress,\n isSectionsProgressLoggingEnabled,\n requiredSteps,\n stepName,\n}: {\n currentSectionProgress: SectionCompletionStatus,\n isSectionsProgressLoggingEnabled: boolean,\n requiredSteps: {\n completed: SectionSteps,\n required: SectionSteps,\n },\n stepName: SectionNames,\n}): SectionCompletionStatus => {\n // Exclude the step marked as incomplete\n const updatedCompletedSteps = requiredSteps.completed.filter(\n (step) => step.name !== stepName,\n );\n\n const isFirstStep = stepName === currentSectionProgress.steps[0]?.name;\n\n const progress = completionPercentage(\n updatedCompletedSteps.length,\n requiredSteps.required.length,\n );\n\n const update: SectionCompletionStatus = {\n progress: isNaN(progress)\n ? 0\n : isFirstStep && progress === 0\n ? 1\n : progress,\n steps: currentSectionProgress.steps.map((step) =>\n step.name === stepName ? { ...step, complete: false } : step,\n ),\n };\n\n if (isSectionsProgressLoggingEnabled) {\n console.log('In-Complete Step:', {\n stepName,\n updatedCompletedSteps,\n update,\n });\n }\n\n return update;\n};\n","import { useEffect, useState, useContext } from 'react';\nimport axios from 'axios';\n\nimport { AppContext } from 'contexts/AppContext';\nimport { UserContext } from 'contexts/UserContext';\nimport { getHouseholdMemberStatus } from 'services/userService';\n\nconst DEFAULT_TYPE = 'prospect';\nconst DEFAULT_STATUS = 'Not Started';\n\nconst useAsyncHouseholdMemberStatus = setError => {\n const [ status, setStatus ] = useState({ \n isLoading: true \n });\n const { organizationId, propertyId } = useContext(AppContext);\n const {\n userProfile: {\n customerId,\n householdId,\n isProspect,\n },\n } = useContext(UserContext);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n let subscribed = true;\n\n const fetchStatus = async () => {\n const { token } = source;\n const options = { cancelToken: token };\n\n const response = await getHouseholdMemberStatus({\n organizationId,\n propertyId,\n customerId,\n householdId,\n }, options);\n\n if (subscribed) {\n if (response.error) {\n setError(`[${response.status}] There was a problem retrieving your member status`);\n } else {\n const { type, status, areFeesApplied } = response;\n setStatus({\n isLoading: false,\n type,\n status,\n areFeesApplied,\n });\n }\n }\n };\n\n if (customerId && householdId) {\n fetchStatus();\n }\n if (isProspect === true) {\n setStatus({\n isLoading: false,\n type: DEFAULT_TYPE,\n status: DEFAULT_STATUS,\n areFeesApplied: false,\n });\n }\n\n return () => {\n subscribed = false;\n };\n }, [organizationId, propertyId, customerId, householdId, isProspect, setError]);\n\n return status;\n};\n\nexport default useAsyncHouseholdMemberStatus;\n","import { useMutation } from 'react-query';\nimport { validateEmail, validatePhoneNumber } from 'services/validations';\n\nexport const useAsyncValidateEmail = () => {\n return useMutation(\n async (email) => {\n if (!email) {\n throw new Error('The email is empty');\n }\n return await validateEmail({ email });\n },\n {\n onSuccess: (response) => {\n return response;\n },\n onError: (error) => {\n return error;\n },\n },\n );\n};\n\nexport const useAsyncValidatePhone = () => {\n return useMutation(\n async (phoneNumber) => {\n if (!phoneNumber) {\n throw new Error('The Phone number is empty');\n }\n return await validatePhoneNumber({ phoneNumber });\n },\n {\n onSuccess: (response) => {\n return response;\n },\n onError: (error) => {\n return error;\n },\n },\n );\n};\n","import { useContext } from 'react';\nimport { AppContext } from 'contexts/AppContext';\n\nconst useBaseURL = () => {\n const { organizationId, propertyId } = useContext(AppContext);\n return `/${organizationId}/${propertyId}`;\n};\n\nexport default useBaseURL;\n","// @flow\nimport { useCallback } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useToast } from '@fortress-technology-solutions/fortress-component-library/contexts';\n\ntype Severity = 'info' | 'warning' | 'success' | 'error';\n\nconst useIntlToast = () => {\n const { showToast } = useToast();\n const intl = useIntl();\n\n return useCallback(\n (severity: Severity, intlMessageId, intlValues) =>\n showToast(\n intl.formatMessage({ id: intlMessageId }, intlValues),\n severity,\n ),\n [intl, showToast],\n );\n};\n\nexport default useIntlToast;\n","import { useHouseholdMembersContext } from 'contexts/HouseholdMembersContext';\n\nconst useIsUnInvitedSecondaryUser = () => {\n const { isUnInvitedSecondaryUser } = useHouseholdMembersContext();\n\n return isUnInvitedSecondaryUser;\n};\n\nexport default useIsUnInvitedSecondaryUser;\n","import { useMemo } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\n\nconst useReactHookFormProps = (\n { defaultValues, mode, shouldUnregister } = {\n defaultValues: {},\n mode: 'onBlur',\n },\n) => {\n const {\n handleSubmit,\n control,\n getValues,\n getFieldState,\n formState: { errors, isValid, isDirty, isSubmitting },\n setError,\n setValue,\n clearErrors,\n trigger,\n reset,\n unregister,\n watch,\n } = useForm({\n defaultValues,\n mode,\n shouldUnregister,\n });\n\n return useMemo(\n () => ({\n Controller,\n control,\n getValues,\n setError,\n clearErrors,\n errors,\n getFieldState,\n handleSubmit,\n isValid,\n isDirty,\n isSubmitting,\n setValue,\n trigger,\n reset,\n unregister,\n watch,\n }),\n [\n clearErrors,\n control,\n errors,\n getFieldState,\n getValues,\n handleSubmit,\n isDirty,\n isSubmitting,\n isValid,\n setError,\n setValue,\n trigger,\n reset,\n unregister,\n watch,\n ],\n );\n};\n\nexport default useReactHookFormProps;\n","import { useCallback, useMemo } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useAsyncValidateEmail } from 'hooks/useAsyncValidations';\n\nconst useValidateEmail = () => {\n const intl = useIntl();\n const { mutateAsync: validateEmail } = useAsyncValidateEmail();\n\n const validate = useCallback(\n async (value) => {\n const emailPattern = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i;\n if (!emailPattern.test(value)) {\n return false;\n }\n\n const emailIsValid = await validateEmail(value);\n if (emailIsValid) {\n return true;\n }\n\n return intl.formatMessage({\n id: 'afforda.formHouseholdProfile.emailInvalid',\n });\n },\n [intl, validateEmail],\n );\n\n const debouncedValidate = useMemo(() => {\n let timeout;\n return (value) =>\n new Promise((resolve) => {\n clearTimeout(timeout);\n timeout = setTimeout(async () => {\n const result = await validate(value);\n resolve(result);\n }, 300);\n });\n }, [validate]);\n\n return debouncedValidate;\n};\n\nexport default useValidateEmail;\n","import { useCallback, useMemo, useRef } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useAsyncValidatePhone } from 'hooks/useAsyncValidations';\n\nconst useValidatePhoneNumber = () => {\n const intl = useIntl();\n const { mutateAsync: validatePhone } = useAsyncValidatePhone();\n const cache = useMemo(() => new Map(), []);\n const pendingRequests = useRef(new Map());\n\n return useCallback(\n async (value) => {\n if (value.length !== 10) {\n return false;\n }\n\n if (cache.has(value)) {\n return cache.get(value);\n }\n\n // If there's already a pending request for this value, return its promise\n if (pendingRequests.current.has(value)) {\n return pendingRequests.current.get(value);\n }\n\n // Create new promise and store it\n const promise = validatePhone(value).then(({ isValid }) => {\n pendingRequests.current.delete(value);\n\n if (isValid) {\n cache.set(value, true);\n return true;\n }\n\n const errorMessage = intl.formatMessage({\n id: 'afforda.formHouseholdProfile.phoneNumberInvalid',\n });\n cache.set(value, errorMessage);\n return errorMessage;\n });\n\n pendingRequests.current.set(value, promise);\n return promise;\n },\n [cache, intl, validatePhone],\n );\n};\n\nexport default useValidatePhoneNumber;\n","import React from 'react';\nimport SECTION_NAMES from 'constants/sectionNames';\nimport { useSectionsProgressContext } from 'contexts/SectionsProgressContext';\nimport useAffordaPortalDetailsQuery from 'hooks/queries/useAffordaPortalDetailsQuery';\nimport { useHouseholdMembersContext } from 'contexts/HouseholdMembersContext';\nimport useFormStateManager from 'hooks/affordaPortalFormState/useFormStateManager';\nimport useAsyncPrequalifyOptions from 'pages/ChooseHousehold/hooks';\nimport { mapIncomeTotals } from 'pages/AffordaWagesAndIncome/submit/mapIncomeTotals';\nimport useAffordaHouseholdMembers from 'pages/AffordaHousehold/AffordaHousehold.Members.hooks';\n\nconst useAffordaApplication = () => {\n const { data: affordaPortalDetails, isLoading } =\n useAffordaPortalDetailsQuery();\n\n const { isPrimaryUser, filteredMembersWithPendingQualifications } =\n useHouseholdMembersContext();\n\n const { formState: welcomeAndQualifyForm } = useFormStateManager(\n SECTION_NAMES.WELCOME_AND_QUALIFY,\n );\n\n const { formState: wagesAndIncomeForm } = useFormStateManager(\n SECTION_NAMES.WAGES_AND_INCOME,\n );\n\n const { formState: householdForm, updateForm: setHouseholdForm } =\n useFormStateManager(SECTION_NAMES.HOUSEHOLD);\n\n const { additionalMinorsCount } = useAffordaHouseholdMembers({\n householdForm,\n setHouseholdForm,\n });\n\n const { formState: assetForm } = useFormStateManager(SECTION_NAMES.ASSETS);\n // eslint-disable-next-line no-unused-vars\n const [propParamError, setPropParamError] = React.useState('');\n\n const prequalifyOptions = useAsyncPrequalifyOptions(setPropParamError);\n\n const {\n sectionsProgress: {\n [SECTION_NAMES.HOUSEHOLD]: householdSectionProgress,\n [SECTION_NAMES.WAGES_AND_INCOME]: wagesAndIncomeSectionProgress,\n },\n } = useSectionsProgressContext();\n\n const termsAndConditionsFlag =\n affordaPortalDetails?.termsAndConditionsAgreedAt;\n\n const pendingQualifications = React.useMemo(() => {\n if (!filteredMembersWithPendingQualifications?.length) return [];\n\n // First, collect all members with their incomplete qualifications\n const memberIssues = filteredMembersWithPendingQualifications.reduce(\n (acc, memberQualifications) => {\n const { completedIncomeForm, completedAssetForm, firstName, lastName } =\n memberQualifications?.qualifications || {};\n\n // Determine which forms are incomplete\n const incompleteIncome = completedIncomeForm === false;\n const incompleteAssets = completedAssetForm === false;\n\n const issueType =\n incompleteIncome && incompleteAssets\n ? 'afforda.application.qualification.incompleteIncomeAndAssets'\n : incompleteIncome\n ? 'afforda.application.qualification.incompleteIncome'\n : 'afforda.application.qualification.incompleteAssets';\n\n // Group by issue type\n if (!acc[issueType]) {\n acc[issueType] = { members: [], text: issueType };\n }\n acc[issueType].members.push(`${firstName} ${lastName}`);\n\n return acc;\n },\n {},\n );\n\n // Convert to array format\n return Object.values(memberIssues);\n }, [filteredMembersWithPendingQualifications]);\n\n const isIncomeAssetsNoEligible = React.useMemo(() => {\n if (\n pendingQualifications?.length ||\n !assetForm ||\n !wagesAndIncomeForm ||\n !prequalifyOptions?.length\n )\n return false;\n\n const { totalAssets } = assetForm;\n\n const totalIncome = mapIncomeTotals(wagesAndIncomeForm);\n\n const prequalifyLimit =\n prequalifyOptions[\n welcomeAndQualifyForm?.numberOfPeopleInUnit +\n (additionalMinorsCount ?? 0) -\n 1\n ]?.value;\n\n if (prequalifyLimit === 0) return false;\n\n const totalIncomeAndAssets = totalIncome + totalAssets;\n\n return totalIncomeAndAssets > prequalifyLimit;\n }, [\n assetForm,\n pendingQualifications?.length,\n wagesAndIncomeForm,\n additionalMinorsCount,\n prequalifyOptions,\n welcomeAndQualifyForm,\n ]);\n\n const isWelcomeAndQualifyUneligible = React.useMemo(() => {\n const welcomeNumberOfPeople = welcomeAndQualifyForm?.numberOfPeopleInUnit\n ?.length\n ? +welcomeAndQualifyForm?.numberOfPeopleInUnit\n : 0;\n\n if (prequalifyOptions?.length < welcomeNumberOfPeople) return true;\n\n if (welcomeNumberOfPeople === 0 || !prequalifyOptions) return false;\n\n const prequalifyLimit =\n prequalifyOptions[\n welcomeNumberOfPeople + (additionalMinorsCount ?? 0) - 1\n ]?.value;\n\n if (prequalifyLimit === 0) return false;\n\n const welcomeTotalIncome = welcomeAndQualifyForm?.totalAnnualHouseholdIncome\n ?.length\n ? +welcomeAndQualifyForm?.totalAnnualHouseholdIncome\n : 0;\n\n return welcomeTotalIncome > prequalifyLimit;\n }, [\n welcomeAndQualifyForm?.numberOfPeopleInUnit,\n welcomeAndQualifyForm?.totalAnnualHouseholdIncome,\n prequalifyOptions,\n additionalMinorsCount,\n ]);\n\n return {\n assetsDisabled: !wagesAndIncomeSectionProgress?.isComplete,\n isLoading,\n isPrimaryApplicant: isPrimaryUser,\n pendingQualifications,\n termsAndConditionsFlag,\n wagesAndIncomeDisabled:\n !householdSectionProgress?.isComplete && isPrimaryUser,\n isWelcomeAndQualifyUneligible,\n isIncomeAssetsNoEligible,\n };\n};\n\nexport default useAffordaApplication;\n","// @flow\nimport { useContext } from 'react';\nimport { useMutation, MutationOptions } from 'react-query';\nimport { AppContext } from 'contexts/AppContext';\nimport { updateApplication } from 'services/applicationService';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\n\nconst useUpdateApplicationMutation = ({\n options = {},\n}: {\n options: MutationOptions,\n} = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const { refetch } = useUserProfileQuery();\n return useMutation(\n async (application) => {\n const {\n data: { applicationId },\n } = await refetch();\n\n await updateApplication({\n organizationId,\n propertyId,\n applicationId,\n application: { id: applicationId, ...application },\n });\n },\n { ...options, enabled: Boolean(organizationId && propertyId) },\n );\n};\n\nexport default useUpdateApplicationMutation;\n","import { put } from 'utils/api';\n\nexport const updateApplication = async ({\n organizationId,\n propertyId,\n applicationId,\n application,\n}) => {\n const response = await put(\n `/${organizationId}/${propertyId}/applications/${applicationId}`,\n { client: 'portal', propertyId, ...application },\n );\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n","import { get } from 'utils/api';\n\nexport const getApplicationStatuses = async (options = {}) => {\n const url = `/applicationStatus`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n","import { useQuery } from 'react-query';\nimport useAbortController from 'hooks/useAbortController';\nimport { getApplicationStatuses } from 'services/applicationStatus';\n\nconst useApplicationStatusQuery = ({ options } = {}) => {\n const abortControllerOptions = useAbortController();\n const queryKey = ['getApplicationStatuses'];\n\n return useQuery(\n queryKey,\n () => getApplicationStatuses(abortControllerOptions),\n {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchInterval: false,\n refetchOnSettled: false,\n retry: false,\n ...options,\n },\n );\n};\n\nexport default useApplicationStatusQuery;\n","import React, { useCallback, useLayoutEffect, useMemo, useState } from 'react';\nimport useReactHookFormProps from 'hooks/useReactHookFormProps';\nimport useCreateHouseholdAndMembers from 'pages/AffordaHousehold/hooks.useCreateHouseholdAndMembers';\nimport useUpdateApplicationMutation from 'hooks/mutations/useUpdateApplicationMutation';\nimport useApplicationStatusQuery from 'hooks/queries/useApplicationStatusQuery';\nimport { FormattedMessage } from 'react-intl';\nimport { YES_NO_OPTIONS } from 'utils/constants';\nimport { useHouseholdMembersContext } from 'contexts/HouseholdMembersContext';\nimport useIntlToast from 'hooks/useIntlToast';\nimport { HOUSEHOLD_PATHS } from 'constants/paths';\n\nconst booleanOrNullToYesNo = (value) => {\n if (value === true) return 'yes';\n if (value === false) return 'no';\n return '';\n};\n\nexport const determineIfStudentIsDisqualified = (studentStatus) => {\n if (!studentStatus) return false;\n\n const studentStatusValues = Array.isArray(studentStatus)\n ? studentStatus\n : Object.values(studentStatus ?? {});\n return studentStatusValues.length\n ? studentStatusValues.every((question) => question === false)\n : false;\n};\n\nexport const useIsStudentDisqualified = () => {\n const { primaryHouseholdMember: primaryMember } =\n useHouseholdMembersContext();\n\n const hasData = Boolean(primaryMember && Object.keys(primaryMember).length);\n\n if (!hasData) return false;\n\n const studentStatuses = primaryMember\n ? [\n primaryMember.TANFAssistance,\n primaryMember.jobTrainingProgram,\n primaryMember.fosterProgram,\n primaryMember.marriedJointReturn,\n primaryMember.singleParentDependantChild,\n ]\n : null;\n\n return determineIfStudentIsDisqualified(studentStatuses);\n};\n\nconst useFullTimeStudent = ({\n isActive,\n householdForm,\n setHouseholdForm,\n handleCompleteStep,\n}) => {\n const { studentStatus } = householdForm;\n const showIntlToast = useIntlToast();\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const defaultValues = useMemo(() => {\n return {\n marriedJointReturn: booleanOrNullToYesNo(\n studentStatus?.marriedJointReturn,\n ),\n singleParentDependantChild: booleanOrNullToYesNo(\n studentStatus?.singleParentDependantChild,\n ),\n jobTrainingProgram: booleanOrNullToYesNo(\n studentStatus?.jobTrainingProgram,\n ),\n fosterProgram: booleanOrNullToYesNo(studentStatus?.fosterProgram),\n TANFAssistance: booleanOrNullToYesNo(studentStatus?.TANFAssistance),\n };\n }, [studentStatus]);\n\n const ReactHookFormProps = useReactHookFormProps({\n defaultValues,\n mode: 'onChange',\n });\n\n const { control, isValid, getValues, reset } = ReactHookFormProps;\n\n const isStudentDisqualified = useIsStudentDisqualified();\n\n const { data: applicationStatuses } = useApplicationStatusQuery();\n const { createHouseholdAndMembers } = useCreateHouseholdAndMembers({\n householdForm,\n });\n const { mutateAsync: updateApplicationMutationMutateAsync } =\n useUpdateApplicationMutation();\n\n const fields = useMemo(() => {\n return [\n {\n variant: 'buttonGroup',\n label: (\n \n ),\n name: 'marriedJointReturn',\n rules: {\n required: true,\n },\n options: YES_NO_OPTIONS,\n GridProps: {\n xs: 12,\n },\n },\n {\n variant: 'buttonGroup',\n label: (\n \n ),\n name: 'singleParentDependantChild',\n rules: {\n required: ({ getValues }) => getValues('marriedJointReturn') === 'no',\n },\n watchFields: ['marriedJointReturn'],\n hidden: ({ getValues }) => getValues('marriedJointReturn') !== 'no',\n options: YES_NO_OPTIONS,\n GridProps: {\n xs: 12,\n },\n },\n {\n variant: 'buttonGroup',\n label: (\n \n ),\n name: 'jobTrainingProgram',\n rules: {\n required: ({ getValues }) =>\n getValues('singleParentDependantChild') === 'no',\n },\n GridProps: {\n xs: 12,\n },\n options: YES_NO_OPTIONS,\n\n watchFields: ['singleParentDependantChild'],\n hidden: ({ getValues }) =>\n getValues('singleParentDependantChild') !== 'no',\n },\n {\n variant: 'buttonGroup',\n label: (\n \n ),\n name: 'TANFAssistance',\n rules: {\n required: ({ getValues }) => getValues('jobTrainingProgram') === 'no',\n },\n options: YES_NO_OPTIONS,\n\n GridProps: {\n xs: 12,\n },\n watchFields: ['jobTrainingProgram'],\n hidden: ({ getValues }) => getValues('jobTrainingProgram') !== 'no',\n },\n {\n variant: 'buttonGroup',\n label: (\n \n ),\n name: 'fosterProgram',\n rules: {\n required: ({ getValues }) => getValues('TANFAssistance') === 'no',\n },\n options: YES_NO_OPTIONS,\n GridProps: {\n xs: 12,\n },\n watchFields: ['TANFAssistance'],\n hidden: ({ getValues }) => getValues('TANFAssistance') !== 'no',\n },\n ].map((field) => ({\n ...field,\n direction: { xs: 'column', sm: 'row' },\n }));\n }, []);\n\n const handleSubmit = useCallback(\n async (goToNextURL) => {\n const values = getValues();\n\n const studentStatus = Object.fromEntries(\n Object.entries(values).map(([key, value]) => [\n key,\n value === 'yes' ? true : value === 'no' ? false : null,\n ]),\n );\n\n setHouseholdForm(\n (prevState) => ({\n ...prevState,\n studentStatus,\n }),\n { fields, control },\n );\n\n const finalIsStudentDisqualified =\n determineIfStudentIsDisqualified(studentStatus);\n\n if (finalIsStudentDisqualified) {\n try {\n setIsSubmitting(true);\n const deniedApplicationStatusId = applicationStatuses.find(\n ({ name }) => name === 'Denied',\n )?.id;\n\n await createHouseholdAndMembers({ ...householdForm, studentStatus });\n await updateApplicationMutationMutateAsync({\n applicationStatusId: deniedApplicationStatusId,\n });\n\n showIntlToast(\n 'info',\n 'app.toast.info.notEligibleBasedOnStudentStatus',\n );\n\n handleCompleteStep([\n HOUSEHOLD_PATHS.FULL_TIME_STUDENT,\n HOUSEHOLD_PATHS.SUMMARY,\n ]);\n\n goToNextURL(finalIsStudentDisqualified);\n } catch {\n showIntlToast('error', 'app.toast.error.unableToCheckStudentStatus');\n } finally {\n setIsSubmitting(false);\n }\n } else {\n goToNextURL(finalIsStudentDisqualified);\n }\n },\n [\n handleCompleteStep,\n getValues,\n setHouseholdForm,\n fields,\n control,\n applicationStatuses,\n createHouseholdAndMembers,\n householdForm,\n updateApplicationMutationMutateAsync,\n showIntlToast,\n ],\n );\n\n useLayoutEffect(() => {\n if (isActive) {\n reset(defaultValues);\n }\n }, [defaultValues, isActive, reset]);\n\n return {\n ReactHookFormProps,\n fields,\n handleSubmit,\n isSubmitting,\n isFormValid: isValid,\n isStudentDisqualified,\n };\n};\n\nexport default useFullTimeStudent;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport moment from 'moment';\nimport HOUSEHOLD_DESIGNATION_CODES from 'constants/householdDesignationCodes';\nimport AFFORDABLE_RELATIONSHIPS from 'constants/affordableRelationships';\nimport APPLICANT_TYPES from 'constants/applicantTypes';\n\nexport const GridProps = {\n xs: 12,\n sm: 6,\n md: 6,\n};\n\nexport const NEW_ADULT_MEMBER = {\n applicantType: '',\n isPrimary: false,\n firstName: '',\n middleName: '',\n lastName: '',\n birthday: '',\n phoneNumber: '',\n householdDesignation: '',\n affordableRelationship: '',\n studentStatus: '',\n relationship: '',\n emailAddress: '',\n isOpen: true,\n};\n\nexport const NEW_MINOR_MEMBER = {\n applicantType: APPLICANT_TYPES.MINOR,\n firstName: '',\n lastName: '',\n birthday: '',\n householdDesignation: HOUSEHOLD_DESIGNATION_CODES.CHILD,\n legallyResponsible: [],\n affordableRelationship: AFFORDABLE_RELATIONSHIPS.CHILD,\n isOpen: true,\n};\n\nexport const FIELDS = ({\n id,\n memberId,\n isMinor,\n intl,\n validatePhoneNumber,\n validateEmail,\n}) => {\n return [\n {\n id,\n variant: 'text',\n label: (\n \n ),\n name: memberId ? `${memberId}.firstName` : 'firstName',\n rules: {\n required: true,\n },\n GridProps,\n },\n {\n id,\n variant: 'text',\n label: (\n \n ),\n name: memberId ? `${memberId}.lastName` : 'lastName',\n rules: {\n required: true,\n },\n GridProps,\n },\n {\n id,\n variant: 'date',\n label: (\n \n ),\n name: memberId ? `${memberId}.birthday` : 'birthday',\n disableFuture: true,\n openTo: 'year',\n helperText: '',\n defaultCalendarMonth: moment(2000, 'YYYY'),\n rules: {\n required: true,\n minDate: isMinor ? moment().subtract(18, 'years') : undefined,\n maxDate: !isMinor ? moment().subtract(18, 'years') : undefined,\n validate: (value) => {\n if (!moment(value).isValid()) {\n return intl.formatMessage({\n id: 'afforda.formHouseholdProfile.birthdayInvalid',\n });\n }\n // must be in the past\n if (moment(value).isAfter(moment())) {\n return intl.formatMessage({\n id: 'afforda.formHouseholdProfile.birthdayPast',\n });\n }\n\n if (isMinor) {\n // must be less than 18 years old\n if (moment().diff(moment(value), 'years') >= 18) {\n return intl.formatMessage({\n id: 'afforda.formHouseholdProfile.birthdayUnder18',\n });\n }\n }\n },\n },\n GridProps,\n },\n ...(!isMinor\n ? [\n {\n id,\n variant: 'phone',\n name: memberId ? `${memberId}.phoneNumber` : 'phoneNumber',\n label: ,\n GridProps: {\n ...GridProps,\n sm: 6,\n md: 6,\n },\n rules: {\n required: true,\n validate: validatePhoneNumber,\n },\n },\n {\n id,\n variant: 'email',\n name: memberId ? `${memberId}.emailAddress` : 'emailAddress',\n label: (\n \n ),\n GridProps: {\n ...GridProps,\n sm: 6,\n md: 6,\n },\n rules: {\n required: true,\n validate: validateEmail,\n },\n },\n ]\n : []),\n ];\n};\n","import { useCallback, useContext, useEffect, useMemo } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { faker } from '@faker-js/faker';\nimport { useIntl } from 'react-intl';\nimport moment from 'moment';\nimport { formatDateDB } from '@fortress-technology-solutions/fortress-component-library/utils';\nimport { UserContext } from 'contexts/UserContext';\nimport HOUSEHOLD_DESIGNATION_CODES from 'constants/householdDesignationCodes';\nimport {\n NEW_ADULT_MEMBER,\n NEW_MINOR_MEMBER,\n FIELDS,\n} from './AffordaHousehold.Members.constants';\nimport APPLICANT_TYPES from 'constants/applicantTypes';\nimport AFFORDABLE_RELATIONSHIPS from 'constants/affordableRelationships';\nimport { ADDITIONAL_MINORS_FIELD_NAMES } from 'pages/AffordaHousehold/constants';\nimport {\n getPrimaryMember,\n isMinor as checkIsMinor,\n} from 'pages/AffordaHousehold/utils';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport useValidatePhoneNumber from 'hooks/useValidatePhoneNumber';\nimport useValidateEmail from 'hooks/useValidateEmail';\nimport useReactHookFormProps from 'hooks/useReactHookFormProps';\nimport { IS_DEVELOPMENT } from 'constants/environment';\nimport { useHouseholdMembersContext } from 'contexts/HouseholdMembersContext';\n\nconst {\n EXPECTING_MINORS_TYPE,\n PREGNANCY,\n PREGNANCY_COUNT,\n ADOPTION,\n ADOPTION_COUNT,\n GUARDIANSHIP,\n GUARDIANSHIP_COUNT,\n NOT_APPLICABLE,\n} = ADDITIONAL_MINORS_FIELD_NAMES;\n\nexport const useMemberCount = (members) => {\n return useMemo(() => {\n let minorsCount = 0;\n let adultsCount = 0;\n\n members?.forEach((member) => {\n if (member.applicantType === APPLICANT_TYPES.MINOR) {\n minorsCount++;\n } else {\n adultsCount++;\n }\n });\n\n return {\n minorsCount,\n adultsCount,\n hasMinors: minorsCount > 0,\n has2Adults: adultsCount === 2,\n hasMoreThanOneAdult: adultsCount > 1,\n };\n }, [members]);\n};\n\nconst getSumOfAdditionalMinors = (additionalMinors) => {\n return (\n (additionalMinors?.[PREGNANCY_COUNT] ?? 0) +\n (additionalMinors?.[ADOPTION_COUNT] ?? 0) +\n (additionalMinors?.[GUARDIANSHIP_COUNT] ?? 0)\n );\n};\n\nconst getDefaultValues = (members = []) => {\n return members.reduce((object, member) => {\n object[member.id] = {\n id: member.id,\n firstName: member.firstName ?? '',\n lastName: member.lastName ?? '',\n emailAddress: member.emailAddress ?? '',\n phoneNumber: !!member?.phoneNumber?.length\n ? member?.phoneNumber\n : IS_DEVELOPMENT\n ? '9099999999'\n : '',\n birthday: member.birthday\n ? moment(member.birthday)\n : IS_DEVELOPMENT\n ? moment('01-01-1990')\n : null,\n };\n\n return object;\n }, {});\n};\n\nconst useAffordaHouseholdMembers = ({\n householdForm: { members, additionalMinors },\n setHouseholdForm,\n handleUpdateMember,\n}) => {\n const intl = useIntl();\n const {\n userProfile: { firstName, lastName, phoneNumber },\n authUser: { prospect, customer },\n } = useContext(UserContext);\n const { data: { householdId } = {}, isFetched } = useUserProfileQuery();\n const { householdMembers } = useHouseholdMembersContext();\n const hasSubmitted = Boolean(householdMembers?.length);\n\n const emailAddress = prospect?.emailAddress ?? customer?.emailAddress;\n\n const defaultValues = useMemo(() => getDefaultValues(members), [members]);\n\n const ReactHookFormProps = useReactHookFormProps({\n defaultValues,\n mode: 'onChange',\n });\n\n const { control, getValues, isValid, reset } = ReactHookFormProps;\n\n // Add this effect to reset the form when defaultValues change\n useEffect(() => {\n reset(defaultValues);\n }, [defaultValues, reset]);\n\n useEffect(() => {\n if (!isFetched) return;\n // if householdForm is not initialized, set it\n\n const shouldInitializeMembers = !members?.length;\n\n if (shouldInitializeMembers) {\n const initialMembers = [\n // add primary member / portal account holder\n {\n ...NEW_ADULT_MEMBER,\n isPrimary: true,\n id: uuid(),\n applicantType: APPLICANT_TYPES.FINANCIAL_LEASE_SIGNER,\n householdDesignation: HOUSEHOLD_DESIGNATION_CODES.HEAD_OF_HOUSEHOLD,\n affordableRelationship: AFFORDABLE_RELATIONSHIPS.HEAD_OF_HOUSEHOLD,\n firstName,\n lastName,\n emailAddress,\n phoneNumber,\n isValid: false,\n },\n ];\n setHouseholdForm((prevState) => ({\n ...prevState,\n members: initialMembers,\n }));\n\n reset(getDefaultValues(initialMembers));\n }\n }, [\n emailAddress,\n isFetched,\n firstName,\n lastName,\n phoneNumber,\n setHouseholdForm,\n householdId?.length,\n members?.length,\n reset,\n ]);\n\n // if there is only one member in the household,\n // set them as the head of household\n useEffect(() => {\n if (\n members?.length === 1 &&\n members[0]?.householdDesignation !==\n HOUSEHOLD_DESIGNATION_CODES.HEAD_OF_HOUSEHOLD\n ) {\n setHouseholdForm((prevState) => {\n const members = prevState.members.map((member) => ({\n ...member,\n applicantType: APPLICANT_TYPES.FINANCIAL_LEASE_SIGNER,\n householdDesignation: HOUSEHOLD_DESIGNATION_CODES.HEAD_OF_HOUSEHOLD,\n affordableRelationship: AFFORDABLE_RELATIONSHIPS.HEAD_OF_HOUSEHOLD,\n }));\n return { ...prevState, members };\n });\n }\n }, [members, setHouseholdForm]);\n\n const handleAddMember = useCallback(\n (applicantType) => {\n const isMinor = checkIsMinor({ applicantType });\n const newMember = isMinor ? NEW_MINOR_MEMBER : NEW_ADULT_MEMBER;\n setHouseholdForm((prevState) => {\n const values = getValues();\n const updatedMembers =\n prevState?.members.map((member) => ({\n ...member,\n ...(values?.[member?.id] ?? {}),\n isOpen: false,\n })) ?? [];\n\n updatedMembers.push({\n ...newMember,\n id: uuid(),\n applicantType,\n ...(IS_DEVELOPMENT && {\n firstName: faker.name.firstName(),\n lastName: faker.name.lastName(),\n birthday: isMinor ? '01-01-2016' : '01-01-1990',\n ...(!isMinor && {\n emailAddress: faker.internet.email(),\n phoneNumber: '9099999999',\n }),\n }),\n });\n return { ...prevState, members: updatedMembers };\n });\n },\n [getValues, setHouseholdForm],\n );\n\n const {\n hasMinors,\n minorsCount,\n adultsCount,\n has2Adults,\n hasMoreThanOneAdult,\n } = useMemberCount(members);\n\n const validateEmail = useValidateEmail();\n const validatePhoneNumber = useValidatePhoneNumber();\n\n const fields = useMemo(() => {\n return members?.reduce((object, member) => {\n const isMinor = checkIsMinor(member);\n object[member.id] = FIELDS({\n id: member.id,\n memberId: member.id,\n isMinor,\n intl,\n validateEmail,\n validatePhoneNumber,\n }).map((field) => ({\n id: member.id,\n ...field,\n // Ensure phone number fields have proper validation rules\n ...(field.name === 'phoneNumber' && {\n validate: validatePhoneNumber,\n required: 'Phone number is required',\n }),\n }));\n\n return object;\n }, {});\n }, [members, intl, validateEmail, validatePhoneNumber]);\n\n const handleSubmit = useCallback(() => {\n const values = getValues();\n setHouseholdForm(\n (prevState) => {\n const newMembers = prevState.members.map((prevMember) => {\n const memberUpdates = values[prevMember.id];\n return {\n ...prevMember,\n ...memberUpdates,\n birthday: formatDateDB(\n memberUpdates?.birthday ?? prevMember.birthday,\n ),\n };\n });\n\n return { ...prevState, members: newMembers };\n },\n { control, fields },\n );\n }, [control, fields, getValues, setHouseholdForm]);\n\n const additionalMinorsCount = useMemo(() => {\n if (hasSubmitted) {\n return getSumOfAdditionalMinors(\n getPrimaryMember(householdMembers)?.additionalMinors,\n );\n }\n\n if (additionalMinors?.[EXPECTING_MINORS_TYPE].includes(NOT_APPLICABLE))\n return 0;\n\n return additionalMinors?.[EXPECTING_MINORS_TYPE].some((minorType) =>\n [PREGNANCY, ADOPTION, GUARDIANSHIP].includes(minorType),\n )\n ? getSumOfAdditionalMinors(additionalMinors)\n : 0;\n }, [additionalMinors, hasSubmitted, householdMembers]);\n\n return {\n additionalMinorsCount,\n submittedHouseholdMembers: householdMembers,\n ReactHookFormProps,\n fields,\n members: members ?? [],\n handleUpdateMember,\n handleSubmit,\n handleAddMember,\n isValid,\n adultsCount,\n hasMinors,\n minorsCount,\n has2Adults,\n hasMoreThanOneAdult,\n };\n};\n\nexport default useAffordaHouseholdMembers;\n","// @flow\nimport PATHS, { HOUSEHOLD_PATHS } from 'constants/paths';\nimport { SectionSteps } from 'hooks/sectionsProgress/types';\n\nexport const BUTTON_GROUP_SX = {\n flexWrap: 'wrap',\n width: '100%',\n '& > button': {\n width: { xs: 'calc(100% - 4px)', sm: 'calc(50% - 4px)' },\n },\n};\n\nexport const ADDITIONAL_MINORS_FIELD_NAMES = {\n EXPECTING_MINORS_TYPE: 'expectingMinorsType',\n PREGNANCY: 'pregnancy',\n PREGNANCY_COUNT: 'pregnancyCount',\n PREGNANCY_DUE_DATE: 'pregnancyDueDate',\n ADOPTION: 'adoption',\n ADOPTION_COUNT: 'adoptionCount',\n ANTICIPATED_ADOPTION_DATE: 'anticipatedAdoptionDate',\n GUARDIANSHIP: 'guardianship',\n GUARDIANSHIP_COUNT: 'guardianshipCount',\n ANTICIPATED_GUARDIANSHIP_START_DATE: 'anticipatedGuardianshipStartDate',\n NOT_APPLICABLE: 'notApplicable',\n};\n\nexport const HOUSEHOLD_STEPS = ({\n hasMoreThanOneAdult,\n hasMinors,\n hasPartTimeStudent,\n isStudentDisqualified,\n}): SectionSteps => [\n {\n name: HOUSEHOLD_PATHS.MEMBERS,\n path: `${PATHS.HOUSEHOLD}/${HOUSEHOLD_PATHS.MEMBERS}`,\n required: true,\n },\n {\n name: HOUSEHOLD_PATHS.DESIGNATION,\n path: `${PATHS.HOUSEHOLD}/${HOUSEHOLD_PATHS.DESIGNATION}`,\n required: hasMoreThanOneAdult,\n },\n {\n name: HOUSEHOLD_PATHS.MARITAL_STATUS,\n path: `${PATHS.HOUSEHOLD}/${HOUSEHOLD_PATHS.MARITAL_STATUS}`,\n required: true,\n },\n {\n name: HOUSEHOLD_PATHS.MINOR_RELATIONSHIP,\n path: `${PATHS.HOUSEHOLD}/${HOUSEHOLD_PATHS.MINOR_RELATIONSHIP}`,\n required: hasMinors,\n },\n {\n name: HOUSEHOLD_PATHS.STUDENT_STATUS,\n path: `${PATHS.HOUSEHOLD}/${HOUSEHOLD_PATHS.STUDENT_STATUS}`,\n required: true,\n },\n {\n name: HOUSEHOLD_PATHS.FULL_TIME_STUDENT,\n path: `${PATHS.HOUSEHOLD}/${HOUSEHOLD_PATHS.FULL_TIME_STUDENT}`,\n required: !hasPartTimeStudent,\n }, // Only required if there are NO part-time students\n {\n name: HOUSEHOLD_PATHS.ADDITIONAL_MINORS,\n path: `${PATHS.HOUSEHOLD}/${HOUSEHOLD_PATHS.ADDITIONAL_MINORS}`,\n required: hasPartTimeStudent || isStudentDisqualified,\n },\n {\n name: HOUSEHOLD_PATHS.SUMMARY,\n path: `${PATHS.HOUSEHOLD}/${HOUSEHOLD_PATHS.SUMMARY}`,\n required: true,\n },\n {\n name: HOUSEHOLD_PATHS.INVITE,\n path: `${PATHS.HOUSEHOLD}/${HOUSEHOLD_PATHS.INVITE}`,\n required: hasMoreThanOneAdult,\n },\n];\n","// @flow\nimport { useContext } from 'react';\nimport { useMutation, MutationOptions } from 'react-query';\nimport { postHouseholdV2 } from 'services/householdService';\nimport { AppContext } from 'contexts/AppContext';\nimport { UserContext } from 'contexts/UserContext';\n\ntype Props = {\n options: MutationOptions,\n};\nconst useCreateHouseholdMutation = ({ options }: Props = {}) => {\n const {\n organizationId,\n propertyId,\n marketingInfo: { propertyClass },\n } = useContext(AppContext);\n const {\n userProfile: { portalUserId },\n } = useContext(UserContext);\n\n return useMutation(\n () => {\n return postHouseholdV2(\n organizationId,\n propertyId,\n portalUserId,\n propertyClass, // householdType,\n options,\n );\n },\n { ...options, enabled: Boolean(propertyClass) },\n );\n};\n\nexport default useCreateHouseholdMutation;\n","// @flow\nimport { useContext } from 'react';\nimport { useMutation, MutationOptions } from 'react-query';\nimport { saveShortFormData } from 'services/formService';\nimport { AppContext } from 'contexts/AppContext';\n\nconst useSaveShortFormMutation = ({\n options,\n}: {\n options: MutationOptions,\n} = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n\n return useMutation(\n async ({ applicantId, ...payload }) => {\n return saveShortFormData({\n organizationId,\n propertyId,\n applicantId,\n payload,\n });\n },\n {\n ...options,\n enabled: Boolean(organizationId && propertyId),\n },\n );\n};\n\nexport default useSaveShortFormMutation;\n","import {\n isMinor as checkIsMinor,\n getIsHeadOfHousehold,\n getIsStudent,\n} from 'pages/AffordaHousehold/utils';\nimport { ADDITIONAL_MINORS_FIELD_NAMES } from 'pages/AffordaHousehold/constants';\nimport { handleRequestAndThrowIfError } from 'utils/api';\n\nexport const getIds = ({\n affordableRelationships,\n applicantTypes,\n member,\n relationships,\n}) => {\n const applicantTypeId = applicantTypes.find(\n ({ name }) => name === member.applicantType,\n )?.id;\n const affordableRelationshipId = affordableRelationships.find(\n ({ name }) => name === member.affordableRelationship,\n )?.id;\n const relationshipId = relationships.find(\n ({ name }) => name === member.relationship,\n )?.id;\n\n return {\n applicantType: undefined,\n type: applicantTypeId,\n affordableRelationship: affordableRelationshipId,\n relationship: relationshipId,\n relationshipId,\n affordableRelationshipId,\n };\n};\n\nexport const updateForms = async ({\n additionalMinors,\n affordableRelationships,\n applicantId,\n applicantTypes,\n member,\n minors,\n relationships,\n savePrimaryFormMutation,\n saveSecondaryFormMutation,\n studentStatus,\n}) => {\n const isMinor = checkIsMinor(member);\n const isHeadOfHousehold = getIsHeadOfHousehold(member);\n\n const formPayload = {\n applicantId,\n basicInformation: {\n firstName: member.firstName,\n lastName: member.lastName,\n birthday: new Date(member.birthday),\n },\n contactInformation: {\n phoneNumber: member.phoneNumber,\n emailAddress: member.emailAddress,\n },\n maritalInformation: {\n maritalStatus: member.maritalStatus,\n },\n studentInformation: {\n isStudent: getIsStudent(member),\n studentType: member.studentStatus,\n TANFAssistance: studentStatus?.TANFAssistance,\n jobTrainingProgram: studentStatus?.jobTrainingProgram,\n singleParentDependantChild: studentStatus?.singleParentDependantChild,\n marriedJointReturn: studentStatus?.marriedJointReturn,\n fosterProgram: studentStatus?.fosterProgram,\n },\n };\n\n if (isHeadOfHousehold) {\n formPayload.additionalOccupants = {\n anticipateChangeHousehold: additionalMinors?.[\n ADDITIONAL_MINORS_FIELD_NAMES.EXPECTING_MINORS_TYPE\n ].includes(ADDITIONAL_MINORS_FIELD_NAMES.NOT_APPLICABLE)\n ? 'no'\n : 'yes',\n anticipateChangeHouseholdAdoption:\n additionalMinors?.[ADDITIONAL_MINORS_FIELD_NAMES.ADOPTION_COUNT],\n anticipateChangeHouseholdFoster:\n additionalMinors?.[ADDITIONAL_MINORS_FIELD_NAMES.GUARDIANSHIP_COUNT],\n anticipateChangeHouseholdPregnancy:\n additionalMinors?.[ADDITIONAL_MINORS_FIELD_NAMES.PREGNANCY_COUNT],\n ...(minors?.length && {\n minors: {\n anyMinor: 'yes',\n minorsInformation: minors.map((minor) => {\n const { affordableRelationship, relationship } = getIds({\n affordableRelationships,\n applicantTypes,\n member: minor,\n relationships,\n });\n\n return {\n firstName: minor.firstName,\n lastName: minor.lastName,\n studentType: minor.studentStatus,\n dateOfBirth: new Date(minor.birthday),\n affordableRelationship,\n relationship,\n legallyResponsible: minor.legallyResponsible,\n };\n }),\n },\n }),\n };\n\n const response = await handleRequestAndThrowIfError(\n savePrimaryFormMutation.mutateAsync(formPayload),\n );\n\n return response;\n } else if (!isMinor) {\n await handleRequestAndThrowIfError(\n saveSecondaryFormMutation.mutateAsync(formPayload),\n );\n }\n};\n","// @flow\nimport { useContext, useRef, useEffect, useMemo } from 'react';\nimport { useMutation, MutationOptions, useQueryClient } from 'react-query';\nimport { handleRequestAndThrowIfError } from 'utils/api';\nimport {\n addHouseholdMember,\n updateHouseholdMember,\n} from 'services/householdService';\nimport { AppContext } from 'contexts/AppContext';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport useSaveShortFormMutation from 'hooks/mutations/useSaveShortFormMutation';\nimport APPLICANT_TYPES from 'constants/applicantTypes';\nimport useHouseholdMembersQuery from 'hooks/queries/useHouseholdMembersQuery';\nimport useSavePrimaryFormMutation from 'hooks/mutations/useSavePrimaryFormMutation';\nimport useSaveSecondaryFormMutation from 'hooks/mutations/useSaveSecondaryFormMutation';\nimport useCreateOrUpdateAffordableApplicationAdditionalDetailsMutation from 'hooks/mutations/useCreateOrUpdateAffordableApplicationAdditionalDetailsMutation';\nimport {\n getMinorMembers,\n isMinor as checkIsMinor,\n getIsLiveInCaretaker,\n getHeadOfHousehold,\n getIsHeadOfHousehold,\n getIsStudent,\n} from 'pages/AffordaHousehold/utils';\nimport { getIds, updateForms } from './useCreateHouseholdMemberMutation.utils';\nimport QUERY_KEYS from 'constants/queryKeys';\nimport STUDENT_STATUS from 'constants/studentStatus';\nimport { v4 as uuidv4 } from 'uuid';\ntype Member = {\n type: 'leaseholders' | 'minors' | 'pets' | 'vehicles' | 'emergency-contacts',\n};\n\nconst unbornChildTemplate = {\n applicantType: 'Minor',\n firstName: 'Unborn Child',\n lastName: '',\n birthday: '2016-01-01',\n householdDesignation: 'C',\n legallyResponsible: [],\n affordableRelationship: 'Child',\n id: '93ea78e4-080c-4d36-ae3b-c86e3e71730d',\n emailAddress: '',\n phoneNumber: '',\n isFosterChild: 'no',\n relationship: 'Child',\n studentStatus: STUDENT_STATUS.NOT_A_STUDENT?.value,\n type: 'minors',\n};\n\nconst findLiveInCaretaker = (householdMembers) => {\n return householdMembers?.find(\n ({ applicantType }) => applicantType === APPLICANT_TYPES.LIVE_IN_CARETAKER,\n );\n};\nconst useCreateHouseholdMemberMutation = ({\n householdForm,\n options,\n}: {\n options: MutationOptions,\n} = {}) => {\n const members = useMemo(() => {\n if (!householdForm?.members?.length) return [];\n\n // Add unborn children to the members\n const unbornChildren = [];\n if (householdForm?.additionalMinors?.pregnancyCount) {\n const pregnancyCount = householdForm?.additionalMinors?.pregnancyCount;\n\n const headOfHousehold = getHeadOfHousehold(householdForm.members);\n\n for (let i = 0; i < pregnancyCount; i++) {\n unbornChildren.push({\n ...unbornChildTemplate,\n id: uuidv4(),\n firstName: `Unborn Child ${i + 1}`,\n lastName: headOfHousehold?.lastName ?? '',\n birthday: householdForm?.additionalMinors?.pregnancyDueDate,\n legallyResponsible: [headOfHousehold?.id ?? ''],\n });\n }\n }\n\n // return the new members\n return [...householdForm?.members, ...unbornChildren];\n }, [householdForm]);\n\n const queryClient = useQueryClient();\n\n const membersIdRef = useRef({});\n useEffect(() => {\n if (!members?.length) return;\n members.forEach(({ id }) => {\n membersIdRef.current[id] = membersIdRef.current[id] ?? null;\n });\n }, [members]);\n\n const {\n organizationId,\n propertyId,\n relationships,\n affordableRelationships,\n applicantTypes,\n } = useContext(AppContext);\n const { data: { portalUserId } = {}, refetch } = useUserProfileQuery();\n const { refetch: refetchHouseholdMembers } = useHouseholdMembersQuery();\n\n const saveShortFormMutation = useSaveShortFormMutation();\n const savePrimaryFormMutation = useSavePrimaryFormMutation({\n options: { onSuccess: undefined },\n });\n const saveSecondaryFormMutation = useSaveSecondaryFormMutation({\n options: {\n onSuccess: undefined,\n },\n });\n const createOrUpdateAffordableApplicationAdditionalDetailsMutation =\n useCreateOrUpdateAffordableApplicationAdditionalDetailsMutation();\n\n const memoizedOptions = useMemo(() => {\n return {\n ...options,\n onSuccess: () => {\n queryClient.invalidateQueries([\n ...QUERY_KEYS.primaryFormData({\n organizationId,\n propertyId,\n }),\n ...QUERY_KEYS.secondaryFormData({ organizationId, propertyId }),\n ]);\n },\n enabled: Boolean(portalUserId && organizationId && propertyId),\n };\n }, [options, organizationId, portalUserId, propertyId, queryClient]);\n\n const mutation = useMutation(\n async ({ member, studentStatus }: { member: Member }) => {\n const {\n data: { applicantId, applicationId, householdId, customerId },\n } = await refetch();\n\n const isLiveInCaretaker = getIsLiveInCaretaker(member);\n const isMinor = checkIsMinor(member);\n\n const headOfHousehold = getHeadOfHousehold(members);\n const minors = getMinorMembers(members) ?? [];\n\n if (isLiveInCaretaker) {\n const updateLiveInCaretakerResponse =\n await handleRequestAndThrowIfError(\n updateHouseholdMember(\n organizationId,\n propertyId,\n householdId,\n member.type,\n null,\n {\n id: applicationId,\n adults: [\n {\n id: applicantId,\n firstName: headOfHousehold.firstName,\n lastName: headOfHousehold.lastName,\n email: headOfHousehold.emailAddress,\n phone: headOfHousehold.phoneNumber,\n middleName: null,\n preferredName: null,\n isProspect: true,\n deleted: false,\n ...getIds({\n member: headOfHousehold,\n affordableRelationships,\n applicantTypes,\n relationships,\n }),\n affordableRelationshipId: undefined,\n relationshipId: undefined,\n },\n {\n firstName: member.firstName,\n lastName: member.lastName,\n phone: member.phoneNumber,\n email: member.emailAddress,\n deleted: false,\n ...getIds({\n affordableRelationships,\n applicantTypes,\n member,\n relationships,\n }),\n affordableRelationshipId: undefined,\n relationshipId: undefined,\n },\n ],\n propertyId,\n applicationId,\n primaryApplicantId: applicantId,\n householdDesignation: member.householdDesignation,\n minors: [],\n pets: [],\n },\n ),\n );\n\n const { data: refetchedHouseholdMembers } =\n await refetchHouseholdMembers();\n\n const liveInCaretaker = findLiveInCaretaker(refetchedHouseholdMembers);\n\n await handleRequestAndThrowIfError(\n saveShortFormMutation.mutateAsync({\n applicantId: liveInCaretaker?.id,\n formData: {\n applicantInfo: {\n firstName: member.firstName,\n lastName: member.lastName,\n phoneNumber: member.phoneNumber,\n birthday: member.birthday,\n emailAddress: member.emailAddress,\n },\n employmentInfo: {},\n studentInfo: {},\n otherInfo: {},\n residentialInfo: {},\n },\n }),\n );\n\n return updateLiveInCaretakerResponse;\n }\n\n const id = getIsHeadOfHousehold(member)\n ? customerId\n : membersIdRef.current[member.id];\n\n const payload = {\n [isMinor ? 'minor' : 'leaseholder']: {\n ...member,\n ...getIds({\n affordableRelationships,\n applicantTypes,\n member,\n relationships,\n }),\n studentType: member.studentStatus,\n isStudent: getIsStudent(member),\n applicationId,\n },\n };\n\n // delete emailAddress because endpoint doesn't accept it\n if (id && payload?.leaseholder?.emailAddress) {\n delete payload.leaseholder.emailAddress;\n }\n\n if (id) {\n const updateMemberResponse = await handleRequestAndThrowIfError(\n updateHouseholdMember(\n organizationId,\n propertyId,\n householdId,\n member.type,\n id,\n payload,\n ),\n );\n\n if (updateMemberResponse.id) {\n await updateForms({\n affordableRelationships,\n applicantId: updateMemberResponse.id,\n applicantTypes,\n applicationId,\n createOrUpdateAffordableApplicationAdditionalDetailsMutation,\n householdId,\n member,\n minors,\n relationships,\n savePrimaryFormMutation,\n saveSecondaryFormMutation,\n studentStatus,\n });\n }\n\n return updateMemberResponse;\n } else if (!isMinor) {\n const householdMemberResponse = await handleRequestAndThrowIfError(\n addHouseholdMember(\n organizationId,\n propertyId,\n householdId,\n member.type,\n null,\n payload,\n ),\n );\n\n membersIdRef.current[member.id] = householdMemberResponse.id;\n\n await updateForms({\n affordableRelationships,\n applicantId: householdMemberResponse.id,\n applicantTypes,\n applicationId,\n createOrUpdateAffordableApplicationAdditionalDetailsMutation,\n householdId,\n member,\n minors,\n relationships,\n savePrimaryFormMutation,\n saveSecondaryFormMutation,\n studentStatus,\n });\n\n return householdMemberResponse;\n }\n },\n memoizedOptions,\n );\n\n return {\n ...mutation,\n isLoading:\n saveShortFormMutation.isLoading ||\n savePrimaryFormMutation.isLoading ||\n saveSecondaryFormMutation.isLoading ||\n createOrUpdateAffordableApplicationAdditionalDetailsMutation.isLoading,\n };\n};\n\nexport default useCreateHouseholdMemberMutation;\n","import { useCallback, useState } from 'react';\nimport useCreateHouseholdMutation from 'hooks/mutations/useCreateHouseholdMutation';\nimport useCreateHouseholdMemberMutation from 'hooks/mutations/useCreateHouseholdMemberMutation';\nimport {\n regenerateTokenIfCustomerIdMissing,\n handleRequestAndThrowIfError,\n} from 'utils/api';\n\nconst useCreateHouseholdAndMembers = ({ householdForm }) => {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const createHouseholdMutation = useCreateHouseholdMutation();\n const createHouseholdMemberMutation = useCreateHouseholdMemberMutation({\n householdForm,\n });\n\n const createHouseholdAndMembers = useCallback(\n async (_householdForm) => {\n try {\n setIsSubmitting(true);\n await createHouseholdMutation.mutateAsync();\n\n const { members, studentStatus } = _householdForm ?? householdForm;\n\n const memberPromises = members.map((member) => {\n member.type =\n { Minor: 'minors' }[member.applicantType] ?? 'leaseholders';\n const payload =\n {\n minor: {\n type: member.applicantType,\n minor: member,\n },\n }[member.applicantType] ?? member;\n\n return handleRequestAndThrowIfError(\n createHouseholdMemberMutation.mutateAsync({\n member: payload,\n studentStatus,\n }),\n );\n });\n\n await Promise.all(memberPromises);\n\n await regenerateTokenIfCustomerIdMissing();\n } catch (e) {\n throw e;\n } finally {\n setIsSubmitting(false);\n }\n },\n [createHouseholdMemberMutation, createHouseholdMutation, householdForm],\n );\n\n return {\n createHouseholdAndMembers,\n isSubmitting,\n };\n};\n\nexport default useCreateHouseholdAndMembers;\n","import { FormattedMessage } from 'react-intl';\nimport HOUSEHOLD_DESIGNATION_CODES from 'constants/householdDesignationCodes';\nimport moment from 'moment';\nimport APPLICANT_TYPES from 'constants/applicantTypes';\nimport { deleteEmptyProperties } from 'utils';\nimport { formatDateDB } from 'utils/timeProvider';\nimport { ADDITIONAL_MINORS_FIELD_NAMES } from 'pages/AffordaHousehold/constants';\nimport STUDENT_STATUS from 'constants/studentStatus';\nimport AFFORDABLE_RELATIONSHIPS from 'constants/affordableRelationships';\n\nexport const getMemberName = (member) => {\n if (!member?.firstName?.length) return '';\n return `${member.firstName} ${member?.lastName}`.trim();\n};\n\nexport const getMemberNameById = (members, memberId) => {\n const member = members?.find((m) => m.id === memberId);\n return member ? getMemberName(member) : '';\n};\n\nexport const getMemberKey = (member) => {\n return member.id;\n};\n\nexport const getReactHookFormDetails = (_fields) => {\n const allFields = Object.values(_fields).reduce((acc, field) => {\n if (field) {\n Object.values(field).forEach(({ _f: { name, mount, required } }) => {\n acc.push({ required, mount, name });\n });\n }\n return acc;\n }, []);\n return {\n requiredFields: allFields\n .filter(({ required }) => required?.value || required)\n .map(({ name }) => name),\n visibleFields: allFields\n .filter(({ mount }) => mount === true)\n .map(({ name }) => name),\n };\n};\nexport const sortMembers = (members, currentApplicantId) =>\n members.sort((a, b) => {\n // Pets should always be last\n const isPetA = a.applicantType === APPLICANT_TYPES.PET;\n const isPetB = b.applicantType === APPLICANT_TYPES.PET;\n if (isPetA && !isPetB) return 1; // Push \"a\" (a pet) to the bottom\n if (isPetB && !isPetA) return -1; // Push \"b\" (a pet) to the bottom\n\n // Head of household or isProspect=true (isPrimaryUser) should always be first\n const isHeadA =\n a.householdDesignation ===\n HOUSEHOLD_DESIGNATION_CODES.HEAD_OF_HOUSEHOLD || isPrimaryMember(a);\n const isHeadB =\n b.householdDesignation ===\n HOUSEHOLD_DESIGNATION_CODES.HEAD_OF_HOUSEHOLD || isPrimaryMember(b);\n if (isHeadA && !isHeadB) return -1; // \"a\" is head, sort it higher\n if (isHeadB && !isHeadA) return 1; // \"b\" is head, sort it higher\n\n // Spouse should always be second\n const isSpouseA =\n a.householdDesignation === HOUSEHOLD_DESIGNATION_CODES.SPOUSE;\n const isSpouseB =\n b.householdDesignation === HOUSEHOLD_DESIGNATION_CODES.SPOUSE;\n if (isSpouseA && !isSpouseB) return -1; // \"a\" is spouse, sort it higher\n if (isSpouseB && !isSpouseA) return 1; // \"b\" is spouse, sort it higher\n\n // Current user should take precedence over others\n const isUserA = a.applicantId === currentApplicantId;\n const isUserB = b.applicantId === currentApplicantId;\n if (isUserA && !isUserB) return -1; // \"a\" is the current user\n if (isUserB && !isUserA) return 1; // \"b\" is the current user\n\n // Minors should come after adults\n const isMinorA = a.applicantType === APPLICANT_TYPES.MINOR;\n const isMinorB = b.applicantType === APPLICANT_TYPES.MINOR;\n if (isMinorA && !isMinorB) return 1; // \"a\" is minor, sort lower\n if (isMinorB && !isMinorA) return -1; // \"b\" is minor, sort lower\n\n // Default to maintaining the current order if none of the above applies\n return 0;\n });\n\nexport const getAdultMembers = (members, options = {}) => {\n const { includeCaretakers = true } = options;\n\n if (!Array.isArray(members)) {\n return [];\n }\n\n return members.filter(({ applicantType }) => {\n if (applicantType === APPLICANT_TYPES.MINOR) {\n return false;\n }\n\n if (applicantType === APPLICANT_TYPES.PET) {\n return false;\n }\n\n return !(\n applicantType === APPLICANT_TYPES.LIVE_IN_CARETAKER && !includeCaretakers\n );\n });\n};\n\nexport const isMinor = (member) =>\n member?.applicantType === APPLICANT_TYPES.MINOR;\n\nexport const getIsLiveInCaretaker = (member) =>\n member?.householdDesignation ===\n HOUSEHOLD_DESIGNATION_CODES.LIVE_IN_CARETAKER;\n\nexport const getHeadOfHousehold = (members) =>\n members.find(\n ({ householdDesignation }) =>\n householdDesignation === HOUSEHOLD_DESIGNATION_CODES.HEAD_OF_HOUSEHOLD,\n ) ||\n members.find(\n ({ qualifications }) =>\n qualifications?.affordableRelationship ===\n AFFORDABLE_RELATIONSHIPS.HEAD_OF_HOUSEHOLD,\n );\n\nexport const getIsHeadOfHousehold = (member) =>\n member.householdDesignation === HOUSEHOLD_DESIGNATION_CODES.HEAD_OF_HOUSEHOLD;\n\nexport const getIsStudent = (member) =>\n Boolean(\n member.studentStatus.length &&\n member.studentStatus !== STUDENT_STATUS.NOT_A_STUDENT?.value,\n );\n\nexport const getMinorMembers = (members) => members?.filter(isMinor);\n\nexport const isPrimaryMember = (member) =>\n member.isProspect || member.isPrimaryProspect;\n\nexport const getSecondaryAdultMembers = (members) => {\n return getAdultMembers(members).filter((member) => !isPrimaryMember(member));\n};\n\nexport const getPrimaryMember = (members) => members.find(isPrimaryMember);\n\nexport const calculateAge = (birthday) => {\n const birthDate = moment(birthday);\n const currentDate = moment();\n return currentDate.diff(birthDate, 'years');\n};\n\nexport const getFormattedName = (member, members, intl, showLastName) => {\n const hasDuplicateFirstName = members.filter(\n (m) => m.firstName === member.firstName && m.id !== member.id,\n ).length;\n\n const hasDuplicateFirstAndLastName = members.filter(\n (m) =>\n m.firstName === member.firstName &&\n m.lastName === member.lastName &&\n m.id !== member.id,\n ).length;\n\n const memberName = showLastName ? getMemberName(member) : member.firstName;\n\n if (hasDuplicateFirstAndLastName) {\n if (intl) {\n return intl.formatMessage(\n {\n id: 'afforda.household.utils.age',\n },\n {\n name: memberName,\n age: calculateAge(member.birthday),\n },\n );\n }\n return (\n \n );\n }\n\n if (hasDuplicateFirstName) {\n return getMemberName(member);\n }\n\n return memberName;\n};\n\nexport const getFormattedNames = (members) => {\n // Group members by first name\n const groupedMembers = members.reduce((acc, member) => {\n if (member.applicantType !== APPLICANT_TYPES.MINOR) {\n const firstName = member.firstName;\n if (!acc[firstName]) {\n acc[firstName] = [];\n }\n acc[firstName].push(member);\n }\n return acc;\n }, {});\n\n const formattedMembers = Object.values(groupedMembers)\n .map((group) => {\n // If there are multiple members with the same first name, add age to the label\n if (group.length > 1) {\n return group.map((member) => ({\n value: getMemberKey(member),\n label: `${member.firstName} (Age ${calculateAge(member.birthday)})`,\n }));\n } else {\n // If there is only one member with this first name, don't add age to the label\n return group.map((member) => ({\n value: getMemberKey(member),\n label: getMemberName(member),\n }));\n }\n })\n .flat();\n\n return formattedMembers;\n};\n\nexport const getFormattedMinorNames = (members) => {\n // Group members by first name\n const groupedMembers = members.reduce((acc, member) => {\n if (member.applicantType === APPLICANT_TYPES.MINOR) {\n const firstName = member.firstName;\n if (!acc[firstName]) {\n acc[firstName] = [];\n }\n acc[firstName].push(member);\n }\n return acc;\n }, {});\n\n const formattedMembers = Object.values(groupedMembers)\n .map((group) => {\n // If there are multiple members with the same first name, add age to the label\n if (group.length > 1) {\n return group.map((member) => ({\n value: getMemberKey(member),\n label: `${member.firstName} (Age ${calculateAge(member.birthday)})`,\n }));\n } else {\n // If there is only one member with this first name, don't add age to the label\n return group.map((member) => ({\n value: getMemberKey(member),\n label: getMemberName(member),\n }));\n }\n })\n .flat();\n\n return formattedMembers;\n};\n\nexport const prepareAdditionalMinorsForSubmit = (values) => {\n const {\n EXPECTING_MINORS_TYPE,\n PREGNANCY,\n PREGNANCY_COUNT,\n PREGNANCY_DUE_DATE,\n ADOPTION,\n ADOPTION_COUNT,\n ANTICIPATED_ADOPTION_DATE,\n GUARDIANSHIP,\n GUARDIANSHIP_COUNT,\n ANTICIPATED_GUARDIANSHIP_START_DATE,\n NOT_APPLICABLE,\n } = ADDITIONAL_MINORS_FIELD_NAMES;\n\n const EMPTY_VALUES = {\n [PREGNANCY_COUNT]: '',\n [PREGNANCY_DUE_DATE]: '',\n [ADOPTION_COUNT]: '',\n [ANTICIPATED_ADOPTION_DATE]: '',\n [GUARDIANSHIP_COUNT]: '',\n [ANTICIPATED_GUARDIANSHIP_START_DATE]: '',\n };\n\n const isNotApplicable = values.expectingMinorsType?.includes(NOT_APPLICABLE);\n const isApplicable =\n !isNotApplicable && values.expectingMinorsType?.length > 0;\n\n let newValues = { ...values };\n\n const resetFieldValues = (fields) => {\n fields.forEach((field) => {\n newValues[field] = '';\n });\n };\n\n if (isNotApplicable) {\n newValues = {\n [EXPECTING_MINORS_TYPE]: newValues.expectingMinorsType ?? [],\n ...EMPTY_VALUES,\n };\n } else if (isApplicable) {\n if (!values.expectingMinorsType.includes(PREGNANCY)) {\n resetFieldValues([PREGNANCY_COUNT, PREGNANCY_DUE_DATE]);\n }\n if (!values.expectingMinorsType.includes(ADOPTION)) {\n resetFieldValues([ADOPTION_COUNT, ANTICIPATED_ADOPTION_DATE]);\n }\n if (!values.expectingMinorsType.includes(GUARDIANSHIP)) {\n resetFieldValues([\n GUARDIANSHIP_COUNT,\n ANTICIPATED_GUARDIANSHIP_START_DATE,\n ]);\n }\n }\n\n const parsedValues = deleteEmptyProperties(newValues);\n const additionalMinors = deleteEmptyProperties({\n expectingMinorsType: parsedValues.expectingMinorsType,\n adoptionCount: parsedValues.adoptionCount\n ? parseInt(parsedValues.adoptionCount)\n : null,\n guardianshipCount: parsedValues.guardianshipCount\n ? parseInt(parsedValues.guardianshipCount)\n : null,\n pregnancyCount: parsedValues.pregnancyCount\n ? parseInt(parsedValues.pregnancyCount)\n : null,\n anticipatedAdoptionDate: parsedValues.anticipatedAdoptionDate\n ? formatDateDB(parsedValues.anticipatedAdoptionDate)\n : null,\n anticipatedGuardianshipStartDate:\n parsedValues.anticipatedGuardianshipStartDate\n ? formatDateDB(parsedValues.anticipatedGuardianshipStartDate)\n : null,\n pregnancyDueDate: parsedValues.pregnancyDueDate\n ? formatDateDB(parsedValues.pregnancyDueDate)\n : null,\n });\n\n return additionalMinors;\n};\n","import { FormattedMessage } from 'react-intl';\nimport { getFormattedName, isMinor } from 'pages/AffordaHousehold/utils';\nimport moment from 'moment';\nimport { MoneyIcon } from '@fortress-technology-solutions/fortress-component-library/Icons';\nimport { YES_NO_OPTIONS } from 'utils/constants';\nimport PATHS, {\n IDENTIFYING_DETAILS_PATHS,\n RESIDENTIAL_HISTORY_PATHS,\n} from 'constants/paths';\n\nexport const MAX_SSN_LENGTH = 9;\n\nexport const IDENTIFICATION_FIELD_NAMES = {\n SOCIAL_SECURITY: 'socialSecurity',\n ALTERNATE_ID: 'alternateId',\n PASSPORT: 'passport',\n PASSPORT_NUMBER: 'passportNumber',\n PASSPORT_COUNTRY: 'passportCountry',\n ALIEN_REGISTRATION: 'alienRegistration',\n};\n\nexport const LIVE_TOGETHER_FIELD_NAMES = {\n HAS_SAME_PREVIOUS_ADDRESS: 'hasSamePreviousAddress',\n HAS_SAME_CURRENT_ADDRESS: 'hasSameCurrentAddress',\n LIVE_WITH_YOU_AT_ADDRESS: 'liveWithYouAtAddress',\n LIVE_WITH_YOU_AT_ANY_ADDRESSES: 'liveWithYouAtAnyAddresses',\n WHICH_ADDRESSES: 'whichAddresses',\n LIVED_ANYWHERE_ELSE_LAST_TWO_YEARS: 'livedAnywhereElseLastTwoYears',\n};\n\nexport const RESIDENTIAL_HISTORY_FIELD_NAMES = {\n RESIDENCE: 'residence',\n STREET_ADDRESS: 'streetAddress',\n CITY: 'city',\n STATE: 'state',\n ZIP_CODE: 'zipCode',\n MOVE_IN_DATE: 'moveInDate',\n MONTHLY_PAYMENT: 'monthlyPayment',\n EXPLAIN_THE_SITUATION: 'explainTheSituation',\n NAME_OF_PERSON_YOU_LIVE_WITH: 'nameOfPersonYouLiveWith',\n LANDLORD_CONDO_APARTMENT_NAME: 'landlordCondoApartmentName',\n LENDER: 'lender',\n PHONE_NUMBER: 'phoneNumber',\n CAN_CONTACT_TO_VERIFY_SITUATION: 'canContactToVerifySituation',\n CONTACT_NAME: 'contactName',\n RELATIONSHIP_TO_YOU: 'relationshipToYou',\n LIVED_ANYWHERE_ELSE_LAST_TWO_YEARS: 'livedAnywhereElseLastTwoYears',\n};\n\nexport const RESIDENCE_TYPES = {\n RENT: 'rent',\n OWN: 'own',\n LIVE_WITH_FAMILY_OR_FRIENDS: 'liveWithFamilyOrFriends',\n OTHER: 'other',\n};\n\nconst BASE_FIELD_PROPS = {\n rules: {\n required: true,\n },\n GridProps: {\n xs: 12,\n },\n};\n\nexport const IDENTIFICATION_FIELDS = {\n [IDENTIFICATION_FIELD_NAMES.SOCIAL_SECURITY]: ({\n name,\n member,\n selectedMembers,\n ...fieldProps\n }) => ({\n name,\n variant: 'socialSecurity',\n label: (\n \n ),\n rules: {\n maxLength: MAX_SSN_LENGTH,\n minLength: MAX_SSN_LENGTH,\n required: !isMinor(member),\n },\n GridProps: {\n xs: 12,\n },\n ...fieldProps,\n }),\n [IDENTIFICATION_FIELD_NAMES.ALTERNATE_ID]: ({\n name,\n member,\n selectedMembers,\n intl,\n }) => ({\n name,\n variant: 'buttonGroup',\n label: (\n \n ),\n direction: 'row',\n options: [\n {\n value: IDENTIFICATION_FIELD_NAMES.PASSPORT,\n label: (\n \n ),\n },\n {\n value: IDENTIFICATION_FIELD_NAMES.ALIEN_REGISTRATION,\n label: (\n \n ),\n },\n ],\n ...BASE_FIELD_PROPS,\n rules: {\n required: !isMinor(member),\n },\n }),\n [IDENTIFICATION_FIELD_NAMES.PASSPORT_NUMBER]: ({\n name,\n member,\n intl,\n hidden,\n watchFields,\n }) => ({\n name,\n variant: 'text',\n label: (\n \n ),\n placeholder: intl.formatMessage({\n id: 'afforda.identifyingDetails.identificationAlternate.form.passportNumberLabel',\n }),\n hidden,\n watchFields,\n ...BASE_FIELD_PROPS,\n rules: {\n required: !isMinor(member),\n },\n }),\n [IDENTIFICATION_FIELD_NAMES.PASSPORT_COUNTRY]: ({\n name,\n member,\n hidden,\n watchFields,\n options,\n }) => ({\n name,\n variant: 'singleSelect',\n label: (\n \n ),\n options,\n disabled: !options?.length,\n hidden,\n watchFields,\n ...BASE_FIELD_PROPS,\n rules: {\n required: !isMinor(member),\n },\n }),\n [IDENTIFICATION_FIELD_NAMES.ALIEN_REGISTRATION]: ({\n name,\n member,\n hidden,\n watchFields,\n intl,\n }) => ({\n name,\n variant: 'text',\n label: (\n \n ),\n placeholder: intl.formatMessage({\n id: 'afforda.identifyingDetails.identificationAlternate.form.alternateId.alienRegistrationLabel',\n }),\n ...BASE_FIELD_PROPS,\n rules: {\n required: !isMinor(member),\n },\n hidden,\n watchFields,\n }),\n};\n\nconst BASE_RESIDENTIAL_HISTORY_FIELD_PROPS = {\n rules: {\n required: true,\n },\n GridProps: {\n sm: 6,\n xs: 12,\n },\n watchFields: [RESIDENTIAL_HISTORY_FIELD_NAMES.RESIDENCE],\n hidden: ({ getValues }) =>\n !Boolean(getValues(RESIDENTIAL_HISTORY_FIELD_NAMES.RESIDENCE)?.length),\n};\n\nexport const RESIDENTIAL_HISTORY_FIELDS = {\n [RESIDENTIAL_HISTORY_FIELD_NAMES.STREET_ADDRESS]: ({\n intl,\n setValue,\n error,\n helperText,\n ...fieldProps\n }) => ({\n name: 'streetAddress',\n variant: 'address',\n label: intl.formatMessage({\n id: 'app.label.streetAddress',\n }),\n placeholder: intl.formatMessage({\n id: 'app.label.streetAddress',\n }),\n error,\n helperText,\n onChange: ({ target: { value, addressComponents } }) => {\n if (addressComponents) {\n const { city, state, zipCode } = addressComponents;\n setValue('city', city);\n setValue('state', state);\n setValue('zipCode', zipCode);\n }\n\n setValue('streetAddress', value);\n },\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n ...fieldProps,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.CITY]: ({ intl, ...fieldProps }) => ({\n name: 'city',\n variant: 'text',\n label: ,\n placeholder: intl.formatMessage({\n id: 'app.label.city',\n }),\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n ...fieldProps,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.STATE]: ({ intl, ...fieldProps }) => ({\n name: 'state',\n variant: 'text',\n label: intl.formatMessage({\n id: 'app.label.stateOrProvince',\n }),\n placeholder: intl.formatMessage({\n id: 'app.label.stateOrProvince',\n }),\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n ...fieldProps,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.ZIP_CODE]: ({ intl, ...fieldProps }) => ({\n name: 'zipCode',\n variant: 'number',\n label: intl.formatMessage({\n id: 'app.label.zip',\n }),\n placeholder: intl.formatMessage({\n id: 'app.label.zip',\n }),\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n ...fieldProps,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.MOVE_IN_DATE]: ({\n intl,\n maxMoveInDate,\n ...fieldProps\n }) => ({\n name: 'moveInDate',\n variant: 'date',\n label: intl.formatMessage({\n id: 'app.label.moveInDate',\n }),\n disableFuture: true,\n openTo: 'year',\n views: ['year', 'month', 'day'],\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n ...fieldProps,\n rules: {\n ...BASE_FIELD_PROPS.rules,\n maxDate: maxMoveInDate,\n validate: (value) => {\n const isValid = moment(value).isBefore(\n moment(maxMoveInDate).add(1, 'day'),\n );\n if (!isValid) {\n return `Must be on or before ${maxMoveInDate.format('MM/DD/YYYY')}`;\n }\n return isValid;\n },\n },\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.MONTHLY_PAYMENT]: ({\n intl,\n ...fieldProps\n }) => ({\n name: 'monthlyPayment',\n variant: 'number',\n label: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.monthlyPayment',\n }),\n adornment: ,\n placeholder: '0.00',\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n ...fieldProps,\n rules: {\n required: ({ getValues }) =>\n ['rent', 'own'].includes(getValues('residence')),\n },\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.EXPLAIN_THE_SITUATION]: ({\n intl,\n hidden,\n ...fieldProps\n }) => ({\n name: RESIDENTIAL_HISTORY_FIELD_NAMES.EXPLAIN_THE_SITUATION,\n variant: 'text',\n multiline: true,\n rows: 3,\n label: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.explainSituation',\n }),\n placeholder: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.explainSituation.placeholder',\n }),\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n ...fieldProps,\n hidden,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.NAME_OF_PERSON_YOU_LIVE_WITH]: ({\n intl,\n hidden,\n ...fieldProps\n }) => ({\n name: RESIDENTIAL_HISTORY_FIELD_NAMES.NAME_OF_PERSON_YOU_LIVE_WITH,\n variant: 'text',\n label: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.nameOfPersonYouLiveWith',\n }),\n placeholder: intl.formatMessage({ id: 'app.placeholder.name' }),\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n GridProps: {\n xs: 12,\n },\n ...fieldProps,\n hidden,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.LANDLORD_CONDO_APARTMENT_NAME]: ({\n intl,\n hidden,\n ...fieldProps\n }) => ({\n name: 'landlordCondoApartmentName',\n variant: 'text',\n label: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.landlordCondoApartmentName',\n }),\n placeholder: intl.formatMessage({\n id: 'app.placeholder.name',\n }),\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n ...fieldProps,\n hidden,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.LENDER]: ({\n intl,\n hidden,\n ...fieldProps\n }) => ({\n name: 'lender',\n variant: 'text',\n label: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.lender',\n }),\n placeholder: intl.formatMessage({\n id: 'app.placeholder.name',\n }),\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n ...fieldProps,\n hidden,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.PHONE_NUMBER]: ({\n intl,\n hidden,\n watchFields,\n ...fieldProps\n }) => ({\n name: 'phoneNumber',\n variant: 'phone',\n label: intl.formatMessage({\n id: 'app.label.phoneNumber',\n }),\n placeholder: intl.formatMessage({\n id: 'app.label.phoneNumber',\n }),\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n watchFields,\n hidden,\n ...fieldProps,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.CAN_CONTACT_TO_VERIFY_SITUATION]: ({\n intl,\n hidden,\n ...fieldProps\n }) => ({\n name: RESIDENTIAL_HISTORY_FIELD_NAMES.CAN_CONTACT_TO_VERIFY_SITUATION,\n variant: 'buttonGroup',\n label: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.canContactToVerifySituation',\n }),\n direction: 'row',\n options: YES_NO_OPTIONS,\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n GridProps: {\n xs: 12,\n },\n hidden,\n ...fieldProps,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.CONTACT_NAME]: ({\n intl,\n hidden,\n ...fieldProps\n }) => ({\n name: RESIDENTIAL_HISTORY_FIELD_NAMES.CONTACT_NAME,\n variant: 'text',\n label: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.contactName',\n }),\n placeholder: intl.formatMessage({\n id: 'app.placeholder.name',\n }),\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n watchFields: [\n RESIDENTIAL_HISTORY_FIELD_NAMES.CAN_CONTACT_TO_VERIFY_SITUATION,\n ],\n hidden,\n ...fieldProps,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.RELATIONSHIP_TO_YOU]: ({\n intl,\n hidden,\n ...fieldProps\n }) => ({\n name: RESIDENTIAL_HISTORY_FIELD_NAMES.RELATIONSHIP_TO_YOU,\n variant: 'text',\n label: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.relationshipToYou',\n }),\n placeholder: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.relationshipToYou.placeholder',\n }),\n // ...BASE_FIELD_PROPS,\n rules: {\n required: true,\n },\n GridProps: {\n xs: 12,\n sm: 6,\n },\n watchFields: [\n RESIDENTIAL_HISTORY_FIELD_NAMES.RESIDENCE,\n RESIDENTIAL_HISTORY_FIELD_NAMES.CAN_CONTACT_TO_VERIFY_SITUATION,\n ],\n hidden,\n ...fieldProps,\n }),\n [RESIDENTIAL_HISTORY_FIELD_NAMES.LIVED_ANYWHERE_ELSE_LAST_TWO_YEARS]: ({\n intl,\n ...fieldProps\n }) => ({\n name: RESIDENTIAL_HISTORY_FIELD_NAMES.LIVED_ANYWHERE_ELSE_LAST_TWO_YEARS,\n variant: 'buttonGroup',\n label: intl.formatMessage({\n id: 'afforda.identifyingDetails.residentialHistory.label.livedAnywhereElseLastTwoYears',\n }),\n direction: 'row',\n options: YES_NO_OPTIONS,\n ...BASE_RESIDENTIAL_HISTORY_FIELD_PROPS,\n GridProps: {\n xs: 12,\n },\n ...fieldProps,\n }),\n};\n\nexport const SECTION_PATHS = {\n overview: `${PATHS.IDENTIFYING_DETAILS}/${IDENTIFYING_DETAILS_PATHS.OVERVIEW}`,\n identification: `${PATHS.IDENTIFYING_DETAILS}/${IDENTIFYING_DETAILS_PATHS.IDENTIFICATION}`,\n identificationAlternate: `${PATHS.IDENTIFYING_DETAILS}/${IDENTIFYING_DETAILS_PATHS.IDENTIFICATION_ALTERNATE}`,\n residentialHistoryCurrent: `${PATHS.IDENTIFYING_DETAILS}/${IDENTIFYING_DETAILS_PATHS.RESIDENTIAL_HISTORY}/${RESIDENTIAL_HISTORY_PATHS.CURRENT}`,\n residentialHistoryPrevious: `${PATHS.IDENTIFYING_DETAILS}/${IDENTIFYING_DETAILS_PATHS.RESIDENTIAL_HISTORY}/${RESIDENTIAL_HISTORY_PATHS.PREVIOUS}`,\n liveTogetherCurrent: `${PATHS.IDENTIFYING_DETAILS}/${RESIDENTIAL_HISTORY_PATHS.LIVE_TOGETHER}/${RESIDENTIAL_HISTORY_PATHS.CURRENT}`,\n liveTogetherPrevious: `${PATHS.IDENTIFYING_DETAILS}/${RESIDENTIAL_HISTORY_PATHS.LIVE_TOGETHER}/${RESIDENTIAL_HISTORY_PATHS.PREVIOUS}`,\n summary: `${PATHS.IDENTIFYING_DETAILS}/${IDENTIFYING_DETAILS_PATHS.SUMMARY}`,\n};\n","import moment from 'moment/moment';\nimport { FormattedMessage } from 'react-intl';\n\nimport { getMemberKey, getMemberName } from '../AffordaHousehold/utils';\nimport {\n BUTTON_GROUP_SX,\n COMMON_PAY_FREQUENCY_OPTIONS,\n PAY_FREQUENCY_ANNUALLY,\n PAY_FREQUENCY_MONTHLY,\n PAY_FREQUENCY_WEEKLY,\n} from './constants';\n\nexport const YES_NO_OPTIONS = [\n {\n label: ,\n value: 'yes',\n },\n {\n label: ,\n value: 'no',\n },\n];\n\nexport const GridProps = {\n xs: 12,\n sm: 6,\n md: 6,\n};\n\nexport const SMALL_GRID_PROPS = {\n xs: 12,\n sm: 6,\n};\n\nexport const FIELD_TEXT_REQUIRED = {\n variant: 'text',\n GridProps: {\n xs: 12,\n },\n rules: {\n required: true,\n },\n};\n\nexport const FIELD_COUNTER_REQUIRED = {\n variant: 'counter',\n GridProps: {\n xs: 12,\n },\n rules: {\n required: true,\n },\n};\n\nexport const FIELD_YES_NO = {\n variant: 'buttonGroup',\n rules: {\n required: true,\n },\n options: YES_NO_OPTIONS,\n direction: 'row',\n GridProps: {\n xs: 12,\n },\n};\n\nexport const FIELD_AMOUNT = {\n variant: 'number',\n GridProps,\n rules: {\n max: 499999.99,\n min: 0,\n step: 0.01,\n required: true,\n },\n adornment: '$',\n};\n\nexport const FIELD_DATE = {\n variant: 'date',\n GridProps: {\n xs: 6,\n },\n};\n\nexport const FIELD_DATE_PAST = {\n ...FIELD_DATE,\n disableFuture: true,\n defaultCalendarMonth: moment(moment().year(), 'YYYY'),\n rules: {\n required: true,\n maxDate: moment().startOf('day'),\n },\n};\n\nexport const FIELD_DATE_FUTURE = {\n ...FIELD_DATE,\n disablePast: true,\n defaultCalendarMonth: moment(moment().month(), 'mm'),\n rules: {\n required: true,\n minDate: moment().startOf('day'),\n },\n};\n\nexport const FIELD_MEMBER_SELECTED = {\n watchFields: ['memberId'],\n hidden: ({ getValues }) => !getValues('memberId')?.length,\n};\n\nexport const FIELD_PAY_FREQUENCY = {\n watchFields: ['memberId', 'payFrequency'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length || !getValues('payFrequency')?.length,\n};\n\nexport const FIELD_PAY_FREQUENCY_WEEKLY = {\n watchFields: ['memberId', 'payFrequency'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_WEEKLY,\n};\n\nexport const FIELD_PAY_FREQUENCY_MONTHLY = {\n watchFields: ['memberId', 'payFrequency'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_MONTHLY,\n};\n\nexport const FIELD_PAY_FREQUENCY_ANNUALLY = {\n watchFields: ['memberId', 'payFrequency'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_ANNUALLY,\n};\n\nexport const FIELD_GROUP_BUTTONS = {\n variant: 'buttonGroup',\n direction: 'row',\n rules: {\n required: true,\n },\n GridProps: {\n xs: 12,\n },\n sx: BUTTON_GROUP_SX,\n};\n\nexport const FIELD_SET_COMMON_PAY_FREQUENCY = [\n {\n ...FIELD_GROUP_BUTTONS,\n ...FIELD_MEMBER_SELECTED,\n label: (\n \n ),\n name: 'payFrequency',\n rules: {\n required: true,\n },\n options: Object.values(COMMON_PAY_FREQUENCY_OPTIONS)?.map((option) => ({\n value: option.value,\n label: ,\n })),\n GridProps: {\n xs: 12,\n },\n direction: 'row',\n },\n {\n ...FIELD_AMOUNT,\n ...FIELD_PAY_FREQUENCY_WEEKLY,\n label: (\n \n ),\n name: 'weeklyAmount',\n GridProps: {\n xs: 12,\n },\n },\n {\n ...FIELD_AMOUNT,\n ...FIELD_PAY_FREQUENCY_MONTHLY,\n label: (\n \n ),\n name: 'monthlyAmount',\n GridProps: {\n xs: 12,\n },\n },\n {\n ...FIELD_AMOUNT,\n ...FIELD_PAY_FREQUENCY_ANNUALLY,\n label: (\n \n ),\n name: 'annualAmount',\n GridProps: {\n xs: 12,\n },\n },\n];\n\nexport const FIELD_MEMBERS = ({ members, disabledMembers }) =>\n (members?.length ?? 0) > 1 //\n ? [\n {\n name: 'memberId',\n variant: 'buttonGroup',\n watchFields: ['memberId'],\n rules: {\n required: true,\n },\n direction: 'row',\n GridProps: {\n xs: 12,\n },\n sx: BUTTON_GROUP_SX,\n options: members.map((member) => ({\n value: getMemberKey(member),\n label: getMemberName(member),\n disabled: disabledMembers?.includes(getMemberKey(member)),\n })),\n },\n ]\n : [];\n","import moment from 'moment/moment';\nimport { FormattedMessage } from 'react-intl';\nimport { YES_NO_OPTIONS } from 'utils/constants';\n\nexport const GridProps = {\n xs: 12,\n sm: 6,\n md: 6,\n};\n\nexport const SMALL_GRID_PROPS = {\n xs: 12,\n sm: 6,\n};\n\nexport const FIELD_TEXT_REQUIRED = {\n variant: 'text',\n GridProps: {\n xs: 12,\n },\n rules: {\n required: true,\n },\n};\n\nexport const FIELD_COUNTER_REQUIRED = {\n variant: 'counter',\n GridProps: {\n xs: 12,\n },\n rules: {\n required: true,\n },\n};\n\nexport const FIELD_GROUP_BUTTONS = {\n variant: 'buttonGroup',\n direction: 'row',\n rules: {\n required: true,\n },\n GridProps: {\n xs: 12,\n },\n sx: {\n flexWrap: 'wrap',\n width: '100%',\n '& > button': {\n width: { xs: 'calc(50% - 4px)', sm: 'calc(33% - 4px)' },\n },\n },\n};\n\nexport const FIELD_YES_NO = {\n variant: 'buttonGroup',\n rules: {\n required: true,\n },\n options: YES_NO_OPTIONS,\n direction: 'row',\n GridProps: {\n xs: 12,\n },\n};\n\nexport const FIELD_AMOUNT = {\n variant: 'number',\n GridProps,\n rules: {\n max: 499999.99,\n min: 0,\n step: 0.01,\n required: true,\n },\n adornment: '$',\n};\n\nexport const FIELD_DATE = {\n variant: 'date',\n defaultCalendarMonth: moment(2000, 'YYYY'),\n InputLabelProps: {\n sx: {\n width: '100%',\n whiteSpace: 'normal',\n },\n },\n};\n\nexport const EMPLOYMENT_TYPE_FULL_TIME = 'f_t_et';\nexport const EMPLOYMENT_TYPE_SELF_EMPLOYED = 's_e_et';\nexport const EMPLOYMENT_TYPE_MILITARY = 'm_et';\nexport const EMPLOYMENT_TYPE_PART_TIME = 'p_t_et';\nexport const EMPLOYMENT_TYPE_SEASONAL = 's_et';\n\nexport const PAY_FREQUENCY_HOURLY = 'hourly';\nexport const PAY_FREQUENCY_BI_WEEKLY = 'biweekly';\nexport const PAY_FREQUENCY_MONTHLY = 'monthly';\nexport const PAY_FREQUENCY_WEEKLY = 'weekly';\nexport const PAY_FREQUENCY_SEMI_MONTHLY = 'semimonthly';\nexport const PAY_FREQUENCY_ANNUALLY = 'annually';\n\nexport const EMPLOYMENT_TYPE_OPTIONS = {\n FULL_TIME: {\n value: EMPLOYMENT_TYPE_FULL_TIME,\n text: 'afforda.wagesAndIncome.details.job.fullTime',\n },\n SELF_EMPLOYED: {\n value: EMPLOYMENT_TYPE_SELF_EMPLOYED,\n text: 'afforda.wagesAndIncome.details.job.selfEmployed',\n },\n MILITARY: {\n value: EMPLOYMENT_TYPE_MILITARY,\n text: 'afforda.wagesAndIncome.details.job.military',\n },\n PART_TIME: {\n value: EMPLOYMENT_TYPE_PART_TIME,\n text: 'afforda.wagesAndIncome.details.job.partTime',\n },\n SEASONAL: {\n value: EMPLOYMENT_TYPE_SEASONAL,\n text: 'afforda.wagesAndIncome.details.job.seasonal',\n },\n};\n\nexport const PAY_FREQUENCY_OPTIONS = {\n HOURLY: {\n value: PAY_FREQUENCY_HOURLY,\n text: 'afforda.wagesAndIncome.details.job.hourly',\n },\n WEEKLY: {\n value: PAY_FREQUENCY_WEEKLY,\n text: 'afforda.wagesAndIncome.details.job.weekly',\n },\n BI_WEEKLY: {\n value: PAY_FREQUENCY_BI_WEEKLY,\n text: 'afforda.wagesAndIncome.details.job.biweekly',\n },\n SEMI_MONTHLY: {\n value: PAY_FREQUENCY_SEMI_MONTHLY,\n text: 'afforda.wagesAndIncome.details.job.semimonthly',\n },\n MONTHLY: {\n value: PAY_FREQUENCY_MONTHLY,\n text: 'afforda.wagesAndIncome.details.job.monthly',\n },\n ANNUALLY: {\n value: PAY_FREQUENCY_ANNUALLY,\n text: 'afforda.wagesAndIncome.details.job.annually',\n },\n};\n\nexport const PAY_FREQUENCY_COMMISSION_OPTIONS = {\n WEEKLY: {\n value: PAY_FREQUENCY_WEEKLY,\n text: 'afforda.wagesAndIncome.details.job.weekly',\n },\n MONTHLY: {\n value: PAY_FREQUENCY_MONTHLY,\n text: 'afforda.wagesAndIncome.details.job.monthly',\n },\n ANNUALLY: {\n value: PAY_FREQUENCY_ANNUALLY,\n text: 'afforda.wagesAndIncome.details.job.annually',\n },\n};\n\nexport const MILITARY_BRANCHES_OPTIONS = {\n AIR_FORCE: {\n value: 'airForce',\n text: 'afforda.wagesAndIncome.details.job.military.airForce',\n },\n MARINES: {\n value: 'marines',\n text: 'afforda.wagesAndIncome.details.job.military.marines',\n },\n SPACE_FORCE: {\n value: 'spaceForce',\n text: 'afforda.wagesAndIncome.details.job.military.spaceForce',\n },\n RESERVES: {\n value: 'reserves',\n text: 'afforda.wagesAndIncome.details.job.military.reserves',\n },\n ARMY: {\n value: 'army',\n text: 'afforda.wagesAndIncome.details.job.military.army',\n },\n NAVY: {\n value: 'navy',\n text: 'afforda.wagesAndIncome.details.job.military.navy',\n },\n COAST_GUARD: {\n value: 'coastGuard',\n text: 'afforda.wagesAndIncome.details.job.military.coastGuard',\n },\n NATIONAL_GUARD: {\n value: 'nationalGuard',\n text: 'afforda.wagesAndIncome.details.job.military.nationalGuard',\n },\n};\n\nexport const LAYOFF_PERIOD_OPTIONS = {\n UNEMPLOYMENT_BENEFITS: {\n value: 'unemploymentBenefits',\n text: 'afforda.wagesAndIncome.details.job.layoffPeriod.benefits',\n },\n LOOK_FOR_ANOTHER_JOB: {\n value: 'lookForAnotherJob',\n text: 'afforda.wagesAndIncome.details.job.layoffPeriod.another',\n },\n GIFTED_INCOME: {\n value: 'giftedIncome',\n text: 'afforda.wagesAndIncome.details.job.layoffPeriod.gifted',\n },\n NO_SOURCE_OF_INCOME: {\n value: 'noSourceOfIncome',\n text: 'afforda.wagesAndIncome.details.job.layoffPeriod.source',\n },\n OTHER: {\n value: 'other',\n text: 'afforda.wagesAndIncome.details.other',\n },\n};\n\nexport const BONUS_COMMISSION_OPTIONS = {\n COMMISSSION: {\n value: 'jobCommission',\n text: 'afforda.wagesAndIncome.details.job.commission',\n },\n BONUS: {\n value: 'jobBonus',\n text: 'afforda.wagesAndIncome.details.job.bonus',\n },\n};\n\nexport const FIELD_SHOW_COMMON = {\n watchFields: ['memberId'],\n hidden: ({ getValues }) => !getValues('memberId')?.length,\n};\n\nexport const FIELD_SHOW_MILITARY = {\n watchFields: ['memberId', 'employmentType'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length || getValues('employmentType') !== 'm_et',\n};\n\nexport const FIELD_SHOW_NO_MILITARY = {\n watchFields: ['memberId', 'employmentType'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('employmentType')?.length ||\n getValues('employmentType') === 'm_et',\n};\n\nexport const FIELD_SHOW_NO_MILITARY_OR_SELF_EMPLOYED = {\n watchFields: ['memberId', 'employmentType'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('employmentType')?.length ||\n getValues('employmentType') === 'm_et' ||\n getValues('employmentType') === 's_e_et',\n};\n\nexport const FIELD_SHOW_SELF_EMPLOYED = {\n watchFields: ['memberId', 'employmentType'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('employmentType')?.length ||\n getValues('employmentType') !== 's_e_et',\n};\n\nexport const FIELD_SHOW_NO_SELF_EMPLOYED = {\n watchFields: ['memberId', 'employmentType'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('employmentType')?.length ||\n getValues('employmentType') === 's_e_et',\n};\n\nexport const FIELD_SHOW_NO_MILITARY_NO_SELFEMPLOYED = {\n watchFields: ['memberId', 'employmentType'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('employmentType')?.length ||\n getValues('employmentType') === 's_e_et' ||\n getValues('employmentType') === 'm_et',\n};\n\nexport const FIELD_SHOW_NO_MILITARY_NO_SELFEMPLOYED_PAYRATE = {\n watchFields: ['memberId', 'employmentType', 'payFrequency'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('employmentType') === 's_e_et' ||\n getValues('employmentType') === 'm_et' ||\n !getValues('payFrequency')?.length,\n};\n\nexport const FIELD_SHOW_SEASONAL = {\n watchFields: ['memberId', 'employmentType'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('employmentType') !== EMPLOYMENT_TYPE_SEASONAL,\n};\n\nexport const FIELD_SHOW_PAY_HOURLY = {\n watchFields: ['payFrequency'],\n hidden: ({ getValues }) => getValues('payFrequency') !== PAY_FREQUENCY_HOURLY,\n};\n\nexport const FIELD_SHOW_PAY_HOURLY_SEMI_OR_BIWEEKLY = {\n watchFields: ['payFrequency'],\n hidden: ({ getValues }) =>\n getValues('payFrequency') !== PAY_FREQUENCY_HOURLY &&\n getValues('payFrequency') !== PAY_FREQUENCY_SEMI_MONTHLY &&\n getValues('payFrequency') !== PAY_FREQUENCY_BI_WEEKLY,\n};\n\nexport const FIELD_SHOW_PAY_BI_WEEKLY = {\n watchFields: ['payFrequency'],\n hidden: ({ getValues }) =>\n getValues('payFrequency') !== PAY_FREQUENCY_BI_WEEKLY,\n};\n\nexport const FIELD_SHOW_PAY_MONTHLY = {\n watchFields: ['payFrequency'],\n hidden: ({ getValues }) =>\n getValues('payFrequency') !== PAY_FREQUENCY_MONTHLY,\n};\n\nexport const FIELD_SHOW_PAY_WEEKLY = {\n watchFields: ['payFrequency'],\n hidden: ({ getValues }) => getValues('payFrequency') !== PAY_FREQUENCY_WEEKLY,\n};\n\nexport const FIELD_SHOW_PAY_SEMI_MONTHLY = {\n watchFields: ['payFrequency'],\n hidden: ({ getValues }) =>\n getValues('payFrequency') !== PAY_FREQUENCY_SEMI_MONTHLY,\n};\n\nexport const FIELD_SHOW_PAY_ANNUALLY = {\n watchFields: ['payFrequency'],\n hidden: ({ getValues }) =>\n getValues('payFrequency') !== PAY_FREQUENCY_ANNUALLY,\n};\n\nexport const FIELD_SHOW_ANTICIPATED12 = {\n watchFields: ['memberId', 'payFrequency', 'anticipatedIncrease12Months'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('anticipatedIncrease12Months') !== 'yes',\n};\n\nexport const FIELD_SHOW_ANTICIPATED12_HOURLY = {\n watchFields: ['memberId', 'payFrequency', 'anticipatedIncrease12Months'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_HOURLY ||\n getValues('anticipatedIncrease12Months') !== 'yes',\n};\n\nexport const FIELD_SHOW_ANTICIPATED12_ANNUAL = {\n watchFields: ['memberId', 'payFrequency', 'anticipatedIncrease12Months'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_ANNUALLY ||\n getValues('anticipatedIncrease12Months') !== 'yes',\n};\n\nexport const FIELD_SHOW_ANTICIPATED12_WEEKLY = {\n watchFields: ['memberId', 'payFrequency', 'anticipatedIncrease12Months'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_WEEKLY ||\n getValues('anticipatedIncrease12Months') !== 'yes',\n};\n\nexport const FIELD_SHOW_ANTICIPATED12_BIWEEKLY = {\n watchFields: ['memberId', 'payFrequency', 'anticipatedIncrease12Months'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_BI_WEEKLY ||\n getValues('anticipatedIncrease12Months') !== 'yes',\n};\n\nexport const FIELD_SHOW_ANTICIPATED12_SEMI_MONTHLY = {\n watchFields: ['memberId', 'payFrequency', 'anticipatedIncrease12Months'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_SEMI_MONTHLY ||\n getValues('anticipatedIncrease12Months') !== 'yes',\n};\n\nexport const FIELD_SHOW_ANTICIPATED12_MONTHLY = {\n watchFields: ['memberId', 'payFrequency', 'anticipatedIncrease12Months'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_MONTHLY ||\n getValues('anticipatedIncrease12Months') !== 'yes',\n};\n\nexport const FIELD_SHOW_OVERTIME_PAY = {\n watchFields: ['memberId', 'payFrequency', 'overtimePay'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('overtimePay') !== 'yes',\n};\n\nexport const FIELD_SHOW_TIPS_PAY = {\n watchFields: ['memberId', 'payFrequency', 'tipsAndGratuities'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('tipsAndGratuities') !== 'yes',\n};\n\nexport const FIELD_SHOW_TIPS_UNREPORTED = {\n watchFields: [\n 'memberId',\n 'payFrequency',\n 'tipsAndGratuities',\n 'tipsAndGratuitiesAllReported',\n ],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('tipsAndGratuities') !== 'yes' ||\n getValues('tipsAndGratuitiesAllReported') !== 'no',\n};\n\nexport const FIELD_SHOW_COMMISSIONS_PAY = {\n watchFields: ['memberId', 'payFrequency', 'commissionsOrBonuses'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('commissionsOrBonuses') !== 'yes',\n};\n\nexport const FIELD_SHOW_COMMISSIONS_SPECIFIED = {\n watchFields: [\n 'memberId',\n 'payFrequency',\n 'commissionsOrBonuses',\n 'bonusOrCommissions',\n ],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('commissionsOrBonuses') !== 'yes' ||\n !getValues('bonusOrCommissions')?.length,\n};\n\nexport const FIELD_SHOW_COMMISSIONS_PAY_WEEKLY = {\n watchFields: [\n 'memberId',\n 'payFrequency',\n 'commissionsOrBonuses',\n 'bonusOrCommissions',\n 'commissionsPayFrequency',\n ],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('commissionsOrBonuses') !== 'yes' ||\n !getValues('bonusOrCommissions')?.length ||\n getValues('commissionsPayFrequency') !== PAY_FREQUENCY_WEEKLY,\n};\n\nexport const FIELD_SHOW_COMMISSIONS_PAY_MONTHLY = {\n watchFields: [\n 'memberId',\n 'payFrequency',\n 'commissionsOrBonuses',\n 'bonusOrCommissions',\n 'commissionsPayFrequency',\n ],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('commissionsOrBonuses') !== 'yes' ||\n !getValues('bonusOrCommissions')?.length ||\n getValues('commissionsPayFrequency') !== PAY_FREQUENCY_MONTHLY,\n};\n\nexport const FIELD_SHOW_COMMISSIONS_PAY_ANNUALLY = {\n watchFields: [\n 'memberId',\n 'payFrequency',\n 'commissionsOrBonuses',\n 'bonusOrCommissions',\n 'commissionsPayFrequency',\n ],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n !getValues('payFrequency')?.length ||\n getValues('commissionsOrBonuses') !== 'yes' ||\n !getValues('bonusOrCommissions')?.length ||\n getValues('commissionsPayFrequency') !== PAY_FREQUENCY_ANNUALLY,\n};\n\n// ------------\n// Shared fields\n// ------------\n\n// Seasonal - Date Range\nexport const FIELD_SEASONAL_WORK_DATES = {\n ...FIELD_SHOW_SEASONAL,\n variant: 'date',\n label: ,\n name: 'doNotworkStartDate',\n // disableFuture: true,\n defaultCalendarMonth: moment(2000, 'YYYY'),\n rules: {\n maxDate: moment().endOf('year'),\n required: true,\n },\n GridProps: SMALL_GRID_PROPS,\n helperText: '',\n};\n","import ROOT_PATHS, { WAGES_AND_INCOME_PATHS } from 'constants/paths';\n\nexport const PATHS = WAGES_AND_INCOME_PATHS;\nexport const ROOT_PATH_WAGES_AND_INCOME = ROOT_PATHS.WAGES_AND_INCOME;\n\nexport const BUTTON_GROUP_SX = {\n flexWrap: 'wrap',\n width: '100%',\n '& > button': {\n width: { xs: 'calc(100% - 4px)', sm: 'calc(50% - 4px)' },\n },\n};\n\nexport const PAY_FREQUENCY_HOURLY = 'hourly';\nexport const PAY_FREQUENCY_BI_WEEKLY = 'biweekly';\nexport const PAY_FREQUENCY_MONTHLY = 'monthly';\nexport const PAY_FREQUENCY_WEEKLY = 'weekly';\nexport const PAY_FREQUENCY_SEMI_MONTHLY = 'semimonthly';\nexport const PAY_FREQUENCY_ANNUALLY = 'annually';\n\nexport const COMMON_PAY_FREQUENCY_OPTIONS = {\n WEEKLY: {\n value: PAY_FREQUENCY_WEEKLY,\n text: 'afforda.wagesAndIncome.details.job.weekly',\n },\n MONTHLY: {\n value: PAY_FREQUENCY_MONTHLY,\n text: 'afforda.wagesAndIncome.details.job.monthly',\n },\n ANNUALLY: {\n value: PAY_FREQUENCY_ANNUALLY,\n text: 'afforda.wagesAndIncome.details.job.annually',\n },\n};\n\nexport const WAGES_AND_INCOME_DETAILS_FIELDS = {\n JOBS: 'jobs',\n ANTICIPATED_JOBS: 'anticipatedJobs',\n LAST_JOBS: 'lastJobs',\n NO_INCOME: 'noIncome',\n CHILD_SUPPORTS: 'childSupports',\n ALIMONIES: 'alimonies',\n SOCIAL_SECS: 'socialSecs',\n OTHER_INCOMES: 'otherIncomes',\n PUBLIC_AIDS: 'publicAids',\n GIFTS: 'gifts',\n UNEMPLOYMENTS: 'unemployments',\n PENSIONS: 'pensions',\n ONLINES: 'onlines',\n TRUSTS: 'trusts',\n};\n\nexport const DEFAULT_NO_INCOME_DATA = {\n noIncomePast30Days: '',\n noIncomeUtilities: '',\n};\n","import { FormattedMessage } from 'react-intl';\nimport { getMemberKey, getMemberName } from '../AffordaHousehold/utils';\nimport { BUTTON_GROUP_SX } from './constants';\nimport { FIELD_AMOUNT, FIELD_TEXT_REQUIRED } from './constants.fields';\n\nexport const NEW_SOCIAL_SEC = {\n memberId: '',\n source: '',\n payFrequency: '',\n endDate: '',\n weeklyAmount: '',\n monthlyAmount: '',\n annualAmount: '',\n claimNumber: '',\n};\n\nexport const PAY_FREQUENCY_MONTHLY = 'monthly';\nexport const PAY_FREQUENCY_WEEKLY = 'weekly';\nexport const PAY_FREQUENCY_ANNUALLY = 'annually';\n\nexport const PAY_FREQUENCY_OPTIONS = {\n MONTHLY: {\n value: PAY_FREQUENCY_MONTHLY,\n text: 'afforda.wagesAndIncome.details.job.monthly',\n },\n};\n\nexport const SOCIAL_SEC_SSI = 'ssi';\nexport const SOCIAL_SEC_SSDI = 'ssdi';\n\nexport const SOURCE_OPTIONS = {\n WEEKLY: {\n value: SOCIAL_SEC_SSI,\n text: 'afforda.wagesAndIncome.details.socialSec.ssi',\n },\n MONTHLY: {\n value: SOCIAL_SEC_SSDI,\n text: 'afforda.wagesAndIncome.details.socialSec.ssdi',\n },\n};\n\nexport const FIELD_MEMBER_SELECTED = {\n watchFields: ['memberId'],\n hidden: ({ getValues }) => !getValues('memberId')?.length,\n};\n\nexport const FIELD_SOURCE_SELECTED = {\n watchFields: ['memberId', 'source'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length || !getValues('source')?.length,\n};\n\nexport const FIELD_PAY_FREQUENCY = {\n watchFields: ['memberId', 'payFrequency'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length || !getValues('payFrequency')?.length,\n};\n\nexport const FIELD_PAY_FREQUENCY_WEEKLY = {\n watchFields: ['memberId', 'payFrequency'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_WEEKLY,\n};\n\nexport const FIELD_PAY_FREQUENCY_MONTHLY = {\n watchFields: ['memberId', 'payFrequency'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_MONTHLY,\n};\n\nexport const FIELD_PAY_FREQUENCY_ANNUALLY = {\n watchFields: ['memberId', 'payFrequency'],\n hidden: ({ getValues }) =>\n !getValues('memberId')?.length ||\n getValues('payFrequency') !== PAY_FREQUENCY_ANNUALLY,\n};\n\nexport const FIELD_GROUP_BUTTONS = {\n variant: 'buttonGroup',\n direction: 'column',\n rules: {\n required: true,\n },\n GridProps: {\n xs: 12,\n },\n};\n\nexport const FIELDS = ({\n id,\n intl,\n members,\n records,\n index,\n currentMemberId,\n}) => {\n // Disable members that already have records with both sources.\n const newRecords = records.slice(0, records.length - 1);\n\n const availableMembers =\n members?.filter((member) => {\n const memberKey = getMemberKey(member);\n const hasRecordSsi = newRecords.find(\n (record) =>\n record.memberId === memberKey && record.source === SOCIAL_SEC_SSI,\n );\n\n const hasRecordSsdi = newRecords.find(\n (record) =>\n record.memberId === memberKey && record.source === SOCIAL_SEC_SSDI,\n );\n return !(hasRecordSsi && hasRecordSsdi);\n }) ?? [];\n\n const availableSources =\n Object.values(SOURCE_OPTIONS).filter((option) => {\n const hasRecord = newRecords.find(\n (record) =>\n record?.memberId === currentMemberId &&\n record.source === option.value,\n );\n return !hasRecord;\n }) ?? [];\n\n const sourceOptions = Object.values(SOURCE_OPTIONS)\n ?.map((option) => {\n const isDisabled = !availableSources\n ?.map(({ value }) => value)\n ?.includes(option.value);\n return {\n value: option.value,\n label: option.text,\n disabled: isDisabled,\n };\n })\n .filter(\n (item) =>\n index === records.length - 1 ||\n (records[index]?.source?.length > 0 &&\n records[index].source === item.value),\n )\n .map((item) => ({\n ...item,\n label: ,\n }));\n\n const memberField =\n (members?.length ?? 0) > 1\n ? [\n {\n id,\n name: 'memberId',\n variant: 'buttonGroup',\n watchFields: ['memberId'],\n rules: {\n required: true,\n },\n direction: 'row',\n sx: BUTTON_GROUP_SX,\n GridProps: {\n xs: 12,\n },\n options: members.map((member) => ({\n value: getMemberKey(member),\n label: getMemberName(member),\n disabled: !availableMembers\n ?.map(({ id }) => id)\n .includes(getMemberKey(member)),\n })),\n },\n ]\n : [];\n\n return [\n ...memberField,\n // Source\n {\n id,\n ...FIELD_MEMBER_SELECTED,\n name: 'source',\n label: (\n \n ),\n variant: 'buttonGroup',\n rules: {\n required: true,\n },\n direction: 'column',\n GridProps: {\n xs: 12,\n },\n hidden: ({ getValues }) => !getValues('memberId')?.length,\n watchFields: ['memberId', 'source'],\n options: sourceOptions,\n },\n\n // PayFreq\n {\n id,\n ...FIELD_GROUP_BUTTONS,\n ...FIELD_SOURCE_SELECTED,\n label: (\n \n ),\n name: 'payFrequency',\n rules: {\n required: true,\n },\n options: Object.values(PAY_FREQUENCY_OPTIONS)?.map((option) => ({\n value: option.value,\n label: ,\n })),\n GridProps: {\n xs: 12,\n sm: 12,\n },\n direction: 'row',\n },\n {\n id,\n ...FIELD_AMOUNT,\n ...FIELD_PAY_FREQUENCY_WEEKLY,\n label: (\n \n ),\n name: 'weeklyAmount',\n GridProps: {\n xs: 12,\n sm: 6,\n },\n },\n {\n id,\n ...FIELD_AMOUNT,\n ...FIELD_PAY_FREQUENCY_MONTHLY,\n label: (\n \n ),\n name: 'monthlyAmount',\n GridProps: {\n xs: 12,\n sm: 6,\n },\n },\n {\n id,\n ...FIELD_AMOUNT,\n ...FIELD_PAY_FREQUENCY_ANNUALLY,\n label: (\n \n ),\n name: 'annualAmount',\n GridProps: {\n xs: 12,\n sm: 6,\n },\n },\n\n // Received\n {\n id,\n ...FIELD_PAY_FREQUENCY,\n ...FIELD_TEXT_REQUIRED,\n rules: {\n required: false,\n },\n label: (\n \n ),\n placeholder: intl.formatMessage({\n id: 'afforda.wagesAndIncome.details.socialSec.claimNumber',\n }),\n name: 'claimNumber',\n helperText: intl.formatMessage({\n id: 'afforda.wagesAndIncome.details.socialSec.diffSSN',\n }),\n GridProps: {\n xs: 12,\n sm: 6,\n },\n },\n ];\n};\n","import moment from 'moment';\n// * Calculate the number of weeks worked within a specific year.\nimport {\n PAY_FREQUENCY_ANNUALLY,\n PAY_FREQUENCY_BI_WEEKLY,\n PAY_FREQUENCY_HOURLY,\n PAY_FREQUENCY_MONTHLY,\n PAY_FREQUENCY_SEMI_MONTHLY,\n PAY_FREQUENCY_WEEKLY,\n} from '../../constants';\n\nconst DAYS_IN_WEEK = 7;\nconst HOURS_IN_DAY = 24;\nconst MINUTES_IN_HOUR = 60;\nconst SECONDS_IN_MINUTE = 60;\nconst MILLISECONDS_IN_SECOND = 1000;\n\nexport const getWeeksWorkedInYear = (\n startDate,\n endDate,\n year = new Date().getFullYear(),\n) => {\n // Set the start and end boundaries for the year\n const startOfYear = new Date(`${year}-01-01`);\n const endOfYear = new Date(`${year}-12-31`);\n\n // Adjust startDate and endDate if they fall outside the current year\n const start = new Date(\n Math.max(new Date(startDate).getTime(), startOfYear.getTime()),\n );\n\n const end = endDate\n ? new Date(Math.min(new Date(endDate).getTime(), endOfYear.getTime()))\n : endOfYear;\n\n // If the adjusted start and end dates are the same, return 0 weeks\n if (start.getTime() === end.getTime()) {\n return 0;\n }\n\n // Calculate the difference in weeks\n const weeks = Math.ceil(\n (end - start) /\n (DAYS_IN_WEEK *\n HOURS_IN_DAY *\n MINUTES_IN_HOUR *\n SECONDS_IN_MINUTE *\n MILLISECONDS_IN_SECOND),\n );\n\n if (weeks > 52) {\n return 52;\n }\n\n return weeks > 0 ? weeks : 0;\n};\n\n// * Calculate the number of months worked within a specific year.\n\nexport const getMonthsWorkedInYear = (\n startDate,\n endDate,\n year = new Date().getFullYear(),\n) => {\n // Set the start and end boundaries for the year\n const startOfYear = moment(`${year}-01-01`).startOf('month');\n const endOfYear = moment(`${year}-12-31`).endOf('month');\n\n const start = moment(startDate);\n const end = endDate ? moment(endDate) : endOfYear;\n\n // If the job is fully outside the year, return 0 months\n if (start.isAfter(endOfYear) || end.isBefore(startOfYear)) {\n return 0;\n }\n\n // Adjust start and end dates to be within the year boundaries\n const adjustedStart = start.isBefore(startOfYear)\n ? startOfYear\n : start.startOf('month');\n const adjustedEnd = end.isAfter(endOfYear) ? endOfYear : end.endOf('month');\n\n // Calculate the difference in months\n const months = adjustedEnd.diff(adjustedStart, 'months') + 1;\n\n return months > 0 ? months : 0;\n};\n\n// * Calculate the number of hours worked within a specific year.\n\nexport const getHoursWorkedInYear = (\n startDate,\n endDate,\n hoursPerWeek = 40,\n year = new Date().getFullYear(),\n) => {\n // Calculate the number of weeks between the start and end dates\n const weeks = getWeeksWorkedInYear(startDate, endDate, year);\n\n // Calculate total hours worked\n const hoursWorked = weeks * hoursPerWeek;\n\n return hoursWorked > 0 ? hoursWorked : 0;\n};\n\nexport const getBiWeeksWorkedInYear = (\n startDate,\n endDate,\n year = new Date().getFullYear(),\n) => {\n // Calculate the number of bi-weeks between the start and end dates\n const weeks = getWeeksWorkedInYear(startDate, endDate, year);\n\n // Calculate total bi-weeks worked\n const biweekPeriod = Math.ceil(weeks / 2);\n\n return biweekPeriod > 0 ? biweekPeriod : 0;\n};\n\nexport const getSemiMonthsWorkedInYear = (\n startDate,\n endDate,\n year = new Date().getFullYear(),\n) => {\n // Calculate the number of semi month periods between the start and end dates\n const months = getMonthsWorkedInYear(startDate, endDate, year);\n\n // Calculate total semi month periods of time worked\n const semiMonthPeriod = Math.ceil(months * 2);\n\n return semiMonthPeriod > 0 ? semiMonthPeriod : 0;\n};\n\nexport const getIncomeWorkedInYear = (\n startDate,\n endDate,\n rate,\n payFrequency,\n hoursPerWeek = 40, // Default to 40 hours per week for hourly workers\n year = new Date().getFullYear(),\n) => {\n let totalIncome = 0;\n\n switch (payFrequency) {\n case PAY_FREQUENCY_HOURLY:\n const hoursWorked = getHoursWorkedInYear(\n startDate,\n endDate,\n hoursPerWeek,\n year,\n );\n totalIncome = hoursWorked * rate;\n break;\n\n case PAY_FREQUENCY_WEEKLY:\n const weeksWorked = getWeeksWorkedInYear(startDate, endDate, year);\n totalIncome = weeksWorked * rate;\n break;\n\n case PAY_FREQUENCY_BI_WEEKLY:\n const biWeeksWorked = getBiWeeksWorkedInYear(startDate, endDate, year);\n totalIncome = biWeeksWorked * rate;\n break;\n\n case PAY_FREQUENCY_SEMI_MONTHLY:\n const semiMonthsWorked = getSemiMonthsWorkedInYear(\n startDate,\n endDate,\n year,\n );\n totalIncome = semiMonthsWorked * rate;\n break;\n\n case PAY_FREQUENCY_MONTHLY:\n const monthsWorked = getMonthsWorkedInYear(startDate, endDate, year);\n totalIncome = monthsWorked * rate;\n break;\n\n case PAY_FREQUENCY_ANNUALLY:\n const annualMonthsWorked = getMonthsWorkedInYear(\n startDate,\n endDate,\n year,\n );\n totalIncome = annualMonthsWorked > 0 ? rate : 0; // If any part of the year is worked, apply the annual rate\n break;\n\n default:\n totalIncome = 0;\n break;\n }\n\n return totalIncome.toFixed(2); // Return the total income rounded to two decimal places\n};\n\nexport const adjustHoursWeeksMonths = (\n payFrequency,\n hoursWeeksMonths,\n hours,\n) => {\n switch (payFrequency) {\n case PAY_FREQUENCY_ANNUALLY:\n return 12; // \"Annually\" implies a full year, so it's set to 1.\n case PAY_FREQUENCY_WEEKLY:\n return 52; // \"Weekly\" implies 52 weeks in a year.\n case PAY_FREQUENCY_MONTHLY:\n // For \"Monthly\", the number of months should be between 1 and 12.\n // This assumes hoursWeeksMonths is the number of months.\n return Math.min(Math.max(hoursWeeksMonths, 1), 12);\n case PAY_FREQUENCY_BI_WEEKLY:\n case PAY_FREQUENCY_SEMI_MONTHLY:\n return hours ?? 40;\n\n case PAY_FREQUENCY_HOURLY:\n // For \"Bi-Weekly\", \"Semi-Monthly\", and \"Hourly\", it returns hours per week.\n return hoursWeeksMonths;\n default:\n return hoursWeeksMonths; // Default case, return the original value.\n }\n};\n\nexport const adjustWeeksMonthsAnnual = (payFrequency) => {\n switch (payFrequency) {\n case PAY_FREQUENCY_ANNUALLY:\n return 12; // \"Annually\" implies a full year, so it's set to 1.\n case PAY_FREQUENCY_WEEKLY:\n return 52; // \"Weekly\" implies 52 weeks in a year.\n case PAY_FREQUENCY_MONTHLY:\n // For \"Monthly\", the number of months should be between 1 and 12.\n // This assumes hoursWeeksMonths is the number of months.\n return 12;\n case PAY_FREQUENCY_BI_WEEKLY:\n case PAY_FREQUENCY_SEMI_MONTHLY:\n case PAY_FREQUENCY_HOURLY:\n // For \"Bi-Weekly\", \"Semi-Monthly\", and \"Hourly\", it returns hours per week.\n return 40;\n\n default:\n return 40; // Default case, return the original value.\n }\n};\n\nexport const getDetailedPeriod = (\n payFrequency,\n startDate,\n hoursPerWeek,\n customEndDate,\n) => {\n const year = new Date().getFullYear();\n\n const endDate = customEndDate\n ? new Date(customEndDate)\n : new Date(`${year}-12-31`);\n\n switch (payFrequency) {\n case PAY_FREQUENCY_HOURLY:\n return hoursPerWeek;\n\n case PAY_FREQUENCY_WEEKLY:\n case PAY_FREQUENCY_BI_WEEKLY:\n return getWeeksWorkedInYear(startDate, endDate);\n\n case PAY_FREQUENCY_SEMI_MONTHLY:\n case PAY_FREQUENCY_MONTHLY:\n case PAY_FREQUENCY_ANNUALLY:\n return getMonthsWorkedInYear(startDate, endDate);\n\n default:\n return 0;\n }\n};\n\nexport const getPayRateCustom = (\n payFrequency,\n hourlyRate,\n weeklyRate,\n biWeeklyRate,\n monthlyRate,\n semiMonthlyRate,\n annualylRate,\n) => {\n switch (payFrequency) {\n case PAY_FREQUENCY_HOURLY:\n return {\n payFrequency: PAY_FREQUENCY_HOURLY,\n rate: hourlyRate?.length ? parseFloat(hourlyRate) || 0 : 0,\n };\n case PAY_FREQUENCY_WEEKLY:\n return {\n payFrequency: PAY_FREQUENCY_WEEKLY,\n rate: weeklyRate?.length ? parseFloat(weeklyRate) || 0 : 0,\n };\n case PAY_FREQUENCY_BI_WEEKLY:\n return {\n payFrequency: PAY_FREQUENCY_BI_WEEKLY,\n rate: biWeeklyRate?.length ? parseFloat(biWeeklyRate) || 0 : 0,\n };\n case PAY_FREQUENCY_MONTHLY:\n return {\n payFrequency: PAY_FREQUENCY_MONTHLY,\n rate: monthlyRate?.length ? parseFloat(monthlyRate) || 0 : 0,\n };\n case PAY_FREQUENCY_SEMI_MONTHLY:\n return {\n payFrequency: PAY_FREQUENCY_SEMI_MONTHLY,\n rate: semiMonthlyRate?.length ? parseFloat(semiMonthlyRate) || 0 : 0,\n };\n case PAY_FREQUENCY_ANNUALLY:\n return {\n payFrequency: PAY_FREQUENCY_ANNUALLY,\n rate: annualylRate?.length ? parseFloat(annualylRate) || 0 : 0,\n };\n default:\n return { payFrequency: 'unknown', rate: 0 };\n }\n};\n","// Time constants\nconst MILLISECONDS_PER_DAY = 1000 * 60 * 60 * 24;\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_MONTH = 4.33; // Average weeks per month\n\n// Pay period constants\nconst WEEKS_PER_YEAR = 52;\nconst MONTHS_PER_YEAR = 12;\nconst BIWEEKLY_PERIODS_PER_YEAR = 26;\nconst SEMIMONTHLY_PERIODS_PER_YEAR = 24;\n\n// Default values\nconst DEFAULT_HOURS_WEEKS_MONTHS = 1;\n\n// Boundary helpers\nfunction clampValue(value, max) {\n return Math.min(Math.max(value, 1), max);\n}\n\nfunction getClampedPeriods(diffWeeks, periodType) {\n switch (periodType) {\n case 'weekly':\n return clampValue(diffWeeks, WEEKS_PER_YEAR);\n case 'biweekly':\n return clampValue(Math.floor(diffWeeks / 2), BIWEEKLY_PERIODS_PER_YEAR);\n case 'semimonthly':\n return clampValue(\n Math.ceil(diffWeeks / WEEKS_PER_MONTH) * 2,\n SEMIMONTHLY_PERIODS_PER_YEAR,\n );\n case 'monthly':\n return clampValue(\n Math.ceil(diffWeeks / WEEKS_PER_MONTH),\n MONTHS_PER_YEAR,\n );\n default:\n return DEFAULT_HOURS_WEEKS_MONTHS;\n }\n}\n\nfunction getCurrentYearStart() {\n const currentYear = new Date().getFullYear();\n return new Date(`${currentYear}-01-01T00:00:00`);\n}\n\nfunction getCurrentYearEnd() {\n const currentYear = new Date().getFullYear();\n return new Date(`${currentYear}-12-31T23:59:59`);\n}\n\nfunction isWholeYear(startDate, endDate) {\n const evalStartDate = startDate ? new Date(startDate) : getCurrentYearStart();\n const evalEndDate = endDate ? new Date(endDate) : getCurrentYearEnd();\n\n const yearStart = getCurrentYearStart();\n const yearEnd = getCurrentYearEnd();\n return evalStartDate <= yearStart && evalEndDate >= yearEnd;\n}\n\nexport function getIncomeItem({\n memberId,\n payType,\n startDate,\n endDate,\n payFrequency,\n payRate,\n hoursPerWeek,\n excludeStartDate,\n excludeEndDate,\n seasonalWorkWeeks,\n}) {\n // If seasonalWorkWeeks is defined, treat as partial year with specific weeks\n if (seasonalWorkWeeks) {\n const weeks = Number(seasonalWorkWeeks) || 0;\n\n switch (payFrequency) {\n case 'hourly': {\n const totalIncome = weeks * payRate * hoursPerWeek;\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate: totalIncome,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: totalIncome,\n };\n }\n case 'weekly': {\n const totalIncome = weeks * payRate;\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate: totalIncome,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: totalIncome,\n };\n }\n case 'biweekly': {\n const periods = Math.floor(weeks / 2);\n const totalIncome = periods * payRate * hoursPerWeek;\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate: totalIncome,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: totalIncome,\n };\n }\n case 'semimonthly': {\n const months = Math.ceil(weeks / WEEKS_PER_MONTH);\n const periods = months * 2;\n const totalIncome = periods * payRate * hoursPerWeek;\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate: totalIncome,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: totalIncome,\n };\n }\n case 'monthly': {\n const months = Math.ceil(weeks / WEEKS_PER_MONTH);\n const totalIncome = months * payRate;\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate: totalIncome,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: totalIncome,\n };\n }\n case 'annually':\n default:\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: payRate,\n };\n }\n }\n\n // Original logic for non-seasonal calculations\n const isFullYear = isWholeYear(startDate, endDate);\n const isPartialYear =\n !isFullYear ||\n (isFullYear && excludeStartDate?.length && excludeEndDate?.length);\n\n // For annual frequency or partial year calculations\n if (payFrequency === 'annually' || isPartialYear) {\n if (payFrequency === 'annually') {\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: payRate,\n };\n }\n\n // Calculate weeks for partial year\n const diffTime = Math.abs(\n (endDate ?? getCurrentYearEnd()) - (startDate ?? getCurrentYearStart()),\n );\n const diffWeeks = Math.ceil(\n diffTime / (MILLISECONDS_PER_DAY * DAYS_PER_WEEK),\n );\n\n // For partial year, convert everything to annual\n switch (payFrequency) {\n case 'hourly': {\n const periods = getClampedPeriods(diffWeeks, 'weekly');\n const totalIncome = hoursPerWeek * payRate * periods;\n\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate: totalIncome,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: totalIncome,\n };\n }\n case 'weekly': {\n const periods = getClampedPeriods(diffWeeks, 'weekly');\n const totalIncome = payRate * periods;\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate: totalIncome,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: totalIncome,\n };\n }\n case 'biweekly': {\n const periods = getClampedPeriods(diffWeeks, 'biweekly');\n const totalIncome = hoursPerWeek * payRate * periods;\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate: totalIncome,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: totalIncome,\n };\n }\n case 'semimonthly': {\n const periods = getClampedPeriods(diffWeeks, 'semimonthly');\n const totalIncome = hoursPerWeek * payRate * periods;\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate: totalIncome,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: totalIncome,\n };\n }\n case 'monthly': {\n const periods = getClampedPeriods(diffWeeks, 'monthly');\n const totalIncome = payRate * periods;\n return {\n memberId,\n payType,\n payFrequency: 'monthly',\n payRate,\n HoursWeekMonth: periods,\n incomeTotal: totalIncome,\n };\n }\n default:\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: payRate,\n };\n }\n }\n\n // Full year calculations\n switch (payFrequency) {\n case 'hourly':\n return {\n memberId,\n payType,\n payFrequency: 'hourly',\n payRate,\n HoursWeekMonth: hoursPerWeek,\n incomeTotal: hoursPerWeek * payRate * WEEKS_PER_YEAR,\n };\n case 'weekly':\n return {\n memberId,\n payType,\n payFrequency: 'weekly',\n payRate,\n HoursWeekMonth: WEEKS_PER_YEAR,\n incomeTotal: payRate * WEEKS_PER_YEAR,\n };\n case 'biweekly':\n return {\n memberId,\n payType,\n payFrequency: 'biweekly',\n payRate,\n HoursWeekMonth: hoursPerWeek,\n incomeTotal: hoursPerWeek * payRate * BIWEEKLY_PERIODS_PER_YEAR,\n };\n case 'semimonthly':\n return {\n memberId,\n payType,\n payFrequency: 'semimonthly',\n payRate,\n HoursWeekMonth: hoursPerWeek,\n incomeTotal: hoursPerWeek * payRate * SEMIMONTHLY_PERIODS_PER_YEAR,\n };\n case 'monthly':\n return {\n memberId,\n payType,\n payFrequency: 'monthly',\n payRate,\n HoursWeekMonth: MONTHS_PER_YEAR,\n incomeTotal: payRate * MONTHS_PER_YEAR,\n };\n case 'annually':\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: payRate,\n };\n default:\n return {\n memberId,\n payType,\n payFrequency: 'annually',\n payRate,\n HoursWeekMonth: DEFAULT_HOURS_WEEKS_MONTHS,\n incomeTotal: payRate,\n };\n }\n}\n","import { getIncomeItem } from './incomeTotals.utils';\n\nfunction getCurrentYearStart() {\n const currentYear = new Date().getFullYear();\n return new Date(`${currentYear}-01-01T00:00:00`);\n}\n\nfunction getCurrentYearEnd() {\n const currentYear = new Date().getFullYear();\n return new Date(`${currentYear}-12-31T23:59:59`);\n}\n\nfunction getDateRange(startDate, endDate) {\n const yearStart = getCurrentYearStart();\n const yearEnd = getCurrentYearEnd();\n\n // If both dates are undefined, use full year\n if (!startDate && !endDate) {\n return {\n start: yearStart,\n end: yearEnd,\n };\n }\n\n let evalStartDate = startDate ? new Date(startDate) : yearStart;\n let evalEndDate = endDate ? new Date(endDate) : yearEnd;\n\n // Adjust dates if they're outside current year\n if (evalStartDate < yearStart) {\n evalStartDate = yearStart;\n }\n if (evalEndDate > yearEnd) {\n evalEndDate = yearEnd;\n }\n\n return {\n start: evalStartDate,\n end: evalEndDate,\n };\n}\n\nfunction calculatePeriods(startDate, endDate, payFrequency) {\n const { start, end } = getDateRange(startDate, endDate);\n\n const diffTime = Math.abs(end - start);\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n const diffWeeks = Math.ceil(diffDays / 7);\n const diffMonths = Math.ceil(diffWeeks / 4.33);\n\n switch (payFrequency) {\n case 'weekly':\n return Math.min(diffWeeks, 52); // Limit to 52 weeks per year\n case 'monthly':\n return Math.min(diffMonths, 12); // Limit to 12 months per year\n case 'annually':\n return 1;\n default:\n return 0;\n }\n}\n\nexport const getIncomeWithRange = (fieldId, records) => {\n if (!records || !records?.length) {\n return {\n [fieldId]: [],\n totalIncome: 0,\n };\n }\n\n // Get unique memberIds\n const memberIds = [...new Set(records.map((record) => record?.memberId))];\n\n // Process records for each member\n const memberIncomes = memberIds.map((memberId) => {\n const memberRecords = records.filter(\n (record) => record.memberId === memberId,\n );\n\n const incomeItems = [];\n\n memberRecords.forEach((record) => {\n const {\n payFrequency,\n startDate,\n endDate,\n weeklyAmount,\n monthlyAmount,\n annualAmount,\n source,\n } = record;\n\n // Get base pay rate from appropriate field\n let basePayRate = 0;\n switch (payFrequency) {\n case 'weekly':\n basePayRate = Number(weeklyAmount) || 0;\n break;\n case 'monthly':\n basePayRate = Number(monthlyAmount) || 0;\n break;\n case 'annually':\n basePayRate = Number(annualAmount) || 0;\n break;\n default:\n return; // Skip if no valid frequency\n }\n\n // Skip if no amount\n if (!basePayRate) {\n return;\n }\n\n const periods = calculatePeriods(startDate, endDate, payFrequency);\n let totalIncome = 0;\n\n switch (payFrequency) {\n case 'weekly':\n totalIncome = basePayRate * periods;\n break;\n case 'monthly':\n totalIncome = basePayRate * periods;\n break;\n case 'annually':\n totalIncome = basePayRate;\n break;\n default:\n return;\n }\n\n incomeItems.push(\n getIncomeItem({\n memberId,\n payType: source || 'income',\n startDate: startDate ? new Date(startDate) : undefined,\n endDate: endDate ? new Date(endDate) : undefined,\n payFrequency: 'annually', // Convert all to annual\n payRate: totalIncome,\n HoursWeekMonth: 1,\n }),\n );\n });\n\n // Calculate member's total income\n const memberTotalIncome = incomeItems.reduce(\n (sum, item) => sum + item.incomeTotal,\n 0,\n );\n\n return {\n memberId,\n [fieldId]: incomeItems,\n totalIncome: memberTotalIncome,\n };\n });\n\n // Filter out members with no valid income items\n const validMemberIncomes = memberIncomes.filter(\n (member) => member[fieldId].length > 0,\n );\n\n // Calculate grand total\n const grandTotal = validMemberIncomes.reduce(\n (sum, member) => sum + member.totalIncome,\n 0,\n );\n\n return {\n [fieldId]: validMemberIncomes,\n totalIncome: grandTotal,\n };\n};\n\n// {\n// \"jobs\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"companyName\": \"fortress\",\n// \"companyStreetAddress\": \"421 Bridgeview PL\",\n// \"companyCity\": \"Stratford\",\n// \"companyState\": \"LA\",\n// \"companyZip\": \"06614\",\n// \"supervisorName\": \"MiaDos\",\n// \"supervisorPhone\": \"9292889951\",\n// \"jobTitle\": \"Edison\",\n// \"doNotworkStartDate\": \"\",\n// \"doNotworkEndDate\": \"\",\n// \"id\": \"5305356f-55db-420a-9faa-b05aacac8a1b\",\n// \"memberName\": \"Clear this field\",\n// \"employmentType\": \"f_t_et\",\n// \"workType\": \"\",\n// \"startDate\": \"2000-09-01T04:00:00.000Z\",\n// \"startDateBusiness\": \"\",\n// \"selfTaxes\": \"\",\n// \"averageNet\": \"\",\n// \"annualNet\": \"\",\n// \"militaryBranch\": \"\",\n// \"positionTitle\": \"\",\n// \"serviceStartDate\": \"\",\n// \"numDependentsClaimed\": \"\",\n// \"basePayLongevity\": \"\",\n// \"proficiencyPay\": \"\",\n// \"seaandForeignDutyPay\": \"\",\n// \"subsistenceAllowance\": \"\",\n// \"quartersAllowance\": \"\",\n// \"payFrequency\": \"hourly\",\n// \"anticipatedIncrease12Months\": \"yes\",\n// \"overtimePay\": \"yes\",\n// \"tipsAndGratuities\": \"yes\",\n// \"commissionsOrBonuses\": \"yes\",\n// \"hourlyPay\": \"8\",\n// \"hoursPerWeek\": \"40\",\n// \"weeklyPay\": \"\",\n// \"biWeeklyPay\": \"\",\n// \"semiMonthlyPay\": \"\",\n// \"monthlyPay\": \"\",\n// \"annualPay\": \"\",\n// \"anticipatedIncreaseRate\": \"9\",\n// \"anticipatedincreaseWhen\": \"\",\n// \"overtimeHourRate\": \"7\",\n// \"overtimeAvgHours\": 10,\n// \"tipsAndGratuitiesAllReported\": \"no\",\n// \"tipsAndGratuitiesPerWeek\": \"\",\n// \"tipsAndGratuitiesUnreportedByWeek\": \"\",\n// \"commissionsOrBonusesType\": \"\",\n// \"commissionsPayFrequency\": \"weekly\",\n// \"commissionsPayFrequencyWeekly\": \"5\",\n// \"commissionsPayFrequencyMonthly\": \"\",\n// \"commissionsPayFrequencyAnnually\": \"\",\n// \"layoffPeriod\": [],\n// \"anticipatedIncreaseWhen\": \"2025-06-01T04:00:00.000Z\",\n// \"receiveTipsAvgWeek\": \"4\",\n// \"receiveTipsAvgUnreported\": \"2\",\n// \"bonusOrCommissions\": \"jobBonus\"\n// }\n// ],\n// \"anticipatedJobs\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"companyName\": \"fortress\",\n// \"companyStreetAddress\": \"421 Bridgeview PL\",\n// \"companyCity\": \"Stratford\",\n// \"companyState\": \"IL\",\n// \"companyZip\": \"06614\",\n// \"supervisorName\": \"Edison B\",\n// \"supervisorPhone\": \"9292889951\",\n// \"jobTitle\": \"Mastersss\",\n// \"doNotworkStartDate\": \"\",\n// \"doNotworkEndDate\": \"\",\n// \"id\": \"688982d5-aac6-4210-8a4e-b62bf20193cb\",\n// \"memberName\": \"Clear this field\",\n// \"employmentType\": \"p_t_et\",\n// \"workType\": \"\",\n// \"startDate\": \"2025-04-01T04:00:00.000Z\",\n// \"startDateBusiness\": \"\",\n// \"selfTaxes\": \"\",\n// \"averageNet\": \"\",\n// \"annualNet\": \"\",\n// \"militaryBranch\": \"\",\n// \"positionTitle\": \"\",\n// \"serviceStartDate\": \"\",\n// \"numDependentsClaimed\": \"\",\n// \"basePayLongevity\": \"\",\n// \"proficiencyPay\": \"\",\n// \"seaandForeignDutyPay\": \"\",\n// \"subsistenceAllowance\": \"\",\n// \"quartersAllowance\": \"\",\n// \"payFrequency\": \"biweekly\",\n// \"anticipatedIncrease12Months\": \"\",\n// \"overtimePay\": \"\",\n// \"tipsAndGratuities\": \"\",\n// \"commissionsOrBonuses\": \"\",\n// \"hourlyPay\": \"9\",\n// \"hoursPerWeek\": \"20\",\n// \"weeklyPay\": \"\",\n// \"biWeeklyPay\": \"\",\n// \"semiMonthlyPay\": \"\",\n// \"monthlyPay\": \"\",\n// \"annualPay\": \"\",\n// \"anticipatedIncreaseRate\": \"\",\n// \"anticipatedincreaseWhen\": \"\",\n// \"overtimeHourRate\": \"\",\n// \"overtimeAvgHours\": \"\",\n// \"tipsAndGratuitiesAllReported\": \"\",\n// \"tipsAndGratuitiesPerWeek\": \"\",\n// \"tipsAndGratuitiesUnreportedByWeek\": \"\",\n// \"commissionsOrBonusesType\": \"\",\n// \"commissionsPayFrequency\": \"\",\n// \"commissionsPayFrequencyWeekly\": \"\",\n// \"commissionsPayFrequencyMonthly\": \"\",\n// \"commissionsPayFrequencyAnnually\": \"\",\n// \"layoffPeriod\": []\n// }\n// ],\n// \"childSupports\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"haveCourtOrder\": \"yes\",\n// \"anticipateCourt\": \"\",\n// \"whomReceive\": [],\n// \"whomReceiveMinors\": \"Adif\",\n// \"whomExpected\": [],\n// \"whomExpectedMinors\": \"\",\n// \"forWhomChildName\": \"\",\n// \"anticipatedState\": \"\",\n// \"anticipatedCounty\": \"\",\n// \"numCourtOrdered\": \"1\",\n// \"receivingOrdered\": \"yes\",\n// \"receivingAny\": \"\",\n// \"payFrequencyOrdered\": \"weekly\",\n// \"payFrequencyReceived\": \"\",\n// \"reasonableEfforts\": \"\",\n// \"explainEfforts\": \"\",\n// \"weeklyAmountOrdered\": \"10\",\n// \"monthlyAmountOrdered\": \"\",\n// \"annualAmountOrdered\": \"\",\n// \"weeklyAmountReceived\": \"\",\n// \"monthlyAmountReceived\": \"\",\n// \"annualAmountReceived\": \"\",\n// \"state\": \"\",\n// \"county\": \"\",\n// \"id\": \"60931ce4-b689-4376-8c43-5652c4e6eab5\",\n// \"anticipatedCountry\": \"\"\n// }\n// ],\n// \"alimonies\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"whomReceive\": \"Edison\",\n// \"payFrequency\": \"monthly\",\n// \"expectEnd\": \"2025-08-02T04:00:00.000Z\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"11\",\n// \"annualAmount\": \"\",\n// \"id\": \"c61932da-a7e8-4058-8575-61243b5df80b\"\n// }\n// ],\n// \"socialSecs\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"source\": \"ssi\",\n// \"payFrequency\": \"monthly\",\n// \"expectEnd\": \"\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"12\",\n// \"annualAmount\": \"\",\n// \"claimNumber\": \"\",\n// \"id\": \"cd61955b-1227-407f-a97c-cf7884bc3fcb\"\n// }\n// ],\n// \"otherIncomes\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"source\": \"Ads\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"13\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"id\": \"edefffab-7211-4490-b7e4-0b84489974bd\"\n// }\n// ],\n// \"publicAids\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"14\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"id\": \"119ac97b-bad0-4c77-9af7-9cf150168128\",\n// \"source\": \"\"\n// }\n// ],\n// \"gifts\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"source\": \"\",\n// \"payFrequency\": \"monthly\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"15\",\n// \"annualAmount\": \"\",\n// \"whom\": \"Marisol\",\n// \"startDate\": \"2025-01-01T04:00:00.000Z\",\n// \"endDate\": \"2025-06-21T04:00:00.000Z\",\n// \"id\": \"795ddba9-e781-4d5d-b67b-6d6ec0386f3f\"\n// }\n// ],\n// \"unemployments\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"monthly\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"15\",\n// \"annualAmount\": \"\",\n// \"source\": \"unemployment\",\n// \"id\": \"fb47f916-b6d9-4d2a-80f3-dabdf826abd6\"\n// }\n// ],\n// \"pensions\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"16\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"source\": \"pension\",\n// \"id\": \"af5e4414-94e0-4477-a2e0-032a8b6b7c95\"\n// }\n// ],\n// \"onlines\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"monthly\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"17\",\n// \"annualAmount\": \"\",\n// \"source\": \"Youtube\",\n// \"id\": \"70b15a07-2fa8-448b-8314-8af6b6c4f6bb\"\n// }\n// ],\n// \"trusts\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"18\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"id\": \"90ea28be-02ea-4a64-b558-55f5ce1b1a0e\",\n// \"whom\": \"\",\n// \"startDate\": \"\",\n// \"endDate\": \"\"\n// }\n// ],\n// \"isInvited\": false,\n// \"invitedOthers\": false,\n// \"minors\": [],\n// \"adults\": [\n// {\n// \"id\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"name\": \"Edison Master\",\n// \"affordableRelationshipId\": \"a66b44f6-7247-4ef6-8fc3-bb0abb728a53\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"edison1@fortressio.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": {\n// \"id\": \"6bef374c-4b7e-4fbc-b927-4414a3c56bad\",\n// \"emailAddress\": null,\n// \"verifyToken\": null,\n// \"isVerified\": false,\n// \"isClaimed\": true,\n// \"isActive\": true,\n// \"avatarURL\": null,\n// \"createdFrom\": \"PORTAL_REGISTRATION\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"organizationId\": \"e031e25a-2c69-4cb4-ad95-543ae0cbc9a9\",\n// \"propertyId\": \"496f0b45-98d2-4ab2-84aa-2e7e4faa42cf\",\n// \"prospectId\": \"e66a1dc6-697b-4104-a3b8-efed0401b3f6\"\n// },\n// \"isProspect\": true,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"685aadcf-74eb-408a-9565-e1727d876a6c\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"additionalDetails\": {\n// \"id\": \"7924518e-5fa6-403c-8576-aa5d413e37ff\",\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"assets\": null,\n// \"incomes\": null,\n// \"household\": {\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// \"consentSignature\": null,\n// \"createdAt\": \"2025-01-31T15:24:44.126Z\",\n// \"updatedAt\": \"2025-01-31T15:25:04.804Z\",\n// \"deletedAt\": null\n// },\n// \"qualifications\": {\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Head of Household\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\"\n// },\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// {\n// \"id\": \"0a60b185-095f-479d-959a-b5e5e28ee717\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"customerId\": \"ceab1a86-92c4-4821-8539-2e095366424f\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"7e59457b-6a65-424e-8dd1-27168c80499a\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"10a4ecc9-77a0-4b22-9c34-9617298ae851\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"customerId\": \"28d83dbe-bb29-4f84-9694-22f827bb4566\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"39345e2b-85e9-4498-8bdb-b4a2612000d4\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// },\n// {\n// \"id\": \"1eec3865-45ad-4933-a545-7a91379a222b\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"customerId\": \"2e6507d7-fe8f-4da4-8248-a16ae8d7fef3\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"eaf40ce8-f6bd-4744-b049-582316e21f55\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"bf61899b-aeb2-4c92-8f9b-665a513e5a81\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"customerId\": \"b46bbea2-fb10-4c2d-8bbe-b001973b34ab\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"2dc31dfe-7184-4f4f-b0af-cebac0eee7e2\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// }\n// ],\n// \"members\": [\n// {\n// \"id\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"name\": \"Edison Master\",\n// \"affordableRelationshipId\": \"a66b44f6-7247-4ef6-8fc3-bb0abb728a53\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"edison1@fortressio.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": {\n// \"id\": \"6bef374c-4b7e-4fbc-b927-4414a3c56bad\",\n// \"emailAddress\": null,\n// \"verifyToken\": null,\n// \"isVerified\": false,\n// \"isClaimed\": true,\n// \"isActive\": true,\n// \"avatarURL\": null,\n// \"createdFrom\": \"PORTAL_REGISTRATION\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"organizationId\": \"e031e25a-2c69-4cb4-ad95-543ae0cbc9a9\",\n// \"propertyId\": \"496f0b45-98d2-4ab2-84aa-2e7e4faa42cf\",\n// \"prospectId\": \"e66a1dc6-697b-4104-a3b8-efed0401b3f6\"\n// },\n// \"isProspect\": true,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"685aadcf-74eb-408a-9565-e1727d876a6c\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"additionalDetails\": {\n// \"id\": \"7924518e-5fa6-403c-8576-aa5d413e37ff\",\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"assets\": null,\n// \"incomes\": null,\n// \"household\": {\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// \"consentSignature\": null,\n// \"createdAt\": \"2025-01-31T15:24:44.126Z\",\n// \"updatedAt\": \"2025-01-31T15:25:04.804Z\",\n// \"deletedAt\": null\n// },\n// \"qualifications\": {\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Head of Household\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\"\n// },\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// {\n// \"id\": \"0a60b185-095f-479d-959a-b5e5e28ee717\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"customerId\": \"ceab1a86-92c4-4821-8539-2e095366424f\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"7e59457b-6a65-424e-8dd1-27168c80499a\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"10a4ecc9-77a0-4b22-9c34-9617298ae851\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"customerId\": \"28d83dbe-bb29-4f84-9694-22f827bb4566\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"39345e2b-85e9-4498-8bdb-b4a2612000d4\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// },\n// {\n// \"id\": \"1eec3865-45ad-4933-a545-7a91379a222b\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"customerId\": \"2e6507d7-fe8f-4da4-8248-a16ae8d7fef3\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"eaf40ce8-f6bd-4744-b049-582316e21f55\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"bf61899b-aeb2-4c92-8f9b-665a513e5a81\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"customerId\": \"b46bbea2-fb10-4c2d-8bbe-b001973b34ab\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"2dc31dfe-7184-4f4f-b0af-cebac0eee7e2\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// }\n// ],\n// }\n","import {\n EMPLOYMENT_TYPE_MILITARY,\n EMPLOYMENT_TYPE_SEASONAL,\n EMPLOYMENT_TYPE_SELF_EMPLOYED,\n PAY_FREQUENCY_ANNUALLY,\n PAY_FREQUENCY_BI_WEEKLY,\n PAY_FREQUENCY_HOURLY,\n PAY_FREQUENCY_MONTHLY,\n PAY_FREQUENCY_SEMI_MONTHLY,\n PAY_FREQUENCY_WEEKLY,\n} from '../../constants.job';\n\nimport { getIncomeItem } from './incomeTotals.utils';\n\nexport function getPayRate(record) {\n const {\n payFrequency,\n hourlyPay,\n weeklyPay,\n biWeeklyPay,\n semiMonthlyPay,\n monthlyPay,\n annualPay,\n } = record;\n\n switch (payFrequency) {\n case PAY_FREQUENCY_HOURLY:\n return Number(hourlyPay) || 0;\n case PAY_FREQUENCY_WEEKLY:\n return Number(weeklyPay) || 0;\n case PAY_FREQUENCY_BI_WEEKLY:\n return Number(biWeeklyPay) || 0;\n case PAY_FREQUENCY_SEMI_MONTHLY:\n return Number(semiMonthlyPay) || 0;\n case PAY_FREQUENCY_MONTHLY:\n return Number(monthlyPay) || 0;\n case PAY_FREQUENCY_ANNUALLY:\n return Number(annualPay) || 0;\n default:\n return 0;\n }\n}\n\nexport function getJobTotals(jobs) {\n if (!jobs || jobs?.length === 0) {\n return {\n jobs: [],\n totalIncome: 0,\n };\n }\n\n // Get unique memberIds\n const memberIds = [...new Set(jobs.map((job) => job?.memberId))];\n\n // Process jobs for each member\n const memberJobs = memberIds.map((memberId) => {\n const memberJobRecords = jobs.filter((job) => job.memberId === memberId);\n const jobIncomes = [];\n\n // Process each job record for this member\n memberJobRecords.forEach((record) => {\n const {\n employmentType,\n startDate,\n startDateBusiness,\n serviceStartDate,\n payFrequency,\n hoursPerWeek,\n // Military specific\n basePayLongevity,\n proficiency: proficiencyPay,\n foreignDuty: seaandForeignDutyPay,\n subsistence: subsistenceAllowance,\n quarters: quartersAllowance,\n // Self employed\n annualNet,\n // Seasonal\n doNotworkStartDate: excludeStartDate,\n doNotworkEndDate: excludeEndDate,\n seasonalWorkWeeks,\n // Additional income\n anticipatedIncrease12Months,\n anticipatedIncreaseRate,\n anticipatedIncreaseWhen,\n overtimePay,\n overtimeHourRate,\n overtimeAvgHours,\n tipsAndGratuities,\n receiveTipsAvgWeek,\n receiveTipsAvgUnreported,\n commissionsOrBonuses,\n commissionsPayFrequency,\n commissionsPayFrequencyWeekly,\n commissionsPayFrequencyMonthly,\n commissionsPayFrequencyAnnually,\n } = record;\n\n // Base income calculation based on employment type\n if (employmentType === EMPLOYMENT_TYPE_MILITARY) {\n const militaryPayRate = [\n Number(basePayLongevity) || 0,\n Number(proficiencyPay) || 0,\n Number(seaandForeignDutyPay) || 0,\n Number(subsistenceAllowance) || 0,\n Number(quartersAllowance) || 0,\n ].reduce((sum, value) => sum + value, 0);\n\n jobIncomes.push(\n getIncomeItem({\n memberId,\n payType: 'military',\n startDate: new Date(serviceStartDate),\n payFrequency: PAY_FREQUENCY_MONTHLY,\n payRate: militaryPayRate,\n }),\n );\n } else if (employmentType === EMPLOYMENT_TYPE_SELF_EMPLOYED) {\n jobIncomes.push(\n getIncomeItem({\n memberId,\n payType: 'selfEmployed',\n startDate: new Date(startDateBusiness),\n payFrequency: PAY_FREQUENCY_ANNUALLY,\n payRate: Number(annualNet) || 0,\n }),\n );\n } else {\n // Regular employment (full-time, part-time, seasonal)\n const basePayRate = getPayRate(record);\n\n // Base pay\n jobIncomes.push(\n getIncomeItem({\n memberId,\n payType: 'basePay',\n startDate: new Date(startDate),\n payFrequency,\n payRate: basePayRate,\n hoursPerWeek: Number(hoursPerWeek) || 0,\n ...(employmentType === EMPLOYMENT_TYPE_SEASONAL && {\n seasonalWorkWeeks: Number(seasonalWorkWeeks) || 0,\n excludeStartDate,\n excludeEndDate,\n }),\n }),\n );\n\n // Additional incomes\n if (anticipatedIncrease12Months === 'yes' && anticipatedIncreaseRate) {\n jobIncomes.push(\n getIncomeItem({\n memberId,\n payType: 'anticipatedIncrease',\n startDate: new Date(anticipatedIncreaseWhen),\n payFrequency,\n payRate: Number(anticipatedIncreaseRate) || 0,\n hoursPerWeek: Number(hoursPerWeek) || 0,\n ...(employmentType === EMPLOYMENT_TYPE_SEASONAL && {\n seasonalWorkWeeks: Number(seasonalWorkWeeks) || 0,\n }),\n }),\n );\n }\n\n if (overtimePay === 'yes' && overtimeHourRate) {\n jobIncomes.push(\n getIncomeItem({\n memberId,\n payType: 'overtime',\n startDate: new Date(startDate),\n payFrequency: PAY_FREQUENCY_HOURLY,\n payRate: Number(overtimeHourRate) || 0,\n hoursPerWeek: Number(overtimeAvgHours) || 0,\n ...(employmentType === EMPLOYMENT_TYPE_SEASONAL && {\n seasonalWorkWeeks: Number(seasonalWorkWeeks) || 0,\n }),\n }),\n );\n }\n\n if (tipsAndGratuities === 'yes') {\n const totalTips =\n (Number(receiveTipsAvgWeek) || 0) +\n (Number(receiveTipsAvgUnreported) || 0);\n\n jobIncomes.push(\n getIncomeItem({\n memberId,\n payType: 'tips',\n startDate: new Date(startDate),\n payFrequency: PAY_FREQUENCY_WEEKLY,\n payRate: totalTips,\n ...(employmentType === EMPLOYMENT_TYPE_SEASONAL && {\n seasonalWorkWeeks: Number(seasonalWorkWeeks) || 0,\n }),\n }),\n );\n }\n\n if (commissionsOrBonuses === 'yes' && commissionsPayFrequency) {\n let bonusPayRate = 0;\n if (commissionsPayFrequency === PAY_FREQUENCY_WEEKLY) {\n bonusPayRate = Number(commissionsPayFrequencyWeekly) || 0;\n } else if (commissionsPayFrequency === PAY_FREQUENCY_MONTHLY) {\n bonusPayRate = Number(commissionsPayFrequencyMonthly) || 0;\n } else if (commissionsPayFrequency === PAY_FREQUENCY_ANNUALLY) {\n bonusPayRate = Number(commissionsPayFrequencyAnnually) || 0;\n }\n\n jobIncomes.push(\n getIncomeItem({\n memberId,\n payType: 'bonuses',\n startDate: new Date(startDate),\n payFrequency: commissionsPayFrequency,\n payRate: bonusPayRate,\n ...(employmentType === EMPLOYMENT_TYPE_SEASONAL && {\n seasonalWorkWeeks: Number(seasonalWorkWeeks) || 0,\n }),\n }),\n );\n }\n }\n });\n\n // Calculate member's total income\n const memberTotalIncome = jobIncomes.reduce(\n (sum, item) => sum + item.incomeTotal,\n 0,\n );\n\n return {\n memberId,\n jobs: jobIncomes,\n totalIncome: memberTotalIncome,\n };\n });\n\n // Calculate grand total\n const grandTotal = memberJobs.reduce(\n (sum, member) => sum + member.totalIncome,\n 0,\n );\n\n return {\n jobs: memberJobs,\n totalIncome: grandTotal,\n };\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport {\n PAY_FREQUENCY_ANNUALLY,\n PAY_FREQUENCY_MONTHLY,\n PAY_FREQUENCY_WEEKLY,\n} from 'pages/AffordaWagesAndIncome/constants';\nimport { adjustWeeksMonthsAnnual } from '../common/common';\n\nconst calculatePayRate = (\n payFrequency,\n weeklyAmount,\n monthlyAmount,\n annualAmount,\n) => {\n switch (payFrequency) {\n case PAY_FREQUENCY_WEEKLY:\n return weeklyAmount;\n case PAY_FREQUENCY_MONTHLY:\n return monthlyAmount;\n case PAY_FREQUENCY_ANNUALLY:\n return (parseFloat(annualAmount) / 12).toFixed(2);\n default:\n return '0.00';\n }\n};\n\nconst getIncome = (payFrequency, weeklyAmount, monthlyAmount, annualAmount) => {\n switch (payFrequency) {\n case PAY_FREQUENCY_WEEKLY:\n return (52 * parseFloat(weeklyAmount)).toFixed(2);\n case PAY_FREQUENCY_MONTHLY:\n return (12 * parseFloat(monthlyAmount)).toFixed(2);\n case PAY_FREQUENCY_ANNUALLY:\n return annualAmount;\n default:\n return '0.00';\n }\n};\n\nexport const getOtherIncomeDetails = (\n memberId,\n { otherIncomes, alimonies, pensions },\n) => {\n const otherList = [];\n let totalOtherIncome = 0;\n\n // Process other incomes\n otherIncomes.forEach((income) => {\n if (income.isValid && income.memberId === memberId) {\n const incomeAmount = getIncome(\n income.payFrequency,\n income.weeklyAmount,\n income.monthlyAmount,\n income.annualAmount,\n );\n totalOtherIncome += parseFloat(incomeAmount);\n otherList.push({\n IncomeName: income.source,\n PayRate: calculatePayRate(\n income.payFrequency,\n income.weeklyAmount,\n income.monthlyAmount,\n income.annualAmount,\n ),\n HoursWeeksMonths: adjustWeeksMonthsAnnual(income.payFrequency, 0),\n PayFrequency: income.payFrequency,\n Income: incomeAmount,\n IncomeType: uuidv4(),\n });\n }\n });\n\n // Process alimonies (previously child support)\n alimonies.forEach((alimony) => {\n if (alimony.isValid && alimony.memberId === memberId) {\n const incomeAmount = getIncome(\n alimony.payFrequency,\n alimony.weeklyAmount,\n alimony.monthlyAmount,\n alimony.annualAmount,\n );\n totalOtherIncome += parseFloat(incomeAmount);\n otherList.push({\n IncomeName: 'Alimony',\n PayRate: calculatePayRate(\n alimony.payFrequency,\n alimony.weeklyAmount,\n alimony.monthlyAmount,\n alimony.annualAmount,\n ),\n HoursWeeksMonths: adjustWeeksMonthsAnnual(alimony.payFrequency, 0),\n PayFrequency: alimony.payFrequency,\n Income: incomeAmount,\n IncomeType: '2a6b409e-f73a-4c9d-8149-b5aba6692877',\n });\n }\n });\n\n // Process pensions with specific sources\n const otherPensionSources = ['death', 'annuity', 'insurance'];\n pensions.forEach((pension) => {\n if (\n pension.isValid &&\n pension.memberId === memberId &&\n otherPensionSources.includes(pension.source)\n ) {\n const incomeAmount = getIncome(\n pension.payFrequency,\n pension.weeklyAmount,\n pension.monthlyAmount,\n pension.annualAmount,\n );\n totalOtherIncome += parseFloat(incomeAmount);\n otherList.push({\n IncomeName:\n pension.source.charAt(0).toUpperCase() + pension.source.slice(1),\n PayRate: calculatePayRate(\n pension.payFrequency,\n pension.weeklyAmount,\n pension.monthlyAmount,\n pension.annualAmount,\n ),\n HoursWeeksMonths: adjustWeeksMonthsAnnual(pension.payFrequency, 0),\n PayFrequency: pension.payFrequency,\n Income: incomeAmount,\n IncomeType: '2a6b409e-f73a-4c9d-8149-b5aba6692877',\n });\n }\n });\n\n return {\n other: otherList?.length > 0 ? 'yes' : 'no',\n otherIncome: totalOtherIncome.toFixed(2),\n otherIncomeType: '2aebab51-bce9-40d3-8224-a5c3039135dc',\n otherList,\n };\n};\n","import { getIncomeItem } from './incomeTotals.utils';\n\nexport const getIncome = (fieldId, labelId, records) => {\n if (!records || !records?.length) {\n return {\n [fieldId]: [],\n totalIncome: 0,\n };\n }\n\n // Get unique memberIds\n const memberIds = [...new Set(records.map((record) => record?.memberId))];\n\n // Process records for each member\n const memberIncomes = memberIds.map((memberId) => {\n const memberRecords = records.filter(\n (record) => record.memberId === memberId,\n );\n const incomeItems = [];\n\n memberRecords.forEach((record) => {\n const {\n payFrequency,\n weeklyAmount,\n monthlyAmount,\n annualAmount,\n source,\n } = record;\n\n // Get base pay rate from appropriate field\n let payRate = 0;\n switch (payFrequency) {\n case 'weekly':\n payRate = Number(weeklyAmount) || 0;\n break;\n case 'monthly':\n payRate = Number(monthlyAmount) || 0;\n break;\n case 'annually':\n payRate = Number(annualAmount) || 0;\n break;\n default:\n return; // Skip if no valid frequency\n }\n\n // Skip if no amount\n if (!payRate) {\n return;\n }\n\n incomeItems.push({\n ...record,\n ...getIncomeItem({\n memberId,\n payType: source || labelId,\n payFrequency,\n payRate,\n }),\n });\n });\n\n // Calculate member's total income\n const memberTotalIncome = incomeItems.reduce(\n (sum, item) => sum + item.incomeTotal,\n 0,\n );\n\n return {\n memberId,\n [fieldId]: incomeItems,\n totalIncome: memberTotalIncome,\n };\n });\n\n // Filter out members with no valid income items\n const validMemberIncomes = memberIncomes.filter(\n (member) => member[fieldId].length > 0,\n );\n\n // Calculate grand total\n const grandTotal = validMemberIncomes.reduce(\n (sum, member) => sum + member.totalIncome,\n 0,\n );\n\n return {\n [fieldId]: validMemberIncomes,\n totalIncome: grandTotal,\n };\n};\n\n// {\n// \"jobs\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"companyName\": \"fortress\",\n// \"companyStreetAddress\": \"421 Bridgeview PL\",\n// \"companyCity\": \"Stratford\",\n// \"companyState\": \"LA\",\n// \"companyZip\": \"06614\",\n// \"supervisorName\": \"MiaDos\",\n// \"supervisorPhone\": \"9292889951\",\n// \"jobTitle\": \"Edison\",\n// \"doNotworkStartDate\": \"\",\n// \"doNotworkEndDate\": \"\",\n// \"id\": \"5305356f-55db-420a-9faa-b05aacac8a1b\",\n// \"memberName\": \"Clear this field\",\n// \"employmentType\": \"f_t_et\",\n// \"workType\": \"\",\n// \"startDate\": \"2000-09-01T04:00:00.000Z\",\n// \"startDateBusiness\": \"\",\n// \"selfTaxes\": \"\",\n// \"averageNet\": \"\",\n// \"annualNet\": \"\",\n// \"militaryBranch\": \"\",\n// \"positionTitle\": \"\",\n// \"serviceStartDate\": \"\",\n// \"numDependentsClaimed\": \"\",\n// \"basePayLongevity\": \"\",\n// \"proficiencyPay\": \"\",\n// \"seaandForeignDutyPay\": \"\",\n// \"subsistenceAllowance\": \"\",\n// \"quartersAllowance\": \"\",\n// \"payFrequency\": \"hourly\",\n// \"anticipatedIncrease12Months\": \"yes\",\n// \"overtimePay\": \"yes\",\n// \"tipsAndGratuities\": \"yes\",\n// \"commissionsOrBonuses\": \"yes\",\n// \"hourlyPay\": \"8\",\n// \"hoursPerWeek\": \"40\",\n// \"weeklyPay\": \"\",\n// \"biWeeklyPay\": \"\",\n// \"semiMonthlyPay\": \"\",\n// \"monthlyPay\": \"\",\n// \"annualPay\": \"\",\n// \"anticipatedIncreaseRate\": \"9\",\n// \"anticipatedincreaseWhen\": \"\",\n// \"overtimeHourRate\": \"7\",\n// \"overtimeAvgHours\": 10,\n// \"tipsAndGratuitiesAllReported\": \"no\",\n// \"tipsAndGratuitiesPerWeek\": \"\",\n// \"tipsAndGratuitiesUnreportedByWeek\": \"\",\n// \"commissionsOrBonusesType\": \"\",\n// \"commissionsPayFrequency\": \"weekly\",\n// \"commissionsPayFrequencyWeekly\": \"5\",\n// \"commissionsPayFrequencyMonthly\": \"\",\n// \"commissionsPayFrequencyAnnually\": \"\",\n// \"layoffPeriod\": [],\n// \"anticipatedIncreaseWhen\": \"2025-06-01T04:00:00.000Z\",\n// \"receiveTipsAvgWeek\": \"4\",\n// \"receiveTipsAvgUnreported\": \"2\",\n// \"bonusOrCommissions\": \"jobBonus\"\n// }\n// ],\n// \"anticipatedJobs\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"companyName\": \"fortress\",\n// \"companyStreetAddress\": \"421 Bridgeview PL\",\n// \"companyCity\": \"Stratford\",\n// \"companyState\": \"IL\",\n// \"companyZip\": \"06614\",\n// \"supervisorName\": \"Edison B\",\n// \"supervisorPhone\": \"9292889951\",\n// \"jobTitle\": \"Mastersss\",\n// \"doNotworkStartDate\": \"\",\n// \"doNotworkEndDate\": \"\",\n// \"id\": \"688982d5-aac6-4210-8a4e-b62bf20193cb\",\n// \"memberName\": \"Clear this field\",\n// \"employmentType\": \"p_t_et\",\n// \"workType\": \"\",\n// \"startDate\": \"2025-04-01T04:00:00.000Z\",\n// \"startDateBusiness\": \"\",\n// \"selfTaxes\": \"\",\n// \"averageNet\": \"\",\n// \"annualNet\": \"\",\n// \"militaryBranch\": \"\",\n// \"positionTitle\": \"\",\n// \"serviceStartDate\": \"\",\n// \"numDependentsClaimed\": \"\",\n// \"basePayLongevity\": \"\",\n// \"proficiencyPay\": \"\",\n// \"seaandForeignDutyPay\": \"\",\n// \"subsistenceAllowance\": \"\",\n// \"quartersAllowance\": \"\",\n// \"payFrequency\": \"biweekly\",\n// \"anticipatedIncrease12Months\": \"\",\n// \"overtimePay\": \"\",\n// \"tipsAndGratuities\": \"\",\n// \"commissionsOrBonuses\": \"\",\n// \"hourlyPay\": \"9\",\n// \"hoursPerWeek\": \"20\",\n// \"weeklyPay\": \"\",\n// \"biWeeklyPay\": \"\",\n// \"semiMonthlyPay\": \"\",\n// \"monthlyPay\": \"\",\n// \"annualPay\": \"\",\n// \"anticipatedIncreaseRate\": \"\",\n// \"anticipatedincreaseWhen\": \"\",\n// \"overtimeHourRate\": \"\",\n// \"overtimeAvgHours\": \"\",\n// \"tipsAndGratuitiesAllReported\": \"\",\n// \"tipsAndGratuitiesPerWeek\": \"\",\n// \"tipsAndGratuitiesUnreportedByWeek\": \"\",\n// \"commissionsOrBonusesType\": \"\",\n// \"commissionsPayFrequency\": \"\",\n// \"commissionsPayFrequencyWeekly\": \"\",\n// \"commissionsPayFrequencyMonthly\": \"\",\n// \"commissionsPayFrequencyAnnually\": \"\",\n// \"layoffPeriod\": []\n// }\n// ],\n// \"childSupports\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"haveCourtOrder\": \"yes\",\n// \"anticipateCourt\": \"\",\n// \"whomReceive\": [],\n// \"whomReceiveMinors\": \"Adif\",\n// \"whomExpected\": [],\n// \"whomExpectedMinors\": \"\",\n// \"forWhomChildName\": \"\",\n// \"anticipatedState\": \"\",\n// \"anticipatedCounty\": \"\",\n// \"numCourtOrdered\": \"1\",\n// \"receivingOrdered\": \"yes\",\n// \"receivingAny\": \"\",\n// \"payFrequencyOrdered\": \"weekly\",\n// \"payFrequencyReceived\": \"\",\n// \"reasonableEfforts\": \"\",\n// \"explainEfforts\": \"\",\n// \"weeklyAmountOrdered\": \"10\",\n// \"monthlyAmountOrdered\": \"\",\n// \"annualAmountOrdered\": \"\",\n// \"weeklyAmountReceived\": \"\",\n// \"monthlyAmountReceived\": \"\",\n// \"annualAmountReceived\": \"\",\n// \"state\": \"\",\n// \"county\": \"\",\n// \"id\": \"60931ce4-b689-4376-8c43-5652c4e6eab5\",\n// \"anticipatedCountry\": \"\"\n// }\n// ],\n// \"alimonies\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"whomReceive\": \"Edison\",\n// \"payFrequency\": \"monthly\",\n// \"expectEnd\": \"2025-08-02T04:00:00.000Z\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"11\",\n// \"annualAmount\": \"\",\n// \"id\": \"c61932da-a7e8-4058-8575-61243b5df80b\"\n// }\n// ],\n// \"socialSecs\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"source\": \"ssi\",\n// \"payFrequency\": \"monthly\",\n// \"expectEnd\": \"\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"12\",\n// \"annualAmount\": \"\",\n// \"claimNumber\": \"\",\n// \"id\": \"cd61955b-1227-407f-a97c-cf7884bc3fcb\"\n// }\n// ],\n// \"otherIncomes\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"source\": \"Ads\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"13\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"id\": \"edefffab-7211-4490-b7e4-0b84489974bd\"\n// }\n// ],\n// \"publicAids\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"14\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"id\": \"119ac97b-bad0-4c77-9af7-9cf150168128\",\n// \"source\": \"\"\n// }\n// ],\n// \"gifts\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"source\": \"\",\n// \"payFrequency\": \"monthly\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"15\",\n// \"annualAmount\": \"\",\n// \"whom\": \"Marisol\",\n// \"startDate\": \"2025-01-01T04:00:00.000Z\",\n// \"endDate\": \"2025-06-21T04:00:00.000Z\",\n// \"id\": \"795ddba9-e781-4d5d-b67b-6d6ec0386f3f\"\n// }\n// ],\n// \"unemployments\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"monthly\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"15\",\n// \"annualAmount\": \"\",\n// \"source\": \"unemployment\",\n// \"id\": \"fb47f916-b6d9-4d2a-80f3-dabdf826abd6\"\n// }\n// ],\n// \"pensions\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"16\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"source\": \"pension\",\n// \"id\": \"af5e4414-94e0-4477-a2e0-032a8b6b7c95\"\n// }\n// ],\n// \"onlines\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"monthly\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"17\",\n// \"annualAmount\": \"\",\n// \"source\": \"Youtube\",\n// \"id\": \"70b15a07-2fa8-448b-8314-8af6b6c4f6bb\"\n// }\n// ],\n// \"trusts\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"18\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"id\": \"90ea28be-02ea-4a64-b558-55f5ce1b1a0e\",\n// \"whom\": \"\",\n// \"startDate\": \"\",\n// \"endDate\": \"\"\n// }\n// ],\n// \"isInvited\": false,\n// \"invitedOthers\": false,\n// \"minors\": [],\n// \"adults\": [\n// {\n// \"id\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"name\": \"Edison Master\",\n// \"affordableRelationshipId\": \"a66b44f6-7247-4ef6-8fc3-bb0abb728a53\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"edison1@fortressio.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": {\n// \"id\": \"6bef374c-4b7e-4fbc-b927-4414a3c56bad\",\n// \"emailAddress\": null,\n// \"verifyToken\": null,\n// \"isVerified\": false,\n// \"isClaimed\": true,\n// \"isActive\": true,\n// \"avatarURL\": null,\n// \"createdFrom\": \"PORTAL_REGISTRATION\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"organizationId\": \"e031e25a-2c69-4cb4-ad95-543ae0cbc9a9\",\n// \"propertyId\": \"496f0b45-98d2-4ab2-84aa-2e7e4faa42cf\",\n// \"prospectId\": \"e66a1dc6-697b-4104-a3b8-efed0401b3f6\"\n// },\n// \"isProspect\": true,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"685aadcf-74eb-408a-9565-e1727d876a6c\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"additionalDetails\": {\n// \"id\": \"7924518e-5fa6-403c-8576-aa5d413e37ff\",\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"assets\": null,\n// \"incomes\": null,\n// \"household\": {\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// \"consentSignature\": null,\n// \"createdAt\": \"2025-01-31T15:24:44.126Z\",\n// \"updatedAt\": \"2025-01-31T15:25:04.804Z\",\n// \"deletedAt\": null\n// },\n// \"qualifications\": {\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Head of Household\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\"\n// },\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// {\n// \"id\": \"0a60b185-095f-479d-959a-b5e5e28ee717\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"customerId\": \"ceab1a86-92c4-4821-8539-2e095366424f\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"7e59457b-6a65-424e-8dd1-27168c80499a\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"10a4ecc9-77a0-4b22-9c34-9617298ae851\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"customerId\": \"28d83dbe-bb29-4f84-9694-22f827bb4566\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"39345e2b-85e9-4498-8bdb-b4a2612000d4\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// },\n// {\n// \"id\": \"1eec3865-45ad-4933-a545-7a91379a222b\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"customerId\": \"2e6507d7-fe8f-4da4-8248-a16ae8d7fef3\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"eaf40ce8-f6bd-4744-b049-582316e21f55\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"bf61899b-aeb2-4c92-8f9b-665a513e5a81\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"customerId\": \"b46bbea2-fb10-4c2d-8bbe-b001973b34ab\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"2dc31dfe-7184-4f4f-b0af-cebac0eee7e2\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// }\n// ],\n// \"members\": [\n// {\n// \"id\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"name\": \"Edison Master\",\n// \"affordableRelationshipId\": \"a66b44f6-7247-4ef6-8fc3-bb0abb728a53\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"edison1@fortressio.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": {\n// \"id\": \"6bef374c-4b7e-4fbc-b927-4414a3c56bad\",\n// \"emailAddress\": null,\n// \"verifyToken\": null,\n// \"isVerified\": false,\n// \"isClaimed\": true,\n// \"isActive\": true,\n// \"avatarURL\": null,\n// \"createdFrom\": \"PORTAL_REGISTRATION\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"organizationId\": \"e031e25a-2c69-4cb4-ad95-543ae0cbc9a9\",\n// \"propertyId\": \"496f0b45-98d2-4ab2-84aa-2e7e4faa42cf\",\n// \"prospectId\": \"e66a1dc6-697b-4104-a3b8-efed0401b3f6\"\n// },\n// \"isProspect\": true,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"685aadcf-74eb-408a-9565-e1727d876a6c\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"additionalDetails\": {\n// \"id\": \"7924518e-5fa6-403c-8576-aa5d413e37ff\",\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"assets\": null,\n// \"incomes\": null,\n// \"household\": {\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// \"consentSignature\": null,\n// \"createdAt\": \"2025-01-31T15:24:44.126Z\",\n// \"updatedAt\": \"2025-01-31T15:25:04.804Z\",\n// \"deletedAt\": null\n// },\n// \"qualifications\": {\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Head of Household\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\"\n// },\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// {\n// \"id\": \"0a60b185-095f-479d-959a-b5e5e28ee717\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"customerId\": \"ceab1a86-92c4-4821-8539-2e095366424f\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"7e59457b-6a65-424e-8dd1-27168c80499a\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"10a4ecc9-77a0-4b22-9c34-9617298ae851\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"customerId\": \"28d83dbe-bb29-4f84-9694-22f827bb4566\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"39345e2b-85e9-4498-8bdb-b4a2612000d4\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// },\n// {\n// \"id\": \"1eec3865-45ad-4933-a545-7a91379a222b\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"customerId\": \"2e6507d7-fe8f-4da4-8248-a16ae8d7fef3\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"eaf40ce8-f6bd-4744-b049-582316e21f55\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"bf61899b-aeb2-4c92-8f9b-665a513e5a81\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"customerId\": \"b46bbea2-fb10-4c2d-8bbe-b001973b34ab\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"2dc31dfe-7184-4f4f-b0af-cebac0eee7e2\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// }\n// ],\n// }\n","import { getEmploymentDetails } from './jobs/employment';\nimport { getIncomeChildSupports } from './mapIncomeTotals/childSupport.adapter';\nimport { getIncomeWithRange } from './mapIncomeTotals/getIncomeWithRange.adapter';\nimport { getJobTotals } from './mapIncomeTotals/jobs.adapter';\nimport { getOtherIncomeDetails } from './others/mapOthers';\nimport { getIncome } from './mapIncomeTotals/income.adapter';\nimport { SOCIAL_SEC_SSDI, SOCIAL_SEC_SSI } from '../constants.socialSec';\n\n//\nexport const DEFAULT_WAGES_AND_INCOME_STRUCTURE = {\n incomeChecklist: {\n absentFamilyMember: 'no',\n absentFamilyMemberHoursWeeksMonths: 0,\n absentFamilyMemberIncome: '0.00',\n absentFamilyMemberPayFrequency: '',\n absentFamilyMemberPayRate: '',\n // Child Support\n anticipateChildSupport: 'no',\n anticipateChildSupportCounty: '',\n anticipateChildSupportState: '',\n collectChildSupport: 'no',\n collectChildSupportCounty: '',\n collectChildSupportState: '',\n courtOrderedChildSupport: 'no',\n courtOrderedChildSupportHoursWeeksMonths: 0,\n courtOrderedChildSupportIncome: '0.00',\n courtOrderedChildSupportPayFrequency: '',\n courtOrderedChildSupportPayRate: '',\n receivingChildSupport: 'no',\n receivingChildSupportHoursWeeksMonths: 0,\n receivingChildSupportIncome: '0.00',\n receivingChildSupportPayFrequency: '',\n receivingChildSupportPayRate: '',\n // Disability\n disability: 'no',\n disabilityHoursWeeksMonths: 0,\n disabilityIncome: '0.00',\n disabilityPayFrequency: '',\n disabilityPayRate: '',\n // Employment\n employment: 'no',\n employmentIncome: '0.00',\n selfEmployment: 'no',\n selfEmploymentHoursWeeksMonths: '',\n selfEmploymentIncome: '0.00',\n selfEmploymentPayFrequency: '',\n selfEmploymentPayRate: '',\n militaryPay: 'no',\n militaryPayHoursWeeksMonths: '',\n militaryPayIncome: '0.00',\n militaryPayPayFrequency: '',\n militaryPayPayRate: '',\n notWorking: 'no',\n employmentList: [\n // {\n // payType: 'basePay',\n // PayRate: '20',\n // PayFrequency: '',\n // Income: '1040.00',\n // HoursWeeksMonths: 0,\n // },\n ],\n\n // Online Sources\n incomeFromOnlineSources: 'no',\n incomeFromOnlineSourcesHoursWeeksMonths: 0,\n incomeFromOnlineSourcesIncome: '0.00',\n incomeFromOnlineSourcesPayFrequency: '',\n incomeFromOnlineSourcesPayRate: '',\n\n // Other Income\n other: 'no',\n otherIncome: '0.00',\n otherIncomeType: '2aebab51-bce9-40d3-8224-a5c3039135dc',\n otherList: [\n // {\n // IncomeName: '',\n // PayRate: '',\n // HoursWeeksMonths: '0',\n // PayFrequency: '',\n // Income: '0.00',\n // IncomeType: '2a6b409e-f73a-4c9d-8149-b5aba6692877',\n // },\n ],\n // Pension\n pension: 'no',\n pensionHoursWeeksMonths: 0,\n pensionIncome: '0.00',\n pensionPayFrequency: 'monthly',\n pensionPayRate: '',\n // Public Housing - Voucher Question\n publicHousing: 'no',\n // Gifts\n recurringGift: 'no',\n recurringGiftHoursWeeksMonths: 0,\n recurringGiftIncome: '0.00',\n recurringGiftPayFrequency: '',\n recurringGiftPayRate: '',\n // Retirement\n retirement: 'no',\n retirementHoursWeeksMonths: 0,\n retirementIncome: '0.00',\n retirementPayFrequency: '',\n retirementPayRate: '',\n // Social Security\n socialSecurity: 'no',\n socialSecurityClaimNumber: '',\n socialSecurityHoursWeeksMonths: 0,\n socialSecurityIncome: '0.00',\n socialSecurityPayFrequency: '',\n socialSecurityPayRate: '',\n // Supplemental Security\n supplementalSecurity: 'no',\n supplementalSecurityClaimNumber: '',\n supplementalSecurityHoursWeeksMonths: '0',\n supplementalSecurityIncome: '0.00',\n supplementalSecurityPayFrequency: '',\n supplementalSecurityPayRate: '',\n // TANF\n tanf: 'no',\n tanfHoursWeeksMonths: 0,\n tanfIncome: '0.00',\n tanfPayFrequency: '',\n tanfPayRate: '',\n // Trust\n trust: 'no',\n trustHoursWeeksMonths: 0,\n trustIncome: '0.00',\n trustPayFrequency: '',\n trustPayRate: '',\n // Unemployment Benefits\n unemploymentBenefits: 'no',\n unemploymentBenefitsHoursWeeksMonths: 0,\n unemploymentBenefitsIncome: '0.00',\n unemploymentBenefitsPayFrequency: '',\n unemploymentBenefitsPayRate: '',\n // VA Benefits\n vaBenefits: 'no',\n vaBenefitsHoursWeeksMonths: 0,\n vaBenefitsIncome: '0.00',\n vaBenefitsPayFrequency: '',\n vaBenefitsPayRate: '',\n\n // No used in the form\n residentPaymentIncome: '0.00',\n hapPaymentIncome: '0.00',\n incomeConfirmation: true,\n isAltForm: true,\n },\n annualIncome: '0.00',\n};\n\nexport const getAllEmploymentDetails = (memberIds, jobs, anticipatedJobs) => {\n return memberIds.map((memberId) => {\n // Filter jobs and anticipatedJobs for the current member\n const memberJobs = jobs.filter((job) => job.memberId === memberId);\n const memberAnticipatedJobs = anticipatedJobs.filter(\n (job) => job.memberId === memberId,\n );\n\n // Get employment details for the current member\n const employmentDetails = getEmploymentDetails(\n memberJobs,\n memberAnticipatedJobs,\n memberId,\n );\n\n // Return the member ID and their employment details\n return {\n memberId,\n employmentDetails,\n };\n });\n};\n\n//\nexport const getAllOtherDetails = (\n memberIds,\n otherIncomes,\n pensions,\n alimonies,\n) => {\n return memberIds.map((memberId) => {\n const otherDetails = getOtherIncomeDetails(memberId, {\n otherIncomes: otherIncomes ?? [],\n pensions: pensions ?? [],\n alimonies: alimonies ?? [],\n });\n\n return {\n memberId,\n otherDetails,\n };\n });\n};\n\nfunction parseToWagesStructure(memberIncomes) {\n return memberIncomes.map((member) => {\n const structure = {\n ...JSON.parse(JSON.stringify(DEFAULT_WAGES_AND_INCOME_STRUCTURE)),\n };\n const incomeChecklist = structure.incomeChecklist;\n\n // Set annual income from member total\n structure.annualIncome = member.totalIncome.toFixed(2);\n\n // Child Support\n const hasChildSupport = member.childSupports?.length > 0;\n incomeChecklist.receivingChildSupport = hasChildSupport ? 'yes' : 'no';\n incomeChecklist.receivingChildSupportHoursWeeksMonths = hasChildSupport\n ? member.childSupports.length > 1\n ? 1\n : member.childSupports[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.receivingChildSupportIncome = hasChildSupport\n ? member.childSupports\n .reduce((sum, cs) => sum + cs.incomeTotal, 0)\n .toFixed(2)\n : '0.00';\n incomeChecklist.receivingChildSupportPayFrequency = 'annually';\n incomeChecklist.receivingChildSupportPayRate =\n incomeChecklist.receivingChildSupportIncome;\n incomeChecklist.anticipateChildSupport =\n member.anticipatedChildSupportValues?.anticipateChildSupport ?? 'no';\n incomeChecklist.anticipateChildSupportCounty =\n member.anticipatedChildSupportValues?.anticipateChildSupportCounty ?? '';\n incomeChecklist.anticipateChildSupportState =\n member.anticipatedChildSupportValues?.anticipateChildSupportState ?? '';\n\n // Public Aid/Disability\n const hasPublicAid = member.publicAids?.length > 0;\n incomeChecklist.disability = hasPublicAid ? 'yes' : 'no';\n incomeChecklist.disabilityHoursWeeksMonths = hasPublicAid\n ? member.publicAids.length > 1\n ? 1\n : member.publicAids[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.disabilityIncome = hasPublicAid\n ? member.publicAids\n .reduce((sum, aid) => sum + aid.incomeTotal, 0)\n .toFixed(2)\n : '0.00';\n incomeChecklist.disabilityPayFrequency = 'annually';\n incomeChecklist.disabilityPayRate = incomeChecklist.disabilityIncome;\n\n // Employment\n const hasJobs = member.jobs?.length > 0;\n incomeChecklist.employment = hasJobs ? 'yes' : 'no';\n incomeChecklist.employmentIncome = hasJobs\n ? member.jobs.reduce((sum, job) => sum + job.incomeTotal, 0).toFixed(2)\n : '0.00';\n\n // Self Employment\n const selfEmployedJobs =\n member.jobs?.filter((job) => job.employmentType === 'self_employed') ||\n [];\n const hasSelfEmployed = selfEmployedJobs.length > 0;\n incomeChecklist.selfEmployment = hasSelfEmployed ? 'yes' : 'no';\n incomeChecklist.selfEmploymentHoursWeeksMonths = hasSelfEmployed\n ? selfEmployedJobs.length > 1\n ? 1\n : selfEmployedJobs[0]?.HoursWeekMonth || 0\n : '';\n incomeChecklist.selfEmploymentIncome = hasSelfEmployed\n ? selfEmployedJobs\n .reduce((sum, job) => sum + job.incomeTotal, 0)\n .toFixed(2)\n : '0.00';\n incomeChecklist.selfEmploymentPayFrequency =\n hasSelfEmployed && selfEmployedJobs.length === 1\n ? selfEmployedJobs[0].payFrequency\n : 'annually';\n incomeChecklist.selfEmploymentPayRate =\n hasSelfEmployed && selfEmployedJobs.length === 1\n ? selfEmployedJobs[0].payRate.toString()\n : incomeChecklist.selfEmploymentIncome;\n\n // Military Pay\n const militaryJobs =\n member.jobs?.filter((job) => job.employmentType === 'military') || [];\n const hasMilitary = militaryJobs.length > 0;\n incomeChecklist.militaryPay = hasMilitary ? 'yes' : 'no';\n incomeChecklist.militaryPayHoursWeeksMonths = hasMilitary\n ? militaryJobs.length > 1\n ? 1\n : militaryJobs[0]?.HoursWeekMonth || 0\n : '';\n incomeChecklist.militaryPayIncome = hasMilitary\n ? militaryJobs.reduce((sum, job) => sum + job.incomeTotal, 0).toFixed(2)\n : '0.00';\n incomeChecklist.militaryPayPayFrequency =\n hasMilitary && militaryJobs.length === 1\n ? militaryJobs[0].payFrequency\n : 'annually';\n incomeChecklist.militaryPayPayRate =\n hasMilitary && militaryJobs.length === 1\n ? militaryJobs[0].payRate.toString()\n : incomeChecklist.militaryPayIncome;\n\n // Not Working\n incomeChecklist.notWorking = !hasJobs ? 'yes' : 'no';\n\n // Employment List\n incomeChecklist.employmentList =\n member.jobs?.map((job) => ({\n payType: 'basePay',\n PayRate: job.payRate.toString(),\n PayFrequency: job.payFrequency,\n Income: job.incomeTotal.toFixed(2),\n HoursWeeksMonths: job.HoursWeekMonth || 0,\n })) || [];\n\n // Online Income\n const hasOnline = member.onlines?.length > 0;\n incomeChecklist.incomeFromOnlineSources = hasOnline ? 'yes' : 'no';\n incomeChecklist.incomeFromOnlineSourcesHoursWeeksMonths = hasOnline\n ? member.onlines.length > 1\n ? 1\n : member.onlines[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.incomeFromOnlineSourcesIncome = hasOnline\n ? member.onlines\n .reduce((sum, online) => sum + online.incomeTotal, 0)\n .toFixed(2)\n : '0.00';\n incomeChecklist.incomeFromOnlineSourcesPayFrequency =\n hasOnline && member.onlines.length === 1\n ? member.onlines[0].payFrequency\n : 'annually';\n incomeChecklist.incomeFromOnlineSourcesPayRate =\n hasOnline && member.onlines.length === 1\n ? member.onlines[0].payRate.toString()\n : incomeChecklist.incomeFromOnlineSourcesIncome;\n\n // Pension - Split between regular pension and other income types\n const regularPensions =\n member.pensions?.filter(\n (p) => !['death', 'annuity', 'insurance'].includes(p.source),\n ) || [];\n const otherTypePensions =\n member.pensions?.filter((p) =>\n ['death', 'annuity', 'insurance'].includes(p.source),\n ) || [];\n\n // Regular Pension handling\n const hasPension = regularPensions.length > 0;\n incomeChecklist.pension = hasPension ? 'yes' : 'no';\n incomeChecklist.pensionHoursWeeksMonths = hasPension\n ? regularPensions.length > 1\n ? 1\n : regularPensions[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.pensionIncome = hasPension\n ? regularPensions\n .reduce((sum, pension) => sum + pension.incomeTotal, 0)\n .toFixed(2)\n : '0.00';\n incomeChecklist.pensionPayFrequency =\n hasPension && regularPensions.length === 1\n ? regularPensions[0].payFrequency\n : 'annually';\n incomeChecklist.pensionPayRate =\n hasPension && regularPensions.length === 1\n ? regularPensions[0].payRate.toString()\n : incomeChecklist.pensionIncome;\n\n // Add pension with special sources to otherIncome\n const hasOtherIncome =\n member.otherIncomes?.length > 0 || otherTypePensions.length > 0;\n const allOtherIncomes = [\n ...(member.otherIncomes || []),\n ...otherTypePensions,\n ];\n\n incomeChecklist.other = hasOtherIncome ? 'yes' : 'no';\n incomeChecklist.otherIncome = hasOtherIncome\n ? allOtherIncomes\n .reduce((sum, other) => sum + other.incomeTotal, 0)\n .toFixed(2)\n : '0.00';\n incomeChecklist.otherList = allOtherIncomes.map((other) => ({\n IncomeName: other.payType || other.source || '',\n PayRate: other.payRate.toString(),\n HoursWeeksMonths: other.HoursWeekMonth || '0',\n PayFrequency: other.payFrequency,\n Income: other.incomeTotal.toFixed(2),\n IncomeType: other.source || '2a6b409e-f73a-4c9d-8149-b5aba6692877',\n }));\n\n // Recurring Gift\n const hasGift = member.gifts?.length > 0;\n incomeChecklist.recurringGift = hasGift ? 'yes' : 'no';\n incomeChecklist.recurringGiftHoursWeeksMonths = hasGift\n ? member.gifts.length > 1\n ? 1\n : member.gifts[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.recurringGiftIncome = hasGift\n ? member.gifts.reduce((sum, gift) => sum + gift.incomeTotal, 0).toFixed(2)\n : '0.00';\n incomeChecklist.recurringGiftPayFrequency =\n hasGift && member.gifts.length === 1\n ? member.gifts[0].payFrequency\n : 'annually';\n incomeChecklist.recurringGiftPayRate =\n hasGift && member.gifts.length === 1\n ? member.gifts[0].payRate.toString()\n : incomeChecklist.recurringGiftIncome;\n\n // Retirement (from pensions and trusts with source='retirement')\n const retirementPensions =\n member.pensions?.filter((p) => p.source === 'retirement') || [];\n const retirementTrusts =\n member.trusts?.filter((t) => t.source === 'retirement') || [];\n const hasRetirement =\n retirementPensions.length > 0 || retirementTrusts.length > 0;\n const allRetirementItems = [...retirementPensions, ...retirementTrusts];\n\n incomeChecklist.retirement = hasRetirement ? 'yes' : 'no';\n incomeChecklist.retirementHoursWeeksMonths = hasRetirement\n ? allRetirementItems.length > 1\n ? 1\n : allRetirementItems[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.retirementIncome = hasRetirement\n ? allRetirementItems\n .reduce((sum, item) => sum + item.incomeTotal, 0)\n .toFixed(2)\n : '0.00';\n incomeChecklist.retirementPayFrequency =\n hasRetirement && allRetirementItems.length === 1\n ? allRetirementItems[0].payFrequency\n : 'annually';\n incomeChecklist.retirementPayRate =\n hasRetirement && allRetirementItems.length === 1\n ? allRetirementItems[0].payRate.toString()\n : incomeChecklist.retirementIncome;\n\n // VA Benefits (from pensions and trusts with source='va')\n const vaPensions = member.pensions?.filter((p) => p.source === 'va') || [];\n const vaTrusts = member.trusts?.filter((t) => t.source === 'va') || [];\n const hasVaBenefits = vaPensions.length > 0 || vaTrusts.length > 0;\n const allVaItems = [...vaPensions, ...vaTrusts];\n\n incomeChecklist.vaBenefits = hasVaBenefits ? 'yes' : 'no';\n incomeChecklist.vaBenefitsHoursWeeksMonths = hasVaBenefits\n ? allVaItems.length > 1\n ? 1\n : allVaItems[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.vaBenefitsIncome = hasVaBenefits\n ? allVaItems.reduce((sum, item) => sum + item.incomeTotal, 0).toFixed(2)\n : '0.00';\n incomeChecklist.vaBenefitsPayFrequency =\n hasVaBenefits && allVaItems.length === 1\n ? allVaItems[0].payFrequency\n : 'annually';\n incomeChecklist.vaBenefitsPayRate =\n hasVaBenefits && allVaItems.length === 1\n ? allVaItems[0].payRate.toString()\n : incomeChecklist.vaBenefitsIncome;\n\n // Unemployment Benefits\n const hasUnemployment = member.unemployments?.length > 0;\n incomeChecklist.unemploymentBenefits = hasUnemployment ? 'yes' : 'no';\n incomeChecklist.unemploymentBenefitsHoursWeeksMonths = hasUnemployment\n ? member.unemployments.length > 1\n ? 1\n : member.unemployments[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.unemploymentBenefitsIncome = hasUnemployment\n ? member.unemployments\n .reduce((sum, item) => sum + item.incomeTotal, 0)\n .toFixed(2)\n : '0.00';\n incomeChecklist.unemploymentBenefitsPayFrequency =\n hasUnemployment && member.unemployments.length === 1\n ? member.unemployments[0].payFrequency\n : 'annually';\n incomeChecklist.unemploymentBenefitsPayRate =\n hasUnemployment && member.unemployments.length === 1\n ? member.unemployments[0].payRate.toString()\n : incomeChecklist.unemploymentBenefitsIncome;\n\n // Trust Income\n const hasTrust = member.trusts?.length > 0;\n incomeChecklist.trust = hasTrust ? 'yes' : 'no';\n incomeChecklist.trustHoursWeeksMonths = hasTrust\n ? member.trusts.length > 1\n ? 1\n : member.trusts[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.trustIncome = hasTrust\n ? member.trusts\n .reduce((sum, item) => sum + item.incomeTotal, 0)\n .toFixed(2)\n : '0.00';\n incomeChecklist.trustPayFrequency =\n hasTrust && member.trusts.length === 1\n ? member.trusts[0].payFrequency\n : 'annually';\n incomeChecklist.trustPayRate =\n hasTrust && member.trusts.length === 1\n ? member.trusts[0].payRate.toString()\n : incomeChecklist.trustIncome;\n\n // Social Security (SS) and Supplemental Security Income (SSI)\n const ssItems =\n member.socialSecs?.filter((s) => s.source === SOCIAL_SEC_SSI) || [];\n const ssiItems =\n member.socialSecs?.filter((s) => s.source === SOCIAL_SEC_SSDI) || [];\n\n // Social Security\n const hasSS = ssItems.length > 0;\n incomeChecklist.socialSecurity = hasSS ? 'yes' : 'no';\n incomeChecklist.socialSecurityHoursWeeksMonths = hasSS\n ? ssItems.length > 1\n ? 1\n : ssItems[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.socialSecurityIncome = hasSS\n ? ssItems.reduce((sum, item) => sum + item.incomeTotal, 0).toFixed(2)\n : '0.00';\n incomeChecklist.socialSecurityPayFrequency =\n hasSS && ssItems.length === 1 ? ssItems[0].payFrequency : 'annually';\n incomeChecklist.socialSecurityPayRate =\n hasSS && ssItems.length === 1\n ? ssItems[0].payRate.toString()\n : incomeChecklist.socialSecurityIncome;\n incomeChecklist.socialSecurityClaimNumber = hasSS\n ? ssItems[0]?.claimNumber || ''\n : '';\n // Supplemental Security Income\n const hasSSI = ssiItems.length > 0;\n incomeChecklist.supplementalSecurity = hasSSI ? 'yes' : 'no';\n incomeChecklist.supplementalSecurityHoursWeeksMonths = hasSSI\n ? ssiItems.length > 1\n ? 1\n : ssiItems[0]?.HoursWeekMonth || 0\n : 0;\n incomeChecklist.supplementalSecurityIncome = hasSSI\n ? ssiItems.reduce((sum, item) => sum + item.incomeTotal, 0).toFixed(2)\n : '0.00';\n incomeChecklist.supplementalSecurityPayFrequency =\n hasSSI && ssiItems.length === 1 ? ssiItems[0].payFrequency : 'annually';\n incomeChecklist.supplementalSecurityPayRate =\n hasSSI && ssiItems.length === 1\n ? ssiItems[0].payRate.toString()\n : incomeChecklist.supplementalSecurityIncome;\n incomeChecklist.supplementalSecurityClaimNumber = hasSSI\n ? ssiItems[0]?.claimNumber || ''\n : '';\n return {\n memberId: member.memberId,\n ...structure,\n };\n });\n}\n\n//\n//\nexport const mapIncomeTotals = (data, members) => {\n // Get all unique memberIds from all income sources\n const allMemberIds = new Set();\n\n // Helper to add memberIds from an array of records\n const addMemberIds = (records) => {\n if (records?.length) {\n records.forEach((record) => {\n if (record?.memberId) {\n allMemberIds.add(record.memberId);\n }\n });\n }\n };\n\n // Collect all memberIds\n addMemberIds(data.jobs);\n addMemberIds(data.anticipatedJobs);\n addMemberIds(data.childSupports);\n addMemberIds(data.otherIncomes);\n addMemberIds(data.socialSecs);\n addMemberIds(data.alimonies);\n addMemberIds(data.trusts);\n addMemberIds(data.pensions);\n addMemberIds(data.publicAids);\n addMemberIds(data.onlines);\n addMemberIds(data.unemployments);\n addMemberIds(data.gifts);\n const memberIds = [...allMemberIds];\n\n // Process all income types\n const jobsResult = getJobTotals(data.jobs);\n const anticipatedJobsResult = getJobTotals(data.anticipatedJobs);\n const childSupportsResult = getIncomeChildSupports(data.childSupports);\n const otherIncomesResult = getIncomeWithRange(\n 'otherIncomes',\n data.otherIncomes,\n );\n const socialSecsResult = getIncome(\n 'socialSecs',\n 'socialSecurity',\n data.socialSecs,\n );\n const alimoniesResult = getIncomeWithRange('alimonies', data.alimonies);\n const giftsResult = getIncomeWithRange('gifts', data.gifts);\n const trustsResult = getIncome('trusts', 'source', data.trusts);\n const pensionsResult = getIncome('pensions', 'source', data.pensions);\n const publicAidsResult = getIncome('publicAids', 'source', data.publicAids);\n const onlinesResult = getIncome('onlines', 'source', data.onlines);\n const unemploymentsResult = getIncome(\n 'unemployments',\n 'source',\n data.unemployments,\n );\n // Map results by memberId\n const memberIncomes = memberIds.map((memberId) => {\n // Helper to get member's income items and total from a result\n const getMemberIncome = (result, field, extraFields = []) => {\n const memberData = result?.[field]?.find(\n (item) => item.memberId === memberId,\n );\n const memberIncomesResult = {\n items: memberData?.[field] || [],\n total: memberData?.totalIncome || 0,\n };\n if (extraFields?.length > 0) {\n extraFields.forEach((extraField) => {\n memberIncomesResult[extraField] = memberData?.[extraField];\n });\n }\n return memberIncomesResult;\n };\n\n // Get all income types for this member\n const jobs = getMemberIncome(jobsResult, 'jobs');\n const anticipatedJobs = getMemberIncome(anticipatedJobsResult, 'jobs');\n const childSupports = getMemberIncome(\n childSupportsResult,\n 'childSupports',\n ['acticipatedChildSupportValues'],\n );\n const otherIncomes = getMemberIncome(otherIncomesResult, 'otherIncomes');\n const socialSecs = getMemberIncome(socialSecsResult, 'socialSecs');\n const alimonies = getMemberIncome(alimoniesResult, 'alimonies');\n const gifts = getMemberIncome(giftsResult, 'gifts');\n const trusts = getMemberIncome(trustsResult, 'trusts');\n const pensions = getMemberIncome(pensionsResult, 'pensions');\n const publicAids = getMemberIncome(publicAidsResult, 'publicAids');\n const onlines = getMemberIncome(onlinesResult, 'onlines');\n const unemployments = getMemberIncome(unemploymentsResult, 'unemployments');\n // ... get other income types\n\n // Calculate total income for this member\n const totalIncome = [\n jobs.total,\n anticipatedJobs.total,\n childSupports.total,\n otherIncomes.total,\n socialSecs.total,\n alimonies.total,\n gifts.total,\n trusts.total,\n pensions.total,\n publicAids.total,\n onlines.total,\n unemployments.total,\n ].reduce((sum, value) => sum + value, 0);\n\n return {\n memberId,\n totalIncome,\n jobs: jobs.items,\n anticipatedJobs: anticipatedJobs.items,\n childSupports: childSupports.items,\n anticipatedChildSupportValues:\n childSupports.acticipatedChildSupportValues,\n otherIncomes: otherIncomes.items,\n socialSecs: socialSecs.items,\n alimonies: alimonies.items,\n gifts: gifts.items,\n trusts: trusts.items,\n pensions: pensions.items,\n publicAids: publicAids.items,\n onlines: onlines.items,\n unemployments: unemployments.items,\n };\n });\n\n // Calculate grand total from all member totals\n const grandTotal = memberIncomes.reduce(\n (sum, member) => sum + member.totalIncome,\n 0,\n );\n\n // Parse member incomes to wages structure\n const memberWagesStructure = parseToWagesStructure(memberIncomes);\n\n const memberTotals = memberIncomes.map((member) => ({\n memberId: member.memberId,\n totalIncome: member.totalIncome,\n }));\n\n return {\n totalIncome: grandTotal,\n memberTotals,\n memberIncomes: memberWagesStructure,\n };\n};\n","import { getIncomeItem } from './incomeTotals.utils';\n\nexport const getIncomeChildSupports = (records) => {\n if (!records || !records?.length) {\n return {\n childSupports: [],\n totalIncome: 0,\n };\n }\n\n // Get unique memberIds\n const memberIds = [...new Set(records.map((record) => record?.memberId))];\n\n // Process records for each member\n const memberIncomes = memberIds.map((memberId) => {\n const memberRecords = records.filter(\n (record) => record.memberId === memberId,\n );\n\n const incomeItems = [];\n let acticipatedChildSupportValues = {};\n\n memberRecords.forEach((record) => {\n // Even if the applicant has not child support records,\n // we still need to include the anticipated child support values\n acticipatedChildSupportValues.anticipateChildSupport =\n record.anticipateCourt;\n acticipatedChildSupportValues.anticipateChildSupportCounty =\n record.anticipatedCounty;\n acticipatedChildSupportValues.anticipateChildSupportState =\n record.anticipatedState;\n\n // Skip if no court order or not receiving\n if (\n record.haveCourtOrder !== 'yes' &&\n record.receivingOrdered !== 'yes'\n ) {\n return;\n }\n\n // Determine which frequency and amount to use\n const payFrequency =\n record.payFrequencyReceived || record.payFrequencyOrdered;\n let payRate = 0;\n\n switch (payFrequency) {\n case 'weekly':\n payRate =\n Number(record.weeklyAmountReceived || record.weeklyAmountOrdered) ||\n 0;\n break;\n case 'monthly':\n payRate =\n Number(\n record.monthlyAmountReceived || record.monthlyAmountOrdered,\n ) || 0;\n break;\n case 'annually':\n payRate =\n Number(record.annualAmountReceived || record.annualAmountOrdered) ||\n 0;\n break;\n default:\n return; // Skip if no valid frequency\n }\n\n // Skip if no amount\n if (!payRate) {\n return;\n }\n\n incomeItems.push(\n getIncomeItem({\n memberId,\n payType: 'childSupport',\n payFrequency,\n payRate,\n }),\n );\n });\n\n // Calculate member's total income\n const memberTotalIncome = incomeItems.reduce(\n (sum, item) => sum + item.incomeTotal,\n 0,\n );\n\n return {\n memberId,\n childSupports: incomeItems,\n acticipatedChildSupportValues,\n totalIncome: memberTotalIncome,\n };\n });\n\n // Filter out members with no valid income items\n const validMemberIncomes = memberIncomes.filter(\n (member) =>\n member.childSupports.length > 0 ||\n member.acticipatedChildSupportValues.anticipateChildSupport === 'yes',\n );\n\n // Calculate grand total\n const grandTotal = validMemberIncomes.reduce(\n (sum, member) => sum + member.totalIncome,\n 0,\n );\n\n return {\n childSupports: validMemberIncomes,\n totalIncome: grandTotal,\n };\n};\n\n// {\n// \"jobs\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"companyName\": \"fortress\",\n// \"companyStreetAddress\": \"421 Bridgeview PL\",\n// \"companyCity\": \"Stratford\",\n// \"companyState\": \"LA\",\n// \"companyZip\": \"06614\",\n// \"supervisorName\": \"MiaDos\",\n// \"supervisorPhone\": \"9292889951\",\n// \"jobTitle\": \"Edison\",\n// \"doNotworkStartDate\": \"\",\n// \"doNotworkEndDate\": \"\",\n// \"id\": \"5305356f-55db-420a-9faa-b05aacac8a1b\",\n// \"memberName\": \"Clear this field\",\n// \"employmentType\": \"f_t_et\",\n// \"workType\": \"\",\n// \"startDate\": \"2000-09-01T04:00:00.000Z\",\n// \"startDateBusiness\": \"\",\n// \"selfTaxes\": \"\",\n// \"averageNet\": \"\",\n// \"annualNet\": \"\",\n// \"militaryBranch\": \"\",\n// \"positionTitle\": \"\",\n// \"serviceStartDate\": \"\",\n// \"numDependentsClaimed\": \"\",\n// \"basePayLongevity\": \"\",\n// \"proficiencyPay\": \"\",\n// \"seaandForeignDutyPay\": \"\",\n// \"subsistenceAllowance\": \"\",\n// \"quartersAllowance\": \"\",\n// \"payFrequency\": \"hourly\",\n// \"anticipatedIncrease12Months\": \"yes\",\n// \"overtimePay\": \"yes\",\n// \"tipsAndGratuities\": \"yes\",\n// \"commissionsOrBonuses\": \"yes\",\n// \"hourlyPay\": \"8\",\n// \"hoursPerWeek\": \"40\",\n// \"weeklyPay\": \"\",\n// \"biWeeklyPay\": \"\",\n// \"semiMonthlyPay\": \"\",\n// \"monthlyPay\": \"\",\n// \"annualPay\": \"\",\n// \"anticipatedIncreaseRate\": \"9\",\n// \"anticipatedincreaseWhen\": \"\",\n// \"overtimeHourRate\": \"7\",\n// \"overtimeAvgHours\": 10,\n// \"tipsAndGratuitiesAllReported\": \"no\",\n// \"tipsAndGratuitiesPerWeek\": \"\",\n// \"tipsAndGratuitiesUnreportedByWeek\": \"\",\n// \"commissionsOrBonusesType\": \"\",\n// \"commissionsPayFrequency\": \"weekly\",\n// \"commissionsPayFrequencyWeekly\": \"5\",\n// \"commissionsPayFrequencyMonthly\": \"\",\n// \"commissionsPayFrequencyAnnually\": \"\",\n// \"layoffPeriod\": [],\n// \"anticipatedIncreaseWhen\": \"2025-06-01T04:00:00.000Z\",\n// \"receiveTipsAvgWeek\": \"4\",\n// \"receiveTipsAvgUnreported\": \"2\",\n// \"bonusOrCommissions\": \"jobBonus\"\n// }\n// ],\n// \"anticipatedJobs\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"companyName\": \"fortress\",\n// \"companyStreetAddress\": \"421 Bridgeview PL\",\n// \"companyCity\": \"Stratford\",\n// \"companyState\": \"IL\",\n// \"companyZip\": \"06614\",\n// \"supervisorName\": \"Edison B\",\n// \"supervisorPhone\": \"9292889951\",\n// \"jobTitle\": \"Mastersss\",\n// \"doNotworkStartDate\": \"\",\n// \"doNotworkEndDate\": \"\",\n// \"id\": \"688982d5-aac6-4210-8a4e-b62bf20193cb\",\n// \"memberName\": \"Clear this field\",\n// \"employmentType\": \"p_t_et\",\n// \"workType\": \"\",\n// \"startDate\": \"2025-04-01T04:00:00.000Z\",\n// \"startDateBusiness\": \"\",\n// \"selfTaxes\": \"\",\n// \"averageNet\": \"\",\n// \"annualNet\": \"\",\n// \"militaryBranch\": \"\",\n// \"positionTitle\": \"\",\n// \"serviceStartDate\": \"\",\n// \"numDependentsClaimed\": \"\",\n// \"basePayLongevity\": \"\",\n// \"proficiencyPay\": \"\",\n// \"seaandForeignDutyPay\": \"\",\n// \"subsistenceAllowance\": \"\",\n// \"quartersAllowance\": \"\",\n// \"payFrequency\": \"biweekly\",\n// \"anticipatedIncrease12Months\": \"\",\n// \"overtimePay\": \"\",\n// \"tipsAndGratuities\": \"\",\n// \"commissionsOrBonuses\": \"\",\n// \"hourlyPay\": \"9\",\n// \"hoursPerWeek\": \"20\",\n// \"weeklyPay\": \"\",\n// \"biWeeklyPay\": \"\",\n// \"semiMonthlyPay\": \"\",\n// \"monthlyPay\": \"\",\n// \"annualPay\": \"\",\n// \"anticipatedIncreaseRate\": \"\",\n// \"anticipatedincreaseWhen\": \"\",\n// \"overtimeHourRate\": \"\",\n// \"overtimeAvgHours\": \"\",\n// \"tipsAndGratuitiesAllReported\": \"\",\n// \"tipsAndGratuitiesPerWeek\": \"\",\n// \"tipsAndGratuitiesUnreportedByWeek\": \"\",\n// \"commissionsOrBonusesType\": \"\",\n// \"commissionsPayFrequency\": \"\",\n// \"commissionsPayFrequencyWeekly\": \"\",\n// \"commissionsPayFrequencyMonthly\": \"\",\n// \"commissionsPayFrequencyAnnually\": \"\",\n// \"layoffPeriod\": []\n// }\n// ],\n// \"childSupports\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"haveCourtOrder\": \"yes\",\n// \"anticipateCourt\": \"\",\n// \"whomReceive\": [],\n// \"whomReceiveMinors\": \"Adif\",\n// \"whomExpected\": [],\n// \"whomExpectedMinors\": \"\",\n// \"forWhomChildName\": \"\",\n// \"anticipatedState\": \"\",\n// \"anticipatedCounty\": \"\",\n// \"numCourtOrdered\": \"1\",\n// \"receivingOrdered\": \"yes\",\n// \"receivingAny\": \"\",\n// \"payFrequencyOrdered\": \"weekly\",\n// \"payFrequencyReceived\": \"\",\n// \"reasonableEfforts\": \"\",\n// \"explainEfforts\": \"\",\n// \"weeklyAmountOrdered\": \"10\",\n// \"monthlyAmountOrdered\": \"\",\n// \"annualAmountOrdered\": \"\",\n// \"weeklyAmountReceived\": \"\",\n// \"monthlyAmountReceived\": \"\",\n// \"annualAmountReceived\": \"\",\n// \"state\": \"\",\n// \"county\": \"\",\n// \"id\": \"60931ce4-b689-4376-8c43-5652c4e6eab5\",\n// \"anticipatedCountry\": \"\"\n// }\n// ],\n// \"alimonies\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"whomReceive\": \"Edison\",\n// \"payFrequency\": \"monthly\",\n// \"expectEnd\": \"2025-08-02T04:00:00.000Z\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"11\",\n// \"annualAmount\": \"\",\n// \"id\": \"c61932da-a7e8-4058-8575-61243b5df80b\"\n// }\n// ],\n// \"socialSecs\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"source\": \"ssi\",\n// \"payFrequency\": \"monthly\",\n// \"expectEnd\": \"\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"12\",\n// \"annualAmount\": \"\",\n// \"claimNumber\": \"\",\n// \"id\": \"cd61955b-1227-407f-a97c-cf7884bc3fcb\"\n// }\n// ],\n// \"otherIncomes\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"source\": \"Ads\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"13\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"id\": \"edefffab-7211-4490-b7e4-0b84489974bd\"\n// }\n// ],\n// \"publicAids\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"14\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"id\": \"119ac97b-bad0-4c77-9af7-9cf150168128\",\n// \"source\": \"\"\n// }\n// ],\n// \"gifts\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"source\": \"\",\n// \"payFrequency\": \"monthly\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"15\",\n// \"annualAmount\": \"\",\n// \"whom\": \"Marisol\",\n// \"startDate\": \"2025-01-01T04:00:00.000Z\",\n// \"endDate\": \"2025-06-21T04:00:00.000Z\",\n// \"id\": \"795ddba9-e781-4d5d-b67b-6d6ec0386f3f\"\n// }\n// ],\n// \"unemployments\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"monthly\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"15\",\n// \"annualAmount\": \"\",\n// \"source\": \"unemployment\",\n// \"id\": \"fb47f916-b6d9-4d2a-80f3-dabdf826abd6\"\n// }\n// ],\n// \"pensions\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"16\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"source\": \"pension\",\n// \"id\": \"af5e4414-94e0-4477-a2e0-032a8b6b7c95\"\n// }\n// ],\n// \"onlines\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"monthly\",\n// \"weeklyAmount\": \"\",\n// \"monthlyAmount\": \"17\",\n// \"annualAmount\": \"\",\n// \"source\": \"Youtube\",\n// \"id\": \"70b15a07-2fa8-448b-8314-8af6b6c4f6bb\"\n// }\n// ],\n// \"trusts\": [\n// {\n// \"memberId\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"payFrequency\": \"weekly\",\n// \"weeklyAmount\": \"18\",\n// \"monthlyAmount\": \"\",\n// \"annualAmount\": \"\",\n// \"id\": \"90ea28be-02ea-4a64-b558-55f5ce1b1a0e\",\n// \"whom\": \"\",\n// \"startDate\": \"\",\n// \"endDate\": \"\"\n// }\n// ],\n// \"isInvited\": false,\n// \"invitedOthers\": false,\n// \"minors\": [],\n// \"adults\": [\n// {\n// \"id\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"name\": \"Edison Master\",\n// \"affordableRelationshipId\": \"a66b44f6-7247-4ef6-8fc3-bb0abb728a53\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"edison1@fortressio.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": {\n// \"id\": \"6bef374c-4b7e-4fbc-b927-4414a3c56bad\",\n// \"emailAddress\": null,\n// \"verifyToken\": null,\n// \"isVerified\": false,\n// \"isClaimed\": true,\n// \"isActive\": true,\n// \"avatarURL\": null,\n// \"createdFrom\": \"PORTAL_REGISTRATION\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"organizationId\": \"e031e25a-2c69-4cb4-ad95-543ae0cbc9a9\",\n// \"propertyId\": \"496f0b45-98d2-4ab2-84aa-2e7e4faa42cf\",\n// \"prospectId\": \"e66a1dc6-697b-4104-a3b8-efed0401b3f6\"\n// },\n// \"isProspect\": true,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"685aadcf-74eb-408a-9565-e1727d876a6c\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"additionalDetails\": {\n// \"id\": \"7924518e-5fa6-403c-8576-aa5d413e37ff\",\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"assets\": null,\n// \"incomes\": null,\n// \"household\": {\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// \"consentSignature\": null,\n// \"createdAt\": \"2025-01-31T15:24:44.126Z\",\n// \"updatedAt\": \"2025-01-31T15:25:04.804Z\",\n// \"deletedAt\": null\n// },\n// \"qualifications\": {\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Head of Household\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\"\n// },\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// {\n// \"id\": \"0a60b185-095f-479d-959a-b5e5e28ee717\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"customerId\": \"ceab1a86-92c4-4821-8539-2e095366424f\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"7e59457b-6a65-424e-8dd1-27168c80499a\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"10a4ecc9-77a0-4b22-9c34-9617298ae851\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"customerId\": \"28d83dbe-bb29-4f84-9694-22f827bb4566\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"39345e2b-85e9-4498-8bdb-b4a2612000d4\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// },\n// {\n// \"id\": \"1eec3865-45ad-4933-a545-7a91379a222b\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"customerId\": \"2e6507d7-fe8f-4da4-8248-a16ae8d7fef3\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"eaf40ce8-f6bd-4744-b049-582316e21f55\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"bf61899b-aeb2-4c92-8f9b-665a513e5a81\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"customerId\": \"b46bbea2-fb10-4c2d-8bbe-b001973b34ab\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"2dc31dfe-7184-4f4f-b0af-cebac0eee7e2\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// }\n// ],\n// \"members\": [\n// {\n// \"id\": \"14c86c43-8631-4d82-b995-761db15a8fb0\",\n// \"name\": \"Edison Master\",\n// \"affordableRelationshipId\": \"a66b44f6-7247-4ef6-8fc3-bb0abb728a53\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"edison1@fortressio.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": {\n// \"id\": \"6bef374c-4b7e-4fbc-b927-4414a3c56bad\",\n// \"emailAddress\": null,\n// \"verifyToken\": null,\n// \"isVerified\": false,\n// \"isClaimed\": true,\n// \"isActive\": true,\n// \"avatarURL\": null,\n// \"createdFrom\": \"PORTAL_REGISTRATION\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"organizationId\": \"e031e25a-2c69-4cb4-ad95-543ae0cbc9a9\",\n// \"propertyId\": \"496f0b45-98d2-4ab2-84aa-2e7e4faa42cf\",\n// \"prospectId\": \"e66a1dc6-697b-4104-a3b8-efed0401b3f6\"\n// },\n// \"isProspect\": true,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"customerId\": \"d9d2a7ef-91bb-42a6-8c4e-80833d861e71\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"685aadcf-74eb-408a-9565-e1727d876a6c\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"additionalDetails\": {\n// \"id\": \"7924518e-5fa6-403c-8576-aa5d413e37ff\",\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"assets\": null,\n// \"incomes\": null,\n// \"household\": {\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// \"consentSignature\": null,\n// \"createdAt\": \"2025-01-31T15:24:44.126Z\",\n// \"updatedAt\": \"2025-01-31T15:25:04.804Z\",\n// \"deletedAt\": null\n// },\n// \"qualifications\": {\n// \"applicantId\": \"3c2a4dcc-c48a-41a4-b67c-2f6412cc9150\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Head of Household\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Edison\",\n// \"lastName\": \"Master\"\n// },\n// \"householdDesignation\": \"H\",\n// \"separatedSpousesFullName\": \"\",\n// \"spouseLivingInUnit\": \"\",\n// \"separatedSpouseLivingInUnit\": \"\",\n// \"whoIsYourSpouse\": \"\",\n// \"reasonForNonOccupancy\": \"\"\n// },\n// {\n// \"id\": \"0a60b185-095f-479d-959a-b5e5e28ee717\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"customerId\": \"ceab1a86-92c4-4821-8539-2e095366424f\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"7e59457b-6a65-424e-8dd1-27168c80499a\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"10dc5e32-bcf1-43d3-b138-d9e7204e4a29\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"10a4ecc9-77a0-4b22-9c34-9617298ae851\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"customerId\": \"28d83dbe-bb29-4f84-9694-22f827bb4566\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"39345e2b-85e9-4498-8bdb-b4a2612000d4\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"734458d9-1dc7-43d7-918e-6606f1923fa4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// },\n// {\n// \"id\": \"1eec3865-45ad-4933-a545-7a91379a222b\",\n// \"name\": \"Bettie Lebsack\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Ethel55@yahoo.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"customerId\": \"2e6507d7-fe8f-4da4-8248-a16ae8d7fef3\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"eaf40ce8-f6bd-4744-b049-582316e21f55\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"d16c76d4-5ae3-40c3-bbfd-6fcd72087a3b\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Bettie\",\n// \"lastName\": \"Lebsack\"\n// }\n// },\n// {\n// \"id\": \"bf61899b-aeb2-4c92-8f9b-665a513e5a81\",\n// \"name\": \"Adelbert Wilderman\",\n// \"affordableRelationshipId\": \"4b0665e1-91f2-4a4f-83fe-53f2a27ebfa4\",\n// \"applicantTypeId\": \"b05dbb6f-4239-4a01-8de7-96857781ee4f\",\n// \"applicationId\": \"d3b0e1ff-0fcf-4c5a-9798-a9936f98fe70\",\n// \"householdId\": \"766371d6-1b41-456a-a016-005c7385db63\",\n// \"applicantType\": \"Financial Lease Signer\",\n// \"invitedOtherAdults\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\",\n// \"middleName\": null,\n// \"birthday\": \"1990-01-01\",\n// \"preferredName\": null,\n// \"parentCompany\": null,\n// \"suffixId\": null,\n// \"phoneNumber\": \"9099999999\",\n// \"emailAddress\": \"Harrison.Raynor97@hotmail.com\",\n// \"status\": \"Applicant\",\n// \"portalUser\": null,\n// \"isProspect\": false,\n// \"maritalStatus\": \"single\",\n// \"passportNumber\": null,\n// \"stateIdNumber\": null,\n// \"annualIncome\": null,\n// \"isStudent\": false,\n// \"studentType\": \"n_s\",\n// \"TANFAssistance\": null,\n// \"jobTrainingProgram\": null,\n// \"singleParentDependantChild\": null,\n// \"marriedJointReturn\": null,\n// \"fosterProgram\": null,\n// \"otherStudentStatus\": null,\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"customerId\": \"b46bbea2-fb10-4c2d-8bbe-b001973b34ab\",\n// \"passportCountry\": null,\n// \"stateIdOrigin\": null,\n// \"employmentStatusId\": null,\n// \"spouse\": \"2dc31dfe-7184-4f4f-b0af-cebac0eee7e2\",\n// \"currentJob\": null,\n// \"secondJob\": null,\n// \"previousJob\": null,\n// \"currentAddress\": null,\n// \"previousAddress\": null,\n// \"secondPreviousAddress\": null,\n// \"qualifications\": {\n// \"applicantId\": \"ee8a4168-2919-49a0-8607-3d7e64b65da4\",\n// \"applicantTypeName\": \"Financial Lease Signer\",\n// \"affordableRelationship\": \"Adult co-tenant\",\n// \"financiallyResponsible\": true,\n// \"applicantTypeType\": \"Adult\",\n// \"specialNeedsDesignationIds\": [],\n// \"completedIncomeForm\": false,\n// \"completedAssetForm\": false,\n// \"firstName\": \"Adelbert\",\n// \"lastName\": \"Wilderman\"\n// }\n// }\n// ],\n// }\n","import { useEffect, useState, useContext } from 'react';\nimport axios from 'axios';\nimport { AppContext } from 'contexts/AppContext';\n\nimport { getPrequalifyOptions } from 'services/affordableService';\n\nconst useAsyncPrequalifyOptions = (setError) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const [options, setOptions] = useState(null);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n let subscribed = true;\n\n const fetchOptions = async () => {\n const { token } = source;\n const requestOptions = { cancelToken: token };\n const response = await getPrequalifyOptions(\n organizationId,\n propertyId,\n requestOptions,\n );\n\n if (response.error) {\n setError(\n `[${response.status}] There was a problem retrieving prequalify options`,\n );\n } else if (subscribed) {\n const parsedOptions = response.options?.map(({ label, value }) => ({\n id: label?.split(' ')?.join('_'),\n label,\n value,\n }));\n setOptions(parsedOptions);\n }\n };\n\n fetchOptions();\n\n return () => {\n subscribed = false;\n };\n }, [organizationId, propertyId, setOptions, setError]);\n\n return options;\n};\n\nexport default useAsyncPrequalifyOptions;\n","import React from 'react';\nimport { Modal } from '@fortress-technology-solutions/fortress-component-library/Molecules_Portal';\nimport {\n Box,\n Typography,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { AlertInfoIcon } from '@fortress-technology-solutions/fortress-component-library/Icons';\nimport messages from './messages';\n\nconst HavingTroubleLoggingInModal = ({ open, closeModal, title }) => {\n return (\n }\n >\n \n {Object.values(messages.list).map(({ title, description }, i) => (\n \n {title}\n {description}\n \n ))}\n \n \n );\n};\n\nexport default HavingTroubleLoggingInModal;\n","import * as yup from 'yup';\nimport messages from 'utils/constants/messages';\n\nexport default yup.object().shape({\n emailAddress: yup\n .string()\n .email(messages.formValidations.invalidEmail)\n .required(messages.formValidations.invalidEmail),\n password: yup.string().required(messages.formValidations.needValue),\n});\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n Stack,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport styled from 'styled-components';\nimport { useSimpleForm } from 'utils/form';\nimport { tc } from 'utils/theme';\nimport { AppContext } from 'contexts/AppContext';\nimport { authenticateUser } from 'services/authService';\nimport Form from 'components/Atoms/Form';\nimport TextInput from 'components/Molecules/TextInput';\nimport Alert from 'components/Atoms/Alert';\nimport Logo from 'components/Atoms/Logo';\nimport Link from 'components/Atoms/Link';\nimport messages from 'components/Molecules/HavingTroubleLoggingInModal/messages';\n// Form Schema\nimport schema from './schema';\n\nconst LoginLogo = styled(Logo)`\n width: 100%;\n height: 140px;\n`;\n\nconst FormWrapper = styled.div`\n background-color: ${tc('backgroundColor')};\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.0898154);\n border-radius: 5px;\n padding: 30px;\n`;\n\nconst GridForm = styled(Form)`\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: 20px 0;\n`;\n\nconst FormLogin = ({ onSubmitSuccess, handleOpenTroubleLoggingInModal }) => {\n const { organizationId, propertyId } = useContext(AppContext);\n\n const onSubmit = async (v) => authenticateUser(organizationId, propertyId, v);\n\n const {\n handleSubmit,\n status: { isSubmitting, formErrors, serverError },\n } = useSimpleForm(schema, onSubmit, onSubmitSuccess);\n\n const RenderAlert = () => {\n if (isSubmitting === false && serverError) {\n return {serverError};\n }\n return null;\n };\n\n return (\n \n \n \n \n \n \n \n \n {messages.loginTitle}\n \n \n Forgot Password?\n \n \n \n Sign In\n \n \n \n );\n};\n\nFormLogin.propTypes = {\n onSubmitSuccess: PropTypes.func,\n onSubmitFailure: PropTypes.func,\n};\n\nFormLogin.defaultProps = {\n onSubmitSuccess: () => {},\n onSubmitFailure: () => {},\n};\n\nexport default FormLogin;\n","import React, { useContext } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { tc, tm } from 'utils/theme';\nimport { setLocalAuth } from 'utils/auth';\nimport { PRIVACY_POLICY_URL } from 'utils/constants';\nimport H2 from 'components/Atoms/H2';\nimport P from 'components/Atoms/P';\nimport Link from 'components/Atoms/Link';\nimport Form from 'components/Organisms/FormLogin';\nimport { AppContext } from 'contexts/AppContext';\n\nconst LoginContainer = styled.div`\n max-width: 600px;\n margin: 0 auto;\n\n @media (max-width: ${tm('tablet')}) {\n width: 100%;\n }\n`;\n\nconst BlockWrapper = styled.div`\n padding: 25px 0;\n`;\n\nconst FirstTimeWrapper = styled(BlockWrapper)`\n background-color: ${tc('backgroundColor')};\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.0898154);\n border-radius: 5px;\n padding: 30px;\n`;\n\nconst PrivacyWrapper = styled.p`\n text-align: center;\n\n & > a {\n color: ${tc('linkColor')};\n font-size: 12px;\n text-decoration: underline;\n }\n`;\n\nconst Login = ({ handleOpenTroubleLoggingInModal }) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const history = useHistory();\n\n const baseURL = `/${organizationId}/${propertyId}`;\n\n const onSubmitSuccess = ({ token, sanitizedUser }) => {\n setLocalAuth({\n token,\n sanitizedUser,\n });\n\n return history.push(`/${organizationId}/${propertyId}`);\n };\n\n return (\n \n \n \n \n \n

First Time Here?

\n

\n Resident:\n  Please contact the leasing office to have login credentials sent\n to you.\n

\n

\n Applicant:\n  Create an account by clicking \n HERE.\n

\n

\n Note:\n  If a member of your household has already applied, contact our\n office to have login credentials sent to you.\n

\n \n \n Privacy Policy\n \n \n
\n
\n );\n};\n\nexport default Login;\n","import React, { useContext } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Typography } from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport theme from '@fortress-technology-solutions/fortress-component-library/theme';\nimport loadable from '@loadable/component';\nimport styled from 'styled-components';\nimport { setLocalAuth } from 'utils/auth';\nimport { AppContext } from 'contexts/AppContext';\nimport { getLocalUnitIntentData } from 'utils';\nimport { useWaitlistProps } from './hooks';\n\nconst Logo = loadable(() => import('components/Atoms/Logo'));\nconst Link = loadable(() => import('components/Atoms/Link'));\nconst Form = loadable(() => import('components/Organisms/FormRegister'));\nconst LayoutAuth = loadable(() => import('components/Organisms/LayoutAuth'));\n\nconst StyledLogo = styled(Logo)`\n width: 100%;\n height: 140px;\n\n @media (max-width: ${theme.breakpoints.values.sm}px) {\n height: 100px;\n }\n`;\n\nconst Register = ({ handleOpenTroubleLoggingInModal }) => {\n const { organizationId, propertyId, features } = useContext(AppContext);\n const history = useHistory();\n const waitlistProps = useWaitlistProps();\n\n const baseURL = `/${organizationId}/${propertyId}`;\n const intent = getLocalUnitIntentData();\n\n const onSubmitSuccess = ({ token, sanitizedUser }) => {\n setLocalAuth({\n token,\n sanitizedUser,\n });\n\n return history.push(baseURL);\n };\n\n return (\n \n \n \n Create Applicant Account\n \n \n Already have an account? Click Here\n \n \n \n );\n};\n\nexport default Register;\n","import { useContext } from 'react';\nimport { AppContext } from '../../contexts/AppContext';\nimport { useFlags } from 'launchdarkly-react-client-sdk';\n\nconst WAITLIST_CLOSED_MESSAGE =\n 'The waitlist at this property is closed. Please contact the property for more information.';\n\nexport function useWaitlistProps() {\n const { affordableWaitlist } = useContext(AppContext);\n const { affordableWaitlist: affordableWaitlistFlag } = useFlags();\n\n if (!affordableWaitlistFlag || !affordableWaitlist?.enabled) {\n return null;\n }\n\n const isOpen = affordableWaitlist.status === 'OPEN';\n\n return {\n disabled: !isOpen,\n disabledMessage: !isOpen ? WAITLIST_CLOSED_MESSAGE : null,\n };\n}\n","import React, { useContext, useState } from 'react';\nimport Button from 'components/Atoms/Button';\nimport loadable from '@loadable/component';\nimport styled from 'styled-components';\nimport { tc } from 'utils/theme';\n\nimport { AppContext } from 'contexts/AppContext';\n\nconst H2 = loadable(() => import('components/Atoms/H2'));\nconst Logo = loadable(() => import('components/Atoms/Logo'));\nconst Link = loadable(() => import('components/Atoms/Link'));\nconst Icon = loadable(() => import('components/Atoms/Icon'));\nconst LayoutAuth = loadable(() => import('components/Organisms/LayoutAuth'));\nconst Form = loadable(() => import('components/Organisms/FormForgotPassword'));\n\nconst Content = styled.div`\n max-width: 400px;\n margin: 0 auto;\n`;\n\nconst StyledLogo = styled(Logo)`\n width: 100%;\n height: 140px;\n`;\n\nconst StyledText = styled.p`\n text-align: center;\n margin: 30px 0;\n`;\n\nconst StyledIcon = styled(Icon)`\n && {\n font-size: 50px;\n color: ${tc('circleActiveColor')};\n }\n`;\n\nconst ForgotPassword = () => {\n const { organizationId, propertyId } = useContext(AppContext);\n\n const [success, setSuccess] = useState(false);\n\n const onSubmitSuccess = () => {\n setSuccess(true);\n };\n\n const RenderForm = () => (\n <>\n

Forgot your password?

\n \n Enter your email address and we will send you a link to reset your\n password.\n \n
\n \n Return to Login\n \n \n );\n\n const RenderSuccess = () => (\n <>\n

Reset Password Link Sent!

\n \n \n \n \n A link to reset your password has been sent to the email address you\n provided.\n \n \n \n \n \n );\n\n return (\n \n \n \n {success === false && }\n {success === true && }\n \n \n );\n};\n\nexport default ForgotPassword;\n","import React, { useContext, useState } from 'react';\nimport Button from 'components/Atoms/Button';\nimport PropTypes from 'prop-types';\nimport loadable from '@loadable/component';\nimport styled from 'styled-components';\nimport { tc } from 'utils/theme';\n\nimport { AppContext } from 'contexts/AppContext';\n\nconst H2 = loadable(() => import('components/Atoms/H2'));\nconst Logo = loadable(() => import('components/Atoms/Logo'));\nconst Link = loadable(() => import('components/Atoms/Link'));\nconst Icon = loadable(() => import('components/Atoms/Icon'));\nconst LayoutAuth = loadable(() => import('components/Organisms/LayoutAuth'));\nconst Form = loadable(() => import('components/Organisms/FormResetPassword'));\n\nconst Content = styled.div`\n max-width: 400px;\n margin: 0 auto;\n`;\n\nconst StyledLogo = styled(Logo)`\n width: 100%;\n height: 140px;\n`;\n\nconst StyledText = styled.p`\n text-align: center;\n margin: 30px 0;\n`;\n\nconst StyledIcon = styled(Icon)`\n && {\n font-size: 50px;\n color: ${tc('circleActiveColor')};\n }\n`;\n\nconst ResetPassword = ({\n match: {\n params: { resetToken },\n },\n}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n\n const [success, setSuccess] = useState(false);\n\n const onSubmitSuccess = () => {\n setSuccess(true);\n };\n\n const RenderForm = () => (\n <>\n

Change Your Password

\n \n \n Return to Login\n \n \n );\n\n const RenderSuccess = () => (\n <>\n

Password Reset Successful!

\n \n \n \n \n Your password has been updated! You may now use your new password to log\n in.\n \n \n \n \n \n );\n\n return (\n \n \n \n {success === false && }\n {success === true && }\n \n \n );\n};\n\nResetPassword.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n resetToken: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n};\n\nexport default ResetPassword;\n","import React, { useContext, useState, useEffect } from 'react';\nimport Button from 'components/Atoms/Button';\nimport PropTypes from 'prop-types';\nimport { useParams } from 'react-router-dom';\nimport styled from 'styled-components';\nimport pathOr from 'ramda.pathor';\nimport loadable from '@loadable/component';\nimport { tc } from 'utils/theme';\nimport { getLocalAuth, setLocalAuth } from 'utils/auth';\n\nimport { AppContext } from 'contexts/AppContext';\n\nimport { verifyEmail } from 'services/authService';\n\nconst H2 = loadable(() => import('components/Atoms/H2'));\nconst Logo = loadable(() => import('components/Atoms/Logo'));\nconst Icon = loadable(() => import('components/Atoms/Icon'));\nconst Spinner = loadable(() => import('components/Atoms/Spinner'));\nconst LayoutAuth = loadable(() => import('components/Organisms/LayoutAuth'));\n\nconst Content = styled.div`\n max-width: 400px;\n margin: 0 auto;\n`;\n\nconst StyledLogo = styled(Logo)`\n width: 100%;\n height: 140px;\n`;\n\nconst StyledText = styled.p`\n text-align: center;\n margin: 30px 0;\n`;\n\nconst StyledIcon = styled(Icon)`\n font-size: 50px;\n`;\n\nconst StyledCircleCheck = styled(StyledIcon)`\n && {\n color: ${tc('circleActiveColor')};\n }\n`;\n\nconst StyledCircleCross = styled(StyledIcon)`\n && {\n color: ${tc('errorMessage')};\n }\n`;\n\nconst VerifyEmailAddress = () => {\n const { organizationId, propertyId } = useContext(AppContext);\n const [status, setStatus] = useState(null);\n const { verifyToken } = useParams();\n\n const { authUser } = getLocalAuth();\n const authUserId = pathOr(null, ['id'], authUser);\n\n useEffect(() => {\n const checkEmailVerification = async () => {\n const response = await verifyEmail(verifyToken);\n\n if (response.error) {\n return setStatus('failure');\n }\n\n /**\n * If user is currently authenticated, update LocalStorage\n * with updated AuthUser.\n */\n if (authUserId) {\n setLocalAuth({\n token: response.token,\n sanitizedUser: response.sanitizedUser,\n });\n }\n\n return setStatus('success');\n };\n\n checkEmailVerification();\n }, [authUserId, verifyToken]);\n\n const RenderLoading = () => (\n <>\n \n \n \n \n );\n\n const RenderSuccess = () => (\n <>\n

Thank you for verifying your email!

\n \n \n \n You're all set!\n \n \n \n \n );\n\n const RenderFailure = () => (\n <>\n

Unable to verify your email

\n \n \n \n \n Make sure that you have clicked the correct link from your verification\n email.\n \n \n \n \n \n );\n\n return (\n \n \n \n {status === null && }\n {status === 'success' && }\n {status === 'failure' && }\n \n \n );\n};\n\nVerifyEmailAddress.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n verifyToken: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n};\n\nexport default VerifyEmailAddress;\n","import React, { useState, useContext } from 'react';\nimport Button from 'components/Atoms/Button';\nimport loadable from '@loadable/component';\nimport styled from 'styled-components';\nimport { useParams } from 'react-router-dom';\nimport { tc } from 'utils/theme';\n\nimport { AppContext } from 'contexts/AppContext';\n\nconst H2 = loadable(() => import('components/Atoms/H2'));\nconst Link = loadable(() => import('components/Atoms/Link'));\nconst Logo = loadable(() => import('components/Atoms/Logo'));\nconst Icon = loadable(() => import('components/Atoms/Icon'));\nconst LayoutAuth = loadable(() => import('components/Organisms/LayoutAuth'));\nconst Form = loadable(() => import('components/Organisms/FormClaimAccount'));\n\nconst Content = styled.div`\n max-width: 400px;\n margin: 0 auto;\n`;\n\nconst StyledLogo = styled(Logo)`\n width: 100%;\n height: 140px;\n`;\n\nconst StyledText = styled.p`\n text-align: center;\n margin: 30px 0;\n`;\n\nconst StyledIcon = styled(Icon)`\n && {\n font-size: 50px;\n color: ${tc('circleActiveColor')};\n }\n`;\n\nconst ClaimAccount = () => {\n const { organizationId, propertyId } = useContext(AppContext);\n const { claimToken } = useParams();\n\n const [success, setSuccess] = useState(false);\n\n const onSubmitSuccess = () => {\n setSuccess(true);\n };\n\n const RenderForm = () => (\n <>\n

Claim Your Account

\n \n \n Return to Login\n \n \n );\n\n const RenderSuccess = () => (\n <>\n

Account Claimed!

\n \n \n \n \n You have claimed your account! You may now use your new password to log\n in.\n \n \n \n \n \n );\n\n return (\n \n \n \n {success === false && }\n {success === true && }\n \n \n );\n};\n\nexport default ClaimAccount;\n","import React from 'react';\nimport styled from 'styled-components';\nimport loadable from '@loadable/component';\nimport PropTypes from 'prop-types';\nimport { tc } from 'utils/theme';\nimport { useIsLayoutMounted } from 'utils/hooks';\n\nconst AppHeader = loadable(() => import('./AppHeader'));\nconst AppContent = loadable(() => import('./AppContent'));\n\nconst GridLayout = styled.div`\n transition: opacity 225ms cubic-bezier(0.4, 0, 1, 1);\n display: grid;\n grid-template-rows: 100px 1fr;\n grid-template-columns: 1fr;\n min-height: 100vh;\n margin: 0;\n background-color: ${tc('backgroundColor')};\n`;\n\nconst LayoutApp = ({ children }) => {\n const isLayoutMounted = useIsLayoutMounted();\n\n return (\n \n \n {children}\n \n );\n};\n\nLayoutApp.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default LayoutApp;\n","import React, { useLayoutEffect, useState, Ref } from 'react';\n\nexport const useIsLayoutMounted = () => {\n const [isMounted, setIsMounted] = React.useState(false);\n useLayoutEffect(() => setIsMounted(true), [setIsMounted]);\n\n return isMounted;\n};\n\nexport const useGetElementDimensions = (ref: Ref) => {\n const [dimensions, setDimensions] = useState({\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n });\n\n useLayoutEffect(() => {\n if (ref?.current) {\n const elementDimensions = ref.current.getBoundingClientRect();\n if (Object.keys(elementDimensions)) {\n setDimensions(elementDimensions);\n }\n }\n }, [ref, setDimensions]);\n\n return dimensions;\n};\n","import React from 'react';\nimport { ToastProvider } from '@fortress-technology-solutions/fortress-component-library/contexts';\nimport { SectionsProgressProvider } from 'contexts/SectionsProgressContext';\nimport { FormStateProvider } from 'contexts/FormStateContext';\nimport { HouseholdMembersProvider } from 'contexts/HouseholdMembersContext';\nimport { AffordaPortalDetailsProvider } from 'contexts/AffordaPortalDetailsContext';\n\nconst Providers = ({ children }) => {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n};\n\nexport default Providers;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Divider } from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { SectionText } from '@fortress-technology-solutions/fortress-component-library/Molecules_Portal';\nimport { Form } from '@fortress-technology-solutions/fortress-component-library/Organisms';\n\nconst Eligibility = ({ fields, ReactHookFormProps, onSubmit }) => {\n // Filter out any non-DOM props from fields if needed\n const sanitizedFields = fields.map((field) => {\n const { isAffordaPortalSpecific, ...rest } = field;\n return rest;\n });\n\n return (\n <>\n }\n description=\"\"\n />\n \n \n \n );\n};\n\nexport default Eligibility;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Modal } from '@fortress-technology-solutions/fortress-component-library/Molecules';\nimport {\n Stack,\n Typography,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { AlertInfoIcon } from '@fortress-technology-solutions/fortress-component-library/Icons';\nimport { useMediaQuery } from '@fortress-technology-solutions/fortress-component-library/hooks';\n\nconst ConditionsForStudentsModal = ({ open, closeModal }) => {\n const isXs = useMediaQuery('only', 'xs');\n return (\n }\n open={open}\n onClose={closeModal}\n icon={}\n ModalProps={{\n fullScreen: isXs,\n }}\n >\n \n \n \n \n {Array(5)\n .fill(null)\n .map((value, index) => (\n \n \n \n ))}\n \n\n \n \n \n\n \n \n \n\n \n {Array(5)\n .fill(null)\n .map((value, index) => (\n \n \n \n ))}\n \n \n );\n};\n\nexport default ConditionsForStudentsModal;\n","import { useQuery } from 'react-query';\nimport { getPropertyInfo } from 'services/affordableService';\nimport useAbortController from 'hooks/useAbortController';\nimport { useContext } from 'react';\nimport { AppContext } from 'contexts/AppContext';\n\nconst usePropertyInfoQuery = ({ options } = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const abortControllerOptions = useAbortController();\n const queryKey = ['getPropertyInfo', organizationId, propertyId];\n\n return useQuery(\n queryKey,\n () => getPropertyInfo(organizationId, propertyId, abortControllerOptions),\n {\n enabled: !!organizationId && !!propertyId,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchInterval: false,\n refetchIntervalInBackground: false,\n refetchOnSettled: false,\n retry: false,\n ...options,\n },\n );\n};\n\nexport default usePropertyInfoQuery;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport {\n Button,\n Stack,\n Divider,\n Typography,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport {\n SectionText,\n useModal,\n} from '@fortress-technology-solutions/fortress-component-library/Molecules_Portal';\nimport { Collapse } from '@fortress-technology-solutions/fortress-component-library/Transitions';\nimport ConditionsForStudentsModal from 'components/Molecules/ConditionsForStudentsModal';\nimport usePropertyInfoQuery from 'hooks/usePropertyInfoQuery';\n\nconst AffordaPropertyAndProgram = (props) => {\n const modalProps = useModal(false);\n\n const { data: propertyInfo } = usePropertyInfoQuery();\n const getIncomeValue = React.useCallback(() => {\n if (!propertyInfo || !propertyInfo.applicationIncomeMultiplier) {\n return '';\n }\n const parenthesesValue = /\\(([^)]+)\\)/;\n const incomeValue =\n propertyInfo.applicationIncomeMultiplier.match(parenthesesValue);\n\n return incomeValue ? incomeValue[1] : '';\n }, [propertyInfo]);\n\n const incomeMultiplier = React.useMemo(() => {\n return getIncomeValue();\n }, [getIncomeValue]);\n\n const isValidIncomeMultiplier = React.useMemo(() => {\n return (\n incomeMultiplier?.length > 0 &&\n incomeMultiplier !== '0' &&\n incomeMultiplier !== '0.0' &&\n incomeMultiplier !== 'NA'\n );\n }, [incomeMultiplier]);\n\n return (\n <>\n }\n description={\n \n }\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n {isValidIncomeMultiplier && (\n \n \n \n )}\n \n \n \n \n \n \n \n\n \n \n \n \n \n );\n};\n\nexport default AffordaPropertyAndProgram;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { SectionText } from '@fortress-technology-solutions/fortress-component-library/Molecules_Portal';\n\nconst AffordaResultsEligible = () => {\n return (\n }\n description={\n \n }\n secondaryDescription={\n \n }\n sx={{\n paddingY: 2,\n }}\n />\n );\n};\n\nexport default AffordaResultsEligible;\n","import React, { useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { formatCurrency } from '@fortress-technology-solutions/fortress-component-library/utils';\nimport {\n Divider,\n List,\n ListItemText,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { SectionText } from '@fortress-technology-solutions/fortress-component-library/Molecules_Portal';\nimport CollapsedCard from 'components/Organisms/CollapsedCard';\nimport useAsyncPrequalifyOptions from 'pages/ChooseHousehold/hooks';\n\nconst AffordaResultsIneligible = () => {\n const [propParamError, setPropParamError] = useState('');\n\n const prequalifyOptions = useAsyncPrequalifyOptions(setPropParamError);\n\n return (\n <>\n }\n description={\n \n }\n secondaryDescription={\n \n }\n />\n \n\n {!propParamError && prequalifyOptions && (\n \n }\n >\n \n {prequalifyOptions.map(({ id, value, label }, index) => (\n \n }\n primaryTypographyProps={{ variant: 'labelLarge' }}\n secondary={formatCurrency(value)}\n secondaryTypographyProps={{ variant: 'bodyMedium' }}\n sx={{ paddingY: 1 }}\n />\n ))}\n \n \n )}\n \n );\n};\n\nexport default AffordaResultsIneligible;\n","import React, { useContext, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { UserContext } from 'contexts/UserContext';\nimport { AppContext } from 'contexts/AppContext';\nimport useAsyncPrequalifyOptions from 'pages/ChooseHousehold/hooks';\nimport useReactHookFormProps from 'hooks/useReactHookFormProps';\nimport useAffordaPortalDetailsQuery from 'hooks/queries/useAffordaPortalDetailsQuery';\nimport useUpdateAffordaPortalDetailsMutation from 'hooks/mutations/useUpdateAffordaPortalDetailsMutation';\nimport useFormStateManager from 'hooks/affordaPortalFormState/useFormStateManager';\nimport SECTION_NAMES from 'constants/sectionNames';\nimport { FormattedMessage } from 'react-intl';\n\nconst FIELDS = [\n {\n variant: 'counter',\n label: ,\n name: 'numberOfPeopleInUnit',\n isAffordaPortalSpecific: true,\n helperText: ,\n rules: {\n required: true,\n max: 10,\n min: 1,\n },\n GridProps: {\n xs: 12,\n sm: 6,\n },\n },\n {\n variant: 'number',\n name: 'totalAnnualHouseholdIncome',\n isAffordaPortalSpecific: true,\n label: ,\n helperText: ,\n GridProps: {\n xs: 12,\n sm: 6,\n },\n adornment: '$',\n rules: {\n max: 499999.99,\n min: 0,\n step: 0.01,\n required: true,\n },\n },\n];\n\nexport const useContinueButtonProps = ({\n ReactHookFormProps,\n baseURL,\n onSubmit,\n history,\n}) => {\n const { pathname } = history.location;\n const isEligibilityPage = pathname.endsWith('/welcome/eligibility');\n const isPropertyAndProgramPage = pathname.endsWith(\n '/welcome/property-and-program',\n );\n const { data: affordaPortalDetails } = useAffordaPortalDetailsQuery();\n const { isLoading, mutateAsync: updateAffordaPortalDetails } =\n useUpdateAffordaPortalDetailsMutation();\n const handleContinue = async () => {\n const welcomeCompletedAt = new Date().toISOString();\n if (!affordaPortalDetails?.welcomeCompletedAt) {\n await updateAffordaPortalDetails({ welcomeCompletedAt });\n }\n };\n\n return {\n to: {\n [`${baseURL}/welcome`]: `${baseURL}/welcome/property-and-program`,\n [`${baseURL}/welcome/property-and-program`]: `${baseURL}/welcome/eligibility`,\n [`${baseURL}/welcome/eligibility`]: null,\n [`${baseURL}/welcome/results-eligible`]: `${baseURL}/dashboard`,\n [`${baseURL}/welcome/results-ineligible`]: `${baseURL}/dashboard`,\n }[pathname],\n type: isEligibilityPage ? 'submit' : 'button',\n disabled: isEligibilityPage ? !ReactHookFormProps?.isValid : false,\n isSubmitting: isLoading,\n onClick: isEligibilityPage\n ? onSubmit\n : isPropertyAndProgramPage\n ? handleContinue\n : undefined,\n };\n};\n\nconst useEligibilityForm = ({ history, organizationId, propertyId }) => {\n const [propParamError, setPropParamError] = useState('');\n\n const { updateForm } = useFormStateManager(SECTION_NAMES.WELCOME_AND_QUALIFY);\n\n const prequalifyOptions = useAsyncPrequalifyOptions(setPropParamError);\n const ReactHookFormProps = useReactHookFormProps({\n defaultValues: {\n totalAnnualHouseholdIncome: '',\n numberOfPeopleInUnit: '',\n },\n mode: 'onChange',\n });\n const { control, handleSubmit } = ReactHookFormProps;\n\n const onSubmit = handleSubmit(\n ({ numberOfPeopleInUnit, totalAnnualHouseholdIncome }) => {\n const baseUrl = `/${organizationId}/${propertyId}`;\n const eligible = `${baseUrl}/welcome/results-eligible`;\n const ineligible = `${baseUrl}/welcome/results-ineligible`;\n\n updateForm(\n { numberOfPeopleInUnit, totalAnnualHouseholdIncome },\n { control, fields: FIELDS },\n );\n\n if (propParamError || !prequalifyOptions) return history.push(ineligible);\n\n const options = prequalifyOptions[numberOfPeopleInUnit - 1] || null;\n\n if (options?.value && totalAnnualHouseholdIncome <= options.value) {\n history.push(eligible);\n } else {\n history.push(ineligible);\n }\n },\n );\n\n return {\n eligibilityFields: FIELDS,\n onSubmit,\n ReactHookFormProps,\n };\n};\n\nconst useWelcomePage = ({ baseURL }) => {\n const history = useHistory();\n\n const {\n userProfile: { firstName },\n isLoading,\n } = useContext(UserContext);\n const {\n marketingInfo: { name, propertyLogoLink },\n organizationId,\n propertyId,\n } = useContext(AppContext);\n\n const { eligibilityFields, onSubmit, ReactHookFormProps } =\n useEligibilityForm({\n history,\n organizationId,\n propertyId,\n });\n\n const continueButtonProps = useContinueButtonProps({\n baseURL,\n history,\n onSubmit,\n ReactHookFormProps,\n });\n\n const isFirstPage = history.location.pathname === `${baseURL}/welcome`;\n\n return {\n eligibilityFields,\n isFirstPage,\n firstName,\n isLoading,\n name,\n propertyLogoLink,\n organizationId,\n propertyId,\n continueButtonProps,\n onSubmit,\n ReactHookFormProps,\n };\n};\n\nexport default useWelcomePage;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { SectionText } from '@fortress-technology-solutions/fortress-component-library/Molecules_Portal';\n\nconst Welcome = ({ name }) => {\n return (\n <>\n \n }\n description={}\n />\n \n );\n};\n\nexport default Welcome;\n","import { Divider } from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { AsyncBox } from '@fortress-technology-solutions/fortress-component-library/Molecules';\nimport ContinueButton from 'components/Atoms/ContinueButton';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Route, useLocation } from 'react-router-dom';\nimport Eligibility from '../AffordaEligibility';\nimport PropertyAndProgram from '../AffordaPropertyAndProgram';\nimport ResultsEligible from '../AffordaResultsEligible';\nimport ResultsIneligible from '../AffordaResultsIneligible';\nimport useWelcomePage from './hooks';\nimport Welcome from './Welcome';\n\nconst WelcomePage = ({ url }) => {\n const {\n isFirstPage,\n firstName,\n eligibilityFields,\n isLoading,\n name,\n continueButtonProps,\n ReactHookFormProps,\n onSubmit,\n } = useWelcomePage({ baseURL: url });\n\n const location = useLocation();\n const isIneligible = React.useMemo(\n () => location.pathname.endsWith('results-ineligible'),\n [location.pathname],\n );\n\n return (\n <>\n \n \n\n }\n />\n\n }\n />\n\n (\n \n )}\n />\n\n \n\n \n\n \n\n \n {isFirstPage ? (\n \n ) : isIneligible ? (\n \n ) : null}\n \n \n \n );\n};\n\nexport default WelcomePage;\n","import useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport useAffordaPortalDetailsQuery from 'hooks/queries/useAffordaPortalDetailsQuery';\n\nconst useShouldRedirectToWelcomeFlow = () => {\n const { isLoading: isUserProfileLoading, data: userProfile } =\n useUserProfileQuery();\n const {\n isLoading: isAffordaPortalDetailsLoading,\n data: affordaPortalDetails,\n } = useAffordaPortalDetailsQuery();\n\n const isLoading = isUserProfileLoading || isAffordaPortalDetailsLoading;\n const hasData =\n !isLoading &&\n Object.keys(userProfile ?? {}).length > 0 &&\n Object.keys(affordaPortalDetails ?? {}).length > 0;\n\n return {\n isLoading,\n shouldRedirectToWelcomeFlow: hasData\n ? userProfile?.isPrimaryProspect &&\n !affordaPortalDetails?.welcomeCompletedAt\n : null,\n };\n};\n\nexport default useShouldRedirectToWelcomeFlow;\n","import React from 'react';\nimport {\n Switch,\n ListItemButton,\n ListItemText,\n ListSubheader,\n ListItemSecondaryAction,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { useSectionsProgressContext } from 'contexts/SectionsProgressContext';\nimport { useFormStateContext } from 'contexts/FormStateContext';\nimport useEnableSectionsProgressLogging from 'hooks/sectionsProgress/useEnableSectionsProgressLogging';\nimport useEnableFormStateLogging from 'hooks/affordaPortalFormState/useEnableFormStateLogging';\nimport useEnableAllSections from 'hooks/dev/useEnableAllSections';\nimport useCompleteDocumentsAndUploadsTaskList from 'hooks/dev/useCompleteDocumentsAndUploadsTaskList';\n\nconst DevControls = () => {\n const { deleteSectionsProgress } = useSectionsProgressContext();\n const { deleteForm } = useFormStateContext();\n const {\n isSectionsProgressLoggingEnabled,\n toggleIsSectionsProgressLoggingEnabled,\n } = useEnableSectionsProgressLogging();\n const { isFormStateLoggingEnabled, toggleIsFormStateLoggingEnabled } =\n useEnableFormStateLogging();\n const { allSectionsEnabled, toggleAllSectionsEnabled } =\n useEnableAllSections();\n const {\n completeDocumentsAndUploadsTaskList,\n toggleCompleteDocumentsAndUploadsTaskList,\n } = useCompleteDocumentsAndUploadsTaskList();\n\n return (\n <>\n \n Dev Controls\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n localStorage.clear()}>\n \n \n \n );\n};\n\nexport default DevControls;\n","import React, { useState, useContext } from 'react';\nimport { Link as ReactRouterLink, useHistory } from 'react-router-dom';\nimport { QueryClient } from 'react-query';\nimport { AppBar } from '@fortress-technology-solutions/fortress-component-library/Organisms_Portal';\nimport {\n List,\n ListItem,\n ListItemButton,\n ListItemIcon,\n ListItemAvatar,\n ListItemText,\n Avatar,\n Typography,\n IconButton,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport {\n HomeIcon,\n LogoutIcon,\n CloseIcon,\n ContractIcon,\n ArrowBackIcon,\n MenuIcon,\n} from '@fortress-technology-solutions/fortress-component-library/Icons';\nimport { UserContext } from 'contexts/UserContext';\nimport { clearUserMetadata } from 'utils/datadog';\nimport { AppContext } from 'contexts/AppContext';\nimport { logoutFusionAuthUser } from 'services/fusionAuthService';\nimport { destroyLocalAuth } from 'utils/auth';\nimport { useGoBack } from 'components/Organisms/Appbar/hooks';\nimport useShouldRedirectToWelcomeFlow from 'hooks/useShouldRedirectToWelcomeFlow';\nimport DevControls from './DevControls';\nimport { IS_DEVELOPMENT } from 'constants/environment';\n\nconst AppBarPortal = ({ scrollRef }) => {\n const history = useHistory();\n const queryClient = new QueryClient();\n const [open, setOpen] = useState(false);\n const {\n userProfile: { firstName, lastName },\n } = useContext(UserContext);\n\n const {\n marketingInfo: { name },\n organizationId,\n propertyId,\n authenticationPortal,\n } = useContext(AppContext);\n\n const { shouldRedirectToWelcomeFlow } = useShouldRedirectToWelcomeFlow();\n\n const baseURL = `/${organizationId}/${propertyId}`;\n\n const isCurrentURL = {\n dashboard: history.location.pathname === `${baseURL}/dashboard`,\n termsAndConditions:\n history.location.pathname === `${baseURL}/terms-and-conditions`,\n };\n\n const logoutUser = async () => {\n clearUserMetadata();\n if (authenticationPortal) {\n queryClient.clear();\n return logoutFusionAuthUser();\n }\n queryClient.clear();\n destroyLocalAuth();\n return history.push(baseURL);\n };\n\n const goBackButtonProps = useGoBack({ history });\n\n return (\n \n \n \n \n \n {name}\n \n setOpen(true)}\n >\n \n \n \n }\n >\n \n setOpen(false)}\n >\n \n \n \n \n\n \n \n \n {firstName?.charAt(0)}\n {lastName?.charAt(0)}\n \n \n \n \n\n {shouldRedirectToWelcomeFlow === false && ( // Show when welcome flow is completed\n <>\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n )}\n\n {IS_DEVELOPMENT && }\n\n \n \n \n \n \n \n \n \n );\n};\n\nexport default AppBarPortal;\n","import { useIsStudentDisqualified } from 'pages/AffordaHousehold/AffordaHousehold.FullTimeStudent.hooks';\nimport useBaseURL from 'hooks/useBaseURL';\nimport PATHS from 'constants/paths';\nimport { useSectionsProgressContext } from 'contexts/SectionsProgressContext';\n\nexport const useGoBack = ({ history }) => {\n const baseURL = useBaseURL();\n const isStudentDisqualified = useIsStudentDisqualified();\n const { previousURL } = useSectionsProgressContext();\n\n const to = previousURL ? previousURL : `${baseURL}/${PATHS.DASHBOARD}`;\n const isOnDashboard =\n history.location.pathname === `${baseURL}/${PATHS.DASHBOARD}`;\n\n const isHidden = isStudentDisqualified || isOnDashboard;\n\n return {\n onClick: () => history.replace(to),\n sx: {\n visibility: isHidden ? 'hidden' : 'visible',\n },\n };\n};\n","// @flow\nimport { useContext } from 'react';\nimport { useMutation, MutationOptions, useQueryClient } from 'react-query';\nimport { AppContext } from 'contexts/AppContext';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport { createAffordaDetails } from 'services/affordableService';\nimport QUERY_KEYS from 'constants/queryKeys';\nimport { UserContext } from 'contexts/UserContext';\n// import { CompletionStatus } from 'hooks/mutations/useUpdateCompletionStatusMutation';\n\ntype Props = {\n options: MutationOptions,\n};\n\nconst useCreateAffordaPortalDetailsMutation = ({ options }: Props = {}) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const {\n authUser: { id },\n } = useContext(UserContext);\n const { refetch: refetchUserProfile } = useUserProfileQuery();\n const queryClient = useQueryClient();\n const hasRequiredParams = Boolean(organizationId && propertyId);\n\n return useMutation(\n async (requestData) => {\n const { data: userProfile } = await refetchUserProfile();\n await createAffordaDetails(organizationId, propertyId, {\n portalUserId: userProfile.portalUserId,\n ...requestData,\n });\n },\n {\n ...options,\n onSuccess: async (response) => {\n await queryClient.invalidateQueries(\n QUERY_KEYS.affordaDetails({ authUserId: id }),\n );\n options?.onSuccess(response);\n return response;\n },\n enabled: options?.enabled\n ? options.enabled && hasRequiredParams\n : hasRequiredParams,\n },\n );\n};\n\nexport default useCreateAffordaPortalDetailsMutation;\n","import { useEffect, useLayoutEffect, useRef } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport PATHS from 'constants/paths';\nimport useCreateAffordaPortalDetailsMutation from 'hooks/mutations/useCreateAffordaPortalDetailsMutation';\nimport useAffordaPortalDetailsQuery from 'hooks/queries/useAffordaPortalDetailsQuery';\nimport useBaseURL from 'hooks/useBaseURL';\nimport useShouldRedirectToWelcomeFlow from 'hooks/useShouldRedirectToWelcomeFlow';\nimport { useIsStudentDisqualified } from 'pages/AffordaHousehold/AffordaHousehold.FullTimeStudent.hooks';\n\nconst useAffordaPortal = ({ url }) => {\n const {\n push: historyPush,\n location: { pathname },\n } = useHistory();\n\n const baseURL = useBaseURL();\n const scrollRef = useRef(null);\n\n const { isLoading, shouldRedirectToWelcomeFlow } =\n useShouldRedirectToWelcomeFlow();\n const isStudentDisqualified = useIsStudentDisqualified();\n\n useLayoutEffect(() => {\n if (!scrollRef.current) {\n scrollRef.current = document.getElementById('scrollContainer');\n }\n });\n\n const {\n data: affordaPortalDetails,\n isLoading: isAffordaPortalDetailsLoading,\n } = useAffordaPortalDetailsQuery();\n const { mutate: createAffordaPortalDetailsMutate } =\n useCreateAffordaPortalDetailsMutation();\n\n useEffect(() => {\n // If the query is not loading and there is no data, create the afforda portal details\n if (!affordaPortalDetails && !isAffordaPortalDetailsLoading) {\n createAffordaPortalDetailsMutate();\n }\n }, [\n affordaPortalDetails,\n isAffordaPortalDetailsLoading,\n createAffordaPortalDetailsMutate,\n ]);\n\n const showGradient = [\n `${url}/${PATHS.WELCOME}`,\n `${url}/${PATHS.DASHBOARD}`,\n `${url}/${PATHS.APPLICATION}`,\n `${url}/${PATHS.DOCUMENTATION}`,\n ].includes(pathname);\n\n useEffect(() => {\n if (isStudentDisqualified && pathname !== `${url}/${PATHS.DASHBOARD}`) {\n historyPush(`${url}/${PATHS.DASHBOARD}`);\n }\n }, [historyPush, isStudentDisqualified, pathname, url]);\n\n useEffect(() => {\n if (\n isLoading || // isLoading\n pathname !== baseURL\n )\n return;\n\n if (shouldRedirectToWelcomeFlow === true) {\n historyPush(`${url}/${PATHS.WELCOME}`);\n } else if (shouldRedirectToWelcomeFlow === false) {\n historyPush(`${url}/${PATHS.DASHBOARD}`);\n }\n }, [\n baseURL,\n historyPush,\n isLoading,\n pathname,\n shouldRedirectToWelcomeFlow,\n url,\n ]);\n\n return {\n showGradient,\n scrollRef,\n isLoading:\n shouldRedirectToWelcomeFlow === null ||\n isAffordaPortalDetailsLoading ||\n isLoading,\n };\n};\n\nexport default useAffordaPortal;\n","import React, { useContext } from 'react';\nimport { Image } from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { AppContext } from 'contexts/AppContext';\n\nconst Hero = () => {\n const {\n marketingInfo: { propertyLogoLink },\n } = useContext(AppContext);\n\n return (\n \n );\n};\n\nexport default Hero;\n","import { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nconst ScrollToTop = ({ scrollRef }) => {\n const {\n location: { pathname },\n } = useHistory();\n\n useEffect(() => {\n if (!scrollRef.current) return;\n scrollRef.current.scrollTo(0, 0);\n }, [pathname, scrollRef]);\n\n return null;\n};\n\nexport default ScrollToTop;\n","// @flow\nimport { useQuery } from 'react-query';\nimport checkHouseholdMembersHaveSignedConsent from 'utils/checkHouseholdMembersHaveSignedConsent';\nimport useHouseholdMembersQuery from 'hooks/queries/useHouseholdMembersQuery';\n\nconst useHaveAllHouseholdMembersSignedConsentQuery = () => {\n const { data: householdMembers } = useHouseholdMembersQuery();\n\n return useQuery(\n [\n 'haveAllHouseholdMembersSignedConsentQuery',\n householdMembers?.map(({ id }) => id),\n ],\n async () => {\n return checkHouseholdMembersHaveSignedConsent(householdMembers);\n },\n {\n enabled: Boolean(householdMembers?.length),\n },\n );\n};\n\nexport default useHaveAllHouseholdMembersSignedConsentQuery;\n","import { useQuery } from 'react-query';\nimport { getScreeningStatus } from 'services/screening';\nimport useUserProfileQuery from 'hooks/queries/useUserProfileQuery';\nimport useAbortController from 'hooks/useAbortController';\n\nconst useScreeningStatusQuery = ({ options }) => {\n const { data: { applicationId } = {} } = useUserProfileQuery();\n const abortControllerOptions = useAbortController();\n\n return useQuery(\n ['getScreeningStatus', applicationId],\n async () => {\n const response = await getScreeningStatus({\n applicationId,\n options: abortControllerOptions,\n });\n\n return response?.status?.resultMessage ?? null;\n },\n {\n ...options,\n enabled: Boolean(applicationId?.length && options.enabled),\n },\n );\n};\n\nexport default useScreeningStatusQuery;\n","import { useMemo } from 'react';\nimport { useHouseholdMembersContext } from 'contexts/HouseholdMembersContext';\n\nconst isMemberDocumentationCompleted = (member) => {\n const householdAdditionalDetails = member?.additionalDetails?.household ?? {};\n const { documentsUploadCompleted, applicationSubmissionCompleted } =\n householdAdditionalDetails;\n return documentsUploadCompleted && applicationSubmissionCompleted;\n};\n\nconst useDocumentationProgress = () => {\n const { filteredHouseholdMembers } = useHouseholdMembersContext();\n\n return useMemo(() => {\n if (!filteredHouseholdMembers?.length) {\n return {\n documentationProgress: 0,\n allMembersHaveCompletedDocumentation: false,\n allFilteredMembersDocumentationCompleted: false,\n isDenied: false,\n };\n }\n for (const member of filteredHouseholdMembers) {\n }\n const allMembersHaveCompletedDocumentation =\n filteredHouseholdMembers?.every((hm) =>\n isMemberDocumentationCompleted(hm),\n );\n const allFilteredMembersDocumentationCompleted =\n filteredHouseholdMembers?.every((hm) =>\n isMemberDocumentationCompleted(hm),\n );\n\n return {\n allMembersHaveCompletedDocumentation,\n allFilteredMembersDocumentationCompleted,\n };\n }, [filteredHouseholdMembers]);\n};\n\nexport default useDocumentationProgress;\n","import PATHS, {\n APPLICATION_SUBMISSION_PATHS,\n BEFORE_YOU_GO_PATHS,\n CREDIT_CRIMINAL_CHECK_PATHS,\n IDENTIFYING_DETAILS_PATHS,\n} from 'constants/paths';\nimport SECTION_NAMES from 'constants/sectionNames';\nimport useBaseURL from 'hooks/useBaseURL';\nimport { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useHouseholdMembersContext } from 'contexts/HouseholdMembersContext';\n\nconst useUnInvitedSecondaryUserRouteManager = ({\n sectionsProgress,\n isSectionsProgressInitialized,\n}) => {\n const history = useHistory();\n const baseURL = useBaseURL();\n\n const { isUnInvitedSecondaryUser, hasData } = useHouseholdMembersContext();\n\n const {\n [SECTION_NAMES.IDENTIFYING_DETAILS]: identifyingDetailsProgress,\n [SECTION_NAMES.CREDIT_CRIMINAL_CHECK]: creditCriminalCheckProgress,\n [SECTION_NAMES.APPLICATION_SUBMISSION]: applicationSubmissionProgress,\n [SECTION_NAMES.BEFORE_YOU_GO]: beforeYouGoProgress,\n } = sectionsProgress;\n\n useEffect(() => {\n if (!isSectionsProgressInitialized || !isUnInvitedSecondaryUser || !hasData)\n return;\n\n const allStepsComplete =\n identifyingDetailsProgress?.isComplete &&\n creditCriminalCheckProgress?.isComplete &&\n applicationSubmissionProgress?.isComplete &&\n beforeYouGoProgress?.isComplete;\n\n if (!allStepsComplete) {\n if (!identifyingDetailsProgress?.isComplete) {\n return history.push(\n `${baseURL}/${PATHS.IDENTIFYING_DETAILS}/${IDENTIFYING_DETAILS_PATHS.IDENTIFICATION}`,\n );\n }\n if (!creditCriminalCheckProgress?.isComplete) {\n return history.push(\n `${baseURL}/${PATHS.CREDIT_CRIMINAL_CHECK}/${CREDIT_CRIMINAL_CHECK_PATHS.CONSENT}`,\n );\n }\n if (!applicationSubmissionProgress?.isComplete) {\n return history.push(\n `${baseURL}/${PATHS.APPLICATION_SUBMISSION}/${APPLICATION_SUBMISSION_PATHS.SIGNATURE_AND_REPRESENTATION}`,\n );\n }\n if (!beforeYouGoProgress?.isComplete) {\n return history.push(\n `${baseURL}/${PATHS.BEFORE_YOU_GO}/${BEFORE_YOU_GO_PATHS.VOLUNTARY_SELF_IDENTIFICATION}`,\n );\n }\n }\n }, [\n baseURL,\n history,\n isUnInvitedSecondaryUser,\n identifyingDetailsProgress,\n creditCriminalCheckProgress,\n applicationSubmissionProgress,\n beforeYouGoProgress?.isComplete,\n beforeYouGoProgress,\n sectionsProgress,\n isSectionsProgressInitialized,\n hasData,\n ]);\n};\n\nexport default useUnInvitedSecondaryUserRouteManager;\n","// @flow\nimport { useContext } from 'react';\nimport { AppContext } from 'contexts/AppContext';\nimport { UserContext } from 'contexts/UserContext';\nimport { useQuery } from 'react-query';\nimport useAbortController from 'hooks/useAbortController';\nimport { getHouseholdMemberStatus } from 'services/userService';\nimport QUERY_KEYS from 'constants/queryKeys';\n\nconst useHouseholdMemberStatusQuery = () => {\n const { organizationId, propertyId } = useContext(AppContext);\n const {\n userProfile: { customerId, householdId },\n } = useContext(UserContext);\n const abortControllerOptions = useAbortController();\n\n return useQuery(\n QUERY_KEYS.householdMemberStatus({\n organizationId,\n propertyId,\n customerId,\n householdId,\n }),\n () =>\n getHouseholdMemberStatus(\n {\n organizationId,\n propertyId,\n customerId,\n householdId,\n },\n abortControllerOptions,\n ),\n {\n enabled: Boolean(\n organizationId?.length &&\n propertyId?.length &&\n customerId?.length &&\n householdId?.length,\n ),\n },\n );\n};\n\nexport default useHouseholdMemberStatusQuery;\n","import { useIsFetching } from 'react-query';\nimport SECTION_NAMES from 'constants/sectionNames';\nimport { useSectionsProgressContext } from 'contexts/SectionsProgressContext';\nimport useEnableAllSections from 'hooks/dev/useEnableAllSections';\nimport useHaveAllHouseholdMembersSignedConsentQuery from 'hooks/queries/useHaveAllHouseholdMembersSignedConsentQuery';\nimport useScreeningStatusQuery from 'hooks/queries/useScreeningStatusQuery';\nimport useIsUnInvitedSecondaryUser from 'hooks/useIsUnInvitedSecondaryUser';\nimport useDocumentationProgress from 'pages/AffordaDashboard/hooks.useDocumentationProgress';\nimport useUnInvitedSecondaryUserRouteManager from 'pages/AffordaDashboard/hooks.useUnInvitedSecondaryUserRouteManager';\nimport { useIsStudentDisqualified } from 'pages/AffordaHousehold/AffordaHousehold.FullTimeStudent.hooks';\nimport useAffordaApplication from 'pages/AffordaApplication/hooks';\nimport useHouseholdMemberStatusQuery from 'hooks/queries/useHouseholdMemberStatusQuery';\nimport { HOUSEHOLD_STATUS_DENIED } from 'utils/constants/household';\n\nconst useAffordaDashboard = () => {\n const { allSectionsEnabled } = useEnableAllSections();\n\n const isDataLoaded = useIsFetching() === 0;\n\n const { isInitialized, sectionsProgress } = useSectionsProgressContext();\n\n const {\n [SECTION_NAMES.APPLICATION]: applicationSectionProgress,\n [SECTION_NAMES.CREDIT_AND_CRIMINAL]: creditAndCriminalSectionProgress,\n [SECTION_NAMES.DOCUMENTATION]: documentationSectionProgress,\n } = sectionsProgress;\n\n const isUnInvitedSecondaryUser = useIsUnInvitedSecondaryUser();\n\n useUnInvitedSecondaryUserRouteManager({\n sectionsProgress,\n isSectionsProgressInitialized: isInitialized,\n });\n\n const { data: haveAllHouseholdMembersSignedConsent } =\n useHaveAllHouseholdMembersSignedConsentQuery();\n\n const { data: screeningStatus } = useScreeningStatusQuery({\n options: { enabled: haveAllHouseholdMembersSignedConsent },\n });\n\n const { data: householdMemberStatus } = useHouseholdMemberStatusQuery();\n const isApplicationDenied =\n householdMemberStatus?.status === HOUSEHOLD_STATUS_DENIED;\n\n const {\n allMembersHaveCompletedDocumentation,\n allFilteredMembersDocumentationCompleted,\n } = useDocumentationProgress();\n\n // Check all the sections are completed for all the users.\n const { isIncomeAssetsNoEligible, isWelcomeAndQualifyUneligible } =\n useAffordaApplication();\n\n const isStudentDisqualified = useIsStudentDisqualified();\n const allMembersHavePassedScreening = [\n 'Approved with Conditions',\n 'Approved',\n ].includes(screeningStatus);\n\n const creditAndCriminalScreeningIneligible =\n screeningStatus?.length && screeningStatus === 'Declined';\n\n const userIsIneligible =\n isStudentDisqualified || creditAndCriminalScreeningIneligible;\n\n const applicationProps = isUnInvitedSecondaryUser\n ? {\n progress: 100,\n isComplete: true,\n disabled: true,\n }\n : {\n ...applicationSectionProgress,\n disabled: userIsIneligible,\n };\n\n const creditAndCriminalProps = isUnInvitedSecondaryUser\n ? {\n ...creditAndCriminalSectionProgress,\n disabled: allSectionsEnabled ? false : true,\n }\n : {\n ...creditAndCriminalSectionProgress,\n creditAndCriminalScreeningIneligible,\n isAwaitingScreeningResult:\n creditAndCriminalSectionProgress?.isComplete &&\n !allMembersHavePassedScreening,\n disabled: allSectionsEnabled\n ? false\n : userIsIneligible || !applicationProps.isComplete,\n };\n\n const isAwaitingDocumentation =\n allFilteredMembersDocumentationCompleted &&\n !allMembersHaveCompletedDocumentation;\n\n const documentationProps = isUnInvitedSecondaryUser\n ? {\n ...documentationSectionProgress,\n disabled: allSectionsEnabled ? false : true,\n }\n : {\n ...documentationSectionProgress,\n disabled: allSectionsEnabled\n ? false\n : userIsIneligible ||\n !creditAndCriminalProps.isComplete ||\n allMembersHaveCompletedDocumentation,\n isAwaitingDocumentation,\n allMembersHaveCompletedDocumentation,\n };\n\n return {\n isDataLoaded,\n applicationProps,\n creditAndCriminalProps,\n documentationProps,\n isStudentDisqualified,\n isIncomeAssetsNoEligible,\n isApplicationDenied,\n isWelcomeAndQualifyUneligible,\n };\n};\n\nexport default useAffordaDashboard;\n","import React from 'react';\nimport { Collapse } from '@fortress-technology-solutions/fortress-component-library/Transitions';\nimport { Stack } from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { Banner } from '@fortress-technology-solutions/fortress-component-library/Molecules_Portal';\nimport { FormattedMessage } from 'react-intl';\n\nconst Banners = ({\n creditAndCriminalScreeningIneligible,\n isApplicationDenied,\n isIncomeAssetsNoEligible,\n isStudentDisqualified,\n isWelcomeAndQualifyUneligible,\n}) => {\n return (\n \n \n {(isIncomeAssetsNoEligible || isWelcomeAndQualifyUneligible) && (\n \n }\n subtitle={\n \n }\n message={\n \n }\n sx={{ minWidth: '100%' }}\n />\n )}\n\n {creditAndCriminalScreeningIneligible && (\n \n }\n subtitle={\n \n }\n message={\n \n }\n sx={{ minWidth: '100%' }}\n />\n )}\n\n {isStudentDisqualified && (\n }\n subtitle={}\n message={\n <>\n \n
\n
\n \n \n }\n sx={{ minWidth: '100%' }}\n />\n )}\n\n {isApplicationDenied && (\n \n }\n subtitle={\n \n }\n message={\n <>\n \n
\n
\n \n \n }\n sx={{ minWidth: '100%' }}\n />\n )}\n
\n \n );\n};\n\nexport default Banners;\n","import {\n Box,\n List,\n Skeleton,\n Typography,\n} from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport {\n ContractIcon,\n QualifyIcon,\n VerifiedUserIcon,\n} from '@fortress-technology-solutions/fortress-component-library/Icons';\nimport { AsyncBox } from '@fortress-technology-solutions/fortress-component-library/Molecules';\nimport ProgressStatus from 'components/Atoms/ProgressStatus';\nimport ContactUs from 'components/Organisms/ContactUs';\nimport ListItemProgressBar from 'components/Organisms/ListItemProgressBar';\nimport PATHS from 'constants/paths';\nimport { UserContext } from 'contexts/UserContext';\nimport useBaseURL from 'hooks/useBaseURL';\nimport React, { useContext, useMemo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport useAffordaDashboard from './hook';\nimport Banners from './Banners';\nimport SectionDivider from 'components/Atoms/SectionDivider';\n\nconst Dashboard = () => {\n const intl = useIntl();\n const {\n userProfile: { firstName },\n } = useContext(UserContext);\n const baseURL = useBaseURL();\n\n const {\n isDataLoaded,\n applicationProps,\n creditAndCriminalProps,\n isStudentDisqualified,\n documentationProps,\n isIncomeAssetsNoEligible,\n isApplicationDenied,\n isWelcomeAndQualifyUneligible,\n } = useAffordaDashboard();\n\n const isAllSectionsCompleted = useMemo(() => {\n return (\n applicationProps.isComplete &&\n creditAndCriminalProps.isComplete &&\n documentationProps.isComplete\n );\n }, [applicationProps, creditAndCriminalProps, documentationProps]);\n\n return (\n \n {/* Completed all sections, whats next? */}\n {isAllSectionsCompleted && (\n <>\n \n \n \n \n )}\n\n \n\n \n \n \n\n {/* Completed all sections, whats next? */}\n {isAllSectionsCompleted && (\n <>\n \n \n \n \n \n \n \n )}\n\n \n {documentationProps.isAwaitingDocumentation && !isApplicationDenied && (\n <>\n \n \n \n \n )}\n {documentationProps.allMembersHaveCompletedDocumentation &&\n !isApplicationDenied && (\n <>\n \n \n \n \n )}\n\n \n\n \n {[PATHS.APPLICATION, PATHS.VERIFICATION, PATHS.DOCUMENTATION].map(\n (path) => (\n \n ),\n )}\n \n }\n >\n \n \n }\n to={`${baseURL}/${PATHS.APPLICATION}`}\n icon={}\n progressValue={applicationProps.progress}\n secondary={\n isStudentDisqualified ? (\n \n ) : applicationProps.isComplete ? (\n \n ) : null\n }\n disabled={applicationProps.disabled || isApplicationDenied}\n />\n \n }\n to={`${baseURL}/${PATHS.VERIFICATION}`}\n icon={}\n progressValue={creditAndCriminalProps.progress}\n secondary={\n creditAndCriminalProps.isAwaitingScreeningResult ? (\n \n ) : creditAndCriminalProps.isComplete ? (\n \n ) : null\n }\n disabled={creditAndCriminalProps.disabled || isApplicationDenied}\n />\n \n }\n to={`${baseURL}/${PATHS.DOCUMENTATION}`}\n icon={}\n progressValue={documentationProps.progress}\n secondary={\n documentationProps.isComplete ? (\n \n ) : null\n }\n disabled={documentationProps.disabled || isApplicationDenied}\n />\n \n \n\n \n\n \n \n );\n};\n\nexport default Dashboard;\n","import React from 'react';\nimport { Route } from 'react-router-dom';\nimport Providers from './Providers';\nimport { LazyLoad } from '@fortress-technology-solutions/fortress-component-library/HOC';\nimport { Box } from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { AsyncBox } from '@fortress-technology-solutions/fortress-component-library/Molecules';\nimport WelcomePage from 'pages/AffordaWelcomePage';\nimport AppBarPortal from 'components/Organisms/Appbar';\nimport useAffordaPortal from './hooks';\nimport Hero from 'components/Organisms/Hero';\nimport ScrollToTop from '../../components/Molecules/ScrollToTop';\nimport Dashboard from 'pages/AffordaDashboard';\nimport PATHS from 'constants/paths';\n\nconst Application = LazyLoad(() => import('pages/AffordaApplication'));\nconst Verification = LazyLoad(() => import('pages/AffordaVerification'));\nconst Documentation = LazyLoad(() => import('pages/AffordaDocumentation'));\nconst DocumentationAndUploads = LazyLoad(\n () => import('pages/AffordaDocumentsAndUploads'),\n);\nconst ApplicationSubmission = LazyLoad(\n () => import('pages/AffordaApplicationSubmission'),\n);\nconst BeforeYouGo = LazyLoad(() => import('pages/AffordaBeforeYouGo'));\nconst WagesAndIncome = LazyLoad(() => import('pages/AffordaWagesAndIncome'));\nconst AffordaAssets = LazyLoad(() => import('pages/AffordaAssets'));\nconst Household = LazyLoad(() => import('pages/AffordaHousehold'));\nconst Payments = LazyLoad(() => import('pages/AffordaPayments'));\n\nconst IdentifyingDetails = LazyLoad(\n () => import('pages/AffordaIdentifyingDetails'),\n);\nconst CreditCriminalCheck = LazyLoad(\n () => import('pages/AffordaCreditAndCriminalCheck'),\n);\n\nconst TermsAndConditions = LazyLoad(\n () => import('pages/AffordaTermsAndConditions'),\n);\n\nconst AffordaPortal = ({ url }) => {\n const { showGradient, scrollRef, isLoading } = useAffordaPortal({ url });\n\n return (\n \n \n showGradient\n ? `linear-gradient(180deg, #e4e4e4 0%, transparent 25%)`\n : `linear-gradient(180deg, ${palette.background.paper} 0%, transparent 25%)`,\n transition: ({ transitions }) => transitions.create('background'),\n }}\n >\n \n \n \n \n }\n />\n \n \n \n\n \n \n\n \n \n \n \n\n \n\n \n\n \n\n \n\n \n \n \n \n \n );\n};\n\nconst AffordaPortalWrapper = ({ url }) => {\n return (\n \n \n \n );\n};\n\nexport default AffordaPortalWrapper;\n","import React, { useContext } from 'react';\nimport loadable from '@loadable/component';\nimport { Switch, Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { useFlags } from 'launchdarkly-react-client-sdk';\nimport { AppContext } from 'contexts/AppContext';\nimport { UserContext } from 'contexts/UserContext';\n\nimport {\n HOUSEHOLD_STATUS_CANCELED,\n HOUSEHOLD_STATUS_DENIED,\n} from 'utils/constants/household';\n\nimport useAsyncHouseholdMemberStatus from 'hooks/useAsyncHouseholdMemberStatus';\nimport { AsyncBox } from '@fortress-technology-solutions/fortress-component-library/Molecules';\nimport LayoutApp from 'components/Organisms/LayoutApp';\nimport AffordaPortal from 'pages/AffordaPortal';\n\n/**\n * Variants\n */\nconst PortalResidential = loadable(() => import('pages/Portal/Residential'));\nconst PortalCommercial = loadable(() => import('pages/Portal/Commercial'));\n\nconst Portal = (props) => {\n const {\n match: { url },\n } = props;\n\n const {\n userProfile: { portalUserId, isCommercial },\n } = useContext(UserContext);\n const { isAffordableProperty } = useContext(AppContext);\n\n const { isLoading, status: memberStatus } = useAsyncHouseholdMemberStatus();\n\n const isCanceled = memberStatus === HOUSEHOLD_STATUS_CANCELED;\n const isDenied = memberStatus === HOUSEHOLD_STATUS_DENIED;\n const isCanceledOrDenied = isCanceled || isDenied;\n\n const { affordaPortaV1 } = useFlags();\n\n const showAffordaPortal = isAffordableProperty && affordaPortaV1;\n\n const isLoadingPage = !portalUserId || isLoading === true;\n return (\n \n \n {showAffordaPortal && }\n \n {!isCommercial && (\n \n )}\n {isCommercial && (\n \n )}\n \n \n \n \n );\n};\n\nPortal.propTypes = {\n match: PropTypes.shape({\n url: PropTypes.string.isRequired,\n }).isRequired,\n};\n\nexport default Portal;\n","import React, { useContext, useEffect } from 'react';\nimport { AppContext } from 'contexts/AppContext';\nimport { redirectToFusionAuthLogin } from 'services/fusionAuthService';\nimport LoadingScreen from 'components/Molecules/LoadingScreen';\n\nconst FusionAuthLogin = () => {\n const { organizationId, propertyId, marketingInfo } = useContext(AppContext);\n\n useEffect(() => {\n const heroImageURL = marketingInfo?.propertyLogoLink?.length\n ? marketingInfo.propertyLogoLink\n : marketingInfo?.propertyInfo?.propertyLogoLink;\n if (organizationId?.length && propertyId?.length && heroImageURL) {\n return redirectToFusionAuthLogin({\n organizationId,\n propertyId,\n heroImageURL,\n backgroundImageURL:\n marketingInfo?.propertyPhotoLink1 ||\n marketingInfo?.propertyPhotoLink2 ||\n marketingInfo?.propertyPhotoLink3,\n });\n }\n return () => {};\n }, [organizationId, propertyId, marketingInfo]);\n\n return ;\n};\n\nexport default FusionAuthLogin;\n","import React from 'react';\nimport loadable from '@loadable/component';\nimport styled from 'styled-components';\nimport image from 'images/12thwedgewood.jpg';\nconst H1 = loadable(() => import('components/Atoms/H1'));\nconst P = loadable(() => import('components/Atoms/P'));\n\nconst StyledH1 = styled(H1)`\n && {\n height: unset;\n text-align: inherit;\n }\n`;\n\nconst StyledDiv = styled.div`\n && {\n position: relative;\n top: 200px;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n flex-direction: column;\n margin-top: 2px;\n padding: 4px;\n background-color: rgba(0, 0, 0, 0.3);\n }\n`;\n\nconst StyledP = styled(P)`\n && {\n margin: 2px auto 0 auto;\n color: white;\n max-width: 280px;\n }\n`;\n\nconst Wrapper = styled.div`\n position: fixed;\n top: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n background-image: url(${image});\n background-position: center center;\n background-repeat: no-repeat;\n background-size: cover;\n`;\n\nfunction Maintenance() {\n return (\n \n \n Fortress Under Maintenance \n \n Fortress is undergoing routine maintenance, and will be back up\n shortly.\n \n \n \n );\n}\n\nexport default Maintenance;\n","import React, { useContext, ReactNode } from 'react';\nimport { UserContext } from 'contexts/UserContext';\nimport { AppContext } from 'contexts/AppContext';\nimport { useFetchLease } from 'contexts/LeaseContext.hooks';\n\nconst DEFAULT_VALUE = {};\n\nexport const LeaseContext = React.createContext(DEFAULT_VALUE);\n\nexport const LeaseContextProvider = ({ children }: { children: ReactNode }) => {\n const { organizationId, propertyId } = useContext(AppContext);\n const { leaseId } = useContext(UserContext);\n\n const { data: lease } = useFetchLease({\n organizationId,\n propertyId,\n leaseId,\n });\n\n const value = {\n ...DEFAULT_VALUE,\n lease,\n };\n return (\n {children}\n );\n};\n\nexport default { LeaseContextProvider, LeaseContext };\n","import axios from 'axios';\nimport { useQuery } from 'react-query';\nimport { getLease } from 'services/leaseService';\n\nexport function useFetchLease({ organizationId, propertyId, leaseId }) {\n const source = axios.CancelToken.source();\n const { token } = source;\n const options = { cancelToken: token };\n\n return useQuery(\n [leaseId],\n () => getLease(organizationId, propertyId, leaseId, options),\n {\n enabled: !!leaseId,\n staleTime: 60000,\n },\n );\n}\n","import { formatDateDB } from '@fortress-technology-solutions/fortress-component-library/utils';\nimport { useCallback, useEffect, useState } from 'react';\nimport ReactGA from 'react-ga4';\nimport { Controller, useForm } from 'react-hook-form';\nimport { useMutation } from 'react-query';\nimport { capitalizeFirstLetter, getOrgIdAndPropertyIdFromURL } from 'utils';\nimport { API_URL } from 'utils/constants';\n\nconst prepareBody = (formData) => {\n const body = { ...formData };\n\n Object.keys(body).forEach((name) => {\n const field = body[name];\n if (!field?.length && !field?.toString()) {\n delete body[name];\n }\n if (name === 'moveInDateFrom' && field?.toString()) {\n body.moveInDateFrom = formatDateDB(formData.moveInDateFrom);\n }\n });\n\n return body;\n};\nexport const useContactUs = () => {\n const { propertyId, organizationId } = getOrgIdAndPropertyIdFromURL();\n\n const [isSuccessful, setIsSuccessful] = useState(false);\n\n const {\n handleSubmit,\n control,\n getValues,\n getFieldState,\n reset,\n formState: { errors, isValid, isDirty, isSubmitSuccessful, isSubmitting },\n setError,\n clearErrors,\n watch,\n setValue,\n } = useForm({\n defaultValues: {\n firstName: '',\n lastName: '',\n phoneNumber: '',\n emailAddress: '',\n nBeds: '',\n nBaths: '',\n moveInDateFrom: '',\n },\n mode: 'onBlur',\n });\n\n const { mutateAsync } = useMutation(async (formData) => {\n const body = JSON.stringify(prepareBody(formData));\n const response = await fetch(\n `${API_URL}/${organizationId}/${propertyId}/contactUs`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body,\n },\n );\n\n if (!response.ok) {\n const json = await response.json();\n const { validation, message, statusCode } = json;\n\n if (validation?.keys?.length && statusCode === 400) {\n validation.keys.forEach((key) =>\n setError(key, {\n type: 'error',\n message: capitalizeFirstLetter(message.replace(`\"${key}\" `, '')),\n }),\n );\n }\n } else {\n setIsSuccessful(true);\n\n if (ReactGA.isInitialized) {\n ReactGA.event('form_submit', {\n category: 'Form',\n label: 'Contact Us',\n });\n }\n }\n });\n\n useEffect(() => {\n if (isSubmitSuccessful) {\n reset();\n }\n }, [reset, isSubmitSuccessful]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onSubmit = useCallback(handleSubmit(mutateAsync), [\n handleSubmit,\n mutateAsync,\n ]);\n\n const ReactHookFormProps = {\n Controller,\n control,\n getValues,\n setError,\n setValue,\n clearErrors,\n errors,\n getFieldState,\n isValid,\n isDirty,\n watch,\n };\n\n return {\n onSubmit,\n isSuccessful,\n isSubmitting,\n submitDisabled: isSubmitSuccessful || isSubmitting,\n ReactHookFormProps,\n };\n};\n","import React from 'react';\nimport { ContactUs } from '@fortress-technology-solutions/fortress-component-library/Organisms_Portal';\nimport { Box } from '@fortress-technology-solutions/fortress-component-library/Atoms';\nimport { useContactUs } from './index.hooks';\n\nconst ContactUsContainer = () => {\n const { onSubmit, isSuccessful, submitDisabled, ReactHookFormProps } =\n useContactUs();\n\n return (\n \n \n \n );\n};\n\nexport default ContactUsContainer;\n","import React, { useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Switch,\n Route,\n Redirect,\n useHistory,\n useLocation,\n} from 'react-router-dom';\nimport { useFlags } from 'launchdarkly-react-client-sdk';\nimport { getLocalAuth, destroyLocalAuth } from 'utils/auth';\n\n/**\n * Contexts & Context Providers\n */\nimport { AppContext } from 'contexts/AppContext';\nimport { UserContextProvider } from 'contexts/UserContext';\nimport { AvailableUnitContextProvider } from 'contexts/AvailableUnitContext';\nimport { PaymentContextProvider } from 'contexts/PaymentContext';\nimport { useModal } from '@fortress-technology-solutions/fortress-component-library/Molecules_Portal';\nimport HavingTroubleLoggingInModal from 'components/Molecules/HavingTroubleLoggingInModal';\nimport havingTroubleLoggingInModalMessages from 'components/Molecules/HavingTroubleLoggingInModal/messages';\n\n/**\n * Pages\n\n */\nimport Login from 'pages/Login';\nimport Register from 'pages/Register';\nimport ForgotPassword from 'pages/ForgotPassword';\nimport ResetPassword from 'pages/ResetPassword';\nimport VerifyEmailAddress from 'pages/VerifyEmailAddress';\nimport ClaimAccount from 'pages/ClaimAccount';\nimport Portal from 'pages/Portal';\nimport FusionAuthLogin from 'pages/Login/FusionAuthLogin';\nimport Maintenance from '../Maintenance';\nimport { ProspectPreferenceContextProvider } from 'contexts/ProspectPreferenceContext';\nimport { LeaseContextProvider } from 'contexts/LeaseContext';\nimport { IntentContextProvider } from 'contexts/IntentContext';\nimport { deleteLocalTellMeIntentData, deleteLocalUnitIntentData } from 'utils';\nimport ContactUs from 'pages/ContactUs';\n\nconst Gateway = ({ match }) => {\n const { organizationId, propertyId, authenticationPortal } =\n useContext(AppContext);\n const { authToken, authUser } = getLocalAuth();\n const modalProps = useModal(false);\n const { maintenanceMode, contactUsWidget } = useFlags();\n const history = useHistory();\n const isLogin = !history.location.pathname.endsWith('register');\n\n const isAuthenticated =\n authToken &&\n authUser?.id &&\n propertyId?.localeCompare(authUser.propertyId, 'en', {\n sensitivity: 'base',\n }) === 0 &&\n organizationId?.localeCompare(authUser.organizationId, 'en', {\n sensitivity: 'base',\n }) === 0;\n\n // Delete intent data when navigation away from page\n // May be unreliable on mobile [https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event#usage_notes]\n useEffect(() => {\n if (!isAuthenticated) {\n window.addEventListener(\n 'beforeunload',\n () => {\n deleteLocalUnitIntentData();\n deleteLocalTellMeIntentData();\n },\n { once: true },\n );\n }\n }, [history, isAuthenticated]);\n\n if (isAuthenticated) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n\n /**\n * Destroys any lingering artifacts of a previous Authenticated Session.\n * This typically happens:\n * - on a fresh visit\n * - when the authenticated token has expired\n * - when visiting a Resident Portal for a different property\n */\n destroyLocalAuth();\n return maintenanceMode ? (\n \n ) : (\n <>\n \n \n \n \n \n \n authenticationPortal ? (\n \n ) : (\n \n )\n }\n />\n \n authenticationPortal ? (\n \n ) : (\n \n )\n }\n />\n {contactUsWidget && (\n \n )}\n } />\n \n\n \n \n );\n};\n\nGateway.propTypes = {\n match: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired,\n};\n\nexport default Gateway;\n","import { get, post, throwIfError } from 'utils/api';\n\nexport const getAffordableApplicationAdditionalDetails = async ({\n organizationId,\n propertyId,\n portalUserId,\n householdId,\n applicationId,\n applicantId,\n options,\n} = {}) => {\n const paramValues = {\n applicationId,\n applicantId,\n householdId,\n portalUserId,\n };\n\n // remove undefined values\n Object.keys(paramValues).forEach(\n (key) => !Boolean(paramValues[key]?.length) && delete paramValues[key],\n );\n\n const params = new URLSearchParams(paramValues);\n\n const url = `/${organizationId}/${propertyId}/affordable-application-additional-details?${params}`;\n\n let response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n const parseJSON = (data) => {\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n console.error(e);\n }\n }\n\n return data;\n };\n\n response = response.map((details) => {\n details.assets = parseJSON(details.assets);\n details.incomes = parseJSON(details.incomes);\n details.household = parseJSON(details.household);\n\n return details;\n });\n\n return response;\n};\n\nexport const createOrUpdateAffordableApplicationAdditionalDetails = async ({\n organizationId,\n propertyId,\n payload,\n options,\n}) => {\n const url = `/${organizationId}/${propertyId}/affordable-application-additional-details`;\n const response = await post(url, payload, options);\n\n return throwIfError(response);\n};\n","import { get, post, put } from 'utils/api';\n\nexport const getQualificationChecklist = async (\n organizationId,\n propertyId,\n householdId,\n applicationId,\n applicantId,\n options = {},\n) => {\n let url = `/${organizationId}/${propertyId}/application/${applicationId}/applicant/${applicantId}/affordableQualificationChecklist`;\n // REACT_APP_HUD_ACTIVE\n if (process.env.REACT_APP_HUD_ACTIVE === 'true') {\n url = `/${organizationId}/${propertyId}/households/${householdId}/applicants/${applicantId}/affordable-qualification-checklist`;\n }\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const putQualificationChecklist = async (\n organizationId,\n propertyId,\n householdId,\n applicationId,\n applicantId,\n data,\n options = {},\n) => {\n let url = `/portal/${organizationId}/${propertyId}/application/${applicationId}/applicant/${applicantId}/affordableQualificationChecklist`;\n // REACT_APP_HUD_ACTIVE\n if (process.env.REACT_APP_HUD_ACTIVE === 'true') {\n url = `/portal/${organizationId}/${propertyId}/households/${householdId}/applicants/${applicantId}/affordable-qualification-checklist`;\n }\n const response = await put(url, data, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getPrequalifyOptions = async (\n organizationId,\n propertyId,\n options = {},\n) => {\n const url = `/${organizationId}/${propertyId}/set-aside-programs/prequalify-options`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const startRecert = async (\n organizationId,\n propertyId,\n householdId,\n propertyAffordableProgramId,\n options = {},\n) => {\n const url = `/${organizationId}/${propertyId}/households/${householdId}/start-recert`;\n const response = await put(url, { propertyAffordableProgramId }, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getPropertyInfo = async (\n organizationId,\n propertyId,\n options = {},\n) => {\n const url = `/${organizationId}/properties/${propertyId}/include-onboarding`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getAffordaDetails = async (\n organizationId,\n propertyId,\n userId,\n options = {},\n) => {\n const url = `/${organizationId}/${propertyId}/afforda-portal-details/portal-user/${userId}`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n // idk why this returns an empty string instead of null\n return response === '' ? null : response; // return null if response is empty\n};\n\nexport const createAffordaDetails = async (\n organizationId,\n propertyId,\n data = {},\n) => {\n const url = `/${organizationId}/${propertyId}/afforda-portal-details`;\n const response = await post(url, data);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const updateAffordaDetails = async (\n organizationId,\n propertyId,\n affordaDetailsId,\n data = {},\n) => {\n const url = `/${organizationId}/${propertyId}/afforda-portal-details/${affordaDetailsId}`;\n const response = await put(url, data);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n","import { gql } from '@apollo/client';\n\nconst allFields = `\n id\n customerId\n managedEntityId\n paymentSourceId\n paymentDay\n paymentAmountType\n amount\n type\n createdAt\n`;\n\nexport const CREATE_AUTOPAY_SCHEDULE = gql`\nmutation CreateAutopaySchedule($data: CreateAutopayScheduleData) {\n createAutopaySchedule(data: $data) {\n ${allFields}\n }\n}\n`;\n\nexport const FIND_ALL_AUTOPAY_SCHEDULES = gql`\nquery FindAllAutopaySchedules($where: JSONObject) {\n findAutopaySchedule(where: $where) {\n ${allFields}\n }\n}\n`;\n\nexport const DELETE_AUTOPAY_SCHEDULE = gql`\n mutation DeleteAutopaySchedule($id: String) {\n deleteAutopaySchedule(id: $id)\n }\n`;\n\nexport const UPDATE_AUTOPAY_SCHEDULE = gql`\nmutation UpdateAutopaySchedule($id: String, $data: UpdateAutopayScheduleData) {\n updateAutopaySchedule(id: $id, data: $data) {\n ${allFields}\n }\n}\n`;\n","import { useGqlMutation, useGqlQuery } from 'utils/gql';\nimport * as constants from './constants';\n\nconst AutopayScheduleService = {\n useCreate: (options) => {\n const gqlQuery = constants.CREATE_AUTOPAY_SCHEDULE;\n const result = useGqlMutation(gqlQuery, options);\n return result;\n },\n\n useFindAll: (where, options) => {\n const gqlQuery = constants.FIND_ALL_AUTOPAY_SCHEDULES;\n const result = useGqlQuery(gqlQuery, { where }, options);\n return result;\n },\n\n useUpdate: (options) => {\n const gqlQuery = constants.UPDATE_AUTOPAY_SCHEDULE;\n const result = useGqlMutation(gqlQuery, options);\n return result;\n },\n\n useDelete: (options) => {\n const gqlQuery = constants.DELETE_AUTOPAY_SCHEDULE;\n const result = useGqlMutation(gqlQuery, options);\n return result;\n },\n};\n\nexport default AutopayScheduleService;\n","import { get, post, put, throwIfError } from 'utils/api';\n\nexport const getOptions = async (url, options = {}) => {\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const fetchFormData = async ({ url, options = {} }) => get(url, options);\n\nexport const saveFormData = async (action, url, values, options) => {\n let response;\n if (action === 'post') {\n response = await post(url, values, options);\n } else {\n response = await put(url, values, options);\n }\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const saveShortFormData = async ({\n organizationId,\n propertyId,\n applicantId,\n payload,\n options,\n}) => {\n const url = `/${organizationId}/${propertyId}/shortForms/${applicantId}`;\n const response = await post(url, payload, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getPrimaryFormData = async ({\n organizationId,\n propertyId,\n applicantId,\n options,\n}) => {\n const url = `/${organizationId}/${propertyId}/primaryForms/${applicantId}`;\n\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const savePrimaryFormData = async ({\n organizationId,\n propertyId,\n applicantId,\n payload,\n options,\n}) => {\n const url = `/${organizationId}/${propertyId}/primaryForms/${applicantId}`;\n\n const response = await post(url, payload, options);\n\n return throwIfError(response);\n};\n\nexport const getSecondaryFormData = async ({\n organizationId,\n propertyId,\n applicantId,\n options,\n}) => {\n const url = `/${organizationId}/${propertyId}/secondaryForms/${applicantId}`;\n\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const saveSecondaryFormData = async ({\n organizationId,\n propertyId,\n applicantId,\n payload,\n options,\n}) => {\n const url = `/${organizationId}/${propertyId}/secondaryForms/${applicantId}`;\n\n const response = await post(url, payload, options);\n\n return throwIfError(response);\n};\n","import { del, get, post, put, throwIfError } from 'utils/api';\nimport { VEHICLES } from 'utils/constants/household';\nimport HOUSEHOLD_DESIGNATION_CODES from 'constants/householdDesignationCodes';\n\nexport const postHousehold = async (\n organizationId,\n propertyId,\n portalUserId,\n householdType,\n options,\n) => {\n const response = await post(\n `/portal/${organizationId}/${propertyId}/create-application/${portalUserId}`,\n { householdType },\n options,\n );\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const postHouseholdV2 = async (\n organizationId,\n propertyId,\n portalUserId,\n householdType,\n options,\n) => {\n const response = await post(\n `/portal/${organizationId}/${propertyId}/create-application/${portalUserId}`,\n { householdType },\n options,\n );\n\n return throwIfError(response);\n};\n\nexport const getHouseholdSummary = async (\n organizationId,\n propertyId,\n householdId,\n options,\n) => {\n const url = `/portal/${organizationId}/${propertyId}/households/${householdId}`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getHouseholdMembers = async (\n organizationId,\n propertyId,\n householdId,\n options,\n) => {\n const url = `/portal/${organizationId}/${propertyId}/all-household-members/${householdId}`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getHouseholdMembersEligibility = async (\n organizationId,\n propertyId,\n householdId,\n affordableProgramId,\n options,\n) => {\n // https://api-dev.fortress.engineering/{organizationId}/{propertyId}/household-profile/{householdId}/property-affordable-programs/{affordableProgramId}/qualifications\n\n const url = `/${organizationId}/${propertyId}/household-profile/${householdId}/property-affordable-programs/${affordableProgramId}/qualifications`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getResidentPets = async (\n organizationId,\n propertyId,\n householdId,\n options,\n) => {\n const response = await get(\n `/${organizationId}/${propertyId}/households/${householdId}/residents/pets`,\n options,\n );\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getHouseholdApplicationFees = async (\n organizationId,\n propertyId,\n householdId,\n options = {},\n) => {\n const response = await get(\n `/${organizationId}/${propertyId}/application-fees?householdId=${householdId}`,\n options,\n );\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getHouseholdBalance = async (\n organizationId,\n propertyId,\n householdId,\n options = {},\n) => {\n const response = await get(\n `/portal/${organizationId}/${propertyId}/households/${householdId}/balance`,\n options,\n );\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getHouseholdBalanceDetails = async (\n { organizationId, propertyId, householdId, filter, page, limit },\n options = {},\n) => {\n const response = await get(\n `/portal/${organizationId}/${propertyId}/households/${householdId}/balance/details?filter=${filter}&page=${\n page || 1\n }&limit=${limit || 10}`,\n options,\n );\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getHouseholdUnit = async (\n organizationId,\n propertyId,\n householdId,\n options = {},\n) => {\n const response = await get(\n `/portal/${organizationId}/${propertyId}/households/${householdId}/unit`,\n options,\n );\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const postHouseholdApplicationFees = async (\n organizationId,\n propertyId,\n householdId,\n) => {\n const response = await post(\n `/portal/${organizationId}/${propertyId}/households/${householdId}/postApplicationFees`,\n {},\n );\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getPropertyPetFees = async (\n organizationId,\n propertyId,\n options,\n) => {\n const response = await get(\n `/${organizationId}/properties/${propertyId}/petFees`,\n options,\n );\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getVehicleModels = async (makeId, options) =>\n get(`/vehicle-models?makeId=${makeId}`, options);\n\nexport const getHouseholdUserFriendlyId = async (householdId) =>\n get(`/households/${householdId}/user-friendly-id`);\n\n/**\n * Util that returns a POST, GET, PUT, or DELETE service function for Leaseholders, minors, pets, or vehicles.\n * @param {function} method Takes one of the imported http methods\n * @returns {function} CRUD service function\n *\n * The returned function takes the following parameters:\n * @param {string} organizationId\n * @param {string} propertyId\n * @param {string} householdId\n * @param {string} type string value that must be `leaseholders`, `minors`, `pets`, `vehicles`, `emergency-contacts`\n * @param {string} id ID if not doing a POST: `customerId`, `applicantMinorId`, `applicantPetId`, `vehicleId`, `emergencyContactId\n * @param {object | null} values values to be saved in the records of the new household member\n * @returns { response | error }\n */\nconst householdMemberAction =\n (method) =>\n async (organizationId, propertyId, householdId, type, id, values = null) => {\n if (\n values.householdDesignation ===\n HOUSEHOLD_DESIGNATION_CODES.LIVE_IN_CARETAKER\n ) {\n const url = `/${organizationId}/${propertyId}/applications/${values.applicationId}/applicants`;\n\n const payload = { ...values };\n delete payload.applicationId;\n delete payload.householdDesignation;\n delete payload.client;\n\n const response = await method(url, payload);\n if (response.error) {\n return response.error;\n }\n return response;\n }\n const updateId = id ? `/${id}` : '';\n // TODO: Remove ternary\n const portalPrepend = type !== VEHICLES ? '/portal' : '';\n const url = `${portalPrepend}/${organizationId}/${propertyId}/households/${householdId}/${type}${updateId}`;\n const response = values ? await method(url, values) : await method(url);\n\n if (response.error) {\n return response.error;\n }\n return response;\n };\n\n/**\n * Crud services generated by the `householdMemberAction` util\n */\nexport const addHouseholdMember = householdMemberAction(post);\nexport const getHouseholdMember = householdMemberAction(get);\nexport const updateHouseholdMember = householdMemberAction(put);\nexport const deleteHouseholdMember = householdMemberAction(del);\n\nexport const getHotmaStatus = async (\n { programName, state, effectiveDate },\n options = {},\n) => {\n const response = await get(\n `/stateAffordableProgramConfig/determineHotmaStatus?programName=${programName}&effectiveDate=${effectiveDate}&state=${state}`,\n options,\n );\n\n if (response.error) {\n return response.error;\n }\n return response;\n};\n\nexport const getApplicationInfo = async ({\n organizationId,\n propertyId,\n applicationId,\n options,\n}) => {\n //https://api-dev.fortress.engineering/e031e25a-2c69-4cb4-ad95-543ae0cbc9a9/496f0b45-98d2-4ab2-84aa-2e7e4faa42cf/applications/1598d22d-0370-4c8a-b6ad-a46325d5235e\n\n const url = `/${organizationId}/${propertyId}/applications/${applicationId}`;\n\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n return response;\n};\n\nexport const getAffordableConfigs = async (\n { organizationId, propertyId, date },\n options = {},\n) => {\n const response = await get(\n `/${organizationId}/${propertyId}/affordable-configs?date=${date}`,\n options,\n );\n if (response.error) {\n return response.error;\n }\n return response;\n};\n","import { get, post } from 'utils/api';\n\nexport const getLease = async (\n organizationId,\n propertyId,\n leaseId,\n options,\n) => {\n const url = `/${organizationId}/${propertyId}/leases/${leaseId}`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getSignaturesStatus = async (\n organizationId,\n propertyId,\n leaseId,\n options,\n) => {\n const url = `/${organizationId}/${propertyId}/leases/${leaseId}/signatures/status`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getLeasePdfUrl = async (\n leaseId,\n isRenewal,\n isTransfer,\n options,\n) => {\n let url = `/lease/${leaseId}/generate`;\n if (isRenewal === true) {\n url = `/lease/${leaseId}/generateRenewal`;\n }\n if (isTransfer === true) {\n url = `/lease/${leaseId}/generateTransfer`;\n }\n\n const response = await get(url, { responseType: 'blob', ...options });\n\n if (response.error) {\n return response.error;\n }\n\n const pdfUrl = URL.createObjectURL(\n new Blob([response], { type: 'application/pdf' }),\n );\n\n return pdfUrl;\n};\n\nexport const postLeaseSignature = async ({\n organizationId,\n propertyId,\n leaseId,\n customerId,\n portalUserId,\n signatureDataUrl,\n initialsDataUrl,\n}) => {\n const url = `/${organizationId}/${propertyId}/leases/${leaseId}/signatures`;\n const response = await post(url, {\n leaseId,\n customerId,\n portalUserId,\n signatureDataUrl,\n initialsDataUrl,\n });\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const getLeaseMonthlyTransactions = async (args) => {\n const { leaseId } = args;\n\n const lmtUrl = `/lease/${leaseId}/leaseMonthlyTransactionResident`;\n const data = await get(lmtUrl);\n\n return data;\n};\n","import { get, post, throwIfError } from 'utils/api';\n\nexport const submitScreeningApplication = async ({\n applicationId,\n floorPlanId,\n userId,\n testSubject,\n returnRentAmount,\n force,\n options,\n}) => {\n const url = '/screening/application';\n const payload = {\n applicationId,\n floorPlanId,\n userId,\n testSubject,\n returnRentAmount,\n force,\n };\n\n const response = await post(url, payload, options);\n\n return throwIfError(response);\n};\n\nexport const getScreeningStatus = async ({ applicationId, options }) => {\n const url = `/screening/status/${applicationId}`;\n const response = await get(url, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response?.results;\n};\n","import { post } from 'utils/api';\n\nexport const validateEmail = async (data, options) => {\n const url = `/validate-email`;\n const response = await post(url, data, options);\n\n if (response.error) {\n return response.error;\n }\n\n return response;\n};\n\nexport const validatePhoneNumber = async (data, options) => {\n const url = `/validate-phone`;\n const response = await post(url, data, options);\n return response;\n};\n","import { getAdultMembers } from 'pages/AffordaHousehold/utils';\n\nconst checkHouseholdMembersHaveSignedConsent = (householdMembers) => {\n return householdMembers.length\n ? getAdultMembers(householdMembers).every((adultHouseholdMember) => {\n return Boolean(\n adultHouseholdMember?.additionalDetails?.consentSignature?.length,\n );\n })\n : false;\n};\n\nexport default checkHouseholdMembersHaveSignedConsent;\n","/**\n * Messages for yup validation\n */\n\nconst messages = {\n formValidations: {\n invalidName: 'Please provide a valid name',\n invalidDate: 'Please provide a valid date: YYYY-MM-DD',\n invalidAdultBirthday: 'Please provide a valid adult birthday.',\n invalidTime: 'Please provide a valid time: 00:00 to 23:59',\n invalidSsn: 'Please provide a valid SSN or TIN: 123-45-6789',\n invalidPhone: 'Please provide a valid phone number: 234-567-8901',\n invalidEmail: 'Please provide a valid email address',\n invalidFeid: 'Please provide a valid FEID #: 12-3456789',\n invalidDuns: 'Please provide a valid DUNS #: 123456789',\n invalidZipCode: 'Please provide a valid Zip Code / Postal Code',\n invalidNumberOfBeds:\n 'Please provide a valid number of beds: Value must be between 0 and 9.',\n invalidNumberInteger: 'Please provide a valid integer number.',\n\n invalidStringLength: (min, max) => {\n if (min && max) {\n return `Must be between ${min} and ${max} characters.`;\n }\n return min\n ? `Must be ${min} or more characters.`\n : `Must be ${max} or less characters`;\n },\n dateShouldBeInThePast: 'Date should be in the past.',\n needChoice: 'Please choose one',\n needValue: 'Required',\n needExplain: 'Please explain',\n needEmailConfirm: 'Please confirm your email address',\n needEmailMatch: 'Email addresses do not match',\n needPasswordLength: 'Password must be at least 4 characters long',\n needPasswordLowercase: 'Password must contain at least 1 lowercase letter',\n needPasswordUppercase: 'Password must contain at least 1 uppercase letter',\n needPasswordNumber: 'Password must contain at least 1 number',\n needPasswordConfirm: 'Please confirm your password',\n needPasswordMatch: 'Passwords do not match',\n needCredentials:\n 'Please provide either: Driver License/State ID, Social Security Number or TIN, Passport, or Alien Registration',\n needIdOrigin: 'Required when providing Driver License/State ID',\n needPassportCountry: 'Required when providing Passport #',\n needAdultInfo:\n 'Please provide all required information for adult(s) or choose \"No\"',\n needMinorInfo:\n 'Please provide all required information for minor(s) or choose \"No\"',\n needPositiveValue: 'Please provide a value greater than 0',\n needZeroOrGreater: 'Please provide a value 0 or greater',\n needStartDate: 'Required when providing End Date',\n needEndDate: 'End Date must be after Start Date',\n needFromDate: 'From Date must be on or before To Date',\n needStartTime: 'Start time must be on or before end time',\n needValueOrIncome: 'Please provide either: Value or Monthly Income',\n needIssue:\n 'Please choose a description of the issue from below or provide your own',\n needLocation:\n 'Please choose a common area location from below or provide your own',\n needUniqueAccountNumber:\n 'Account is already saved as a valid payment method. Please enter a new account number',\n requiredMessage: 'This field is required',\n needAcceptTos: 'Must Accept Terms and Conditions',\n needAccountNumberMatch:\n 'The values in Account Number and Re-enter Account Number do not match. Please verify.',\n invalidRoutingNumberFormat: 'Only numeric values 0-9 allowed',\n invalidRoutingNumber: 'Invalid Routing Number',\n ca: {\n invalidInstitutionNumber: 'Institution number must have 3 numbers',\n invalidTransitNumber: 'Transit number must have 5 numbers',\n invalidAccountNumber: 'Account number must have from 5 to 12 numbers',\n },\n },\n};\n\nexport default messages;\n","import { useState } from 'react';\nimport dot from 'dot-object';\nimport pathOr from 'ramda.pathor';\n\nimport { sortByProp } from 'utils';\n\nimport {\n APPLICATION_CONVENTIONAL,\n APPLICATION_PRIMARY_AFFORDABLE,\n APPLICATION_SECONDARY_AFFORDABLE,\n APPLICATION_PRIMARY_RECERT,\n APPLICATION_SECONDARY_RECERT,\n APPLICATION_CONVENTIONAL_WA,\n APPLICATION_PRIMARY_AFFORDABLE_WA,\n APPLICATION_SECONDARY_AFFORDABLE_WA,\n APPLICATION_PRIMARY_AFFORDABLE_WITH_GLOBAL_DISABILITY,\n APPLICATION_SECONDARY_AFFORDABLE_WITH_GLOBAL_DISABILITY,\n} from 'utils/constants';\nimport { HOUSEHOLD_TYPE_AFFORDABLE } from 'utils/constants/household';\nimport {\n ALT_ANNUAL_INCOME_NAME,\n ALT_CASH_VALUE_NAME,\n ALT_FEES_TO_CONVERT_CASH_NAME,\n ALT_INTEREST_RATE_NAME,\n ALT_MARKET_VALUE_NAME,\n} from 'components/Organisms/FormIncomeAndAssets/common';\n\nimport {\n calculateIncome,\n payFrequencyOptionsMap,\n ALT_INCOME_FORM_FIELD_NAMES,\n} from 'components/Organisms/FormIncomeAndAssets/configIncome';\n\nimport { ALT_ASSET_FORM_FIELD_NAMES } from 'components/Organisms/FormIncomeAndAssets/configAssets';\n\n/**\n * Parses options returned from the backend into a format of:\n *\n * `[{ label: , value: }, ...]`\n *\n * Can take a parserOptions object with the following properties:\n *\n * sorted {boolean}: sets sorting to true/false\n * labelKey {string}: changes the property being used to set the `label` value\n * valueKey {string}: changes the property being used to set the `value` value\n * additionalKeys {Array}: adds new key/value pairs returned array items\n *\n * @param {Array} responseValues Array of items from the backend\n * @param {Object} parserOptions Optional object to change parser behavior\n */\nexport const parseOptions = (responseValues, parserOptions = {}) => {\n const defaultParserOptions = {\n sorted: true,\n labelKey: 'name',\n valueKey: 'id',\n additionalKeys: [],\n };\n const { sorted, labelKey, valueKey, additionalKeys } = {\n ...defaultParserOptions,\n ...parserOptions,\n };\n let opts = !Array.isArray(responseValues)\n ? []\n : responseValues.reduce((prev, opt) => {\n const newItem = {\n label:\n labelKey instanceof Array\n ? pathOr('', labelKey, opt)\n : opt[labelKey],\n value:\n valueKey instanceof Array\n ? pathOr('', valueKey, opt)\n : opt[valueKey],\n };\n if (additionalKeys) {\n additionalKeys.forEach((key) => {\n newItem[key] = opt[key];\n });\n }\n\n return [...prev, newItem];\n }, []);\n if (sorted) {\n opts = sortByProp(opts, 'label');\n }\n\n return opts;\n};\n\nexport const lowercaseFirstLetter = (string) => {\n return `${string.charAt(0).toLowerCase()}${string.substr(1, string.length)}`;\n};\n\nconst getFormColumnName = (formColumnNames, fieldName) => {\n return formColumnNames?.find(\n (formColumnName) => fieldName === formColumnName,\n );\n};\n\nconst calculateOtherFields = (values) => {\n if (!values?.assetChecklist) {\n return values;\n }\n const updatedValues = { ...values };\n // Set fees to convert cash to 0.00 and set cash value to market value...\n Object.entries(values.assetChecklist).forEach(([propertyName, value]) => {\n // Iterate over lists\n if (propertyName.endsWith('List')) {\n const updatedList = value.map((fieldColumn) => ({\n ...fieldColumn,\n feesToConvertCash: '0.00',\n cashValue: fieldColumn.marketValue,\n annualIncome: (\n (parseFloat(fieldColumn.marketValue) *\n parseFloat(fieldColumn.interestRate ?? 0)) /\n 100\n ).toFixed(2),\n }));\n updatedValues.assetChecklist[propertyName] = updatedList;\n } else {\n const columnName = getFormColumnName(\n ALT_ASSET_FORM_FIELD_NAMES,\n propertyName,\n );\n if (columnName && updatedValues.assetChecklist[columnName] === 'yes') {\n const marketValue =\n values.assetChecklist[`${columnName}Asset${ALT_MARKET_VALUE_NAME}`];\n const interestRate =\n values.assetChecklist[`${columnName}Asset${ALT_INTEREST_RATE_NAME}`];\n const annualIncome =\n marketValue && interestRate\n ? (\n (parseFloat(marketValue) * parseFloat(interestRate)) /\n 100\n ).toFixed(2)\n : '0.00';\n\n if (marketValue) {\n updatedValues.assetChecklist[\n `${columnName}Asset${ALT_FEES_TO_CONVERT_CASH_NAME}`\n ] = '0.00';\n updatedValues.assetChecklist[\n `${columnName}Asset${ALT_CASH_VALUE_NAME}`\n ] = marketValue;\n updatedValues.assetChecklist[\n `${columnName}Asset${ALT_ANNUAL_INCOME_NAME}`\n ] = annualIncome;\n }\n }\n }\n });\n return updatedValues;\n};\n\nexport const calculateDisabledFields = (values) => {\n if (!values?.incomeChecklist) {\n return values;\n }\n\n const updatedValues = { ...values };\n Object.entries(values.incomeChecklist).forEach(([propertyName, value]) => {\n // Iterate over lists\n if (propertyName.endsWith('List')) {\n const updatedList = value.map((fieldColumn) => {\n const payRate = fieldColumn.PayRate;\n const payFrequency = fieldColumn.PayFrequency;\n const payFreqIsWeeklyMonthlyAnnually = [\n 'weekly',\n 'monthly',\n 'annually',\n ].includes(payFrequency);\n const hoursWeeksMonths = payFreqIsWeeklyMonthlyAnnually\n ? fieldColumn?.HoursWeeksMonths ??\n payFrequencyOptionsMap?.[payFrequency]?.value\n : fieldColumn?.HoursWeeksMonths;\n const payFreqInWeeks = payFreqIsWeeklyMonthlyAnnually\n ? 1\n : payFrequencyOptionsMap?.[payFrequency]?.value ??\n payFrequencyOptionsMap.default.value;\n return {\n ...fieldColumn,\n Income: calculateIncome(\n Number(payFreqInWeeks ?? 0),\n Number(payRate ?? 0),\n Number(hoursWeeksMonths ?? 0),\n ).toFixed(2),\n HoursWeeksMonths: hoursWeeksMonths?.toString?.(),\n };\n });\n updatedValues.incomeChecklist[propertyName] = updatedList;\n } else {\n const columnName = getFormColumnName(\n ALT_INCOME_FORM_FIELD_NAMES,\n propertyName,\n );\n if (columnName && updatedValues.incomeChecklist[columnName] === 'yes') {\n const payRate = values.incomeChecklist[`${columnName}PayRate`];\n const payFrequency =\n values.incomeChecklist[`${columnName}PayFrequency`];\n\n const payFreqIsWeeklyMonthlyAnnually = [\n 'weekly',\n 'monthly',\n 'annually',\n ].includes(payFrequency);\n const hoursWeeksMonths = payFreqIsWeeklyMonthlyAnnually\n ? values.incomeChecklist?.[`${columnName}HoursWeeksMonths`] ??\n payFrequencyOptionsMap?.[payFrequency]?.value\n : values.incomeChecklist?.[`${columnName}HoursWeeksMonths`];\n const payFreqInWeeks = payFreqIsWeeklyMonthlyAnnually\n ? 1\n : payFrequencyOptionsMap?.[payFrequency]?.value ??\n payFrequencyOptionsMap.default.value;\n const income = calculateIncome(\n Number(payFreqInWeeks),\n Number(payRate),\n Number(hoursWeeksMonths),\n );\n updatedValues.incomeChecklist[`${columnName}Income`] =\n income.toFixed(2);\n\n if (hoursWeeksMonths) {\n updatedValues.incomeChecklist[`${columnName}HoursWeeksMonths`] =\n hoursWeeksMonths.toString();\n }\n }\n }\n });\n return updatedValues;\n};\n\nexport const calculateDisabilityFields = (hasDisability, values = {}) => {\n if (hasDisability === 'yes') {\n return {\n ...values,\n hasDisability,\n };\n }\n\n if (hasDisability === 'no') {\n return {\n hasDisability,\n disabilityHearing: 'no',\n disabilityMobile: 'no',\n disabilityOther: 'no',\n disabilityVisual: 'no',\n };\n }\n\n return {\n hasDisability,\n disabilityHearing: null,\n disabilityMobile: null,\n disabilityOther: null,\n disabilityVisual: null,\n };\n};\n\nexport const getFormData = (form, isAltForm, isFormTypeIncome) => {\n const values = {};\n const data = new FormData(form);\n for (const [name, value] of data.entries()) {\n if (value) {\n values[name] = value;\n }\n }\n let formattedObj = dot.object(values);\n if (isAltForm && !isFormTypeIncome) {\n formattedObj = calculateOtherFields(formattedObj);\n }\n\n if (isAltForm && isFormTypeIncome) {\n formattedObj = calculateDisabledFields(formattedObj);\n }\n\n return formattedObj;\n};\n\nexport const handleValidation = async (values, schema, options) => {\n try {\n return await schema.validate(values, {\n abortEarly: false,\n ...options,\n });\n } catch (error) {\n const { inner } = error;\n const errors = {};\n inner.forEach(({ name, path, type, message }) => {\n if (name === 'ValidationError') {\n if (!errors[path]) {\n errors[path] = message;\n }\n if (type === 'required') {\n errors[path] = message;\n }\n }\n });\n throw errors;\n }\n};\n\n/**\n * A \"Simple Form\" is a one-page `` that has a very predictable flow.\n * Field values are validated against a `schema`, a single submit `