From 4028c05d5f3ab570fba3699eaee1eb86a117f6de Mon Sep 17 00:00:00 2001 From: Akhil Meka Date: Tue, 13 May 2025 13:49:39 +0530 Subject: [PATCH] add assignedTo field to unique fields endpoint --- src/notification/notification.service.ts | 2 +- src/permit/permit.service.ts | 2 +- src/processed/processed.service.ts | 2 +- src/rts/rts.service.ts | 5 +++- src/task/task.route.ts | 30 ++++++++++++++++++++++++ src/task/task.service.ts | 28 ++++++++++++++++++++++ 6 files changed, 65 insertions(+), 4 deletions(-) diff --git a/src/notification/notification.service.ts b/src/notification/notification.service.ts index 39403cf..5794a69 100644 --- a/src/notification/notification.service.ts +++ b/src/notification/notification.service.ts @@ -152,7 +152,7 @@ export async function getUniqueValuesNotification( } else if (field === "client") { matchedValues = await orgModel.find().where("_id").in(values).exec(); } else if (field === "assignedTo") { - matchedValues = await userModel.find().where("name").in(values).exec(); + matchedValues = await userModel.find().where("_id").in(values).exec(); } if (matchedValues.length > 0) { diff --git a/src/permit/permit.service.ts b/src/permit/permit.service.ts index 7d110d0..44b3acc 100644 --- a/src/permit/permit.service.ts +++ b/src/permit/permit.service.ts @@ -334,7 +334,7 @@ export async function getUniqueValuesPermit(field: string, tenenatId: string) { } else if (field === "client") { matchedValues = await orgModel.find().where("_id").in(values).exec(); } else if (field === "assignedTo") { - matchedValues = await userModel.find().where("name").in(values).exec(); + matchedValues = await userModel.find().where("_id").in(values).exec(); } if (matchedValues.length > 0) { diff --git a/src/processed/processed.service.ts b/src/processed/processed.service.ts index b4af34d..1e426a3 100644 --- a/src/processed/processed.service.ts +++ b/src/processed/processed.service.ts @@ -168,7 +168,7 @@ export async function getUniqueValuesProcessed( } else if (field === "client") { matchedValues = await orgModel.find().where("_id").in(values).exec(); } else if (field === "assignedTo") { - matchedValues = await userModel.find().where("name").in(values).exec(); + matchedValues = await userModel.find().where("_id").in(values).exec(); } if (matchedValues.length > 0) { diff --git a/src/rts/rts.service.ts b/src/rts/rts.service.ts index 2a205da..dcf906c 100644 --- a/src/rts/rts.service.ts +++ b/src/rts/rts.service.ts @@ -181,7 +181,8 @@ export async function updateRts( .findOneAndUpdate({ pid: id, tenantId: tenantId }, input, { new: true }) .populate({ path: "createdBy", select: "pid name avatar" }) .populate({ path: "county", select: "pid name avatar" }) - .populate({ path: "client", select: "pid name avatar" }); + .populate({ path: "client", select: "pid name avatar" }) + .populate({ path: "assignedTo", select: "pid name avatar" }); return updatedRts; } @@ -219,6 +220,8 @@ export async function getUniqueValuesRTS(field: string, tenenatId: string) { 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) { diff --git a/src/task/task.route.ts b/src/task/task.route.ts index bdfea1b..bdad36a 100644 --- a/src/task/task.route.ts +++ b/src/task/task.route.ts @@ -10,6 +10,7 @@ import { updateTaskHandler, } from "./task.controller"; import { noteRoutes } from "../note/note.route"; +import { getUniqueValuesTasks } from "./task.service"; export async function taskRoutes(fastify: FastifyInstance) { fastify.post( @@ -107,6 +108,35 @@ export async function taskRoutes(fastify: FastifyInstance) { newFilesHandler ); + fastify.get( + "/fields/:field", + { + schema: { + params: { + type: "object", + properties: { + field: { type: "string" }, + }, + }, + }, + config: { requiredClaims: ["rts:read"] }, + preHandler: [fastify.authorize], + }, + async (req, res) => { + const { field } = req.params as { field: string }; + + try { + const uniqueValues = await getUniqueValuesTasks( + field, + req.user.tenantId + ); + return res.code(200).send(uniqueValues); + } catch (err) { + return err; + } + } + ); + await noteRoutes(fastify, { read: "task:read", write: "task:write", diff --git a/src/task/task.service.ts b/src/task/task.service.ts index ded8b2a..f941920 100644 --- a/src/task/task.service.ts +++ b/src/task/task.service.ts @@ -1,4 +1,6 @@ +import { userInfo } from "os"; import { AuthenticatedUser } from "../auth"; +import { orgModel } from "../organization/organization.schema"; import { getFilterObject, getSortObject, PageQueryParams } from "../pagination"; import { generateId } from "../utils/id"; import { taskPipeline } from "../utils/pipeline"; @@ -9,6 +11,7 @@ import { UpdateTaskInput, UploadTaskInput, } from "./task.schema"; +import { userModel } from "../user/user.schema"; export async function createTask( input: CreateTaskInput, @@ -248,3 +251,28 @@ export async function newUpload( } ); } + +export async function getUniqueValuesTasks(field: string, tenenatId: string) { + let values = await taskModel.distinct(field, { tenantId: tenenatId }); + + let matchedValues = []; + if (field === "county") { + matchedValues = await orgModel.find().where("_id").in(values).exec(); + } else if (field === "client") { + 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; +}