From b51e36ebadc7dfb6fd421d5ce9fa94b152f5a239 Mon Sep 17 00:00:00 2001 From: Akhil Meka Date: Fri, 23 May 2025 14:43:18 +0530 Subject: [PATCH] added new fields to permit model, removed changes endpoints --- src/permit/permit.controller.ts | 15 ------------- src/permit/permit.route.ts | 16 ------------- src/permit/permit.schema.ts | 25 ++++++++------------- src/permit/permit.service.ts | 40 +++++++++++++-------------------- 4 files changed, 24 insertions(+), 72 deletions(-) diff --git a/src/permit/permit.controller.ts b/src/permit/permit.controller.ts index caa3ff2..a1cd75f 100644 --- a/src/permit/permit.controller.ts +++ b/src/permit/permit.controller.ts @@ -3,7 +3,6 @@ import { CreatePermitInput, UpdatePermitInput } from "./permit.schema"; import { createPermit, deletePermit, - getchanges, getPermit, listPermits, searchPermit, @@ -103,17 +102,3 @@ export async function searchPermitHandler( return err; } } - -export async function getPermitChangesHandler( - req: FastifyRequest, - res: FastifyReply -) { - const { permitId } = req.params as { permitId: string }; - - try { - const changes = await getchanges(permitId, req.user); - return res.code(200).send(changes); - } catch (err) { - return err; - } -} diff --git a/src/permit/permit.route.ts b/src/permit/permit.route.ts index 2124410..05e0886 100644 --- a/src/permit/permit.route.ts +++ b/src/permit/permit.route.ts @@ -1,7 +1,6 @@ import { FastifyInstance } from "fastify"; import { deletePermitHandler, - getPermitChangesHandler, getPermitHandler, listPermitsHandler, searchPermitHandler, @@ -121,21 +120,6 @@ export async function permitRoutes(fastify: FastifyInstance) { } ); - fastify.get( - "/:permitId/changes", - { - schema: { - params: { - type: "object", - properties: { permitId: { type: "string" } }, - }, - }, - config: { requiredClaims: ["permit:read"] }, - preHandler: [fastify.authorize], - }, - getPermitChangesHandler - ); - await noteRoutes(fastify); fastify.addHook("onSend", hideFields("permits")); diff --git a/src/permit/permit.schema.ts b/src/permit/permit.schema.ts index 0c438d1..0314d84 100644 --- a/src/permit/permit.schema.ts +++ b/src/permit/permit.schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { string, z } from "zod"; import mongoose from "mongoose"; import { buildJsonSchemas } from "fastify-zod"; import { pageMetadata, pageQueryParams } from "../pagination"; @@ -65,6 +65,10 @@ const permitSchema = new mongoose.Schema({ lastUpdateDate: Date, statusUpdated: Date, issuedDate: Date, + communityName: String, + lot: String, + jobNumber: String, + startDate: Date, }).index({ tenantId: 1, permitNumber: 1 }, { unique: true }); export const permitFields = Object.keys(permitSchema.paths).filter( @@ -151,26 +155,15 @@ const updatePermitInput = z.object({ .optional(), assignedTo: z.string().optional(), newPayment: z.array(z.any()).optional(), + communityName: z.string().optional(), + lot: z.string().optional(), + jobNumber: z.string().optional(), + startDate: z.date().optional(), }); export type CreatePermitInput = z.infer; export type UpdatePermitInput = z.infer; -export const changesModel = mongoose.model( - "change", - new mongoose.Schema({ - tenantId: String, - permitId: String, - field: String, - value: String, - updatedBy: { - type: mongoose.Types.ObjectId, - ref: "user", - }, - updatedAt: Date, - }) -); - export const { schemas: permitSchemas, $ref: $permit } = buildJsonSchemas( { createPermitInput, diff --git a/src/permit/permit.service.ts b/src/permit/permit.service.ts index 74fb3ab..23e38bc 100644 --- a/src/permit/permit.service.ts +++ b/src/permit/permit.service.ts @@ -1,9 +1,6 @@ -import { orgModel } from "../organization/organization.schema"; import { getFilterObject, getSortObject, PageQueryParams } from "../pagination"; -import { userModel } from "../user/user.schema"; import { generateId } from "../utils/id"; import { - changesModel, CreatePermitInput, permitFields, permitModel, @@ -13,6 +10,7 @@ import { ChangeEvent, dbEvents } from "../realtime"; import { permitPipeline } from "../utils/pipeline"; import { AuthenticatedUser } from "../auth"; import mongoose from "mongoose"; +import { noteModel } from "../note/note.schema"; export async function createPermit( input: CreatePermitInput, @@ -121,6 +119,10 @@ export async function listPermits( lastUpdateDate: 1, statusUpdated: 1, issuedDate: 1, + communityName: 1, + lot: 1, + jobNumber: 1, + startDate: 1, assignedTo: { $let: { vars: { assigned: { $arrayElemAt: ["$assignedRec", 0] } }, @@ -180,13 +182,13 @@ export async function updatePermit( if (updatePermitResult) { for (const key in input) { if (["manualStatus", "utility"].includes(key)) { - await changesModel.create({ + await noteModel.create({ tenantId: user.tenantId, - permitId: permitId, - field: key, - value: input[key], - updatedBy: user.userId, - updatedAt: new Date(), + pid: generateId(), + resourceId: permitId, + content: `Updated ${key} to '${input[key]}'`, + createdAt: new Date(), + createdBy: user.userId, }); } } @@ -303,6 +305,10 @@ export async function searchPermit( lastUpdateDate: 1, statusUpdated: 1, issuedDate: 1, + communityName: 1, + lot: 1, + jobNumber: 1, + startDate: 1, assignedTo: { $let: { vars: { assigned: { $arrayElemAt: ["$assignedRec", 0] } }, @@ -340,19 +346,3 @@ export async function searchPermit( }, }; } - -export async function getchanges(permitId: string, user: AuthenticatedUser) { - if (user.role == "client") { - const permit = await permitModel.findOne({ - pid: permitId, - tenantId: user.tenantId, - }); - if (!permit || permit.client.toString() !== user.orgId) return []; - } - - return await changesModel - .find({ - $and: [{ tenantId: user.tenantId }, { permitId: permitId }], - }) - .populate({ path: "updatedBy", select: "_id pid name avatar" }); -}