add notes on update

This commit is contained in:
2025-05-28 18:00:21 +05:30
parent 32c8ae0b60
commit 2b5653abad
4 changed files with 84 additions and 14 deletions

View File

@@ -50,7 +50,7 @@ export async function updateNotificationHandler(
const updatedNotification = await updateNotification(
notifId,
input,
req.user.tenantId
req.user
);
if (!updatedNotification)

View File

@@ -10,6 +10,8 @@ import {
notificationModel,
UpdateNotificationInput,
} from "./notification.schema";
import { getUser } from "../user/user.service";
import { createNote } from "../note/note.service";
export async function createNotification(
input: CreateNotificationInput,
@@ -30,11 +32,11 @@ export async function createNotification(
export async function updateNotification(
notifId: string,
input: UpdateNotificationInput,
tenantId: string
user: AuthenticatedUser
) {
return await notificationModel
const updateNotificationResult = await notificationModel
.findOneAndUpdate(
{ $and: [{ tenantId: tenantId }, { pid: notifId }] },
{ $and: [{ tenantId: user.tenantId }, { pid: notifId }] },
{
...input,
updatedAt: new Date(),
@@ -42,6 +44,35 @@ export async function updateNotification(
{ new: true }
)
.populate({ path: "assignedTo", select: "pid name avatar" });
if (updateNotificationResult) {
for (const key in input) {
if (["status", "assignedTo"].includes(key)) {
let msg = "";
if (input[key] === null) {
msg = `Cleared ${key}`;
} else if (key == "assignedTo") {
const user = await getUser(input.assignedTo);
if (!user) continue;
msg = `Assigned to ${user.firstName + " " + user.lastName}`;
} else {
msg = `Updated ${key} to '${input[key]}'`;
}
await createNote(
{
content: msg,
},
notifId,
user
);
}
}
}
return updateNotificationResult;
}
export async function listNotifications(

View File

@@ -11,6 +11,8 @@ import { permitPipeline } from "../utils/pipeline";
import { AuthenticatedUser } from "../auth";
import mongoose from "mongoose";
import { noteModel } from "../note/note.schema";
import { getUser } from "../user/user.service";
import { createNote } from "../note/note.service";
export async function createPermit(
input: CreatePermitInput,
@@ -181,15 +183,27 @@ export async function updatePermit(
if (updatePermitResult) {
for (const key in input) {
if (["manualStatus", "utility"].includes(key)) {
await noteModel.create({
tenantId: user.tenantId,
pid: generateId(),
resourceId: permitId,
content: `Updated ${key} to '${input[key]}'`,
createdAt: new Date(),
createdBy: user.userId,
});
if (["manualStatus", "utility", "assignedTo"].includes(key)) {
let msg = "";
if (input[key] === null) {
msg = `Cleared ${key}`;
} else if (key == "assignedTo") {
const user = await getUser(input.assignedTo);
if (!user) continue;
msg = `Assigned to ${user.firstName + " " + user.lastName}`;
} else {
msg = `Updated ${key} to '${input[key]}'`;
}
await createNote(
{
content: msg,
},
permitId,
user
);
}
}

View File

@@ -8,6 +8,7 @@ import {
processedModel,
UpdateProcessedInput,
} from "./processed.schema";
import { createNote } from "../note/note.service";
export async function getProcessedPermit(permitId: String, tenantId: String) {
return await processedModel.findOne({
@@ -20,7 +21,7 @@ export async function updateProcessed(
permitId: string,
user: AuthenticatedUser
) {
return await processedModel
const updateProcessedResult = await processedModel
.findOneAndUpdate(
{
$and: [{ tenantId: user.tenantId }, { pid: permitId }],
@@ -32,6 +33,30 @@ export async function updateProcessed(
.populate({ path: "client", select: "pid name avatar" })
.populate({ path: "assignedTo", select: "pid name avatar" })
.populate({ path: "createdBy", select: "pid name avatar" });
if (updateProcessedResult) {
for (const key in input) {
if (["manualStatus", "utility"].includes(key)) {
let msg = "";
if (input[key] === null) {
msg = `Cleared ${key}`;
} else {
msg = `Updated ${key} to '${input[key]}'`;
}
await createNote(
{
content: msg,
},
permitId,
user
);
}
}
return updateProcessedResult;
}
}
export async function listProcessedPermits(