188 lines
5.8 KiB
JavaScript
188 lines
5.8 KiB
JavaScript
var express = require('express');
|
|
var router = express.Router();
|
|
|
|
var sports = require('../database/scores/sports');
|
|
var seasons = require('../database/scores/seasons');
|
|
var genders = require('../database/scores/genders');
|
|
var divisions = require('../database/scores/divisions');
|
|
var teams = require('../database/scores/teams');
|
|
var games = require('../database/scores/games');
|
|
var accounts = require('../database/accounts/accounts');
|
|
|
|
var checkLoginStatus = require('./checkLoginStatus');
|
|
|
|
router.get('/index/dropdown', async function(req, res, next) {
|
|
let latestGame;
|
|
let seasonsData;
|
|
let sportsData;
|
|
let gendersData;
|
|
let divisionsData;
|
|
let teamsData;
|
|
|
|
try {
|
|
latestGame = await games.getLatest();
|
|
|
|
let division = await divisions.getFromID(latestGame.divisionID);
|
|
latestGame.sportID = division.sportID;
|
|
latestGame.gender = division.gender;
|
|
} catch {
|
|
latestGame = null;
|
|
}
|
|
|
|
|
|
try {
|
|
if(latestGame) {
|
|
seasonsData = await seasons.retrieveAll();
|
|
sportsData = await sports.retrieveAll();
|
|
gendersData = await genders.retrieveBySport(latestGame.sportID);
|
|
divisionsData = await divisions.retrieve(latestGame.sportID);
|
|
teamsData = await teams.retrieve(latestGame.sportID);
|
|
} else {
|
|
seasonsData = await seasons.retrieveAll();
|
|
sportsData = await sports.retrieveAll();
|
|
gendersData = await genders.retrieveBySport(sportsData[0].id);
|
|
divisionsData = await divisions.retrieve(sportsData[0].id);
|
|
teamsData = await teams.retrieve(sportsData[0].id);
|
|
}
|
|
|
|
res.json({
|
|
seasons : seasonsData,
|
|
sports : sportsData,
|
|
genders : gendersData,
|
|
divisions : divisionsData,
|
|
teams: teamsData,
|
|
latestGame
|
|
});
|
|
} catch(err) {
|
|
console.error("ERROR: " + err.message);
|
|
res.status(500).send("An error has occurred");
|
|
}
|
|
});
|
|
|
|
router.get('/index/scores', async function (req, res, next) {
|
|
try {
|
|
const seasonID = req.query.season;
|
|
const divisionID = req.query.division;
|
|
const teamID = req.query.team;
|
|
const data = await games.retrieve(teamID, divisionID, seasonID);
|
|
for (const game of data) {
|
|
game.opponent = await teams.getFromID(game.team2ID);
|
|
}
|
|
res.json(data);
|
|
} catch(err) {
|
|
console.error("ERROR: " + err.message);
|
|
res.status(500).send("An error has occurred");
|
|
}
|
|
});
|
|
|
|
|
|
router.get('/submit', async function(req, res, next) {
|
|
let latestGame;
|
|
let seasonsData;
|
|
let sportsData;
|
|
let gendersData;
|
|
let divisionsData;
|
|
let teamsData;
|
|
|
|
const userID = req.user ? req.user[0] : null;
|
|
|
|
try {
|
|
latestGame = await games.getLatest(userID);
|
|
|
|
let division = await divisions.getFromID(latestGame.divisionID);
|
|
latestGame.sportID = division.sportID;
|
|
latestGame.gender = division.gender;
|
|
} catch {
|
|
latestGame = null;
|
|
}
|
|
|
|
|
|
try {
|
|
if(latestGame) {
|
|
seasonsData = await seasons.retrieveAll();
|
|
sportsData = await sports.retrieveAll();
|
|
gendersData = await genders.retrieveBySport(latestGame.sportID);
|
|
divisionsData = await divisions.retrieve(latestGame.sportID);
|
|
teamsData = await teams.retrieve(latestGame.sportID);
|
|
} else {
|
|
seasonsData = await seasons.retrieveAll();
|
|
sportsData = await sports.retrieveAll();
|
|
gendersData = await genders.retrieveBySport(sportsData[0].id);
|
|
divisionsData = await divisions.retrieve(sportsData[0].id);
|
|
teamsData = await teams.retrieve(sportsData[0].id);
|
|
}
|
|
|
|
res.json({
|
|
seasons : seasonsData,
|
|
sports : sportsData,
|
|
genders : gendersData,
|
|
divisions : divisionsData,
|
|
teams: teamsData,
|
|
latestGame
|
|
});
|
|
} catch(err) {
|
|
console.error("ERROR: " + err.message);
|
|
res.status(500).send("An error has occurred");
|
|
}
|
|
});
|
|
|
|
router.get('/manage/divisions', async function (req, res, next) {
|
|
const data = await divisions.retrieve();
|
|
|
|
for(const division of data) {
|
|
division.sport = await sports.getFromID(division.sportID);
|
|
}
|
|
|
|
res.json(data);
|
|
});
|
|
|
|
router.get('/manage/division', async function (req, res, next) {
|
|
try {
|
|
const divisionID = req.query.division;
|
|
const data = await divisions.getFromID(divisionID);
|
|
data.sport = await sports.getFromID(data.sportID);
|
|
res.json(data);
|
|
} catch(err) {
|
|
console.error("ERROR: " + err.message);
|
|
res.status(500).send("An error has occurred");
|
|
}
|
|
});
|
|
|
|
router.get('/manage/teams', async function (req, res, next) {
|
|
const data = await teams.retrieve();
|
|
|
|
for(const team of data) {
|
|
team.sport = await sports.getFromID(team.sportID);
|
|
}
|
|
|
|
res.json(data);
|
|
});
|
|
|
|
router.get('/manage/games', checkLoginStatus.user, async function (req, res, next) {
|
|
try{
|
|
const userIsAdmin = req.user[2];
|
|
const loggedInAccountID = req.user[0];
|
|
|
|
if(!userIsAdmin) {
|
|
res.status(403).send("ACCESS DENIED");
|
|
} else {
|
|
const data = await games.retrieve();
|
|
|
|
for(const game of data) {
|
|
game.team1 = await teams.getFromID(game.team1ID);
|
|
game.team2 = await teams.getFromID(game.team2ID);
|
|
game.division = await divisions.getFromID(game.divisionID);
|
|
game.sport = await sports.getFromID(game.division.sportID);
|
|
game.submitter = game.submitterName || (await accounts.getFromID(game.submitterID));
|
|
}
|
|
|
|
res.json(data);
|
|
}
|
|
} catch(err) {
|
|
console.error("ERROR: " + err.message);
|
|
res.status(500).send("An error has occurred");
|
|
}
|
|
|
|
});
|
|
|
|
module.exports = router; |