WIP(multiassign): resume shared completion implementation

This commit is contained in:
SabreCat
2021-11-11 16:32:30 -06:00
parent 1f81e1971b
commit fa99458ca4
7 changed files with 80 additions and 120 deletions

View File

@@ -1,30 +1,18 @@
import * as Tasks from '../models/task'; // eslint-disable-line import/no-cycle
const SHARED_COMPLETION = {
default: 'recurringCompletion',
single: 'singleCompletion',
every: 'allAssignedCompletion',
};
async function _deleteUnfinishedTasks (groupMemberTask) {
await Tasks.Task.deleteMany({
'group.taskId': groupMemberTask.group.taskId,
$and: [
{ userId: { $exists: true } },
{ userId: { $ne: groupMemberTask.userId } },
],
}).exec();
}
async function handleSharedCompletion (masterTask, groupMemberTask) {
if (masterTask.type === 'reward') return;
if (masterTask.type === 'todo') await _deleteUnfinishedTasks(groupMemberTask);
masterTask.completed = groupMemberTask.completed;
masterTask.group.completedBy = groupMemberTask.userId;
await masterTask.save();
async function handleSharedCompletion (teamTask) {
if (teamTask.type === 'reward') return;
const incompleteTask = await Tasks.Task.findOne({
'group.taskId': teamTask._id,
userId: { $exists: true },
completed: false,
}, { _id: 1 }).exec();
if (!incompleteTask) {
teamTask.completed = true;
teamTask.save();
}
}
export {
SHARED_COMPLETION,
handleSharedCompletion,
};