Preview: leadModel.js
Size: 1.75 KB
/var/www/web-koncept/server/src/models/leadModel.js
import mongoose from "mongoose";
const leadSchema = new mongoose.Schema({
company_name: { type: String, required: true },
meeting_address: {
value: { type: String, required: false }, // Full formatted address
lat: { type: Number, required: false }, // Latitude
lng: { type: Number, required: false }, // Longitude
postal_code: { type: String, required: false }, // Postal code (optional)
city: { type: String, required: false }, // City
state: { type: String, required: false }, // State
country: { type: String, required: false }, // Country
formatted: { type: String, required: false }, // Formatted full address
map_in_sync: { type: Boolean, required: false, default: true }, // Map sync flag
},
time_period: {
start_date: { type: String, required: false, default: null }, // Start date in UTC
end_date: { type: String, required: false, default: null }, // End date in UTC
},
item_id: { type: Number, required: true, unique: true },
sales_rep_id: { type: [Number], required: false, default: [] },
responsible_id: { type: Number, required: false },
status: { type: String, required: false },
mode_booker: { type: [String], required: false },
});
// Create an index for the time_period start_date and end_date
leadSchema.index({ "time_period.start_date": 1, "time_period.end_date": 1 });
leadSchema.pre('find', function () {
this.where({ status: { $in: ["Møde Booket", "Andet"] } });
});
leadSchema.pre('findOne', function () {
this.where({ status: { $in: ["Møde Booket", "Andet"] } });
});
leadSchema.pre('aggregate', function() {
this.pipeline().unshift({
$match: {
status: { $in: ["Møde Booket", "Andet"] }
}
});
});
const leadModel = mongoose.model("Lead", leadSchema);
export default leadModel;
Directory Contents
Dirs: 0 × Files: 4