From 43ab7ade39425f74c758962abdaaa5d87c12de60 Mon Sep 17 00:00:00 2001 From: Akhil Meka Date: Tue, 14 Oct 2025 12:23:18 +0530 Subject: [PATCH] feat: auto update clientData field when client field is updated for permits and processed permits --- src/permit/permit.service.ts | 14 +++++++++++++- src/processed/processed.schema.ts | 1 + src/processed/processed.service.ts | 15 ++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/permit/permit.service.ts b/src/permit/permit.service.ts index 045536b..96fadb3 100644 --- a/src/permit/permit.service.ts +++ b/src/permit/permit.service.ts @@ -235,7 +235,6 @@ export async function updatePermit( { new: true } ) .populate({ path: "county", select: "pid name avatar" }) - .populate({ path: "client", select: "pid name avatar" }) .populate({ path: "assignedTo", select: "pid name avatar" }) .populate({ path: "createdBy", select: "pid name avatar" }); @@ -274,6 +273,19 @@ export async function updatePermit( "permits" ); } + } else if (key == "client") { + const orgInDb = await orgModel.findById(input.client); + if (orgInDb) { + updatePermitResult.clientData = { + pid: orgInDb.pid, + licenseNumber: orgInDb.licenseNumber, + name: orgInDb.name, + avatar: orgInDb.avatar, + }; + + updatePermitResult.markModified("clientData"); + await updatePermitResult.save(); + } } } diff --git a/src/processed/processed.schema.ts b/src/processed/processed.schema.ts index 52f6b2f..ffcf4e9 100644 --- a/src/processed/processed.schema.ts +++ b/src/processed/processed.schema.ts @@ -118,6 +118,7 @@ export const processedModel = mongoose.model( ); const updateProcessedInput = z.object({ + client: z.string().optional(), manualStatus: z.string().nullable().optional(), utility: z.string().nullable().optional(), communityName: z.string().nullable().optional(), diff --git a/src/processed/processed.service.ts b/src/processed/processed.service.ts index 29b8359..9f6dd6f 100644 --- a/src/processed/processed.service.ts +++ b/src/processed/processed.service.ts @@ -14,6 +14,7 @@ import { import { createNote } from "../note/note.service"; import { createAlert } from "../alert/alert.service"; import { getUser } from "../user/user.service"; +import { orgModel } from "../organization/organization.schema"; export async function getProcessedPermit(permitId: String, tenantId: String) { return await processedModel @@ -38,7 +39,6 @@ export async function updateProcessed( { new: true } ) .populate({ path: "county", select: "pid name avatar" }) - .populate({ path: "client", select: "pid name avatar" }) .populate({ path: "assignedTo", select: "pid name avatar" }) .populate({ path: "createdBy", select: "pid name avatar" }); @@ -77,6 +77,19 @@ export async function updateProcessed( "processed" ); } + } else if (key == "client") { + const orgInDb = await orgModel.findById(input.client); + if (orgInDb) { + updateProcessedResult.clientData = { + pid: orgInDb.pid, + licenseNumber: orgInDb.licenseNumber, + name: orgInDb.name, + avatar: orgInDb.avatar, + }; + + updateProcessedResult.markModified("clientData"); + await updateProcessedResult.save(); + } } }