diff --git a/cron/archive.js b/cron/archive.js index 31236d3..8331884 100644 --- a/cron/archive.js +++ b/cron/archive.js @@ -28,6 +28,7 @@ const permitsModel = mongoose.model( { _id: false } ), status: String, + manualStatus: String, assignedTo: { type: mongoose.Types.ObjectId, ref: "user", @@ -93,6 +94,7 @@ const processedModel = mongoose.model( { _id: false } ), status: String, + manualStatus: String, assignedTo: { type: mongoose.Types.ObjectId, ref: "user", @@ -161,6 +163,7 @@ const processedModel = mongoose.model( client: permit.client, clientData: permit.clientData, status: permit.status, + manualStatus: permit.manualStatus, assignedTo: permit.assignedTo, link: permit.link, address: permit.address, diff --git a/cron/pasco.js b/cron/pasco.js new file mode 100644 index 0000000..ff2b7c1 --- /dev/null +++ b/cron/pasco.js @@ -0,0 +1,186 @@ +import mongoose from "mongoose"; + +const permitsModel = mongoose.model( + "permit", + new mongoose.Schema( + { + tenantId: { + type: String, + required: true, + }, + pid: { + type: String, + unique: true, + }, + permitNumber: String, + county: Object, + client: { + type: mongoose.Types.ObjectId, + ref: "organization", + }, + clientData: Object, + permitDate: Date, + stage: new mongoose.Schema( + { + pipeline: Array, + currentStage: Number, + }, + { _id: false } + ), + status: String, + manualStatus: String, + assignedTo: { + type: mongoose.Types.ObjectId, + ref: "user", + }, + link: String, + address: Object, + recordType: String, + description: String, + applicationDetails: Object, + applicationInfo: Object, + applicationInfoTable: Object, + conditions: Array, + ownerDetails: String, + parcelInfo: Object, + paymentData: Object, + professionalsList: Array, + inspections: Object, + createdAt: Date, + createdBy: { + type: mongoose.Types.ObjectId, + ref: "user", + }, + newProcessingStatus: Array, + newPayment: Array, + newConditions: Array, + professionals: Object, + recordId: String, + relatedRecords: Object, + accelaStatus: String, + openDate: Date, + lastUpdateDate: Date, + statusUpdated: Date, + }, + { strict: false } + ) +); + +const processedModel = mongoose.model( + "processed", + new mongoose.Schema( + { + tenantId: { + type: String, + required: true, + }, + pid: { + type: String, + unique: true, + }, + permitNumber: String, + county: Object, + client: { + type: mongoose.Types.ObjectId, + ref: "organization", + }, + clientData: Object, + permitDate: Date, + stage: new mongoose.Schema( + { + pipeline: Array, + currentStage: Number, + }, + { _id: false } + ), + status: String, + manualStatus: String, + assignedTo: { + type: mongoose.Types.ObjectId, + ref: "user", + }, + link: String, + address: Object, + recordType: String, + description: String, + applicationDetails: Object, + applicationInfo: Object, + applicationInfoTable: Object, + conditions: Array, + ownerDetails: String, + parcelInfo: Object, + paymentData: Object, + professionalsList: Array, + inspections: Object, + createdAt: Date, + createdBy: { + type: mongoose.Types.ObjectId, + ref: "user", + }, + newProcessingStatus: Array, + newPayment: Array, + newConditions: Array, + professionals: Object, + recordId: String, + relatedRecords: Object, + accelaStatus: String, + openDate: Date, + lastUpdateDate: Date, + statusUpdated: Date, + transferDate: Date, + }, + { strict: false } + ), + "processed" +); + +(async () => { + console.log(new Date().toISOString() + " Started Pasco Archive script..."); + + await mongoose.connect(process.env.DB_URI); + + const processedPermits = await permitsModel.find({ + $and: [{ "county.pid": "bibmdcutwwb7e3d" }, { status: "Permit Issued" }], + }); + + console.log(`Found ${processedPermits.length} to archive`); + + let count = 0; + for (const permit of processedPermits) { + await processedModel.create({ + tenantId: permit.tenantId, + pid: permit.pid, + permitNumber: permit.permitNumber, + county: permit.county, + client: permit.client, + clientData: permit.clientData, + status: permit.status, + manualStatus: "Issued", + assignedTo: permit.assignedTo, + link: permit.link, + address: permit.address, + recordType: permit.recordType, + description: permit.description, + createdAt: permit.createdAt, + createdBy: permit.createdBy, + newProcessingStatus: permit.newProcessingStatus, + newPayment: permit.newPayment, + newConditions: permit.newConditions, + professionals: permit.professionals, + recordId: permit.recordId, + relatedRecords: permit.relatedRecords, + accelaStatus: permit.accelaStatus, + openDate: permit.openDate, + lastUpdateDate: permit.lastUpdateDate, + statusUpdated: permit.statusUpdated, + transferDate: new Date(), + }); + + await permit.deleteOne(); + count++; + } + + console.log(`${count} permits archived`); + + await mongoose.connection.close(); +})().catch((err) => console.log(err));