fix(cron): actually process cron for assigned tasks

This commit is contained in:
Sabe Jones
2021-03-03 17:05:42 -06:00
committed by SabreCat
parent 6cddb3bf82
commit f4feb09fbc

View File

@@ -82,7 +82,7 @@ async function cronAsync (req, res) {
{ {
$or: [ $or: [
{ userId: user._id }, { userId: user._id },
{ userId: { $exists: false }, 'group.id': { $in: teamsLed } }, { userId: { $exists: false }, 'group.id': { $in: teamsLed }, 'group.assignedUsers': { $size: 0 } },
], ],
}, },
{ {
@@ -141,20 +141,36 @@ async function cronAsync (req, res) {
// Save user and tasks // Save user and tasks
const toSave = [user.save()]; const toSave = [user.save()];
tasks.forEach(async task => { const groupTasks = [];
const groupTasksByType = {
habits: [], dailys: [], todos: [], rewards: [],
};
for (const task of tasks) {
if (task.isModified()) toSave.push(task.save()); if (task.isModified()) toSave.push(task.save());
if (task.isModified() && task.group && task.group.taskId) { if (task.isModified() && task.group && task.group.taskId) {
const groupTask = await Tasks.Task.findOne({ const groupTask = await Tasks.Task.findOne({ // eslint-disable-line no-await-in-loop
_id: task.group.taskId, _id: task.group.taskId,
}).exec(); }).exec();
if (groupTask) { if (groupTask) {
let delta = (0.9747 ** task.value) * -1; groupTasks.push(groupTask);
if (groupTask.group.assignedUsers) delta /= groupTask.group.assignedUsers.length; groupTasksByType[`${groupTask.type}s`].push(groupTask);
await groupTask.scoreChallengeTask(delta, 'down');
} }
} }
}); }
if (groupTasks.length > 0) {
await cron({
user,
tasksByType: groupTasksByType,
now,
daysMissed,
analytics,
timezoneUtcOffsetFromUserPrefs,
headers: req.headers,
});
groupTasks.forEach(async cronnedGroupTask => {
if (cronnedGroupTask.isModified()) toSave.push(cronnedGroupTask.save());
});
}
await Promise.all(toSave); await Promise.all(toSave);
await Group.processQuestProgress(user, progress); await Group.processQuestProgress(user, progress);