const moment = require('moment'); const { makeUserCrud } = require('server/modules/users'); const { getAllSlackUsersWithNames, annoySlackUsers } = require('server/modules/slack'); const { getAllUsersOnHoliday } = require('server/modules/whosoff'); const { getUsersWithMissingTimesheets } = require('server/modules/synergist'); function getPreviousWeekPeriod(now) { const start = now.clone() .startOf('isoWeek') .subtract(1, 'weeks'); const end = now.clone() .startOf('isoWeek') .subtract(1, 'days') .endOf('day'); return { start, end }; } function annoyUsers(config, db, logger) { const crud = makeUserCrud(); return async (req, res) => { const now = moment(); const range = getPreviousWeekPeriod(now); const validUsers = await crud.getDocs(db); const validUserEmails = validUsers.map(({ email }) => email.toLowerCase()); const [slackUsers, usersOnHoliday] = await Promise.all([ getAllSlackUsersWithNames(config, logger), getAllUsersOnHoliday(config, logger, now) ]); const users = slackUsers.filter(({ email }) => validUserEmails.includes(email) && !usersOnHoliday.includes(email) ); const usersMissingTimesheet = await getUsersWithMissingTimesheets(config, logger, range, users); await annoySlackUsers(config, logger, now, usersMissingTimesheet); res.json({ ok: true }); }; } module.exports = { getPreviousWeekPeriod, annoyUsers };