48 lines
1.8 KiB
JavaScript
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} |