Skip to content

Commit

Permalink
set up MergeYears comparisons codeforboston#264
Browse files Browse the repository at this point in the history
  • Loading branch information
djmVHB committed Mar 3, 2021
1 parent 87031d0 commit 8a9ac23
Showing 1 changed file with 22 additions and 10 deletions.
32 changes: 22 additions & 10 deletions src/library/user-state-manager.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,25 +89,36 @@ const useYear62State = createPersistedState("Year62", global.sessionStorage);
* and the birth year to specified retirement date of the user,
* whichever is more complete.
* If no retire date is specified, set it to their 70th birthday
*
* TODO : allow specified retire date to update length of array
* e.g. let cleanRetireDate = retireDate === null? dayjs(birthDate).add(70,'year').toDate(): retireDate;
*/
function mergeYears(
earnings: EarningsRecord,
birthDate: Date | null,
retireDate: Date | null
retireDate: Date | null,
expectedLastEarningYear: number | null
): EarningsRecord {
console.log(`expectedLastEarningYear:${expectedLastEarningYear}, birthdate: ${birthDate}, retireDate: ${retireDate}`)
if (birthDate === null) return earnings;
let cleanRetireDate = (retireDate === null) ? dayjs(birthDate).add(70,'year').toDate(): retireDate;
const birthYear = dayjs(birthDate).get('year');
const maxRetireDate = dayjs(birthDate).add(71,'year').toDate()
const retireYearFromReport = dayjs(retireDate!).get('year') || null;

let cleanRetireDate: Date;
if ((expectedLastEarningYear && retireDate) === null) {
cleanRetireDate = dayjs(birthDate).add(71,'year').toDate();
} else if ((expectedLastEarningYear === null) && (retireYearFromReport! - birthYear) < 71){
cleanRetireDate = retireDate!
} else if ((retireDate === null) && ((expectedLastEarningYear! - birthYear) < 71)){
cleanRetireDate = dayjs().year(expectedLastEarningYear!).toDate()
} else {
cleanRetireDate = dayjs(birthDate).add(71,'year').toDate();
}

const earningsRecord = earnings || {};

const birthYear = birthDate.getFullYear();
const startEmploymentYear =
(earnings && Object.keys(earnings) && Number(Object.keys(earnings)[0])) ||
birthYear + 18;
const retireYear = cleanRetireDate.getFullYear();
const retireYear = dayjs(cleanRetireDate).get('year');
const endYear = retireYear;

var tempRecord = {} as EarningsRecord;
Expand Down Expand Up @@ -257,8 +268,8 @@ export default function UserStateManager(
/* setEarnings & mergeYears is unlikely to fire retroactively on changes
of birthdate or retire date ideally we'd have a single function for all
three alterations (or wrappers around each of them) if we go this way in the end*/
setEarnings: (earnings) => setEarnings(mergeYears(earnings, birthDate, retireDate)),
/* note the entries in the dependency array for birthDate and retireDate */
setEarnings: (earnings) => setEarnings(mergeYears(earnings, birthDate, retireDate, expectedLastEarningYear)),
/* note the entries in the dependency array for birthDate, retireDate, and expectedLastEarningYear */
setEarningsFormat,
setHaveSSAAccount,
setIsEmploymentCovered,
Expand Down Expand Up @@ -291,7 +302,8 @@ export default function UserStateManager(
setAwiTrendSelection,
setExpectedPercentageWageIncrease,
birthDate,
retireDate
retireDate,
expectedLastEarningYear
]
);

Expand Down

0 comments on commit 8a9ac23

Please sign in to comment.