Files
benchcoach/src/middlewares/bulkload.js

51 lines
1.7 KiB
JavaScript

exports.loadRecentAndUpcomingEvents = async (req, res, next) => {
const {team_id, event_id} = req.params
const page_size = req.query.page_size ? Number(req.query.page_size) : 4
var subject_date
if (event_id) {
const event = await teamsnap.loadEvents({id: event_id}).pop()
const new_date = new Date(event.startDate.getTime()+10000);
subject_date = event.startDate
}
else {
subject_date = new Date()
}
req.promises.push(
teamsnap.bulkLoad({
teamId: team_id,
types: ["event", "availabilitySummary"],
scopeTo: "event",
event__startedAfter: new Date(subject_date.getTime()+10000),
event__pageSize: page_size
})
.then(items => tsUtils.groupTeamsnapItems(items))
.then((items)=>{
req.upcoming_events=items.events ? items.events : [];
const availabilitySummaries=items.availabilitySummaries;
req.upcoming_events.forEach((event) => {
event.link('availabilitySummary', availabilitySummaries.find(a=>a.eventId==event.id))
})
}
).fail(utils.teamsnapFailure)
)
req.promises.push(
teamsnap.bulkLoad({
teamId: team_id,
types: ["event", "availabilitySummary"],
scopeTo: "event",
event__startedBefore: new Date(subject_date.getTime()-10000),
event__pageSize: page_size,
event__sortStartDate: "desc"
})
.then(items => tsUtils.groupTeamsnapItems(items))
.then((items)=>{
req.recent_events=items.events || [];
const availabilitySummaries=items.availabilitySummaries;
req.recent_events.forEach((event) => {
event.link('availabilitySummary', availabilitySummaries.find(a=>a.eventId==event.id))
})
}
).fail(utils.teamsnapFailure)
)
next();
}