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('/sports', async function(req, res, next) { try { const data = await sports.retrieveAll(); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }); router.get('/sport', async function(req, res, next) { try { const sportID = req.query.sport; const data = await sports.getFromID(sportID); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }); router.get('/seasons', async function(req, res, next) { try { const data = await seasons.retrieveAll(); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) router.get('/genders', async function(req, res, next) { try { const sportID = req.query.sport; const data = await genders.retrieveBySport(sportID); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) router.get('/divisions', async function(req, res, next) { try{ let gender; if(req.query.gender) gender = (req.query.gender == 'female' ? genders.FEMALE : genders.MALE); const sportID = req.query.sport; const data = await divisions.retrieve(sportID, gender); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) router.get('/division', async function(req, res, next) { try { const divisionID = req.query.division; const data = await divisions.getFromID(divisionID); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) router.get('/teams', async function(req, res, next) { try { const sportID = req.query.sport; const data = await teams.retrieve(sportID); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) router.get('/team', async function(req, res, next) { try { const teamID = req.query.team; const data = await teams.getFromID(teamID); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) router.get('/games', async function(req, res, next) { try { const userID = req.user ? req.user[0] : null; if(req.query.user) { const data = await games.retrieveByUser(userID); res.json(data); } else { const seasonID = req.query.season; const divisionID = req.query.division; const teamID = req.query.team; const data = await games.retrieve(teamID, divisionID, seasonID); res.json(data); } } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) router.get('/game', async function(req, res, next) { try { const gameID = req.query.game; const ofUser = req.query.ofuser; const currentUserID = req.user ? req.user[0] : null; let data; if(gameID) data = await games.getFromID(gameID); else if(ofUser) data = await games.getLatest(currentUserID); else data = await games.getLatest(); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) router.get('/accounts', checkLoginStatus.admin, async function(req, res, next) { try { const data = await accounts.retrieveAll(); res.json(data); } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) router.get('/account', checkLoginStatus.user, async function(req, res, next) { try{ const userIsAdmin = req.user[2]; const loggedInAccountID = req.user[0]; const requestedAccountID = req.query.account; if(!userIsAdmin && loggedInAccountID != requestedAccountID) { res.status(403).send("ACCESS DENIED"); } else { const data = await accounts.getFromID(req.query.account); res.json(data); } } catch(err) { console.error("ERROR: " + err.message); res.status(500).send("An error has occurred"); } }) module.exports = router;