diff --git a/common/utils.js b/common/utils.js index fb5f261..b39ec62 100644 --- a/common/utils.js +++ b/common/utils.js @@ -85,4 +85,26 @@ const keysToCamel = (data) => { return data; }; -module.exports = { keysToCamel, isInteger, calculateYear }; +const getSeasonFromMonthAndYear = (month, year) => { + if (month === 11) { + return `Winter ${year + 1}`; + } + if (month === 0 || month === 1) { + return `Winter ${year}`; + } + // spring + // march-may -> winter [year] + if (month >= 2 && month <= 4) { + return `Winter ${year}`; + } + // summer + // june-august -> summer [year] + if (month >= 5 && month <= 7) { + return `Summer ${year}`; + } + // fall + // september-november -> fall [year] + return `Fall ${year}`; +}; + +module.exports = { keysToCamel, isInteger, calculateYear, getSeasonFromMonthAndYear }; diff --git a/routes/publishedSchedule.js b/routes/publishedSchedule.js index 0008790..32f4908 100644 --- a/routes/publishedSchedule.js +++ b/routes/publishedSchedule.js @@ -1,6 +1,6 @@ const express = require('express'); const { db } = require('../server/db'); -const { keysToCamel, calculateYear } = require('../common/utils'); +const { keysToCamel, calculateYear, getSeasonFromMonthAndYear } = require('../common/utils'); const publishedScheduleRouter = express.Router(); @@ -96,30 +96,7 @@ publishedScheduleRouter.get('/all-seasons', async (req, res) => { const formattedDate = new Date(date.event_date); const year = formattedDate.getFullYear(); const month = formattedDate.getMonth(); - // const day = formattedDate.getDate(); - - // winter - // december (11) -> winter [year + 1] - // january (0) - february (1) -> winter [year] - if (month === 11) { - return `Winter ${year + 1}`; - } - if (month === 0 || month === 1) { - return `Winter ${year}`; - } - // spring - // march-may -> winter [year] - if (month >= 2 && month <= 4) { - return `Winter ${year}`; - } - // summer - // june-august -> summer [year] - if (month >= 5 && month <= 7) { - return `Summer ${year}`; - } - // fall - // september-november -> fall [year] - return `Fall ${year}`; + return getSeasonFromMonthAndYear(month, year); }; try { @@ -130,12 +107,20 @@ publishedScheduleRouter.get('/all-seasons', async (req, res) => { published_schedule AS PS, day AS D WHERE D.id = PS.day_id + ORDER BY + D.event_date DESC; `, ); - const allSeasonsResult = allDatesResult.map((row) => { - return getSeason(row); + const allUniqueSeasonsResult = []; + + // Get all unique seasons by order of season, from most recent to least + allDatesResult.forEach((row) => { + const season = getSeason(row); + if (!allUniqueSeasonsResult.includes(season)) { + allUniqueSeasonsResult.push(season); + } }); - const allUniqueSeasonsResult = [...new Set(allSeasonsResult)]; + res.status(200).json(keysToCamel(allUniqueSeasonsResult)); } catch (err) { res.status(500).send(err.message); diff --git a/server/schema/users.sql b/server/schema/users.sql index 785246f..72a5ae9 100644 --- a/server/schema/users.sql +++ b/server/schema/users.sql @@ -1,4 +1,4 @@ -CREATE TYPE account_type as ENUM ('superadmin', 'admin'); +CREATE TYPE account_type as ENUM ('admin', 'student'); DROP TABLE IF EXISTS users;