Files
permit-api/cron/statusUpdate.js
2025-05-02 12:41:24 +05:30

69 lines
1.4 KiB
JavaScript

import mongoose from 'mongoose';
const permitsModel = mongoose.model(
'permit',
new mongoose.Schema(
{
status: String,
cleanStatus: String,
},
{ strict: false }
)
);
const configModel = mongoose.model(
'config',
new mongoose.Schema({
tenantId: {
type: String,
unique: true,
},
emailIds: Array,
statusMap: Object,
folders: Object,
updatedAt: Date,
updatedBy: {
type: mongoose.Types.ObjectId,
ref: 'user',
},
}),
'config'
);
(async () => {
console.log(new Date().toISOString() + ' Started status script...');
await mongoose.connect(process.env.DB_URI);
const config = await configModel.findOne({ tenantId: 'arf4w59nzduytv7' });
const permits = await permitsModel.find();
const statusMap = config.statusMap;
const flatMap = {};
for (const status in statusMap) {
for (const countyStatus of statusMap[status]) {
flatMap[countyStatus] = status;
}
}
for (const permit of permits) {
try {
const cleanStatus = flatMap[permit.status];
if (!cleanStatus)
throw new Error(
`Invalid status: ${permit.status} | recId: ${permit.pid}`
);
await permitsModel.updateOne(
{ pid: permit.pid },
{ $set: { cleanStatus: cleanStatus } }
);
} catch (err) {
console.log(err);
}
}
await mongoose.connection.close();
})().catch((err) => console.log(err));