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(); }