update role claims, refactor getUniqueValues
This commit is contained in:
65
src/unique.ts
Normal file
65
src/unique.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import { orgModel } from "./organization/organization.schema";
|
||||
import { userModel } from "./user/user.schema";
|
||||
import { permitModel } from "./permit/permit.schema";
|
||||
import { processedModel } from "./processed/processed.schema";
|
||||
import { notificationModel } from "./notification/notification.schema";
|
||||
import { rtsModel } from "./rts/rts.schema";
|
||||
import { taskModel } from "./task/task.schema";
|
||||
import { AuthenticatedUser } from "./auth";
|
||||
|
||||
type Collection =
|
||||
| "users"
|
||||
| "permits"
|
||||
| "organizations"
|
||||
| "processed"
|
||||
| "notifications"
|
||||
| "rts"
|
||||
| "task";
|
||||
|
||||
const modelMap = {
|
||||
users: userModel,
|
||||
permits: permitModel,
|
||||
organizations: orgModel,
|
||||
processed: processedModel,
|
||||
notifications: notificationModel,
|
||||
rts: rtsModel,
|
||||
task: taskModel,
|
||||
};
|
||||
|
||||
export async function getUniqueFields(
|
||||
field: string,
|
||||
collection: Collection,
|
||||
user: AuthenticatedUser
|
||||
) {
|
||||
const model = modelMap[collection];
|
||||
if (!model) throw new Error("invalid collection");
|
||||
|
||||
let values = await model.distinct(field, { tenantId: user.tenantId });
|
||||
|
||||
let matchedValues = [];
|
||||
if (field === "county.name") {
|
||||
matchedValues = await orgModel.find().where("name").in(values).exec();
|
||||
} else if (field === "county") {
|
||||
matchedValues = await orgModel.find().where("_id").in(values).exec();
|
||||
} else if (field === "client") {
|
||||
if (user.role == "client") {
|
||||
values = [user.orgId];
|
||||
}
|
||||
|
||||
matchedValues = await orgModel.find().where("_id").in(values).exec();
|
||||
} else if (field === "createdBy") {
|
||||
matchedValues = await userModel.find().where("_id").in(values).exec();
|
||||
} else if (field === "assignedTo") {
|
||||
matchedValues = await userModel.find().where("_id").in(values).exec();
|
||||
}
|
||||
|
||||
if (matchedValues.length > 0) {
|
||||
const newValues = {};
|
||||
for (const item of matchedValues) {
|
||||
newValues[item.id] = item.name;
|
||||
}
|
||||
return newValues;
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
Reference in New Issue
Block a user