feat: custom unique values for taggedUsers field, set the latest taggedUser to assigendTo field

This commit is contained in:
2025-09-01 18:45:42 +05:30
parent 1bc51d98ec
commit 19ab12aab6
2 changed files with 16 additions and 5 deletions

View File

@@ -43,24 +43,23 @@ export async function createNote(
const model = modelMap[resourceType]; const model = modelMap[resourceType];
const obj = await model.findOne({ pid: resourceId }); const obj = await model.findOne({ pid: resourceId });
console.log(obj.taggedUsers);
if (!obj.taggedUsers) { if (!obj.taggedUsers) {
await model.updateOne( await model.updateOne(
{ pid: resourceId }, { pid: resourceId },
{ $set: { taggedUsers: taggedUsers } } { $set: { taggedUsers: taggedUsers, assignedTo: userIds[0] } }
); );
} else { } else {
for (const user of taggedUsers) { for (const user of taggedUsers) {
const userIndex = obj.taggedUsers.findIndex( const userIndex = obj.taggedUsers.findIndex(
(item) => item.userId == user.userId (item) => item.userId == user.userId
); );
console.log(userIndex);
if (userIndex != -1) obj.taggedUsers[userIndex].taggedAt = new Date(); if (userIndex != -1) obj.taggedUsers[userIndex].taggedAt = new Date();
else obj.taggedUsers.push(user); else obj.taggedUsers.push(user);
} }
obj.markModified("taggedUsers"); obj.assignedTo = userIds[0];
obj.markModified("taggedUsers", "assignedTo");
await obj.save(); await obj.save();
} }

View File

@@ -2,6 +2,7 @@ import { orgModel } from "./organization/organization.schema";
import { userModel } from "./user/user.schema"; import { userModel } from "./user/user.schema";
import { AuthenticatedUser } from "./auth"; import { AuthenticatedUser } from "./auth";
import { modelMap } from "./utils/tags"; import { modelMap } from "./utils/tags";
import { listUsers } from "./user/user.service";
type Collection = type Collection =
| "users" | "users"
@@ -32,6 +33,17 @@ export async function getUniqueFields(
return changeKeys.map((item) => item._id); return changeKeys.map((item) => item._id);
} }
if (field === "taggedUsers") {
const users = await listUsers(user);
const usersObj = {};
for (const user of users) {
usersObj[user.id] = user.name;
}
return usersObj;
}
let values = await model.distinct(field, { tenantId: user.tenantId }); let values = await model.distinct(field, { tenantId: user.tenantId });
let matchedValues = []; let matchedValues = [];