| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 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
- };
|