feat: update add permit flow

This commit is contained in:
2025-09-26 17:30:18 +05:30
parent b9572953b5
commit 343c3498ed
4 changed files with 82 additions and 25 deletions

View File

@@ -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({

View File

@@ -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) {

View File

@@ -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 });

View File

@@ -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;
};