diff --git a/models/Metric.js b/models/Metric.js index 520e4bc..9b69a80 100644 --- a/models/Metric.js +++ b/models/Metric.js @@ -7,45 +7,49 @@ const Metric = { type: Relationship, ref: 'Year', }, - hackers: { type: Integer }, - projects: { type: Integer }, + hackers: { type: Integer }, + projects: { type: Integer }, majors: { type: Relationship, ref: 'Major', many: true, }, - gender_F: { type: Integer }, - gender_M: { type: Integer }, - gender_NB: { type: Integer }, - gender_N: { type: Integer }, - race_WC: { type: Integer }, - race_API: { type: Integer }, - race_H: { type: Integer }, - race_BAA: { type: Integer }, - race_AIAN: { type: Integer }, - race_N: { type: Integer }, - levelOfStudy_HS: { type: Integer }, - levelOfStudy_TS: { type: Integer }, - levelOfStudy_UU: { type: Integer }, - levelOfStudy_GU: { type: Integer }, - levelOfStudy_N: { type: Integer }, - diet_VT: { type: Integer }, - diet_VE: { type: Integer }, - diet_L: { type: Integer }, - diet_G: { type: Integer }, - diet_NA: { type: Integer }, - diet_H: { type: Integer }, - diet_K: { type: Integer }, - diet_O: { type: Integer }, - diet_N: { type: Integer }, - shirt_XS: { type: Integer }, - shirt_S: { type: Integer }, - shirt_M: { type: Integer }, - shirt_L: { type: Integer }, - shirt_XL: { type: Integer }, - shirt_XXL: { type: Integer }, - firstTimeHackers: { type: Integer }, - uniqueHackers: { type: Text }, + gender_F: { type: Integer }, + gender_M: { type: Integer }, + gender_NB: { type: Integer }, + gender_N: { type: Integer }, + race_WC: { type: Integer }, + race_API: { type: Integer }, + race_H: { type: Integer }, + race_BAA: { type: Integer }, + race_AIAN: { type: Integer }, + race_N: { type: Integer }, + levelOfStudy_HS: { type: Integer }, + levelOfStudy_TS: { type: Integer }, + levelOfStudy_UU: { type: Integer }, + levelOfStudy_GU: { type: Integer }, + levelOfStudy_N: { type: Integer }, + diet_VT: { type: Integer }, + diet_VE: { type: Integer }, + diet_L: { type: Integer }, + diet_G: { type: Integer }, + diet_NA: { type: Integer }, + diet_H: { type: Integer }, + diet_K: { type: Integer }, + diet_O: { type: Integer }, + diet_N: { type: Integer }, + shirt_XS: { type: Integer }, + shirt_S: { type: Integer }, + shirt_M: { type: Integer }, + shirt_L: { type: Integer }, + shirt_XL: { type: Integer }, + shirt_XXL: { type: Integer }, + graduationYear_Freshman: { type: Integer }, + graduationYear_Sophomore: { type: Integer }, + graduationYear_Junior: { type: Integer }, + graduationYear_Senior: { type: Integer }, + firstTimeHackers: { type: Integer }, + uniqueHackers: { type: Text }, }, }; diff --git a/resolvers/uploadYear.js b/resolvers/uploadYear.js index b73541c..ff74afb 100644 --- a/resolvers/uploadYear.js +++ b/resolvers/uploadYear.js @@ -68,6 +68,7 @@ const uploadYear = async (_, { year, projects, data }) => { helpers.populateIndependents(metrics.levelOfStudy, hacker.levelOfStudy); helpers.populateIndependents(metrics.diet, hacker.diet); helpers.populateIndependents(metrics.shirt, hacker.shirt); + helpers.populateGraduationYear(metrics, hacker, year); }); // eslint-disable-next-line no-console diff --git a/resolvers/utils/helpers.js b/resolvers/utils/helpers.js index 4e0ee17..f20f905 100644 --- a/resolvers/utils/helpers.js +++ b/resolvers/utils/helpers.js @@ -106,4 +106,29 @@ function populateMajors(metrics, hacker) { } } -module.exports = { populateIndependents, populateFirstTimeHackers, populateMajors }; +/** + * Called for each individual hacker to update graduation year values + * + * @param {object} metrics + * @param {object} hacker + * @param {object} year + */ +function populateGraduationYear(metrics, hacker, year) { + //Check to see if there is a graduation year + //Also check to see if hacker is an undergraduate or in techschool + if (hacker.graduation && + hacker.levelOfStudy === "Undergraduate University" || + hacker.levelOfStudy === "Tech School") { + if (+year + +3 === +hacker.graduation) { + metrics.graduationYear.freshman++; + } else if (+year + +2 === +hacker.graduation) { + metrics.graduationYear.sophomore++; + } else if (+year + +1 === +hacker.graduation) { + metrics.graduationYear.junior++; + } else if (+year === +hacker.graduation) { + metrics.graduationYear.senior++; + } + } +} + +module.exports = { populateIndependents, populateFirstTimeHackers, populateMajors, populateGraduationYear }; diff --git a/resolvers/utils/metricsTemplate.js b/resolvers/utils/metricsTemplate.js index 2d11347..ce8b366 100644 --- a/resolvers/utils/metricsTemplate.js +++ b/resolvers/utils/metricsTemplate.js @@ -62,6 +62,12 @@ const metricsTemplate = { 'trades': [], 'other': [], }, + graduationYear: { + 'freshman': 0, + 'sophomore': 0, + 'junior': 0, + 'senior': 0, + }, }; module.exports = metricsTemplate;