From 343c3498edb583ed2c085dab02e1029e8f75c527 Mon Sep 17 00:00:00 2001 From: Akhil Meka Date: Fri, 26 Sep 2025 17:30:18 +0530 Subject: [PATCH] feat: update add permit flow --- src/permit/permit.schema.ts | 1 + src/permit/permit.service.ts | 63 +++++++++++++++++++++---------- src/processed/processed.schema.ts | 41 +++++++++++++++++--- src/realtime.ts | 2 +- 4 files changed, 82 insertions(+), 25 deletions(-) diff --git a/src/permit/permit.schema.ts b/src/permit/permit.schema.ts index 494c165..cd8aa2c 100644 --- a/src/permit/permit.schema.ts +++ b/src/permit/permit.schema.ts @@ -208,6 +208,7 @@ const permitCore = { jobNumber: z.string().nullable().optional(), startDate: z.date().nullable().optional(), history: z.record(z.any()).optional(), + issued: z.boolean().optional(), }; const createPermitInput = z.object({ diff --git a/src/permit/permit.service.ts b/src/permit/permit.service.ts index 31d8aed..a298c20 100644 --- a/src/permit/permit.service.ts +++ b/src/permit/permit.service.ts @@ -18,6 +18,7 @@ import mongoose from "mongoose"; import { getUser } from "../user/user.service"; import { createNote } from "../note/note.service"; import { createAlert } from "../alert/alert.service"; +import { processedModel } from "../processed/processed.schema"; export async function createPermit( input: CreatePermitInput, @@ -30,27 +31,51 @@ export async function createPermit( }; } - const permit = await permitModel.create({ - tenantId: user.tenantId, - pid: generateId(), - createdAt: new Date(), - createdBy: user.userId, - ...input, - }); - - dbEvents.emit( - "change", - { + if (input.issued) { + const permit = await processedModel.create({ tenantId: user.tenantId, - type: "insert", - collection: "permits", - orgId: permit.client.toString(), - document: permit, - } as ChangeEvent, - ["permit:read"] - ); + pid: generateId(), + createdAt: new Date(), + createdBy: user.userId, + ...input, + }); - return permit; + dbEvents.emit( + "change", + { + tenantId: user.tenantId, + type: "insert", + collection: "processed", + orgId: permit.client.toString(), + document: permit, + } as ChangeEvent, + ["permit:read"] + ); + + return permit; + } else { + const permit = await permitModel.create({ + tenantId: user.tenantId, + pid: generateId(), + createdAt: new Date(), + createdBy: user.userId, + ...input, + }); + + dbEvents.emit( + "change", + { + tenantId: user.tenantId, + type: "insert", + collection: "permits", + orgId: permit.client.toString(), + document: permit, + } as ChangeEvent, + ["permit:read"] + ); + + return permit; + } } export async function getPermit(permitId: string, tenantId: string) { diff --git a/src/processed/processed.schema.ts b/src/processed/processed.schema.ts index 4930540..07e191b 100644 --- a/src/processed/processed.schema.ts +++ b/src/processed/processed.schema.ts @@ -13,7 +13,12 @@ const processedSchema = new mongoose.Schema({ unique: true, }, permitNumber: String, - county: Object, + county: { + id: mongoose.Types.ObjectId, + pid: String, + name: String, + avatar: String, + }, client: { type: mongoose.Types.ObjectId, ref: "organization", @@ -54,9 +59,35 @@ const processedSchema = new mongoose.Schema({ type: mongoose.Types.ObjectId, ref: "user", }, - newProcessingStatus: Array, - newPayment: Array, - newConditions: Array, + newProcessingStatus: [ + { + last_modified_date: Date, + description: String, + status: String, + assigned_user_text: String, + due_date: Date, + is_completed: String, + comment: String, + }, + ], + newPayment: [ + { + apply_date: String, + invoice_id: Number, + amount: Number, + balance_due: Number, + code_text: String, + status: String, + }, + ], + newConditions: [ + { + status_date: Date, + status_value: String, + short_comments: String, + name: String, + }, + ], professionals: Object, recordId: String, relatedRecords: Object, @@ -69,7 +100,7 @@ const processedSchema = new mongoose.Schema({ lot: String, block: String, jobNumber: String, - transferDate: Date, + startDate: Date, history: Array, taggedUsers: Array, }).index({ tenantId: 1, permitNumber: 1 }, { unique: true }); diff --git a/src/realtime.ts b/src/realtime.ts index 14005e8..666bdf7 100644 --- a/src/realtime.ts +++ b/src/realtime.ts @@ -4,7 +4,7 @@ import { createEvent } from "./events/events.service"; export type ChangeEvent = { tenantId: string; type: "insert" | "update" | "delete"; - collection: "permits" | "orgs"; + collection: "permits" | "processed" | "orgs"; orgId?: string; document?: Object; };