From ae0528e5cd1a379b443df30f0ddd418394ccc963 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Wed, 14 Apr 2021 16:42:56 -0500 Subject: [PATCH] WIP(teams): fix initially unassigned task, add completedBy data --- website/client/src/components/tasks/taskModal.vue | 12 +++++++----- website/server/libs/groupTasks.js | 1 + website/server/libs/tasks/index.js | 4 ++++ website/server/models/task.js | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/website/client/src/components/tasks/taskModal.vue b/website/client/src/components/tasks/taskModal.vue index 81f96c8716..b03faeb0f2 100644 --- a/website/client/src/components/tasks/taskModal.vue +++ b/website/client/src/components/tasks/taskModal.vue @@ -1458,11 +1458,13 @@ export default { tasks: [this.task], }); Object.assign(this.task, response); - await this.$store.dispatch('tasks:assignTask', { - taskId: this.task._id, - userId: this.assignedMember, - }); - this.task.group.assignedUsers = [this.assignedMember]; + if (this.assignedMember) { + await this.$store.dispatch('tasks:assignTask', { + taskId: this.task._id, + userId: this.assignedMember, + }); + this.task.group.assignedUsers = [this.assignedMember]; + } this.$emit('taskCreated', this.task); } else { this.createTask(this.task); diff --git a/website/server/libs/groupTasks.js b/website/server/libs/groupTasks.js index f5604d3488..50a5785304 100644 --- a/website/server/libs/groupTasks.js +++ b/website/server/libs/groupTasks.js @@ -20,6 +20,7 @@ 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(); } diff --git a/website/server/libs/tasks/index.js b/website/server/libs/tasks/index.js index 0c8b8f472a..793f4087a1 100644 --- a/website/server/libs/tasks/index.js +++ b/website/server/libs/tasks/index.js @@ -375,6 +375,10 @@ async function scoreTask (user, task, direction, req, res) { } } + if (task.completed && task.group.id && !task.userId) { + task.group.completedBy = user._id; + } + setNextDue(task, user); if (localTask) { diff --git a/website/server/models/task.js b/website/server/models/task.js index 1b40940f4c..37bf90e250 100644 --- a/website/server/models/task.js +++ b/website/server/models/task.js @@ -147,6 +147,7 @@ export const TaskSchema = new Schema({ default: SHARED_COMPLETION.single, }, managerNotes: { $type: String }, + completedBy: { $type: String, ref: 'User', validate: [v => validator.isUUID(v), 'Invalid uuid for group completing user.'] }, }, reminders: [reminderSchema],