feat: add team alerts
This commit is contained in:
@@ -19,7 +19,7 @@ import { arrayDiff } from "../utils/diff";
|
||||
|
||||
export async function getProcessedPermit(
|
||||
permitId: String,
|
||||
user: AuthenticatedUser
|
||||
user: AuthenticatedUser,
|
||||
) {
|
||||
const permit = await processedModel
|
||||
.findOne({
|
||||
@@ -41,11 +41,19 @@ export async function getProcessedPermit(
|
||||
export async function updateProcessed(
|
||||
input: UpdateProcessedInput,
|
||||
permitId: string,
|
||||
user: AuthenticatedUser
|
||||
user: AuthenticatedUser,
|
||||
) {
|
||||
if (input.assignedToOrg && input.assignedTo) {
|
||||
input.assignedTo = [];
|
||||
} else if (input.assignedToOrg) {
|
||||
input.assignedTo = [];
|
||||
} else if (input.assignedTo) {
|
||||
input.assignedToOrg = null;
|
||||
}
|
||||
|
||||
const oldPermitResult = await processedModel.findOne(
|
||||
{ pid: permitId },
|
||||
{ assignedTo: 1 }
|
||||
{ assignedTo: 1, assignedToOrg: 1 },
|
||||
);
|
||||
const updateProcessedResult = await processedModel
|
||||
.findOneAndUpdate(
|
||||
@@ -53,7 +61,7 @@ export async function updateProcessed(
|
||||
$and: [{ tenantId: user.tenantId }, { pid: permitId }],
|
||||
},
|
||||
{ ...input, lastUpdateDate: new Date() },
|
||||
{ new: true }
|
||||
{ new: true },
|
||||
)
|
||||
.populate({ path: "county", select: "pid name avatar" })
|
||||
.populate({ path: "assignedTo", select: "pid name avatar" })
|
||||
@@ -76,7 +84,7 @@ export async function updateProcessed(
|
||||
},
|
||||
permitId,
|
||||
"processed",
|
||||
user
|
||||
user,
|
||||
);
|
||||
} else if (key == "client") {
|
||||
const orgInDb = await orgModel.findById(input.client);
|
||||
@@ -97,13 +105,13 @@ export async function updateProcessed(
|
||||
},
|
||||
permitId,
|
||||
"permits",
|
||||
user
|
||||
user,
|
||||
);
|
||||
}
|
||||
} else if (key == "assignedTo") {
|
||||
const newAssignees = arrayDiff(
|
||||
updateProcessedResult.assignedTo.map((item) => item._id),
|
||||
oldPermitResult.assignedTo
|
||||
oldPermitResult.assignedTo,
|
||||
);
|
||||
|
||||
if (newAssignees.length == 0) continue;
|
||||
@@ -127,7 +135,7 @@ export async function updateProcessed(
|
||||
client: updateProcessedResult.client.toString(),
|
||||
county: updateProcessedResult.county.id.toString(),
|
||||
address: updateProcessedResult.address.full_address,
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@@ -137,7 +145,33 @@ export async function updateProcessed(
|
||||
},
|
||||
permitId,
|
||||
"processed",
|
||||
user
|
||||
user,
|
||||
);
|
||||
} else if (key == "assignedToOrg") {
|
||||
if (
|
||||
oldPermitResult.assignedToOrg == updateProcessedResult.assignedToOrg
|
||||
)
|
||||
continue;
|
||||
|
||||
const orgName =
|
||||
input.assignedToOrg == "agent"
|
||||
? "Suncoast"
|
||||
: updateProcessedResult.clientData.name;
|
||||
|
||||
await createAlert(
|
||||
user.tenantId,
|
||||
`${orgName} assigned to ${updateProcessedResult.permitNumber}`,
|
||||
"team",
|
||||
input.assignedToOrg == "client"
|
||||
? updateProcessedResult.client.toString()
|
||||
: process.env.SUNCOAST_ID,
|
||||
updateProcessedResult.pid,
|
||||
"permits",
|
||||
{
|
||||
client: updateProcessedResult.client.toString(),
|
||||
county: updateProcessedResult.county.id.toString(),
|
||||
address: updateProcessedResult.address.full_address,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -148,7 +182,7 @@ export async function updateProcessed(
|
||||
|
||||
export async function listProcessedPermits(
|
||||
params: PageQueryParams,
|
||||
user: AuthenticatedUser
|
||||
user: AuthenticatedUser,
|
||||
) {
|
||||
const page = params.page || 1;
|
||||
const pageSize = params.pageSize || 10;
|
||||
@@ -173,7 +207,7 @@ export async function listProcessedPermits(
|
||||
|
||||
let { taggedFilter, taggedUserFilterIndex } = getTaggedUsersFilter(
|
||||
filterObj,
|
||||
sortObj
|
||||
sortObj,
|
||||
);
|
||||
|
||||
if (taggedUserFilterIndex != -1) filterObj.splice(taggedUserFilterIndex, 1);
|
||||
@@ -281,7 +315,7 @@ export async function listProcessedPermits(
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
],
|
||||
);
|
||||
|
||||
const permitsList = await processedModel.aggregate(pipeline);
|
||||
|
||||
Reference in New Issue
Block a user