Files
benchcoach/src/routes/team.js

48 lines
1.8 KiB
JavaScript

const express = require("express");
const teamsController = require("../controllers/team");
const {loadRecentAndUpcomingEvents} = require("../middlewares/bulkload")
const { load } = require("dotenv");
const router = express.Router();
const tsUtils = require('../lib/utils')
const {teamsnapCallback} = require('../lib/utils')
// Middleware
const loadTeam = async (req,res,next) => {
const {team_id} = req.params;
req.team = await teamsnap.loadTeam(
team_id,
(err, result) => {teamsnapCallback(err, result, {req, source: 'loadTeam', method: 'loadTeam'})}
)
const bulkLoadTypes = ['teamMediaGroup', 'teamPreferences', 'member'];
const items = tsUtils.groupTeamsnapItems(teamsnap.getAllItems(), bulkLoadTypes)
if (req.session.current_team_id == null || req.session.current_team_id != team_id || bulkLoadTypes.filter(t=> !items[t] || items[t].length==0).length > 0){
req.promises.push(teamsnap.bulkLoad(
team_id,
bulkLoadTypes,
(err,items) => {teamsnapCallback(err, items, {req, source: 'loadTeam', method: 'bulkLoad'})}
)
.then(bulkLoadItems=>{
const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes)
req.members = items.members;
req.team_media_group = items.teamMediaGroups?.pop();
req.team_preferences = items.teamsPreferences.pop();
req.session.current_team_id = req.team.id;
}
)
)
}
else {
req.members = items.member;
req.team_media_group = items.teamMediaGroup.pop();
req.team_preferences = items.teamPreferences.pop();
}
next();
}
router.use("/:team_id([0-9]+)", loadTeam)
// Routes
router.get('/user/:user_id/teams', teamsController.getTeams)
router.get("/:team_id([0-9]+)/home", loadRecentAndUpcomingEvents, teamsController.getTeamHome);
module.exports = {router, loadTeam}