WIP(teams): reimplement open tasking

This commit is contained in:
Sabe Jones
2021-02-08 17:03:19 -06:00
committed by SabreCat
parent 6e39c79cff
commit 248e1c6fe9
7 changed files with 76 additions and 77 deletions

View File

@@ -208,26 +208,13 @@ api.assignTask = {
const group = await Group.getGroup({ user, groupId: task.group.id, fields: groupFields });
if (!group) throw new NotFound(res.t('groupNotFound'));
if (canNotEditTasks(group, user, assignedUserId)) throw new NotAuthorized(res.t('onlyGroupLeaderCanEditTasks'));
if (canNotEditTasks(group, user)) throw new NotAuthorized(res.t('onlyGroupLeaderCanEditTasks'));
const promises = [];
const taskText = task.text;
const userName = `@${user.auth.local.username}`;
if (user._id === assignedUserId) {
const managerIds = Object.keys(group.managers);
managerIds.push(group.leader);
const managers = await User.find({ _id: managerIds }, 'notifications preferences').exec();
managers.forEach(manager => {
if (manager._id === user._id) return;
manager.addNotification('GROUP_TASK_CLAIMED', {
message: res.t('taskClaimed', { userName, taskText }, manager.preferences.language),
groupId: group._id,
taskId: task._id,
});
promises.push(manager.save());
});
} else {
if (user._id !== assignedUserId) {
assignedUser.addNotification('GROUP_TASK_ASSIGNED', {
message: res.t('youHaveBeenAssignedTask', { managerName: userName, taskText }),
taskId: task._id,
@@ -283,7 +270,7 @@ api.unassignTask = {
const group = await Group.getGroup({ user, groupId: task.group.id, fields });
if (!group) throw new NotFound(res.t('groupNotFound'));
if (canNotEditTasks(group, user, assignedUserId)) throw new NotAuthorized(res.t('onlyGroupLeaderCanEditTasks'));
if (canNotEditTasks(group, user)) throw new NotAuthorized(res.t('onlyGroupLeaderCanEditTasks'));
await group.unlinkTask(task, assignedUser);
@@ -531,7 +518,7 @@ api.getGroupApprovals = {
if (canNotEditTasks(group, user)) {
approvals = await Tasks.Task.find({
'group.id': groupId,
'group.approval.approved': false,
'group.approval.approved': { $ne: true },
'group.approval.requested': true,
'group.assignedUsers': user._id,
userId: user._id,
@@ -541,7 +528,7 @@ api.getGroupApprovals = {
} else {
approvals = await Tasks.Task.find({
'group.id': groupId,
'group.approval.approved': false,
'group.approval.approved': { $ne: true },
'group.approval.requested': true,
}, 'userId group text')
.populate('userId', 'profile')