47 lines
1009 B
JavaScript
47 lines
1009 B
JavaScript
|
const mongoose = require('../db/connect')
|
||
|
|
||
|
const { Schema } = mongoose
|
||
|
|
||
|
const crmCompany = new Schema({
|
||
|
|
||
|
companyId: {
|
||
|
type: String,
|
||
|
required: true,
|
||
|
},
|
||
|
name: {
|
||
|
type: String
|
||
|
}
|
||
|
|
||
|
}, {
|
||
|
timestamps: true,
|
||
|
toJSON: { virtuals: true },
|
||
|
toObject: { virtuals: true }
|
||
|
})
|
||
|
|
||
|
crmCompany.virtual('crms', {
|
||
|
ref: 'CRM',
|
||
|
localField: '_id',
|
||
|
foreignField: 'company',
|
||
|
justOne: false,
|
||
|
// match: { rating: 4 }
|
||
|
})
|
||
|
|
||
|
crmCompany.pre('deleteOne', { document: true, query: false }, async function () {
|
||
|
const crms = await this.model('CRM').find({ company: this._id })
|
||
|
for (const crm of crms) {
|
||
|
await crm.deleteOne() // Delete each CRM
|
||
|
|
||
|
// Delete associated CRM_Contacts
|
||
|
const crmContacts = await this.model('CRM_Contact').find({ crm: crm._id })
|
||
|
for (const crmContact of crmContacts) {
|
||
|
await crmContact.deleteOne()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
|
||
|
|
||
|
const Company = mongoose.model('Company', crmCompany)
|
||
|
|
||
|
module.exports = Company
|